これはtraP Advent Calendar 11/27の飛び入り参加記事です。
はじめに ~git challengeとは~
git challengeとはバージョン管理ツールgitを扱った問題を解くコンテストで、株式会社mixiが運営しています。
2017/11/23に第7回大会が開催され、traPからはのんさことNamazuが参加しました。
今回はそれぞれが参加記を書こうと思います。
のんさこ
のんさこです。
株式会社ミクシィさんが主催したイベント "git challenge" の7回目に参加しました。
どうやら今回も「記事を書くまでがgit challenge」らしいので、短めですがレポートをこちらに書くことにします。traPのブログでは1年ぶり2度目のレポートです ( 4回目: /post/100/ )。
"git challenge" とはバージョン管理システム git の問題を解決する競技型技術イベントです。
詳しくはこちらを。
http://alpha.mixi.co.jp/entry/2015/10/16/114203
当日の流れ
午前
キーノートとかチュートリアル。
社内でどうgitを使っているかを知ることができ、いろんな使い方があるんだなぁとひしひしと感じられました。
おひる
https://twitter.com/nonsako/status/933530494779531264
https://twitter.com/nonsako/status/933531056463998976
焼きそばの上に小麦粉の生地と卵がのっていたものでした。炭水化物の上にたべものがのっていたので実質🍣。おいしかったです。
午後
腹ごしらえも終えて本戦。問題はそれぞれ1個から6個までの★がついており、それが難易度と得点になっており、解いた問題の★の数で競うというルールでした。ちなみに本戦ではフォームに入力してsubmitすることで飲み物が出てくるサービスのお陰で捗りました。アイスティーおいしい。
相方も僕もgitの経験は浅い(自称、確信なし)とのことなので、お互い★の少ないものから解くことにしました。なお過去のイベント同様問題内容は公開できないため詳しい内容は書けないです。つらい。
序盤はcommitなどの割と基本的な問題が出てきましたが、中盤からは複雑な操作を要されたりして、????ってなる場面も多く、ぱぱっと行きませんでした。スコアボードを見たらいつの間にか1位になってたし、相方も先に★x3の問題を正解してたので、慌てました。★x5以上の難易度は現実世界で見たくないような問題ばかりでした。ぜんぜんわからん。
そんなこんなでアイスティーを飲みながら解いてたらあっという間に終了。結果は★x27でトップ。逃げ切りました。
https://twitter.com/nonsako/status/933598583324000261
メダルとOctocat頂きました(no photo)。Octocatたんかわいい。
その後は問題解説や、gitにコミットした方のお話を聞いたりしました。gitって凄いと思いながら聞いていました。
懇親会
🍣は出てきませんでしたが🍺が出てきました。おいしかったです。
https://twitter.com/nonsako/status/933670194949406720
おわりに
gitはただのバージョン管理のためのシステムであり、生産性のためのツールです。ですが、その生産性を最大限まで上げるためには、gitに対する深い知識が必要なんだと感じることができました。そんなgitについて学べる非常に良い機会なので、gitは使ったことあるけど4,5個のコマンドしか使ったことないって方も次回応募してみてはいかがでしょうか。
ミクシィさん、おいしいイベントありがとうございました!
Namazu
こんにちは、Namazuです。
え、優勝したのんさこさんの後に書くんですか?つらい
とりあえず、結果から言うと2位でした。下から。
それでも、gitと言えば普通にチーム開発するうえでの最低限の知識しかなかった私にしては頑張ったのでめげずに書いていこうと思います。
コンテスト開始まで
前日
のんさことチズケでgitもくもく会をやりました。
私はとりあえずサルに一通り目を通しました。
一部、今まで一度も使ったことがなく気になるコマンドについては実際に使ってみました。(rebaseやbisect、cherry-pickなど)
なんだ、gitのコマンドなんて意外と少ないじゃん(フラグ)
これくらいなら普通に考えればいいけるっしょ(フラグ)
当日
会場は株式会社mixiのNSSビルです!
ちょっと駅から遠い&分かりにくい立地ですが、建物の中はカフェのようなお洒落な内装です。
開始時間まで待っていると、隣の席に今日の相方がやってきました。
git challengeでは2人から成るチームでスコアを競います。
私たちはgチームで、相方は会津大学の4年生でした。二人ともgit初心者でした。
挨拶をして色々話していると開始時間になり、コンテストの説明とチュートリアルが始まりました。
git challengeでは用意されたリモートリポジトリにプッシュすると自動採点スクリプトが走って結果がSlack等に通知されるという方式なので、慣れるためにここで一度練習することが出来ます。
チュートリアルで早とちりして間違えたのは内緒です
また、間違えてリモートリポジトリを破壊してしまってもメンターの方にお願いすればすぐにリセットしてくれます。その代わり、お願いするためには会場全体に響き渡る滑稽な音のブザーを鳴らさなくてはいけません。これは滅茶苦茶恥ずかしいです。
私は今回の大会で一番初めにブザーを鳴らしました✋
その後、ランチでデリバリーお好み焼きを食べました。
お好み焼きってデリバリーあるんですね。
グループごとのランチでしたが、社員の方も各テーブルに来てくださり色々とお話させていただくことが出来ました。
食べ終わった後、少し時間が余ったのでフリードリンクのサーバーの使い方を教えてもらいました。(正確には、使い方が分からない私と相方がどういう行動をとるのか観察された後に。)初見殺しですねあれ。
ここでランチタイムも終了し、いよいよ本番です。
モカ美味しい。
コンテスト本番
本番開始
定石ではありますが、二人で並行して別の問題を解いていく方針にしました。
予め問題は難易度順にソートされているので、頭から解いていけば問題ないだろうという算段です。
まず相方は第一問、私は第二問を担当しました。
一問目
はい、早速詰まりますね~。
解法は少し調べてすぐに分かったのですが、何故か自動採点の結果はFAILED。
しかし自動採点の出力を見ても原因が分かりませんでした。自動採点の出力でNGとなっていた要件は満たされているように思えたのです。どうやら想定外の凡ミスだったようですね。メンターの方に相談してもなかなか解決しませんでした。結局別のメンターの方が来てくださって原因は判明、解答も修正して通りました。
これは反省ですが、ここで時間を溶かしすぎた気がします。この間に3問解いてくださった相方さん本当にありがとうございましたm(_ _)m
二問目
これは見た時にすぐ何をすればいいかが分かったので調べてやるだけでした。
といいつつ、調べのに少々時間がかかりました…。
結果は一発でSUCCESS。やっぱりちょっと気持ちいいですね。
ジャスミン茶美味しい。
三問目
ここから難易度☆×2です。
端的に言うと、何をすればいいのかが分からない問題でした。
変な現象が起きるというローカルリポジトリが渡されて、実際に自分でも試してみると同じ現象が起きるのでそれを解決してほしいという内容です。(これくらいの問題概要ならセーフですか…?)
思い当たる原因が一つあったのですが、それはハズレでした。
そこでGoogle先生のお力を借りるともう一つの原因になりそうな設定が!!
…しかしそれもハズレでした。
メンターさんに助けを求めたのですが、「そこまで分かってて何故分からない」という旨の反応でした。しかし一向に分かりません。
気が付くと既にこの問題に1時間以上時間を溶かしていたので、諦めて次へ…
ちなみに、コンテスト終了後に解法を聞いて「それかー!!」という感じでした。
付け焼刃のボロが出た感じですね。
緑茶美味しい。
四、五問目
次の問題は割とすぐに解けそうな気がしました。すぐに作業に取り掛かりましたが、ここで別の問題を解いていた相方からヘルプが来ました。問題の概要を聞くと解法がなんとなく分かったのですが自分でやったほうが早いかも、と思ったので私が担当することにしました。
まずは取り掛かっていた問題を最後まで解いて自動採点に投げ、自信があったので結果を見ずにヘルプのあった問題に取り掛かりました。
しかし、実際にやってみると途中で詰まってしまいました。
それを解決する方法を調べるのに時間がかかってしまい、やり方が分かって作業に取り掛かった時既に残り時間は30分程でした。
急いで作業をして提出しましたが、結果はFAILED。一見出来たようでそのプロセスが正しくなかったというオチでした。
さて、ここでやり直そうとして後5分。先ほど採点に投げていた問題がFAILEDであったことに気が付きましたがFAILEDになってしまった原因が分かる前に時間が来てしまいました。
終了
色々とモヤモヤしつつ終了しましたが、スコアボードを見てみるとのんさこたちが優勝してることに気が付きました。私たちのチームが7点(☆1×5+☆2×1)に対してのんさこのチームは27点(☆1×5+☆2×8+☆3×2)でした。凄いなぁ。
問題解説
問題解説の時間では、参加者から解説の依頼があった問題や不正解者が多かった問題について解説がされました。
解説が進むとみんな頭を抱えたりしていました。
また、誰も手を付けなかった超高難易度の問題の解法も解説していただきましたが、皆( ゚д゚)ポカーンという感じでした。
ここで名言、
「この問題を解くとgitのお気持ちを理解できます」
懇親会
流石!豪華な食事!!お酒!!!
ビュッフェ形式で軽食を頂きながら社員の方とお話しました。
今日の問題についての話や、問題では触れられなかったgitの詳しい話、他には就職の話やエディタの話やOSの話など…
話し込んでいたらあっという間に懇親会の時間は終わってしまいました。
ビール美味しい。
最後に
普段から使っているgitですが、まだまだ知らないことは沢山あることが良く分かりました。git challengeでは問題を解く過程で「gitでは何が出来るか」や「具体的にどうすればそれが出来るか」という知識が必要になります。これらの知識はこれからgitを使っていく中で発生した問題を解決したり、gitをもっと活用したりする上で活かせるのでとてもためになると考えています。
色々と丁寧に教えてくださったり環境を整えてくださったりしたメンターの方や運営の方々ありがとうございました!
P.S.
「gitの知識には自信がある」という人はもちろん、「普段からgitを使っているけど詳しくはない」という人でもgit challengeに参加すれば得られるものはたくさんあります。少しでも興味がある人は是非参加しましょう!