エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

スピード感のあるギークな勉強会のリアル〜実用Git第3版の輪読会を題材に

まえがき

こんにちは。AI・機械学習チームの三浦 (@mamo3gr) です。2024年5月30日、チーム横断で実施していた「実用Git 第3版」の輪読会が足掛け2ヶ月で大団円を迎えました。振り返ってみると、エムスリーのエンジニアが持つ資質であるリーダーシップ、スピード感、ギークさがにじみ出ていた会でした。本記事ではこの輪読会の様子をお伝えするとともに、エンジニアリンググループの雰囲気を知っていただければと思います。

きっかけ

皆さんも常日頃のコードベースへの変更はお互いにレビューしているかと思います。筆者の所属するAI・機械学習チームでも同様ですがMR *1 の出し方やコミットの積み方に特に厳格なルールを設けていないものの、意味のある単位ごとにコミットをまとめてくれるとレビューが楽だよね、という話題がSlack上でありました。その続きで、そういえば「実用Git 第3版」が出たねという話題に繋がり、Gitの操作を上達するためにはもちろん、内部構造も詳しく理解できそうでちょうど良い本じゃん、と大盛り上がり。

輪読会が立ち上がる直前のSlackの様子

すぐさま、弊チームリーダーの北川さん (@kitagry) がエンジニア雑談チャンネルで輪読会の実施を発表し、参加メンバーを募集しました(3月11日。ちなみに当該書籍の出版は3月8日)。3日後、声をかけた本人が初回として1章・2章を発表し(3月14日)、スタートしました。

このような、自らプロジェクトを立ち上げて推し進めるするリーダーシップは、エムスリーが掲げる3つの行動指針のひとつ「社長意識」として強く推奨されています。詳しくは、例えば次の記事を参照ください。なお、ここで立ち上がったのは勉強会ですが、業務における施策・プロジェクト・サービスも全く同様に立ち上がり、進行していきます。

jobs.m3.com

課題図書

今回の課題図書となった「実用Git 第3版(O'Reilly Japanの書籍紹介ページ)」は、バージョン管理システムGitの包括的な解説書です。Gitの持つ幅広いサブコマンドを基礎・中級レベル・上級レベルとレベルごとに順序立てて分かりやすく解説しています。それだけでなく、Gitの内部構造や、コンセプト(なぜそういう作りにしているのか?)も深堀りされており、単にコマンドを暗記するのではない、背景を理解して使いこなせるという意味で「実用」的でした。

形式

5チーム横断で総勢10人の参加する輪読会になりました。業務時間中での実施で、参加者のスケジュールを突き合わせた結果、夕方に毎週1時間の枠を確保しました *2 。章ごとに担当を決め、発表者が事前に読んで資料をまとめる発表会方式になりました。担当決めは、基本的に自分が興味がある章に立候補してもらいつつ、特に希望のないメンバーが空きをカバーすることで、すべての章を埋めることができました(含む付録)。諸処の都合で準備が難しい場合は、分担したり *3 、ターミナルエミュレータを利用したデモ主体にしたりと、工夫しながら完走できました。なお、全18章を全10回の開催での完走になりました(5月30日)。

最終回「付録A: Gitの歴史」にて、GitのFirst commitをみんなで見に行くの図

ギークなところ

個人的に印象に残ったポイントを箇条書きでお伝えします。

  • 初回は自己紹介から。所属と意気込み、好きなGitのサブコマンドを紹介しました
    • ちなみに「好きな〇〇」はエムスリーのエンジニア定番話題。自己紹介で聞かれるので必ず用意しておきましょう
  • 「rev-parseで指定するコミットハッシュは何文字まで少なくできるのか?」という話題が出た際には、ターミナルから実際にテストするのはもちろん、ソースコードまで読みに行きました *4。公式ドキュメントやコードベースなど、1次情報まで探しに行くのは良い習慣ですね
  • デモ中にターミナルの画面共有を見て、発表者の使用ツールが気になっちゃいます。「それ何のツールですか?」
    • lazygit, forgit, 自作zshプラグイン(!)…など、ツールの情報交換になりました
  • スムーズなデモのため、デモツールも発掘されました *5
  • お互いの .gitconfig を晒し合って文化交流しました
    • その結果、push.autoSetupRemote, rebase.updateRef, merge.conflictstyle = zdiff3 などの設定が輸出入されました

まとめ

「実用Git 第3版」の輪読会を題材に、リーダーシップ・スピード感・ギークさのあるエムスリーのソフトウェアエンジニアの様子をお届けしました。早速「rebaseでブランチをぶっ壊しましたが、輪読会のおかげで冷静に git reset --hard ORIG_HEAD が打てました」や「git log -S"hoge" のpickaxe(つるはし)でコード調査が捗りました」など、輪読会での学びが業務に活かせている声も聞こえてきています。

また、完結も束の間、すぐに新しい勉強会も立ち上がりそうで、また今後もレポートする機会があるかもしれません。お楽しみに。

なお、言うまでもないことですが、もちろんこの記事の執筆はGitで管理し、レビューおよび修正はGitLab上で行いました。

We are hiring !!

エムスリーでは、技術のインプットとアウトプット(チームへの共有と事業への導入)に貪欲な仲間を歓迎しています。新卒・中途それぞれの採用はもちろん、カジュアル面談やインターンも常時募集しています!

エンジニア採用ページはこちら

jobs.m3.com

カジュアル面談もお気軽にどうぞ

jobs.m3.com

インターンも常時募集しています

open.talentio.com

*1:エンジニアリンググループではGitLabを利用しており、GitHubでいうPull Request (PR) に相当します

*2:業務においてはエンジニアの裁量が尊重されており、基本的には「成果が出せればやり方は任せる」ことになっています。これは勉強会の実施や準備についても同様です

*3:ソフトウェアエンジニアには馴染み深いdivide-and-conquerですね

*4:当該箇所はここここ で、正解は4文字でした

*5:https://github.com/saschagrunert/demo という、非常にググラビリティの低いツール