阿呆の浅知恵

ふとももは至高

CyberAgentのハッカソンに参加した時の感想

CyberAgentのKyotoHackに参加した感想

CyberAgent主催のKyotoHack2018に参加しました。
学生エンジニアが京都に集まって三人一組でチームを組み、テーマに合わせてソフトウェアを作ります。
その感想を書いていきます。

参加の経緯

git-push-hackathon #1 のAndroid部門で優秀賞を取り、CAの現場のエンジニアと食事をして、そこで現場でのインターンを進められました。
そこで申込みをした所、こちらのKyotoHackを進められました。要するに現場インターンの方は面接で落ちたってことですね。

git-push-hackathonの詳細は別で記事があります。
https://matsudamper.hatenablog.jp/entry/2018/04/02/192135

感想

良かった所

  • メンターさんが揃ってる
    学生が使う技術に対してしっかりメンターが揃ってました。Unityのエンジニアもいたので驚きでした。
    コードレビューもしてもらいました。結果は良いんじゃない、とのことでした。やったね。

  • CIなどの設定を向こうでやってくれているので開発がスムーズだった
    CIなどの設定面倒くさいですもんね。サーバーとかの設定も全部やってくれていたので開発がスムーズにいきました。

  • 台風に対する判断が早かった
    台風が接近していましたので、初日の懇親会が延期になりました。

悪かった所

  • 連絡が遅い
    宿の前泊、後泊がアナウンスされたがチェックイン時間が後日ということで新幹線の予約ができなかった。詳細が連絡されたのが一週間を切ってから。
    更に外部モニターがあることがアナウンスされたが変換端子は無いので持ってきてというアナウンスは前日だった。
    git-push-hackathonの時もそうだったが連絡が遅い企業だなという印象がある。現場エンジニアとの会食の連絡も全然来なかった。せめて何日までになんの連絡をするとかは言ってほしい。後日って何日。

  • 宿のWi-Fiが繋がらない
    これはどこも中々考慮してない部分だと思う。SanSanでの1Dayもみんな一斉にGradle syncするので30分以上時間がかかった。Pocket WiFiを手配してくれたのでそれまではテザリングでやり過ごしました。

  • 懇親会で技術の話があまりできなかった
    みんな使う技術がバラバラということもあるが技術的な話がほぼできなかった。技術者として普遍的な話もあるが、それも少ししかできなかった。
    git-push-hackathonの時は周りに居るのがAndroidエンジニアだけって感じだけだったのでAndroidの話や技術者としての話が沢山できたので良かったです。

  • 秘密保持契約書が自分用が無かった
    これ貰えなかったの初めてです。中身読んで判子押しましたが、後になって内容忘れました。覚えてないから何言っていいのか分からない。こちらが不利になるだけ。

  • 秘密保持契約書を現地で書かせる
    それから京都の現地で書かせたって事も微妙ですかね。これ内容に関わらず書くしか無いじゃん。宿は向こうが取ってるんだから。

実際の流れ的な話

pixivでインターンをしていたので少しでもインターン参加できる日数を削らないためにpixivで終業時間まで働く→そのまま京都へ夜到着→終わった翌朝にそのままpixivへというムーブをしました。

京都では宿と会場の往復しかしてませんでした。京都らしいことしてる隙がない。徹夜の日もありましたし。
でも鴨川を散歩したかったのでそれはしました。途中で牛すじ煮込みを一本買って土手に座って食べていました。台風の風が強い日でした。
夜ご飯は懇親会の日以外は任意参加でメンターと食べに行けましたが時間が無かったので断念。今思えば技術的な話できそうにも無かったので別に良かったなと思います。
名前覚えるのが苦手なのでメンターさんたちの名前覚えるの大変でした。

いつもと違う環境+疲労のコンボでめっちゃ肌が荒れました。もうこういうのには参加しない。(git-push-hackathon終わった後も同じ事言ってたな?)
git-push-hackathonは自宅だったのでまだ良かったですが。

技術的な話

今回のハッカソンの結果は優勝でした。その勝因の考察を書いていきます。
まずチーム構成が素晴らしかったと思います。
自分はAndroidで参加してチーム二人はサーバー側で一人はAndroidの通信周りも触ってもらいました。
自分は通信周りはあまりやってこなかったのでサーバーとAndroidの橋渡しをできる人が居たのは強いと思います。
サーバー側は速度アップのためのチューニングもしていたそうなので強いと思いました。

自分のやった範囲内だとpixivでの自分のメンターさんのおかげで取れた優勝だと思っています。

  • AndroidX
    やらないとなぁと思っていたのでやりました。思ったよりも簡単でした。DataBinding以外のAnnotation Processing使ってなければそこそこ簡単なのでは。

  • BottomSheet
    pixivでのメンターさんに誘われて行ったノハナ(mixi)でのデザインの勉強会でのことに影響を受けました。
    丁度ioschedのソースコードが公開されたのもタイミングが良かったです。あの丸角ってCardViewじゃなくてDrawableだったのかよ…CardViewのソースコード見てこれ不可能じゃねって思ってた所だったんだよなぁ…
    https://nohana.connpass.com/event/94621/

  • モジュール切り分け
    行こうと思ってたけどpixivのインターンと時間被ってるからどうしようかなぁと思っていた所、またしてもメンターさんに誘われたので早く上がって一緒に行ったCookPadの勉強会の知識です。
    通信周りをモジュールに切り分けたのでビルド速度が上昇するだけではなく、自分の触るべき範囲が明確になりました。特に今回通信周りを別の人に書いてもらっていたので。それとモデルも分けて3つのモジュールで分けました。
    https://cookpad.connpass.com/event/96502/

  • Flux
    pixivで学んで使っていました。めっちゃ流れが追いやすい。最初はどこから見ればいいのか分からなかったけどわかればすごく見やすい。
    でもこれ使うにはDI必須なんですよね。Daggerは使ったことありますがAndroidInjectorは触ってみましたが全くわからない。ということで次の項目へ。

  • KOIN
    フォロワーさんがTwitterで流してて使ってみた所、KOIN簡単!シンプル!Annotation Processing使わなくていい!ということでKOINを使用しました。
    こちらのブログになります。
    https://bps-tomoya.hateblo.jp/entry/2018/07/21/142503

結果について

結果は優勝でしたが、優勝するとは全く思っていなかったので結果が出た時はびっくりしました。
自分の範囲内だけで話せばベータ、アルファの技術使いまくってアーキテクチャにFluxを使っただけで中身はホントギリギリに最低限の物ができただけですし…
ベータ、アルファの技術を使いまくった理由は、お金出る訳でもないし実際のサービスでもないし好き勝手やってやれという考えからやりました。なのでKOINとかのライフサイクルの挙動を確認するのとかに時間が取られて大変でした。最新版はなんかバグか挙動変更あったし。結果には納得していないという話でした。
ノートパソコン貰えるらしいけどいつになるかな。

おわりに

久しぶりにブログ書きましたね。夏休み忙しかったですし。他にも色々書きたいことあるのに…
pixivでのインターン話はpixivでのインターンが終わったら上げようと思います。