Global Day of Coderetreat 2018 in Matsuyamaに行ってきました
Coderetreatとは
全世界で同時に行われる(時差はある)プログラミングのイベントです。
内容は毎回共通で、ライフゲームの実装です。 実装したことはないけどライフゲームはまあ何とかなるかと思ったんですが、結構疲れました。 レポートをググったところ、「ビリーズ・ブートキャンプみたい」という感想があって、 確かにそんな感じやなと。
事前準備
他の人とPCを共有するということで、事前に以下の作業をしました。 特に入力履歴削除は重要です。
- Chromeの履歴を削除
- Safariの履歴を削除
- ダウンロードフォルダの整理
- ダウンロード履歴の削除
- ゴミ箱クリア
- Google日本語入力
- 環境設定 → サジェスト → 全入力履歴を削除
- 入力履歴からのサジェスト自動表示自体を無効にしたほうがいいかもしれません。
- 環境設定 → 辞書 → 学習履歴をクリア
- 環境設定 → サジェスト → 全入力履歴を削除
- Mac日本語入力: キーボード → 入力ソース → 変換学習をリセット
セッションの詳細
2回目以外は自分のマシンでやりました。
1回目 言語: Ruby、環境: RubyMine
相手がRailsで開発をしているとのことなのでRubyを選択。 最初なのでルールを把握してじっくり取り組むことにしました。 RSpecは自分が初めてなので慣れてなかったりいろいろあり、 ようやく生存判定のコードが書けたところで終了。
2回目 言語: C#、環境: Visual Studio for Mac
相手と共通で使える言語がなかったのですが、 「JavaとC#は似てるからなんとかなるやろ」と思いC#を選択。 今回は盤面の実装をしっかりやりたいのを目標にして、結構できたかなと。
C#は初めてだったのですが、「[Fact]
は @Test
みたいなものやな」
という感じで類推しながら進められました。
3回目 言語: Java、環境: IntelliJ IDEA
今回は相手がどの言語でもと言われたので、ひとまず慣れているJavaでやりました。 tryの内容が「マウスを使わないこと」だったんですが、 自分が普段どれだけマウスに頼ってるかがわかりました(ヽ´ω`)
このあたりから、最初に実装した設計では良くないというのがだんだん分かってきました。
4回目 言語: Ruby、環境: RubyMine
お昼休みカレーをいただきました。
今回は相手がRubyを教えてほしいとことでRubyを選択。 Ruby独特の文法に驚いてたのが印象的でした。
今回はバグに引っかかってしまい、時間のロスが大きかったです。 バグの原因は演算子の優先順位だったのですが、焦ってしまい時間がかかってしまいました。
このときのtryにif文は使わない〜とかがあって、 このイベントの目的はOOコード養成ギブスと同じだなと感じました。
そのあとの5回目のセッションのときにまさにこれが出てました。
5回目 言語: Java、環境: IntelliJ IDEA
これまでは少しずつ丁寧に進めることを重視してたのですが、 完走なしはちょっと寂しいなぁと思ってたので、 相手と相談して、自分がコードを書くドライバで、相手がナビゲータに専念し、 ガッツリ行くことにしました。
休みなしでコードを全速力で書いて5分前になんとか完成。 でも表示用のコードがなかったので自分が書いて動かしてみたら・・・あれ、違ってる? まさに「蛇足」と呼ぶべき事態になるかと思ったんですが、 よくよく見ると勘違いで、正しく実装されていました。
配列をべた書きするコードでまだまだこれからですが、 とりあえず動いたのでOK。
6回目 言語: Java、環境: IntelliJ IDEA
何とか完走したのと、相手(今回は自分含めて3人)がプログラミング詳しくないとのことなので、 Javaを使って教える側に徹底してました。 教えることに徹するのもまたいい経験でした。
感想
普段はじっくり考えながら実装することがほとんどなので、 45分でテストも実装も行うのはかなり大変でした。 時間制限があるとどうしても焦っちゃうんですよね・・・
悲しいかな、ペアプログラミングもほとんど経験がないので、 どうやってドライブすればいいのか試行錯誤してました。
自分の場合は、typoの指摘と詰まったときのサポート以外はあまり口出しをせずに、 書き終わってから「こうしたほうがよりよくなる」という説明を入れましたが、 これでいいのか悩みどころです。
あと、完走したのも結局配列による実装だったのですが、 オブジェクト指向らしくないとは感じてたので、 いろいろ考えて終わったあと議論していました。
2つほど案が出たので、時間があればコードを書いてGitHubに上げたいと思います。
懇親会
花園町の獅子丸さんで懇親会。 モツがおいしゅうございました(写真なし)。
名刺も持っていったんですが、結構ネタになってよかったです。 予想外だったのが「アイコンがかわいい」というコメント。
←AnsibleでRedmineを構築するサンプルを作った
逆ホウレンソウが大切な理由→