つくねの手帳

C++およびAndroidアプリ開発メインで何か書きたい

Coderetreat in 秋葉原 に参加しました。

11/17はGlobal Day of Coderetreatということで、秋葉原でもCoderetreatが開催されたため参加してきました。

イベントの概要はこちら。
minna-de-ochakai.connpass.com

  • Coderetreatとは

プログラマのスキル向上を目的としたイベントです。
基本的に企業などがスポンサーとなり、参加者は会場、ランチ、飲み物などを無料で提供していただけます。

実際に何をするのかざっくり書くとこんな感じです。
・お題は固定で、コンウェイライフゲームを作ります。*1
・45分を1セッションとしてペアプログラミングを行います。
・ペアは毎回変更します。
・コードは各セッション毎回0から書きます。持ち越しは禁止です。
・使用する言語、フレームワークは自由です。
・1メソッド3行以下やループ禁止などの縛りが追加されることもあります。

  • セッション開始!

今回は全体を通して、TDDを用いて進める。セッションはペアもしくはモブプロで進める。という方針でスタートしました。

・第一セッション
最初のセッションはモブプロ。
人数5人、使用言語Python
縛りは特になし。TDDで実装。

最初は、セルに状態を持たせて、メソッドで取得できるようにする機能を作りました。
モブプロは、メンバー間でスキルに差があっても複数人で補完できるので初対面同士でも結構有効だと感じました。

・ランチ
協賛企業様からおしゃれランチとデザートが提供されました。

f:id:tukunen13:20181203180837j:plainf:id:tukunen13:20181203180841j:plain
ランチ&デザート
屋上を開放してもらい、青空の元デザートをいただきました。
TDDについてや普段使っている言語についてなどの話で盛り上がり、ランチタイムにLTをやるという話はふんわり立ち消えにw


・第二セッション
もう一度モブプロ
人数確か6人?使用言語Kotlin
縛りは特になし。TDDで実装。

だれも詳しくない言語でやってみようということで、Kotlinを選択しました。
やっぱり一人くらいは知ってる人がいないとなかなか進まないよね。という感想。

・第三セッション
ペアプロ
使用言語Python
1メソッド3行以下縛り。ループ禁止。

せっかく3行以下縛りなので、よりロジカルなところをということで、周囲のセルから次世代を判断するロジックを実装しました。


・第四セッション
ペアプロ
使用言語C#
1メソッド3行以下縛り。

実装より、設計をじっくりやって見ることにしました。
セルを配列を使わずに表現出来るように設計しました。


・おやつ

f:id:tukunen13:20181204003230j:plain
おやつのオムレット


ここで予定の時刻になってしまったので、ひとまず終了となりましたが、有志の方たちでおまけセッションを行いました。

・おまけセッション
モブプロ(ハードモード)*2
使用言語Java

おまけということで、ちょっぴりアルコールも入れつつモブプロをしました。
ここではちょっと変則的なアプローチを試しました。
まず、いきなりライフゲームのルールを無視してべた書きでブリンカーパターンを出力する実装をします。
そこからライフゲームのルールのロジックを足していき、ロジカルに動作するようにしていきました。

普段の業務での例をとると、まずは画像だけのモックアップを作り、そこにビジネスロジックを実装していくイメージです。
この手法はATDD*3や、BDD*4と呼ばれる手法だそうです。

  • 振り返り

今日一日の振り返りを、Fun/Done/Learnというフレームワークを使って行いました。
個々で1日の感想をかき出し、Fun(楽しんだ)、Done(やり切った)、Lean(学んだ)の視点で、他人の感想をそれぞれのサークルに張っていきます。
今日全体を通して、どんなことを楽しめたか、学びべたか、実行できたかが見えるようになりました。

f:id:tukunen13:20181208205930j:plain
みんなの感想まとめ

  • まとめ

参加前は1セッション45分はなかなか長いなと思っていましたが、実際に設計とコーディングを行うには短く、その中で形にするためにかなり集中するので、どのセッションもあっという間でした。
普段とは違う手法、初対面の人、新しい言語と知らない事盛りだくさんでしたが、その新しいことを楽しくチャレンジできるいい機会となりました。
ライフゲームについてもかなり奥が深く、その仕組みを深堀してみるのも面白そうです。

*1:ライフゲームとは。単純で奥が深いです。 ライフゲーム - Wikipedia

*2:ドライバーの人はアドバイザーの指示以外のコードは書けない

*3:受入テスト駆動開発

*4:ふるまい駆動開発