[イベントレポート] ハッカソン参加者として振り返るtry! Swift TOKYO 2017ハッカソン #tryswiftconf #tryswifthack
はじめに
おばんです、KURANDという日本酒飲み放題のお店で飲む酒がtry! Swift後の疲れた体に染み渡っている田中です。(ちなみに写真に写っているのは今回のtry! Swiftでも有名な聞き起こしブログの@niwatakoさん)
今回の記事はtry! Swift TOKYO 2017の三日目のイベントとして開催されたハッカソンの振り返りです。下の写真は発表している時の写真です!
結果
Firebase賞をいただきましたッ!
商品はなんと2万円相当のスターウォーズのミレニアムファルコン レゴ! Firebaseさんありがとうございます。
アイデア・作ったもの
概要
私たちのチームは世の中に数多くあるSNSのデータを取得し、ひとつのタイムラインに集約するアプリを作りました。
今回のハッカソンではTwitterの認証を行い、DM情報を取得するところまで作成しました。それとFirebase Realtime Databaseを使ってアプリオリジナルのチャット基盤も作成しました。
GitHub
着想
最近LINE / Facebook / Slack / TwitterのDMなど、色んなチャットアプリが乱立していて、どこで何の会話が行われているかわからないので一覧性のあるものがほしいと思いました。 また、FirebaseやRealmでチャットアプリを作ってみたというチュートリアルレベルのものは良く見るのですが、本当に解決できるのかどうか僕も確かめたことがありませんでした。
詳細は以下にSubmissionとしてまとめてあります。
ちなみに今回のハッカソン参加チームのアイデア一覧は以下にまとまっています。ユニークなものが多いので一見の価値ありです!
発表スライド
チーム
構成
構成は6人で内訳は以下の通り。チームアジアです。
- 日本: 3人
- 中国: 1人
- インド: 1人
- シンガポール: 1人
残念ながらデザインをやってくれたシンガポールの方が当日体調不良で会場には来られませんでした、残念...!
コミュニケーション
主にSlackを活用し、喋れる内容は直接英語で話して、難しい内容は英語のわかるメンバーに翻訳してもらいながら会話していました。Slackでのチャットコミュニケーションは直接しゃべるものとは違って考える時間が長くあるので、英語で意思疎通がしやすかったです。
実装
開発のすすめかた
担当分けがうまくいったおかげで、ハッカソンにふさわしくない問題に大きくぶつかることもなくうまく開発を進めることができました。それぞれ以下のように担当を割り振ってすすめました。
- Twitter担当
- Slack担当
- Firebase担当
- ビジネスロジック担当
- UI・デザイン担当
万が一どこかの実装が間に合わなくても「チャットを集約する」というメインの要件を満たすためにTwitter, Slack, Firebaseを3つ平行で進めて冗長性をもたせて開発をすすめました。
GitHubによるPR管理やコンフリクト解消に時間を取られるのを避けるために、各個人で担当箇所のコードを書いて最後にzipで送りあって統合するというすすめかたをしました。
設計
ビジネスロジックに該当する部分と、DataModel、 Translatorの定義、データの受け渡し方などのインターフェースだけすり合わせて、あとは各個人の担当に任せて実装を行いました。Rxを使ってMVVMで書いた部分もあったり、デザイン優先でVCにゴリゴリ書いてあったりもしています。
使用API
- Twitter API
- (Slack API)
- Firebase API
使用ライブラリ
- RxSwift
- RxCocoa
- Firebase
- Alamofire
- Kingfisher
- SwiftyJSON
- JSQMessagesViewController
- PagingMenuController
ライブラリ管理
iOSでライブラリ管理といえばCocoapodsかCarthageが有力です。今回はCocoapodsを採用しました。
個人的に最近はCarthageが好きで、私の周りの人間でもCarthageを使っている人をぼちぼち見かけていました。そんな状況から日本ではCarthageが浸透してきたかなと思っていたのですが、チームの海外メンバーはCocoapods派が多かったようです。人によるかもしれませんが、海外でどんな開発環境が使われているのかがわかって面白かったです。
まとめ・感想
正直6時間でここまでのものが作れるとは思っていなかったです!良いものができたと、達成感で溢れています。
チームとして集まったエンジニアのレベルが高く、開発をとんとん拍子で進めることができました。やること、やらないことの境界をしっかり定めて、各個人が開発に集中できていて非常に気持ちよかったです。
また、海外の方々と英語でやりとりを進めながら開発をするという経験も貴重でした。始める前は英語でのコミュニケーションがネックになるのではないかと心配しましたが、逆にミニマムなコミュニケーションになってよかったかもしれません。
自分の英語スキルに関しては今後の課題ではありますが、システムの設計についてうまく意図を伝えることができたのは非常に良い成功体験でした。「理想としては間にサーバーを挟むべきなんだけど、今回は時間の関係上アプリから直接各SNSへの通信をしよう」など。英語はダメでもシステムや言語の知識で結構なんとかなった!
非常に楽しいハッカソンでした!運営の方々、そしてスポンサーの企業様ありがとうございました!