こんにちは!CAMPHOR- 運営メンバーのPanoramaです!
6月26日(土)に株式会社ミクシィのエンジニアの方をお招きして「【mixi】ハンズオン: 内部構造を学びGitを自作できるようになろう!」というイベントを開催しました!
( ↓ アーカイブ )
今回のイベントは学生限定の「Zoom枠」とどなたでも視聴可能な「YouTube配信枠」を設けており、なんと全体で318人もの方が申し込んでくださいました。申し込んでくださった皆様、ありがとうございます!
CAMPHOR- の開催するイベントとしても過去最大級の参加人数で、とても期待が高いことが伺えました。
内容としても「Go」「Git」「ハンズオン」と三拍子揃っていて魅力的ですね。
では実際にイベントがどのような感じだったかご説明いたします!
オープニング
今回講師として来てくださった方は株式会社ミクシィの開発本部インフラ室で「映像配信・編集基盤」の開発をされているしゅもんさんです。Git Challenge の問題解説や新卒エンジニアの Git研修の講師などもされておられ、視聴者の踏み込んだ質問にも非常にわかりやすく回答されていました。
【講義】Gitの内部構造について
まず git log
を実装するにあたって最も重要な commit
が Git 内部でどのように処理されているのかから始まります。
「blobハッシュ」「オブジェクト」「SHA-1」「refs」などのキーワードをもとにわかりやすく解説してくださっています。
また「commitハッシュの衝突」「commit の改ざん」といった話なども交えていて、聞いていて非常に面白い講義でした。
【ハンズオン】git log
の実装
次は実際に Go 言語を用いて git log
を実装するパートです。
講義部分で学んだことを踏まえて実際に手を動かし、Git の実装の中でも障壁になりやすい git log
を理解します。
およそ1時間10分ほどかけてほぼ0 (一部の型やgit log
以外の部分は除く) からコードを組み立てていきます。
先ほど学んだ知識がどんどんコードに落とし込まれ、よりいっそう理解が進んでいきます。
pack-file を考慮した git log
の実装
ここからが本題です。先ほどまでの実装では pack ファイルを考慮していません。
pack ファイルを理解する上でバイナリに関する知識が要求されるので慣れていないと非常に難解です。しかし Git を作る上では避けては通れない道です。
講義でも pack ファイルの説明は必要なバイナリの知識から始まります。また後半では idx ファイルなども登場します。
それらの説明が終わるといよいよ真の git log
の実装ハンズオンが始まります。
最後に
今回のイベントは非常に濃い内容で誰もが新しい知識を得たに違いありません。
またイベントは全体で約4時間にも及びましたが、終始わかりやすい説明と興味深い数々の知識であっという間に駆け抜けてしまいました。
本イベントのアーカイブは YouTube の CAMPHOR- 公式チャンネル に上がっているのでぜひご覧ください。
まだそこまで Git や Go、バイナリに関して習熟していないという方はパート毎に理解を進めるのも良いかもしれません。
(さらに株式会社ミクシィさん及びしゅもんさんのご厚意で講義資料もすべて公開されています。講義資料)
参加してくださった皆さん、協賛してくださった株式会社ミクシィさん、そして講師として資料の準備と最高の講義&ハンズオンをしてイベント全体を取り仕切ってくださったしゅもんさん、本当にありがとうございました!!!