JavaScript Primer合宿とは何か
はじめに
こんにちは。 所属するフィヨルドブートキャンプ(以下FBC)にて、先週木曜まで10日かけてJS Primer合宿と称した短期集中型の輪読会を行いました。
JavaScriptの入門書である↑の書籍を、数名の方と一緒に読み進めました。 合宿と言っても泊まり込みで何かをしたわけではなく、Discord上で1日5-7時間の輪読会を10日間(途中休みあり)で読み続けるというイベントです。
予想通りめっっちゃ疲れたんですが、最終的にはやってよかったな〜と思ったので、どう進めたのか軽くメモしておきます。 JS Primerをこれから読む方、合宿を主催してみたい方、次の合宿に参加したい方の参考になったら嬉しいです!
目次
開催まで
以前から、ブートキャンプの新しいプラクティスに入ったとき、参考資料を読んでもあまり頭に入ってこなくてモチベーションを保てず、集中して取り組めずダラダラしてしまうという悩みを抱えていました。 プラクティスの取り組み方についてすでに完了している方に聞いてみたり、動画教材を使ってみたりと自分なりに工夫してはいたのですが、やっていることや取り組み方に確信が持てずいろんな教材に手を出して時間やお金を無駄にする日々でした。
しかし、日々他の受講生と雑談する中で、こういう悩みを抱えている方は自分だけじゃないことを知りました。
そこで、同じくらいのプラクティスの進捗の方と一緒に、おすすめされている教材を輪読形式で読むという案が思いつきました。 どうせ1人で何日も読むことになるのであれば、人と一緒に読んだ方が理解も進むし、記憶にも残るし、何より強制力があるのできちんと読み終えられそうです。
多少無理なスケジュールで集中して数日で読み終えようと考え人を募集したところ、異常にやる気のある方が3人集まってくださりすぐに開始させることができました(開始後に追加で3人ほど増えました)。
全日程
当初の予定は5時間*5日(1日6章)で進めるつもりだったのですが、案の定計画通りに進みませんでした。 実際に進んだ範囲とかかった時間について軽くまとめてみようと思います。
10月10日(日) 1日目
読んだ範囲
- はじめに · JavaScript Primer #jsprimer
- JavaScriptとは · JavaScript Primer #jsprimer
- コメント · JavaScript Primer #jsprimer
- 変数と宣言 · JavaScript Primer #jsprimer
- 値の評価と表示 · JavaScript Primer #jsprimer
- データ型とリテラル · JavaScript Primer #jsprimer
- 演算子 · JavaScript Primer #jsprimerの文字列結合演算子の最後まで
初日から6章終えられていない!
学習時間
5時間
一言
初日なので各自目標を立ててもらいました。私の目標は↓の通り。
JS Primerを一周して、頭の中にインデックスを作りたい
ケンカ別れのないよう穏やかにやる😌
10月11日(月) 2日目
読んだ範囲
学習時間
5時間
一言
合宿参加者のやつはしさん(以下Yatz)がJS Primerのリポジトリに誤字修正のPRを送ってマージされていた!
誤字修正だけど、初めての外部リポジトリへのプルリクがマージされた、嬉しい🙌https://t.co/zDsNJrnkCe
— やつはし (@yatsuhashi168) 2021年10月10日
10月12日(火) 3日目
読んだ範囲
- 文と式 · JavaScript Primer #jsprimer
- 条件分岐 · JavaScript Primer #jsprimer
- ループと反復処理 · JavaScript Primer #jsprimer
- オブジェクト · JavaScript Primer #jsprimer
学習時間
5時間
一言
参加者のタマキ (id:shirotamaki)さんも誤字修正のPRを送り、その日中にマージされていました!
私も気になったところがあったので、issueの登録をしてみました!(後日Yatzが修正PRを送ってくれてclose済み)
10月13日(水) 4日目
読んだ範囲
- プロトタイプオブジェクト · JavaScript Primer #jsprimer
- 配列 · JavaScript Primer #jsprimer
- 文字列 · JavaScript Primer #jsprimer
学習時間
6時間
一言
当初は木曜で終わる予定ではじめましたが、全く終わりが見えずちょっと疲れが溜まってきました!
10月14日(木) 5日目
読んだ範囲
- 文字列とUnicode · JavaScript Primer #jsprimer
- ラッパーオブジェクト · JavaScript Primer #jsprimer
- 関数とスコープ · JavaScript Primer #jsprimer
- 関数とthis · JavaScript Primer #jsprimerの関数とメソッドにおけるthisまで
学習時間
6時間30分
一言
関数の範囲に入ってから、参加者の中でもJSに馴染みがある人と知識ゼロの人との間で理解度に大きな差が生まれてきた感じがしました。
主催者の私自身が知識ゼロ側の人間だったので、分かっている方には申し訳ないと思いつつも、復習を挟んだり理解度を確認したりして、進み方を意図的に遅らせるように変えました。
10月15日(金) 6日目
読んだ範囲
- Arrow Function以外の関数におけるthisから関数とthisの章の最後まで
学習時間
6時間くらい
一言
thisの章がとても難しく、まる1日かけてコードを読み進めましたが、最終的には「今のJSは分かりづらいのでなるべくthisを使わない方向に進化している」というがっかりなオチでした😭
※FBC卒業生のMashioSano (id:mashoo1101)さんが書かれた記事にも、thisを変数に入れる手法を「徹底的に消していきたい」と書かれています…😭
しかし、この日の副産物として、thisを理解するためにコールバック関数の動きやメソッドの呼び出し方を復習しながら丁寧に読み、結果かなりJSのコードが読めるようになったので無駄ではなかったと思いたいです…!
10月18日(月) 7日目
読んだ範囲
学習時間
6時間
一言
やっとクラス・例外処理まで終わりました! 前日のthisが大変だった分、この日はあまり苦労せずに済みました。
10月19日(火) 8日目
読んだ範囲
学習時間
7時間
一言
山場の非同期処理なので、最初から2日に分けて読むことに決めていたので時間をかけてコードを読み解きました。 参加者のMaedaさんも誤表記修正のPRを出してくれました。Gitの履歴を見て修正していて偉い!
10月20日(水) 9日目
読んだ範囲
- Promise.allで複数のPromiseをまとめるから非同期処理:コールバック/Promise/Async Functionの章の最後まで
- Map/Set · JavaScript Primer #jsprimer
学習時間
6時間
一言
やっと非同期が終わり、後1日で終わりそうなのでみんなホッとしました!!
10月21日(木) 10日目
読んだ範囲
- JSON · JavaScript Primer #jsprimer
- Date · JavaScript Primer #jsprimer
- Math · JavaScript Primer #jsprimer
- ECMAScriptモジュール · JavaScript Primer #jsprimer
- ECMAScript · JavaScript Primer #jsprimer
- 第一部: おわりに · JavaScript Primer #jsprimer
学習時間
5時間
一言
やっと終わりました!この日はほぼ落ち穂拾い的な章だったので、リラックスして最終日を迎えられました。
初日に決めた目標に対しては、↓のような感想。
ケンカ別れせず楽しくできたのでよかった!
頭の中にインデックスも作れたので、これから迷った時どう調べていけばいいか、MDNどう読めばいいかは分かった!
良かったこと
1番良かったのは楽しく学習ができたことです!ひとりで5〜6時間本を読むのは辛いと感じることのほうが多いですが、人と一緒にワイワイしながら読むと時間がすぎるのがあっという間でした。
そして、JSをまだ自由に書けるには程遠いですが、かなり基礎知識が付いてコードが読めるようになったのは良かったです。 全部で9個あるFBCのJSのプラクティスのうち7個は、合宿後すぐに終わらせることができました。
JS Primerを1度読んだからといってメチャクチャJSが書けるようになるかというと私の場合そうでもなかったですが、合宿中に分からない箇所を周りの人にしつこく聞いたり、自分が理解できたところをコードを解説しながら人に教えた経験によって、普通に読むより理解が深まったとは思います。
あともちろんJS Primerに微力ながらコントリビュートできたのもとても良かったことのひとつです〜!
反省点
反省点はめちゃくちゃあります…。まず時間をかけすぎました。 最初から10日の予定で進めていたわけではなく、「終わるまで」という適当すぎる日程で進めてしまったため、メンバー全員の精神的負担になっていた気がします。 次やるときは、事前に決めた日程をきっちり守るようにしたいです。
そしてJS Primerに関して言うと、難しい範囲だけ輪読会で読むような進め方でも良さそうだったと思います。 個人的に難しいと思った範囲は↓です。
- オブジェクト · JavaScript Primer #jsprimer
- プロトタイプオブジェクト · JavaScript Primer #jsprimer
- ラッパーオブジェクト · JavaScript Primer #jsprimer
- 関数とスコープ · JavaScript Primer #jsprimer
- 関数とthis · JavaScript Primer #jsprimer
- クラス · JavaScript Primer #jsprimer
- 非同期処理:コールバック/Promise/Async Function · JavaScript Primer #jsprimer
また、事前告知をほぼしないまま知ってる方に声をかけてスタートさせてしまったため、もっと多くの方に周知した方がよかったなとも思いました。 同じくらいの知識・モチベーションの方がもっと集まれるような工夫をしていけたら最高ですね!
おわりに
合宿スタイルのオンライン勉強会はためになるし楽しいので、これからも頻繁に開催したり参加したいと思ってます〜!
次は私がJSのプラクティス終わり次第、Vue.jsの合宿をやろうと思いますので、参加希望者は心の準備だけしておいてください!!!