パーフェクトRails 増補改訂版の自身の担当分について

長らく改訂版をお待たせしていたパーフェクトRailsがついに新しくなります。 私は、やはり人間は締切が近くならないと働かない、という極めて重要な事実を改めて学ぶことができたのが良かったと思っています。

そろそろ献本させていただいた本は届き始めている様で、ブログやTwitter等で紹介していただけて嬉しい限りです。 全体の解説や紹介はそちらに任せるとして、私は今回担当していた箇所が大きく変わったので、それについての感想や裏話を書こうかと思います。

前回担当していた箇所

前回は、基本的に終盤のRailsの基本機能を越えたアプリケーションを作る時に助けになる章を担当していました。

元々は、そういう仕事としてRailsアプリケーションを書く上で気にしておきたいこと、というのが書かれた本が余り無く、何とかそういう本を作りたいという思いがあったので、あの辺りの章を担当させてもらいました。

正解の無い部分にオピニオンを打ち込むという意志の元に書いたので、今となっては自分から見ても多少考え方が変わっていたりする箇所もあります。

Railsを余り触っていない2年間

一方で、私自身はというと、ここ2年ぐらい余りRailsを触っていませんでした。 Railsコンポーネントを使うことはあってもWebシステムとして使っておらず、ActiveRecordRDBをどうやって引き剥がすか、みたいなことばかり考えています。 利用している永続化層もCassandraとかKafkaとか分散ミドルウェアが中心になっており、Rubyから触るにしてもRailsで全くカバーされない範囲になっています。

直近数ヶ月で一番書いてる言語は間違いなくJavaです。

今回担当した箇所

という訳で、現代的なRailsの実践編を執筆しなおして纏めるには、どうにも説得力あるものを書ける自信がありませんでした。 このままでは本が出せないという感じなので、自分から誰かに依頼できないかと考えていました。 そこで今回お願いさせていただいたのが、やさいちさん(twitter: @_yasaichi)です。

RailsDM 2019という大きめのイベントがあったのですが、そこでRuby on Railsの正体と向き合い方という内容で登壇されていました。 私の過去の発表や私も参考にさせていただいたスライドも参照した上で、現代的なWebアプリケーションの考え方に沿っている内容で上手く纏められた素晴らしいトークでした。 私がそれを聞いていたのもあって、今回の改訂版にあたって私が過去に書いていた箇所を引き継いでもらえないかと依頼したら、やりますと言っていただけました。(本当にありがとうございます。めちゃくちゃ助かりました。)

私が以前に担当していた箇所はしっかり引き継いでいただけたと思いますし、改訂版でもしっかり紙面が確保されています、ご期待ください!

じゃあ私は何を書いたかというと、コンテナでRailsを動かすという章です。 昨今、先進的なRailsの現場では大なり小なりコンテナが使われていると認識しています。一方で本番環境では使われていないという話もそれなりに耳にします。 Railsをコンテナ環境で動作させる知見が書籍の中に纏まっていれば、それなりに価値のある情報になるだろうと思いました。

弊社では2016年辺りからコンテナを本格的に導入しており、私自身そこそこ知見を持っているということと、複数のミドルウェアを利用したアプリケーションのデプロイやテストのために、コンテナのセットアップは頻繁に業務として実施しているので、この章を担当するのが良いだろうということになりました。

内容は概ね以下の通りとなっています。

  • Infrastracture as Codeの歴史とDockerの意義
  • 効率的なコンテナイメージの作り方 (レイヤーキャッシュとかマウントキャッシュとか)
  • 開発環境での利用方法 (docker-composeとか)
  • 本番環境に向けて注意しておく点
  • オーケストレーションサービスの紹介

実際書いてて思いましたが、マジのproductionレベルで実際にコンテナを活用するなら、オーケストレーションサービスの活用は必須なんですが、それについて説明をしだすと少なくともECSかKubeのどちらかについてまともに解説を書かなければならず、1章どころでは済まなくなります。 流石にRailsの本でそこまでボリューム取るのも難しいし、私自身の余力もそんなに無かったのもあって、本番環境でコンテナ運用が出来る様になるまでの前段階という形に留めることになりました。 (弊社だとECSを採用していてkubeの知見がそんなに無いとかもある)

一応、本書で纏めた内容はそのために必ず考慮しておかなければならない要素になっていて、ここをカバーしていれば自分達が選択したオーケストレーションについて学習するだけで一気に本番環境での活用が近くなる内容に出来たとは思っています。 特に設定値と秘匿情報については読み込む方法のイメージを事前に考慮しておかないと、後々で移行しようとすると結構面倒なことになります。

私の担当箇所はこんな感じになってますが、その他の内容も一線で活躍しているメンバーが最新のRailsを対象に知見をまとめた物になっています。 紙の本としては相当なぶ厚さになっているらしいですが、その分情報量はパーフェクトと言える内容になっているでしょう。 電子版も割とすぐに出るらしいので、重そう……って感じの人は是非電子版で購入を検討していただけると幸いです。