erlenv&exenv から evm&kiex にしてみた
exenvがGitHubからバージョンリストを引っ張ってくるときに、APIのrate limitに引っかかってelixirがインストールできないことがあったり、メンテされてなかったりで、なんかなーという感じだったので乗り換えてみた。あと、intellijを使ってみようとしたら、intellij-elixirがElixirの場所を見つけてくれなかったりして、「これではintellijを試すこともできないではないか!!」となったので。
evmはrvmをベースにしている。kiexは何をベースにという感じではなさそう。asdfも良さそうだなーと思ったけど、なんかコケてだめだったので、また後で。
anyenvでまとめていたものがまたバラけるのはちょっとアレだなとは思うけど、しばらくこれで過ごしてみる。
Phoenix v1.3からディレクトリ構成が変わるっぽい
※ 多分に推測が含まれています。あとでちゃんと調べないと ※
今まさに海の向こうではElixir & Phoenix Conf 2016が行われているのですが、インタネッツを通してこんなツイートが流れてきました。
Coming in Phoenix 1.3 #elixirconf @elixirphoenix #myelixirstatus pic.twitter.com/oeq877IOVA
— Dorian Karter (@dorian_escplan) 2016年9月1日
他のツイートを探していくと、Phoenix 1.3ではweb
ディレクトリがlib/my_app/web
のようにlib
以下へ入るとのこと。
. ├── assets ├── config ├── lib │ └── my_app │ └── web │ ├── channels │ ├── controllers │ ├── templates │ └── views ├── priv └── test
これはPhoenixアプリにおいてweb
という領域が特別な意味を持つように思われているという懸念から来ています。web
はその名の通りWebからアプリケーションへアクセスするためのインターフェースであって、アプリの一部分に過ぎないということを強調する狙いがあるようです。
さらにModel
という概念も無くなり、以下の様な構成になるそうです。
. ├── assets ├── config ├── lib │ └── my_app │ ├── blog │ │ ├── comment.ex # schema │ │ └── post.ex # schema │ ├── blog.ex │ ├── sales │ │ ├── order.ex # schema │ │ └── payment.ex # schema │ ├── sales.ex │ └── web │ ├── channels │ ├── controllers │ ├── templates │ └── views ├── priv └── test
models
以下に全てのスキーマが置かれる状態を解消したいようです。これまでの流れを思い出してみると、ずっと前はPhoenixにはモデルが無く、Ectoの出現によりそれがそのままモデル層として入りました。そのときはモデルのコードには、use Ecto.Model
という一行を書いていました。ですがその後、それがEcto.Schema
に変更されました。どこで読んだかうろ覚えですが、Ectoを使って得られるものはデータであり構造体であり、モデルと呼ぶのは適切ではない、というのがこの変更の理由だったと記憶しています。そして今回models
ディレクトリすら無くなるとのことで、Phoenixとしては原点回帰のような形になり、Ectoはweb
ディレクトリの中から出されるような格好となるようです。つまり、アプリケーションにおけるPhoenixの立ち位置がフロント側へ寄る構成になるという理解でよいのでしょうか。
社内ISUCON
弊社GMOペパボで社内ISUCONというイベントが行われ、総勢10チームによる戦いが繰り広げられました。競技の詳細は近々テックブログあたりに書かれるんじゃないかと思うので割愛して忸怩たる思いを連ねます。
自分は若手チーム(2年目+1年目+1年目、自分は2年目)だったので「tsuki☆age」というチーム名で出場しましたが、「こんくらいイケるやろ」と思っていたところの20%も行かないくらいの悔しい感じでした。自分がググッて下調べしておいたミドルウェアの設定が間違っているというつまらんミスをして時間を使ってしまったり、ベンチマークが通らない原因を調べてもパッとせず、「一旦戻そう」となってgit checkout .
という具合でした。突き上げならず。まだ正式な計測結果は出ていませんが、競技時間の終わりごろにインスタンスを再起動したらアプリとMySQLがなぜか立ち上がってこなかったので、ダメだろうなあという気持ち。情けないやら申し訳ないやら。
もう一度やるとすれば、アプリケーションのコードをイジる担当を置くべきなのかなとはぼんやり思っていますが、テストの無いコードをホイホイ触れるほどの力量が無いことがわかったので、そもそも力不足なんじゃんという。業務では絶対にサボらずにテスト可能な形で書いてテストもちゃんと書こうと誓いました。他の反省点や改善点は色々ありすぎてよくわからないので、3日くらい寝て、そのあと半年ほど放浪の旅に出てから考えます。
運営の@tnmtさんと@pyama86さんには学びの場を提供していただきまして感謝感謝です。あと周りからすればエンジニアが業務時間中に遊んでるようにしか見えないだろうなと思ったので、今回参加されなかった皆さんもご協力ありがとうございました。