DIVE INTO CODE

2019年02月25日
  • #交流会
  • #RubyonRails
  • #Ruby

書籍『現場で使えるRuby on Rails〜』のトリセツ!【著者交流会レポート】

Aws4 request&x amz signedheaders=host&x amz signature=0c2114d360135042b6c9e388e11c3676643f3e5202eb41026f57c4daae6bb479

プログラミングスクールDIVE INTO CODEで行われた、書籍『現場で使える Ruby on Rails 5速習実践ガイド』(以下、『現場Rails』)の重版を記念した著者交流会のレポートです。著者目線の執筆意図や使い方、読み終わったあとの使い方のコツなどの秘訣を執筆陣から直接聞けた貴重な会でした。

もちろん当レポートは、これから書籍の購入を検討している方にも役立つこと請け合いです!

Ruby、Railsのプロ集団が2年かけて執筆した実用書

Image from Gyazo

2019年2月6日(土)にDIVE INTO CODEの一室にて行われた今回の著者交流会。執筆陣はいずれも株式会社万葉のメンバーで、RubyやRuby on Rails (以下Rails)のプロフェッショナル集団。執筆者は全8名のうち、当日は4名が集まってくれました。
・代表取締役 大場寧子
・櫻井達生
・小芝美由紀
・松本拓也

(敬称略)

DIVE INTO CODEでもこの書籍を推奨しており、また、講座の教材に万葉の研修資料を使わせていただいているなどのご縁があったことからこの会が実現しました。交流会には熱心なRails初学者が集まり、用意した20席は満席に。期待の高さが伺えました。

DIVE INTO CODE 代表の野呂からは「Railsを学びたいという同じ志を持った同士をつなげ、受講生や卒業生が現場の人たちとつながれるチャンスをつくれるようにとの想いから、万葉さんにお声がけして実現しました」と挨拶しました。

交流会のスタートは櫻井氏による講演。Railsエンジニア歴10年のベテランです。
『現場で使える Ruby on Rails 5速習実践ガイド』の活用ガイド」と題され、
櫻井氏はこの書籍を何を意識して使うのがいいのか、読了後にもどう使えば活かせるのかについて話してくれました。

裏側の仕組みを知るために考えながら手を動かすべし

Image from Gyazo

現場Railsの書かれた背景

「きっかけはマイナビ出版の方から本を出しませんかとメールがきたことでした。校了まで2年かかりましたが、おかげさまで出版後は2カ月で重版になり順調な滑り出しです。

この本を作るにあたり、Railsの本は当然すでにたくさん出ているので、同じものを作ってもしょうがない。だから私たちは開発現場の本を書きたいと考えました。

現場Railsを読んだ後に

ところで突然ですが「Railsを覚えたあとは、Rails以外の言語で何を学ぶといいですか?」という質問をよく受けます。

私は「RubyやRailsをちゃんと使えるようになってから、ほかの言語を学ぶほうが効率的」だとお答えしています。「広く浅く」学習する方法は非効率です。1つの言語を極めていれば、他の言語でも似た構造になっているので類推や応用ができます。だからまずはRailsを使えるようになりましょう。

では「Railsが使える」とは、どういう状態でしょうか?
・CRUDができたら?
・アプリが作れたら?
・カリキュラムが終わったら?

これらは全て「使えるとは言えない状態」です。
Image from Gyazo
本来なんのためにプログラムを学ぶのかというと、現実の問題を解決したいからですね。しかし本やリファレンスに載っていることを習得しただけでは、それらを解決できるようになりません。

Railsで現実の課題を解決できるようになるには、
設計→改善→運用→実践→設計……をぐるぐる回すことが大切です。
それには訓練がとても重要なんですね。

具体的にはRailsという道具をいじりながら手になじませることです。
・裏側や仕組みを知るために、
・考えながら手を動かし、
・それらを楽しみましょう。

裏側や仕組み(テキスト)とは

・RubyやRails
・Gem
・Web
・HTTP
・HTML
・データベース
・オブジェクト指向プログラミング
・REST(HTTP ベースのアーキテクチャスタイル)

などのことです。これらを意識しながら進めてみてください。

すごい人たちから教わったことは「もっとやっていい」

Image from Gyazo

すごい人たちから話を聞くと、自分よりももっとコードをたくさん読んでいてもっと書いていてもっと失敗していてもっと困る場面を工夫していてもっと工夫を積み重ねていました。

これを知ったとき、私は「もっとやりすぎていいんだ!」と思いました。つまりもっとコードを読む、書く、失敗する、こまる場面を経験する、工夫を積み重ねることをしていいのだと。

だからもっと読みやすく速く楽しくいいものを作るにはDIVE INTO CODE(コードに飛び込む)しましょう!

コードに飛び込み、潜るコツ

『現場Rails』の以下の特典をご参照ください。
〇 Special5 Tips
・byebug でデバッグ
・Bundlerでgemの中身を調べる
・Method#source_locationでメソッドの実装箇所を探す
・ActiveRecord::Relation#to_sqlでSQLを確認しよう
〇 Special6 お役立ちリンク集
・Rubyのリンク集
・Railsのリンク集
・gemのリンク集
・RSpecのリンク集

どんなところからはじめるのがいいのか?

ここまではマインドのお話をしてきました。
それでは具体的にどう進めるのがいいのか、おすすめの方法をお伝えします。

頻繁に使うものは覚えるので、まずは
・便利な道具を知ること
・パターンを知って使えるようにしておくこと

使う頻度の高いものは普段からスッと使えるようにしておくと複利効果が働き、使う回数の分お得で効率的です。

基礎を固める・掘り下げる

それでは、本の通りにコードを書いてみて、実際に動いたとしましょう。そのあとどうするのがいいかというと、
→コードを一部、少しだけ変えてみると……どうなる?
→予想どおりか? 違ったか? こうなるのはなんでだろう???
→Railsのメソッドはどんな実装になっている?

基礎がしっかりしていないと応用できません。基礎ができたら次は気になるところをもっと掘り下げて欲しいと思います。みなさん、コードを書いたままにしていませんか?

裏側に思いを馳せる

コードは実装されたとおりに動きますから、裏側でどういうことが起きているのかを調べて掘り下げることが大切です。当たり前ですが、なんとRailsはRubyで書かれている(!)ので、RubyがわかるとRailsのコードが何をしているのか分かって便利なんです!
・コードを「書いて動いたまま」にしない
・Railsが裏で何をしてくれているのかを理解する
・どんなクラスが使われているのかを意識する

まとめ

プログラミングは正解のない世界。だから正解に向かうのではなく、自分で正解を作っていくプロセスになります。本に書いてあることをきっかけに、好きなところや気になるところを掘り下げてみてください。
現場Railsの活用法
・本に書いてあることを試す(基礎)
・書いてあることを少し変え、動かして試してみる(応用)
・裏側で起きていることを調べてみる(応用)
・Railsの実装を見て『現場Rails』を読み返す

この本がみなさんのレール(Rails)を伸ばすきっかけになってくれたら嬉しいです」

スゴい人と仕事をするには、スゴい人になること

Image from Gyazo

ここから質疑応答の時間に。来場者に聞くとほとんどの方が書籍を購入済みとのことで、意識の高い方たちばかり。さてどんな質問が飛び出したのでしょうか。ここにも「これからプログラミングを始める」ヒントが満載でした。

Railsを学んで半年立ちました。この書籍は初学者の私でもとても分かり易かったです。執筆にあたりどういう工夫をしたのか、最も力を入れた点や苦労した点を教えてください。

櫻井:
自分がプログラミングを学習していく過程で行き詰まったときの感覚や気持ちを憶えていました。だから初学者の気持ちが分かったんだと思います。難しいことよりも、シンプルで簡単なことを説明するほうがすごく難しかったです。たとえばRailsよりもWebの仕組みのような「感覚で理解している部分」を初学者にも理解できるようにすることのほうが難易度が高かったですね。

大場:
たとえばクッキーとセッションの違いとかね。

櫻井:
はい。だから私は執筆にあたり参考書を4冊買いました。直接目の前で教えられるなら深くディスカッションができるのですが。

大場:
強弱が難しかったですね。大事なことは大きなボリュームで、大事ではないことを小さな量で。足し算引き算が難しかったです。私は書籍全体を整える役割を担いました。というのも、各自がバラバラに書いていったのでいざ順番に並べて読んでみると、つなぎの整合性が取れない部分が出てきた。だから全体のトンマナを整理して均すのに苦労しました。

普段の仕事ではちゃんと設計をやるのに、それをしなかったことで炎上案件になりました(笑)。もっとガイドを作っておけば良かったと反省しています。ただ、執筆者の人数や視点など「目が多い」ことが結果的に網羅性が出て良かったと思います。

松本:
現場で使われる内容を書きたいと思っていたので、常にこれでいいのかという葛藤があり、自分がボコボコにされていくという苦労がありました。つまり、自分では当たり前だと思っていた部分を、実はただなんとなく理解していただけだと気づくなどしてロジカルに説明ができない。ワキが甘かった部分を目の当たりにしました。

小芝:
私の場合は書籍を作っている間にRailsのバージョンが上がっていったことが最も苦労しました(会場笑)。

先ほどの櫻井さんのお話の中で「スゴい方の話」がありました。私もすごい方と働くのが効率的だと思っているのですが、どうすれば機会を得られますか?

大場:
「自分がスゴくない」状態でスゴい人と会ったり仕事をしたりしてもあまり交流はできないと思います。だから基本戦略は自分をスゴくしていく。そのためには何者になるかが大事で。たとえ狭くてもよくて「ここの分野なら他の人より早く仕上げられる部分」をつくることです。狭くてもいい理由は、チームの中でギブアンドテイクすれば助け合えるから。だからまずは自分をスゴくするといいと思います。

櫻井:
インターネットでアンテナを伸ばす、発表資料を見る、気になるプログラマーをフォローする、などから始めてみるのがいいと思います。

松本:
情報を引き出し接点を持つことが目的なら、手頃な技術コミュニティに入るのも一つの手スゴい人は意外と周囲にいて、スゴさに気づかないものです。たとえば私がRailsを勉強し始めたときにそこで知り合った方がぜんぜんヨチヨチ(初心者)だったんですけど、その後ですごい人になった。だから、この方法でも結果的にスゴい人と知り合いになれました。

小芝:
コミュニティが活発なのがRailsのいいところです。そういう場で発表したりするうちにスゴい人の話が理解できるようになってスゴい人に少しでも実力が近づける。だから技術コミュニティに入るのが効率的だと思います。

ここで野呂から「DEMODAYなど発表会のイベントにぜひ参加してみてください!」とのフォローが入りました。

もし次に新しい本を書くとしたら、どんなテーマで書きますか?

松本:
もし書くとしたらもっとチーム開発寄りのものを。フロントエンド、サーバサイドとの連携をもっと交えて書けたらと思います。

櫻井:
どうすればいい開発チームを作れるのか」について書けるといいですね。

このあと著者4名のサイン会で幕を閉じた著者交流会。これからプログラミングで道を切り拓いていきたいという強い意思を感じる方々が熱心に質問をしながらサインを貰っていたため、大幅に時間オーバー。ここから新たに、希望に満ちた新しいレールが未来へと伸びていくことを期待します。

Image from Gyazo

・櫻井さんの講演資料「現場Rails活用ガイド-読んで書いて終わりじゃない!」はこちら

DIVE INTO CODEのことをもっと知ってみませんか?