エーフィーのアトリエ-アランビックの錬金術師(Elixir/Phoenix の薄い本)を読んだ

ma2ge
5 min readJan 16, 2016

--

「エーフィーのアトリエ-アランビックの錬金術師」いわゆる Elixir/Phoenix の薄い(薄くない)本を一通り読了しました。Elixir 言語をこれから学びたい、Phoenix Framework で何か作ってみたい方にオススメな書籍です。もし気になった方はこちらで電子書籍版を購入することができます。

http://hayabusa333.tumblr.com/

さて折角一通り読んだので、簡単に感想、気になった点を述べます。斜め読みなところもあり、見逃している点がありましたらご指摘ください。

感想

全体構成は4章で成り立っており、1章がはじめに、2章で Elixir 界隈のキャッチアップ、3章で Elixir 言語紹介、4章で Phoenix Framework によるサンプルアプリ作成という内容でした。

3章では Elixir 言語紹介だけでなく、ライブラリの Hex へのリリース方法、テスト、v1.2 の先取り情報が記載されており、これから Elixir 始める方にはとっかかり易い内容です。

4章は本書の7割程度を占めるボリュームがあり、Ruby on Rails Tutorial を Phoenix Framework でやったらどうなるか?という内容となっています。 完全に同一ではないものの、一通り Phoenix Framework を学べるため、Phoenix Framework 触ってみたい方も、何か作ってみたい方にもオススメできる内容になっていました。

200ページほどの分量があるのですが、大変お求めやすい価格になっているのもオススメです。BOOTH というサイトで販売されており、販売価格に上乗せして購入することもできます。個人的には安過ぎると思ったこともあり、上乗せして購入しています。皆も応援しよう。

気になった点

4.6 Modeling Users のパスワードについて

パスワードの章でパスワードが暗号化して保存されている点(複合化できる)が気になりました。Safetybox の使い方で暗号化の鍵、salt がデフォルトのままを使っていたので、このまま参考にして実装してしまうと DB のデータを見れる人が複合化できてパスワードが分かってしまうなと懸念しました。それとパスワードを運営側にも知られたくないというニーズはあるので、パスワードをハッシュ化して元に戻せないようにして保存するという方法についても注釈があると良いのかなとも思いました。

4.8 Sign in out の Cookie の改ざんについて

Cookieの値を改ざんして、別のユーザでログインしているように成りすますことができてしまいます。

とあるのですが、Phoenix は `secret_key_base` を設定することで Cookie は暗号化も署名もされているので、鍵が漏れない限りは改ざんすることは難しいです。これは Rails とほぼ同様の仕組みを作っているためです(実際にはこの機能は Plug が提供している)。そのため Cookie の改ざんについてはそれほど心配する必要はないのではないかと考えています。ただ鍵が漏れると終わりという点を気にする場合は、Cookie じゃなくて別のストアを使うという方法が必要です。例えば redis, memcached を代わりに使うなど。redis だと plug_session_redis というのがあるようですが使ったことはないです。

4.9 章 Updating Users の機能プラグ

Plug をプラグと説明しているけど、カタカナにせず Plug のままでいいかなと思いました。機能プラグという訳に関しても、もともとの英語が function plugs という感じなので微妙だけど、想定されるのは関数 Plug かなと。

function plugs についてはこちら

4.10 User Microposts のマイクロポスト作成、削除時の user_id 送信

user_id は送信せずに、ログインしているユーザ情報から取得した方がよいです。意図的に作られた HTTP リクエストによって他のユーザのデータを作成/削除できてしまうためです。

最後に

「エーフィーのアトリエ-アランビックの錬金術師」は現時点(2016/01)における Elixir/Phoenix に関する最良の日本語書籍です。何故なら PowerAssertEx についての章があったため。。ではなく、Elixir に関する日本語書籍としては恐らく初出であるため(もし他にあったら教えてください)。日本語での初めての書籍という素晴らしい試みにアツいものを感じます。Elixir 界隈は更新頻度が高いため、執筆中から発売までの更新へのキャッチアップは相当大変だったろうなと思われます。発売後早速 Elixir 1.2.0 が出たり、Phoenix 1.1.1 が出たりと落ち着きを見せてくれない Elixir 界隈ですが、電子書籍の方では追従するかもと聞いたので、気になる方はこちらから購入するといいと思います。

http://hayabusa333.tumblr.com/

著者のお二方、素晴らしい書籍をありがとうございます。

--

--