mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

学生向けgit謎解き技術イベント「git challenge」のご案内

第6回git challengeを開催します!

2017/9/2に、第6回git challengeを開催します!
開催にあたってのスタッフへのインタビュー、および参加エントリーはこちらからどうぞ!


f:id:mixi_engineers:20160307143957j:plain

f:id:mixi_engineers:20160307144002j:plain

f:id:mixi_engineers:20160307144006j:plain

開催においては、チームごとに問題数だけ必要なprivate repos, およびノベルティなどGitHub Japanさまのご協力がありました。ありがとうございます!

はじめに

人事 & イノベーション・センター 森本です。

株式会社ミクシィ (ミクシィグループ) では、皆さんにおもしろいスキル体験をしていただくため、そして意欲やスキル・センスある学生さんたちとの出会いのために、さまざまな学生向けイベントを企画・実施しています。

セキュリティ・バグをわざと入れたSNS mixiを攻略していただく「Scrap Challenge」や、スクラム・アジャイルのフレームワークであるインセプション・デッキを体験いただく「Inception Challenge」、あるいはUI改善のデザインプロセスを学べる「Prototype Challenge」など、エンジニア志望、総合職志望、デザイナー志望といったさまざまなスキル志向の学生さんたちに、面白く価値ある体験を提供しようと、取り組んでいます。

そして、来たる11月、また新たな「チャレンジ」イベントを開催します。
git challenge (ぎっと・ちゃれんじ) です。

f:id:mixi_engineers:20151015214311p:plain

#mixi_git

gitのテクを体験し競えるイベント

git (ぎっと) は、世界中で広く使われている分散型バージョン管理システムです。技術系の方であれば既にgitが手に馴染んでいるかたも多いと思いますが、あらためてgitについて簡単に振り返ってみます。

複数人でデジタル作業を行う場合、作業結果のすり合わせは常に重要です。

「せっかく編集したファイルを同僚に上書きされちゃった」
「人の作業を待たず、別の編集もとっととやりたい」
「先週のバージョンに戻りたいけど、もう戻れない……」

こんなの嫌ですよね。

そんな、現場の込み入ったコラボワークを助けてくれるのがファイルのバージョン管理システム(Version Control System)です。古くからさまざまなVCSがありますが、その中で最も強力で、性能や実績、普及度でも優れるのがgitです。いわゆるプログラム開発だけでなく、電子書籍の共同執筆校正など、一般的なデジタルコンテンツの共同作業にも、いまや広く使われています。

もちろんミクシィでも、モンスターストライクSNS mixi、ほか各種サービスやアプリの開発でgitを大規模に活用しています。高品質なプログラムやコンテンツを大人数で速やかに手がけていく現場では、gitの使いこなしも一段と本格的。時には、込み入ったバージョン分岐や後戻り、マージを解決しなければならないこともあります。そんな、今の現場ならではの解決スキルをうまくチャレンジ課題としてイベントし、みなさんに体験して学んでいただき、そしていつか一緒に課題解決できる仲間として出会いたい。

git challengeは、そんな1 dayの技術体験イベントです。

応募要項

開催日: 2015.11.15(日) 11:00-19:00
会場: 株式会社ミクシィ本社(東京・渋谷)
〒150-0011 東京都渋谷区東1-2-20 住友不動産渋谷ファーストタワー7F
http://mixi.co.jp/company/#access

ほか詳しい情報、そしてエントリーは、ミクシィグループ新卒採用サイト から
「【1 day技術イベント】git challenge」をご覧ください。

応募締め切りは2015.11.4(水) 23:59 JSTです。
興味お持ちのかたは、ぜひお誘い合わせのうえどうぞ!

git challengeの舞台裏

Scrap Challenge, Inception Challenge, Prototype Challengeと、ミクシィのワークショップイベントは、企画も実施も手づくりです。そのほうが、ミクシィならではの技術やノウハウをユニークにお伝えでき、体験していただけると思っているからです。このgit challengeも、若手エンジニアが「何かおもしろいyet another foobar challengeはないかな……」と考えて産み出してくれたものです。

そんな彼らはというと。

おっ、先日オープンしたばかりの、ミクシィの新たなコラボスペースの奥にある通称「ファミレステーブル」で、ちょうど彼らがお昼休みに、git challengeの設問についてコミュニケーションしているところではありませんか(棒)。

 

f:id:mixi_engineers:20151015215248j:plain

 

今回、git challengeの企画発想から、設問やシステム構築に至るまで技術的立ち上げのコア部分を担当してくれているのが、彼ら3名のコアメンバー。全員2014年の新卒入社です。

森本 (github.com/mrmt): おつかれさまです。まず、簡単な自己紹介から教えてください。

村山 (github.com/oppai): 2014年新卒入社の村山です。仕事は、モンスターストライクのサーバまわりの新機能の開発や、運用まわりを担当しています。

菊池 (github.com/kikuchy): 同じく2014年新卒入社です。いまは株式会社Diverseに出向して、YYCのAndroid版クライアントの開発をしています。

国分 (github.com/Kuniwak): 2014年新卒入社です。仕事は、SNS mixiのフロントエンドの闇払いをしています(笑)

mrmt: 闇払いとは……

Kuniwak: たとえば、mixi.jpでは生で直接CSSを書くのをやめてLESSに移行したんですが、対象コードサイズが6万行だったりしました。あとは例えば, gulp.jsのビルド時間が2分かかっていたのを10秒に短縮したりしました。基本的にはincremental buildを作るんですが、加えて自分でplug-inを作ったり。

mrmt: 仕事人感ある…… ありがとうございます。

 

f:id:mixi_engineers:20151015220312j:plain

 

mrmt: そもそも皆さんには、「次の新たなチャレンジ・イベントを創ろうよ」というレベルから相談に乗っていただいていて嬉しい限りです。このgit challengeのアイディアが降りてきたのって、どんなタイミングでした?

Kuniwak: ちょうどその一ヶ月ぐらい前、gitで死ぬほど苦労した覚えがあって、「あっ、これ問題作れるレベルだな」と思ったのがきっかけかも。

oppai: 業務で共同開発していくと、Kuniwakくんが言っていたように、やっぱりいろんな(バージョン管理の)課題にぶつかります。このレベルの課題は学生の頃は体験できなかったので、ならばgithubやCIを組み合わせて、攻略型のイベントに仕立てたら面白いんじゃないかと。

kikuchy: 学生のうちに、ここまで体験したり教えてもらえたら嬉しかったな…… というのはありますね。

mrmt: なるほど。では、git challengeの仕掛けを作り始めてみて気づいた難しさは?

kikuchy: そうですね…… まず問題を作って、その問題が果たして自分の意図したレベルで解けるものになっているかな…… という難しさがひとつ。
次に、それ(問題となるようなgitのややこしい状態)を再現するために自分で手を動かして作るのが大変で、ただ、それを自動化しようと思うと、それもなかなか大変。改めて、他のVCSと比べるとgitのマージ性能の高さはまさに圧倒的。日頃使っているツールのメリットについても再発見できました。

 

f:id:mixi_engineers:20151015220526j:plain

 

Kuniwak: 問題を作っている本人ですら、今が(git的に)どんな状態なのかよく分からなくなるような難しい問題を作り出してしまったり。これも、実際に問題を作ってみてわかった難しさですね。

mrmt: 問題の難易度を調整するチューニングにもかなり苦心してらっしゃる……

Kuniwak: 苦心してますね。すぐに分かる問題にしちゃうと面白くないので、ひとひねり加えたりとか。

oppai: 参加者には「gitの困難」に立ち向かってみてほしいので、例えば特定のプラットフォームや言語に依存したプログラムやスクリプトといったものは課題としていません。

mrmt: 実際、入社前にもgitやgithubは使ってました?

kikuchy: いちおう使ってはいました。が、一応commitができて, mergeができて, remote repositoryにpushができる。という程度の技能しか持っていなかったので、reflogを見たり、refspecいじったりとか、そういうことまでは学生当時はやらなかったです。

oppai: 僕はアルバイトでsvnをずっと使ってて, gitは個人開発でしか使ってなかったです。subversionはどうしてもcommitの粒度が大きくなるので、そのぶんtrunkを常にきれいに保とうというインセンティブが働きます。その点、gitは分散VCSなので、commit粒度は仮に細かくてもpullやmergeの大きさが違うなど、文化の違いも感じました。

 

f:id:mixi_engineers:20151015220920j:plain

 

Kuniwak: 学生のころ、大学のゼミで、論文のテンプレートをみんなで管理したくて、githubへの移行を呼びかけたんですが、結局自分ひとりで使っていたという……

mrmt: 「みんなに使ってもらう」ところが一番難しいんですよね…… わかります。

ラスボスのキャラ

mrmt: では、その後に入社して、職場で出会ったgitやVCSの難しさにはどんなものが?

一同: それは…… そのへんのエッセンスが今回の問題になっているので、ネタバレが…… (笑)

Kuniwak: 恐らく、git challengeの中で一番むずかしい問題は、自分が体験した、その1ヶ月前の体験です。

mrmt: 最後の、ラスボス的な……

Kuniwak: ラスボス的なやつですね(笑) 詳細は明かせませんが、「過去に雑なことをすると、あとで面倒なことになる」というのが、最終問のテーマです。

mrmt: なるほど。それを解いて体験することで、git共同作業での良き考え方や姿勢も身につくぞと。

Kuniwak: そういうことです。

commitlogを解き明かせ

mrmt: git challengeには、どんなかたに来て欲しいですか?

Kuniwak: 個人で使うだけではわからないgitの難しさがあります。複数人で作業を重ねていくとどうなるか。それを体験できます。

kikuchy: 仕事として働く際のgitの実活用を知りたい人かな? 今回の課題まわりをちょっと知っただけで、ぐんとgitを扱いやすくなる。

oppai: ほかにもCI連携や、Slackに通知させたりとか、そんなチーム環境も学んで体験できると思います。

Kuniwak: このgit challengeの参加者にとって、またgit上級者にとって最も重要な資質は、gitを知っていることではなく、gitのcommitlogを解き明かすこと。この部分について、とても実力がつくと思います。

 

f:id:mixi_engineers:20151015221051j:plain

 

git challengeの開催は2015.11.15(日)です。現場から生まれたgit問題を解き明かしていくことで、本場のgit力 (ぎっとりょく)が身に付く体験を、ぜひ楽しんでください!
エントリーはミクシィグループ 新卒採用からどうぞ。

再掲

git challenge 第2回を2016/3/5(土)に開催します!
詳細と応募はこちらをごらんください!

では、会場の渋谷ミクシィでお会いしましょう!