サービスエンジニアリング本部アプリケーション開発グループの岡本です。 私の前回の投稿からおよそ1年が経ちました。
本記事ではエニグモ社内で行われている勉強会の中から、私も参加している通称「若手勉強会(Slackのチャンネル名は#junior_workshop)」の取り組みについてご紹介します。
勉強会の概要
こちらの勉強会は「Web開発における基礎知識を身に着ける」をテーマに掲げ、経験の浅いアプリケーションエンジニアの知識の底上げを目指して2020年の6月から開始しました。二週間に一回のペースで業務時間内にZoomやGoogle meetを繋いで実施します。
主な参加者はBUYMAのWebアプリケーション開発を行っている入社数年以内のエンジニアです。
各回、1時間半程度を費やして技術書を輪読したり、普段利用しているOSSのソースコードリーディングを行っていました。
扱った題材
技術書 1
- オブジェクト指向設計実践ガイド~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方(技術評論社)
- メタプログラミングRuby 第2版(オライリージャパン)
- 増補改訂版 Java言語で学ぶデザインパターン入門(SBクリエイティブ)
- 補足:2021年11月13日にJava言語で学ぶデザインパターン入門第3版が出版されるそうです。
技術書を読む際は一週につき1章ずつ進めます。「メタプログラミングRuby」を輪読した際は、各週で本の内容をまとめたドキュメントを作成する担当者を決め、わからなかった点・気づいた点を質疑応答の時間で話し合うという形式で進めていました。
「Java言語で学ぶデザインパターン入門」では章の初めに作りたいアプリケーションの要件が付されていることが多いので、その部分だけ読んで自分でクラス図を設計し、余裕があればコードを書き、全員集まってクラス図やコードを共有してレビューしながら本を読んで答え合わせをする、という形式をとっていました。
OSS
-
binding.pry
でなぜbreak
できるのか- コマンドがどのように処理を経ているか
exit
,!!!
,step
,next
,continue
,finish
-
ActiveRecord#save
,ActiveRecord#save!
- Railsの初期化プロセス
-
Draper::Decoratable
モジュールがActiveRecord::Base
にinclude
されるまで
業務では主にRuby on Railsを使って開発をしているため、普段使っているRubyのgemやRailsの機能を題材とすることが多いです。学んだことは若手勉強会用に作成したSlackの#junior_workshopチャンネルにメモしたり、esaで記事を作成していました。
1年のふりかえり
1年以上定期的に勉強会を行ってきたので、先日参加者全員でふりかえりを行いました。今回使ったふりかえり手法は「YWT(やったこと・わかったこと・つぎやること)」です。
Y(やったこと)は上記のため割愛しますが、WとTの中から参加者の皆さんの声を一部ご紹介します。
W
技術書、OSSを読んでわかったこと
- デザインパターンを自発的に学習する機会がなかったが、いざ勉強して色んなソースコードを読んでいるとデザインパターンの文脈で扱われる用語が使われていることがあることに気づきコードの意図を理解しやすくなった
- (デザインパターンの輪読会において)同じテーマで各自プログラムを作成し、その実装・設計に関して議論することで他の人の設計アイディアを知ることができ設計の幅が増えた。
- Rubyでデザインパターンを学ぶことができ、BUYMAのソースコードを読むのに役立てることができた。
- 技術書の輪読に関しては、自分の理解が曖昧な箇所について質問したり、他の人の疑問に答えることで一人で読むよりも理解度が上がったのが良かった。
- pryのソースコードリーディングに関しては、自分の中でブラックボックス化していた内部処理を理解していく作業が単純に楽しかった。
- OSSを読むことに抵抗が少なくなった
デザインパターンを学んで新たな視点が芽生えたという意見が多かったです。普段使っているOSS、一見難解に思えますがじっくりと時間をかけて内部構造を読み解いていく時間が私も楽しく感じました。
その他
- 輪読形式だったため発表することを意識し、一人で読書するときより知識が定着した。
- 他の人が利用しているエディターやその他のツールを知ることができた。
- 質問を受けることでなんとなくわかった気になっていた内容を復習し記憶として定着させることができた。
- 途中から業務が忙しいという理由で参加しなくなってしまった…
自学することに加えて他人に教えたり発表するなどして知見をアウトプットすることで理解が深まることを実感しました。
T
- OSSにコントリビュートしたい、今後も継続していきたい
- OSS のソースコードリーディングで培った速読力?を普段の調査系のタスクで生かしていきたい。
- なかなか OSS へのコントリビュートもできていないので積極的に OSS 活動にも参加していきたい。
実は既にRuby/Railsに関するOSSに貢献している方もおられます。
おわりに
1年が経過し、参加者それぞれが重要なタスクを任されることが増え忙しくなってきたので、このタイミングで定期的な若手勉強会は一旦ストップすることにしました。今後はRubyに限らず、勉強会でやりたい企画があれば随時開催しようということで合意しています。(今度はデザインとかフロントエンドの勉強会やりたいですね〜という話をしていました)