upinetree's memo

Web系技術の話題とかたまに日常も。Qiita: http://qiita.com/upinetree

「現場で使える Ruby on Rails 5速習実践ガイド」の執筆に参加して現場の知見を書きました

この度、2018/10/19にマイナビ出版から発売される書籍「現場で使える Ruby on Rails 5速習実践ガイド」の執筆に参加しました。

書籍情報

今ご購入いただくと、購入特典として未収録PDFがもらえます!

https://book.mynavi.jp/pcbook/blog/detail/id=97187

特典は紙・電子本両方に付きます。配布は2018年10月24日(水)ごろになる予定です。

どんな本なの?

Ruby on Rails の基本的な使い方の解説から、複数人での開発やメンテナンスしやすい状態の維持などの実践的なトピックにまで広くカバーしています。

想定読者の中心を「他言語でのWebアプリケーション開発経験のある方」として設定していますが、初心者の方でも理解しやすいよう段階的に学べる構成に仕上げました。その結果480ページと盛り沢山なボリュームとなっており、索引から知りたい箇所を調べるといった辞書的な用途にも十分使えるかと思います。

本書の特徴

タイトルにもある通り、現場で得た知識や経験をところどころに散りばめています。例えば、チームでアプリケーションを開発するときにどうコードを共有してコミュニケーションを取るのか、長く生きることになりそうなアプリケーションの保守性をどう持続して行くのかという話題について、多くのページを割いて丁寧に説明しています。Railsを学習する最初のステップから発展して、実際に仕事で使うような次のステップでも本書が役に立つと思います。

読者が本書を超えて次のステップに進めるように、というのは特に重視した点です。そのための仕掛けとして、本書で解説はしないけれども大事だという概念はキーワードだけ出してみたり、脚注で補足したりと、興味があれば自力で調べて学習していけるようなきっかけを作っています。またRailsGuidesやAPIリファレンスなどを都度参照するようにして、Railsコミュニティの信頼できる情報ソースを見る習慣を付けられるようにもしています。

Rails 5.2 かつ Ruby 2.5.1 と、今出ているバージョンの最新に追従している点もアピールしたいところです。ActiveStrage や Credentials, Content Security Policy, Webpacker といった最近のRailsの機能にも触れています。「数年間Railsからちょっと離れちゃったけど、最近のRailsについて包括的に勉強し直したい」といった用途にも有用です。

逆に本書で扱っていない話題は、Railsアプリケーションの運用です。本当は触れたかったところではあるのですが、あくまでRailsの機能やRailsアプリケーションの作り方にフォーカスする形で限られた紙面を使いました(それでもなかなかのボリュームになってしまったのですが)。運用のために利用できるRailsの機能は紹介していますが、どこにどうやってデプロイするかといった話題は他の良書で学んでもらえたらと思います。

いくつかサンプルを貼るので参考にしてください。2色刷りで図もコードも見やすくなっています!

f:id:upinetree:20181016181506j:plainf:id:upinetree:20181016181348j:plainf:id:upinetree:20181016181341j:plainf:id:upinetree:20181016181349j:plain

個人的な担当範囲と感想

2章、6章、8章、9章、10章を中心に関わりました。特に10章は本書の特色を仕上げる章にしたくて中心的に力を入れました。

執筆する上で意識したのは、Railsらしさとはなんだろうというところから、Railsらしく書くことのメリット、それを外れるときの判断基準やリスク、その対処方法、Railsの外の設計パターンとRailsの取った道…などなど、いろいろ考えました。なんとなく理解していてもここまで突き詰めて考えたことはなかったので、執筆する中で自分としてもとても勉強になりました。Railsのコードも結構読んだので、この処理はあの辺ね〜という脳内地図ができたのも収穫のひとつです。

あとは、なるべくコンテキスト依存の単語を使わないようにしようとか、平易な言葉で説明しようということを意識しました。オブジェクト指向ソフトウェア工学をやった人には「関心事」「結合度」「オブジェクトの責務」などの表現がすごく便利で話が早いのですが、今回はRailsの学習に集中するために極力使わないようにしてみました。意識してみて、自分がいかに普段特定のコンテキストに生きているのかを感じました…。

苦労した点

たくさん苦労しました。

Railsが(というかウェブアプリケーションが)対象とする範囲が広く、この概念を説明するにはこれがいる、というのがとても多いので、「あー、あれの説明がないからこれを紹介できない!」となることが多かったです。互いに関連しあっている話題もあり、そのうえ複数人で執筆していることから調整が難しいという点も要因の1つでした。

そして、この話題はこの章に移動したほうが良いなど、読者の理解の順や話題の類似性などを考慮して組み替えることも多々ありました。しかしただ組み替えただけでは、それぞれ独立した話題が寄せ集まっただけで流れが悪くなってしまいます。そのためそこにストーリーを付ける必要があるのですが、それがなかなかに苦労しました。特に10章は難しかったのですが、(共著者の)大場さんの力をかなり借りてとても良い形にまとまったと思います。

また、説明したいことはいろいろと思い浮かんでも、それを端的に分かりやすく伝えるためのサンプルコードを考えるのに苦労しました。悩んだ末「これだ!」と思いついた例が、帯に短し襷に長しであったり、抽象的すぎたり具体的すぎたりファンタジーすぎたりと、ちょうどよいのが思い浮かばない。これはある種のトレードオフスライダーみたいなもので、結局ある程度の落とし所を見つけるのですが、ちゃんと伝わりやすくなっているかなと今でも心配です。これが一番大変だったかもしれません。

おわりに

こういった苦難を乗り越えてようやく出版されることになり、とっても清々しい気持ちです。まだまだブラッシュアップできるんじゃないとか、やりきれていないんじゃないかといった自問もありますが、そうやってると一生終わらないので、今はとにかく終わってよかったという気持ちです。といいつつ、手元に届いた見本誌を見ると、良い本に仕上がったんじゃないかなと思っています!

以上のように、現場の知識や経験をこねくり回して濃縮したのが「現場で使える Ruby on Rails 5速習実践ガイド」です。ぜひ手にとってみてください。

合わせて読みたい

t2os.hatenablog.com

ppworks.hatenablog.jp (早速のレビューありがとうございます!)