Web-dive.log

うみざるさんのプログラミング学習

チェリー本の輪読会を終えて

このエントリーはフィヨルドブートキャンプアドベントカレンダーVol.220日目の記事です。

昨日19日目の記事はwataさんのRailsのform_forとform_withの違いを調べてみたでした。

フィヨルドブートキャンプアドベントカレンダーVol.1はこちらです。

はじめに

私は今、オンラインプログラミングスクールのフィヨルドブートキャンプ(https://bootcamp.fjord.jp)でWeb開発を学習しています。2022年8月から学習を開始し、早いもので入会から1年4ヵ月、500日ほどが経ちました。

フィヨルドブートキャンプに限らず、何らかの学習を進めるときには「輪読会」という、ある特定の本について複数の人が文章を声に出しながら読み、互いに意見や解釈を議論する会があります。フィヨルドブートキャンプでも技術書を中心にして盛んに輪読会が行われています。

今回のエントリでは、今年の8月から12月まで行った輪読会について、輪読会を始めたきっかけや得たこと、これからの目標などを書いています。

輪読会の概要

輪読会をやろうと思ったきっかけは後述するのですが、輪読会は以下ように開催しました。タイトルは「早朝チェリー本輪読会」、時間が朝早めです。

  • 日時 : 平日の朝5:45-6:45、土日祝日はお休み。
  • 輪読本 : プロを目指す人のためのRuby入門[改訂2版] ※表紙のイラストから、よく「チェリー本」と呼ばれています。
  • 場所 : フィヨルドブートキャンプのDiscordの輪読会チャンネル
  • 参加者 : フィヨルドブートキャンプの受講生
  • 当日の流れ
    • 5:45-5:50 集合、雑談
    • 5:50-6:30 2ページほどで区切って各自が輪読、都度、意見交換。
    • 6:30-6:45 学んだこと、気づいたこと、分からなかったことなどをHackMDに記入し、各自発表
    • 6:45 終了

きっかけ

輪読会をやろうと思ったきっかけは以下の3つです。

1つ目は、とにかく早起きを習慣にしたかったことです。本業でフルタイムの会社員をしながらフィヨルドブートキャンプに通っていますが、日中に働いていると学習時間をいかに確保するかが大きな課題です。

学習をさくさく楽しく進めるには、技術をしっかり理解する必要があります。ですが、それには深い集中力が必要。しかし本業から帰ってくると疲れているときが多く、集中力が下がってなかなか学習が進まない…早起きを習慣化する前はそう感じていました。

なので、始業前のすっきりした頭でプログラミング学習をしたかった。いずれWebエンジニアとして転職することを視野に入れているので、時間の使い方の優先順位を本業 < プログラミング学習にするのは理に適っていました。

2つ目は、Rubyを深堀りしたかったことです。輪読会をやろうと思い立った2023年7月頃、私はフィヨルドブートキャンプでJavaScriptを学習していました。が、そこで思っていました。「自分のRubyのスキル、低くないか?」

JavaScriptのプラクティスが終わり、Reactを学習するとチーム開発でバリバリRubyを使っていくことになる一方で、RubyRailsのプラクティスをこなしたものの、Rubyについての自分の知識に不完全さを感じていました。今の理解度だとまずい気がする…。なので、もう一度イチからしっかり学ぼうと思ってチェリー本をテーマ本にすることにしました。

3つ目は、2023年6月にフィヨブーフェス(現役生や卒業生がフィヨルドブートキャンプの楽しみ方や学習継続のコツをプレゼン形式で伝えるオフラインイベント)に参加したことです。

その中で、フィヨルドブートキャンプの受講生のお二人が輪読会をテーマに発表していました。やってよかった!初めての輪読会主催(moegi)、主催しなくても大丈夫!輪読会のススメ(sugie)の発表ですね。

こちらを現地で見ていて、とてもこう背中を押されるされるというか「よっしゃ、自分もやってみよう!」とモチベートされた感じです。自分にもできるかも?とハードルが下がったのもよかった。それまで参加するばっかりだったので、自分で主催してみたい!という気持ちもありました。

あと、すごくヨコシマな気持ちなんですが、5:45に輪読会を主催して誰か参加するようになれば「寝坊できない」プレッシャーで強制的に目覚めるようになるだろう、というハイパー他力本願寺な気持ちもありました。

進め方

8月28日に1回目の輪読会がスタートしました。「イベントを作ったはいいけどだれか来るのか…?」と思っていたところ、初回から2名の受講生が参加してくれました。参加者がいないと輪読会が成立しないのでとても感謝です…。

輪読会では、声を出しながらチェリー本をめくっていき、分からないところを質問したり、ときにはirbを起動させてコードを試したりして進めました。一日だいたい7〜8ページぐらいのペース。

体調が悪かったり別件があったときは開催をスキップしましたが、基本的に平日の朝に毎日実施。8月下旬からスタートさせて12月中旬に完走しました。通算61回実施。輪読会各回のメモはこちらです(Read Onlyにしています)

途中でラジオ参加いただいた受講生がいたり、最後のほうはフィヨルドブートキャンプのメンターさんも参加いただいてワイワイ楽しく輪読会を進めることができました。最終日にあとがきを読み終えて「…終わりですッ!」と言ったときは物凄く達成感がありました。

”輪読”の良さ

輪読会をしているときも思ったのですが、1冊の本を腰を据えて深く読み進めていく”輪読”の良さを改めて実感できました。

実際に声を出しながら読んでいきますが「ん、ここ分からんな?」と感じたポイントを輪読会の参加者にすぐに確認できる、これが大きかったです。

もし一人で読んでいても調べたりはすると思うのですが、その場で確認できると相手から「なるほど!」な回答をいただいてすぐに疑問を解消できました。

参加者同士の知識・スキルにはもちろん差があるのですが、輪読を通じて発話することで、お互いに知らなかった点を保管できるのも良い点だと思いました。

しかも今回は参加者が自分含めて2人。あまり気を使うことなく分からない点をぶつけ合うことができました。

学習と早起きを習慣に

輪読会で自分以外の誰かが待っている、と思うと不思議と頑張れるものです。というより、迷惑をかけちゃうから早起きせざるを得ない、という感じに近い。私自身、意思が弱いと自覚しているので、何か物事を続けようと思ったらまず仕組みを作りたい派なのです。気合いに頼らずなるべく仕組みでカバーしたい。

その意味で早朝の輪読会は大きく功を奏しました。初めて3週間ほどで自然と朝早くに起きてそのまま輪読会に参加することができるようになりました。朝早く起きて参加する輪読会は、仕事が終わった夜に疲れた頭で学習するよりも気持ちよく学習できました。

朝の静かな時間帯に、ゆったり自分のペースで進められて好きです。そして、4ヵ月間ちゃんと早起きして学習できたという実績を得られてすごく自信になりました。これからも朝の時間を有効活用して学習していきたいな、と思います。

ただし、次の輪読会をやるとして早朝にやるのはどうか?と聞かれると…うーん、はっきりYesとは言いにくいかなぁという印象です(急な手のひら返し)

当たり前ですがとにかく眠い。前日にあまりうまく寝られずに輪読会が終わってそのまま寝てしまう日もありました。やるならちゃんと睡眠時間を取れることが前提だなぁと思いました。

残業で帰宅が23:00を超えるときは、次の日の輪読会はお休みにしてもらっていました。頭が動かないときに輪読会やるのはけっこうシンドイ。

チェリー本 = スルメ本?

フィヨルドブートキャンプのプラクティスでは、チェリー本を1冊通しで読むというインプット系のプラクティスがあります。私もRubyのプラクティスで去年の秋頃にチェリー本を読んでいたので、今回で2度目の通読になります。

2度目だからある程度は本の内容を分かってると思いきや、覚えていない箇所がもう多数。最初のほうのまだ基礎的な章でも「そうなの?!?!」と目から鱗な発見がたくさんありましたし、1回目に読んだときに引いた赤線を見て「ぜったい分かってなかったやろ」と過去の自分にツッコミを入れたりしていました。

ですが2回目に読むから何も学びがない、なんてことは全くなく、むしろ1回目よりも吸収できたものは多かったと思います。これは自分自身が、例えばオブジェクト指向を学ぶことでクラスの章を、JavaScriptのコールバック関数を学ぶことでProcとyieldの章を理解しやすくなったのが背景にあると思いますが、それ以上に、読むたびに新しい発見を得られるチェリー本の奥行きの深さにあるのだと思いました。こう表現するのが適切か分かりませんが、チェリー本は私にとっていわば「スルメ本」でした(噛んでも噛んでも味がある)

その意味でさらに楽しみなのが、3回目に読むときです。 チェリー本のあとがきにこうあります。

筆者としてはできれば「1回読んだら終わり」ではなく、少し間を空けてもう一度読み直してほしいと考えています。読み直すタイミングは「Rubyプログラミングの経験値が上がってきたころ」が最適です。

オリジナルのWebサービスを作ったり、業務で四苦八苦しながら新機能を作り上げたりしたあと(もしくはその最中に)本書を読み直すと、最初に読んだときには気づかなかった新たな発見があるはずです。

次は自作サービスを作り終えたときに、通しでじっくり読みたいと思います。「自作サービスもっとこういう書き方できたなーー」とか今とは違った印象を受けるのかなぁ(そのまたリファクタリングすればよし)

これからの目標

Ruby技術者試験のひとつである「Ruby Silver」の試験を受けることにしました。申し込みは済みです。試験日は来年の1月29日(日)です。こういう試験はとりあえず申し込んでしまって自分にプレッシャーをかけるのがコツです(どや)

せっかく輪読会をしたのだから何か形に残したいし、まだまだ分からないことがたくさんあるのでRubyをもっと深堀りしたい。合格に向けてコツコツ継続したいと思います。あと、一部のWeb系企業が入社の条件に「RubySilver取得」を求めていて、転職活動のときに焦って取るよりもまだ余裕のある今のうちに取っておこうとと思いました。

最後に

輪読会をスタートさせたときは「これ終わるの?」と思ったほど長い道に見えましたが、今は無事に完走できてホッとしています。そして、次に読むときにはもっとWakaran!な箇所に出会えるのかも?と思って楽しみです!(来年5月のRubyKaigiの前後に読むのもいいかも?)

フィヨルドブートキャンプアドベントカレンダーVol.2、明日21日はsiso255さんです。

ここまでお読みいただき、ありがとうございました!