git challenge 第10回に向けて+終えて

松原信忠
Nov 30, 2018 · 9 min read

ミクシィの松原です。 本記事は「ミクシィグループ Advent Calendar 2018」の1日目の記事です。 トップバッターです。

本記事では、ミクシィが行なっている「git challenge」という学生向けの競技型イベントについて書きたいと思います。 記念すべきことに、本日12月1日にちょうど第10回目の git challenge を催します!

(なので、言わずもがな、「終えて」の部分は開催後に追記します)

2018/12/02 追記: 「終えて」の部分を追記しました!

git challenge

git challenge とは、弊社が催している学生向け競技型イベントで、ひとことで言ってしまえば git で解答するプログラミングコンテストのようなものです。 参加する学生は git コマンドを駆使して、コンフリクトの起きるブランチどうしをマージしたり、コミットの順番を並び替えたりして、こちらが要求するコミットを作ります。

基本ルール

次のようなルールでポイントを集め競い合う競技となっています。

  • 学生らはふたり一組のチームとなり、各チームには GitHub の組織アカウントを割り当てられる
  • それらのアカウントには問題用のリポジトリが20個弱ほど用意されており、リポジトリに解答として指定通りのコミットができれば正解となる
  • 正解することでポイントを得ることができ、時間内により多くのポイントを得たかどうかで順位を競う
  • 問題には難易度があり、難しいほどポイントが高いしくみになっている

イベントはいつも弊社オフィスで、休日を丸一日使ってやっています。 ただし競技時間そのものは3時間ほどです。

極めて簡単な問題であれば、何個かを GitHub 上に公開してあります。 興味のある方はぜひ解いてみてください(ただし自動で成否を判定するシステムは公開していません)。

過去の開催

2016年3月から定期的にやってます。 本日2018年12月1日に記念すべき第10回を催す予定です。

  • 第01回: 2015/11/15
  • 第02回: 2016/03/05
  • 第03回: 2016/08/21
  • 第04回: 2016/11/20
  • 第05回: 2017/01/28
  • 第06回: 2017/09/02
  • 第07回: 2017/11/23
  • 第08回: 2018/02/03
  • 第09回: 2018/09/08
  • 第10回: 2018/12/01

ChangeLog

第10回までの間に問題の刷新やシステムのリニューアルなどされています。

  • 第02回: 問題を3問追加・3問削除
  • 第03回: 問題を2問削除
  • 第04回: 自動採点システムの高速化
  • 第05回: ansible の導入
  • 第06回: 問題を6問追加
  • 第06回: Terraform の導入
  • 第07回: 問題を1問削除
  • 第07回: デプロイツール群のDocker化
  • 第08回: 問題を6問削除

第10回に向けて

記念すべき第10回に向けていくつかのことを行いました。

キービジュアルのリーニュアル

今まではこのようなキービジュアルを利用していました。

第9回のキービジュアル

そして、10回目ということで次のようなキービジュアルに変更しました!

第10回のキービジュアル

ポイントの見直し

現在、問題の難易度は1から6まであります。 解答することで得られるポイントは、難易度がそのままポイントになっています。 前回は:

  • 1点問題: 3つ
  • 2点問題: 5つ
  • 3点問題: 4つ
  • 4点問題: 1つ
  • 5点問題: 2つ
  • 6点問題: 1つ

しかし、後半の4–6点問題は今まで解かれたことはありません。 問題の難しさは置いておくとして、得られるポイントに大きな差が無いのも原因かなと考えました。 そこで、獲得ポイントを一気に増やしてみることにします。 具体的には:

  • 4点問題 => 8点
  • 5点問題 => 9点
  • 6点問題 => 10点

変更してみた結果、第10回はどうなったのか、開催後に追記します!

Dhall の導入!?

(注意: この章だけ執筆者の趣味丸出しです)

現在 git challenge を開催するのに必要な基盤システムに関するリポジトリはざっくりと3つに分かれています。 インフラ関係・スコアボード・デプロイツール群の3つです。 これらにはそれぞれの設定ファイルがあり、開催するたびにそれぞれの設定ファイルを編集する必要があります。

そこで、Dhallという設定記述言語を導入し、いい感じに集中管理しつつ、全部のリポジトリにブロードキャストする仕組みを作りました。

ざっくりとした Dhall + dhall-ex を使ったイメージ図

Dhall は静的型検査ができ、かつチューリング完全では ない ので無限ループのような危険な設定ファイルを記述できません。 ざっくりとしたイメージを得るには、先日あった Haskell Day 2018 での発表資料がわかりやすくてオススメです。

また、この自作した dhall-ex というツールは GitHub に公開してあります。

dhall-ex は Haskell というプログラミング言語で作ってあります。 Haskell はまぁまぁキャラの濃い言語なので、dhall-ex の話はこれ以上しないでおきます(代わりに Haskell Advent Calender 2018 でしたいと思います)。

(ちなみに、弊社に Haskell プロダクトがあるわけではありません。まだただの趣味です。)

git challenge publications!

今まで git challenge に関する公式のまとめは「NAVERまとめ」を使っていました。

ありがたいことに、人事の方が開催するたびに丁寧に更新を続けてくれていたのですが、「NAVERまとめ」はイベントごとにページを分割したりなどができないため、過去の情報を追うのが大変です。 そこで、git challenge に関する公開情報をまとめたリポジトリを作成しました!

今後はこのリポジトリに公開情報をまとめていきます。 人事の方の GitHub デビューです(圧力)。

(これを GitHub Pages などにするかどうかは、おいおい考えます。)

今後のはなし

さて、きっと無事に第10回も終えるので、第11回に向けての構想を記述しておきます。

Docker 化

技術書典5で頒布した Xflag Teach Note にも書いたのですが、私には採点システムの刷新をするという野心があります。 現在 Jenkins で行われている採点システムを Docker との親和性の高い Drone を使ったものに置き換え、伴ってスコアボードなども Docker 化しシステム全体を Docker 化してしまおうと考えています。

新しいインフラの構成

残念ながら第10回には間に合いませんでしたが、次回、第11回にはお披露目できるように頑張ります 🚩 。

git challenge academy

これはまだ計画段階の話なのですが、新しい git 系イベントとしてビギナー向けのモノを考えています。 このビギナー向けのイベント「git challenge academy」 が実現すれば、逆に git challenge の方は難易度アップができるかもしれません。

終えて

ちゃんとしたまとめは publications の方で書くとして

  • ついに上位問題を解いたチームが現れました!
  • ポイントを変えた結果として上位問題に取り組むチームが増えました(上位問題を解いたチームは3点以下を全部解いてたので結果は変わりませんが…)

おまけ

これはあくまでも与太話ですが、実は自分が弊社にエントリーしようと思ったきっかけは git challenge でした。 イベントは楽しく、このようなイベントを会社単体で企画できるのは面白いなと思ったのです。 ちなみに、結果は真ん中ぐらいと大したことはありませんでした(笑)

おしまい

さて、明日は CRE の nukosuke 氏ですね。 去年のアドベントカレンダーでは珍しい CRE というチームを紹介してくれました。 今年も CRE 関連なんですかね?楽しみです。

mixi developers

ミクシィグループのエンジニアやデザイナーによるブログです。

Thanks to Emi Sugita

松原信忠

Written by

I like Haskell 😉

mixi developers

ミクシィグループのエンジニアやデザイナーによるブログです。

More From Medium

More on Events from mixi developers

More on Git from mixi developers

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade