社内ハッカソンに初めて参加した話
本記事について
社内で久々と開催となるハッカソンに参加したので、そこでやったことをまとめてみました。
本記事を通してウェルスナビの雰囲気を知っていただくとともに、社内の参加者をガンガン増やしてハッカソンをより盛り上げていきたいと思っています。
ハッカソン!
筆者紹介
本題の前に軽く自己紹介をしましょう。
私は主にID基盤の開発に携わっており、運用はもちろん新規機能の設計・開発もやっています。ウェルスナビIDは立ち上がったばかりということもありまだまだやりたいことも多く、面白い仕事が大量に残っているので興味がある人はぜひ声をかけてください。
ハッカソンのテーマ
それではハッカソンの話に戻ります。
今回のテーマは五反田オフィスで一層快適に過ごすために「あったらいいな」と思うアプリケーションでした。なかなか自由度が高く、開発対象はハードからソフトまで色々と考えられるところです。実際に出たアイデアを見ていきましょう。
事前準備
アイデアソン
ハッカソンに出場するのはいいものの、何を作るかを決めないことには始まりません。コアタイム(10:00 ~ 16:00)を外せば業務に支障の出ない範囲でハッカソン関連のMTGをしても構わないとのことだったので、お言葉に甘えてチームメンバーで事前にアイデアソンを実施しました。様々な部署から人が集まっていることを反映してか、バリエーション豊かで面白い案が出たので一部ご紹介します。
-
五反田でロケがあるとアラートを出してくれるアプリ
弊社オフィスの位置する五反田では稀にロケが行われており、12月ごろには人気芸人が駅前でロケをしているのを見かけたことがあります。そのような時ミーハーがすぐ見にいけるように通知してくれるサービスを考えましたが、そんな暇があるなら仕事をしてほしいのでボツ。 -
会議室利用状況ダッシュボード
あれば非常に便利ですが、Google CalendarのAPIをちょこちょこいじる程度で終わりそうだったので採用に至らず。 -
オフィス困りごと解決くん
ウォーターサーバーの水がないなど、ありがちな困りごとに対して解決策を提示してくれるサービス。こちらもSlack bot作るぐらいで終わりそうということで採用されませんでした。 -
自動打刻機
オフィスに入るだけで自動で打刻してくれるマシン。面白そうな上エンジニア以外のメンバーも利用できる点で良い案ですが、IoTすぎてハードルが高いということでこちらもナシに。ただ今思うとこれに挑戦するのもアリだった気がします。久々のIoTでハンダゴテのサビを取るチャンスを失ったかもしれない、、 -
トイレの空き状況がわかるアプリ
朝やランチ時のトイレはどうしても混み合いがちです。そんな問題を解決するアプリを構想したわけですが、残念ながらトイレはビルの共用部にあり手をつけられないという至極真っ当な理由で諦めました。とはいえ結果から言えば、ハッカソンなのだからその辺りの実現可能性は考えずやるだけやってみるべきでした。 -
会議文字起こしサービス
弊社では週に一度、全社員が参加する30分程度のオンラインMTGがあります。とはいえどうしても出られなかったり、たまたま聞き逃してしまうこともあるかもしれません。そんな事態に対処すべく、内容を文字起こししてSlackに投稿してくれるようなものがあれば便利そうです。ただこちらも既存サービスの組み合わせで簡単に実現できそうなので挑戦はしませんでした。
このようにジャンル・用途様々なアプリを考案しましたが、最終的には社員向け飲食店SNSを作ることとなりました。アプリの詳細は次の章で見ていきます。
アプリ設計
私の所属チームで作成する飲食店SNS、名付けてランチなびとは、五反田オフィス周辺の飲食店探しを通じて社員同士が交流することを目的としたアプリケーションです。
弊社には社員同士でおすすめのランチ店を共有するSlackチャンネルがあり、元々飲食店を通じた交流の需要があることはわかっていました。今回作成するアプリではその需要を汲み取り、社員が行ってみたい飲食店にいいねし、いいね先が被った人同士で食事に行くこともできるような環境を作りたいと考えました。まあ有り体に言えばランチが起点というだけのマッチングアプリなのですが、開発の歯応えがありそうなのと「社内交流促進」というのがコンセプト的にウケそう、ということで本案を採用することとなりました。
搭載予定機能
我がチームの誇るランチなびの主要な搭載(予定)機能を見てみましょう。
-
レストラン検索機能
五反田オフィス周辺のレストランを評価やオフィスからの距離・入ることのできる人数などで検索できる機能。特に人数は大事な項目で、例えば美味しいお店があってもいざ訪れてみると人数的には入れない、といったことはランチ界隈で大きな問題となっていました。これに対処するにも、食べログやGoogle Mapsにもドンピシャな情報がないため社員同士の口コミに頼らざるを得ない部分があり、まさに我々のアプリで救うことのできる需要になる。予定でした。 -
口コミ機能
上記検索機能で利用する項目はGoogle Maps APIなどで一定度入手することは可能なものの、やはり実際に行った人間からの情報に勝るものはありません。元々Slackにあったランチ報告チャンネルを置き換えるという意味でも必要な機能だと言えます。 -
いいね機能
今回のアプリの中核に据えた機能。機能自体はなんのことはないただレストランにいいねをするだけのありふれたものですが、いいねをしている人が他の社員からわかるため、行きたい人同士で一緒にランチに向かえるのが特殊な点です。ゆくゆくはいいねをしている人が一定数集まったタイミングでSlack上にDMを作成しランチをセッティングする、みたいな機能も搭載できるかもしれません。夢は広がるばかりです。
なんでも作れそうな気がする
技術選定
せっかくのハッカソンということであまり慣れていない技術を利用したいと考え、チームメンバーはSpring・AWS関連の技術者ばかりにも関わらずReactとFirebaseを選定することにしました。UIにはMUIを利用しましたが、こちらもほぼ経験はなし。とはいえ自身に限っていえばReactは業務経験、Firebaseは個人開発経験がありそこそこ知見がありました。ただ逆にそれが仇となり、FirebaseおよびそのReactとの接続部分の開発を丸々任されることとなります。結果は推して知るべし。
当日
アイデア・利用技術も決まったところで当日朝10時を迎え、早速チームごとに部屋を分かれて開発がスタートしました。各チーム事前の計画通り開発に勤しむ中、運営陣はカフェエリアでたこ焼きを作り、せっせと開発者にエネルギーを供給していました。
開発
開始直後
最初はGitHubリポジトリが見れない・Firebase上のリソース作成権限がないといった問題が発生したものの、チームメンバーにインフラ担当者がいたこともあり問題は早々に解決されました。作業分担については、Firebaseの設定に携わる私を除き全員がフロント開発に入ることとなりました。ブランチ戦略は図のように画期的なものを採用しましたが、実運用には耐えなかったのか結局全員がmainに直プッシュするという革新的手法に移っていきました。
よく言えばGitHub Flowとも取れる
お昼
お昼は叙々苑弁当が配布されました。弊社の社員への思い、そしてハッカソンへの期待が感じられます。ぜひとも期待に応えるサービスを作りたいものです。
まだ真面目に開発に向き合っている
午後
始めた当初はなんだってできる気がしますが、いざやってみると自分たちでやれる範囲が徐々に見えてくるものです。逆に言えばやれない範囲も明確になるわけで、お昼を終え14時に差し掛かる頃には我々のチームも当初考えていたアプリからの大幅な機能削減を検討し始めていました。ネックになっていたのはやはり経験のない技術で開発を進めていた点、そしてアプリ自体が機能過多になっていた点です。今更知見はどうしようもないので機能の方を削るというわけです。削除対象に選ばれたのはレストラン検索機能の一部にあった、地図上でレストランが見られるページでした。メンバーの一人がGoogle Maps APIと1日格闘しながら開発していた汗と涙の結晶ですが、そんなことより動くものが作りたいので削られることとなりました。
ラストスパート
開発が時間内に完了しないという事実はもはや覆い隠せなくなっており、最後はとにかく体裁を整えることに労力が注がれました。ここに至ってようやくメンバー同士が互いの開発成果を確認し見た目を調整し始めたわけですが、他人の作った部品の使い方や機能がさっぱりわかりません。作っていないのに何故か動く投稿機能や一見意味がありそうでないボタンなど、さまざまな事実が明るみに晒され作業部屋は笑いに包まれました。ちなみにアプリ名がランチなびであることもここで知りました。
作っていない機能が動いて喜ぶ一同
プレゼン・結果発表
ついに18:30を迎え開発時間が終了しました。プレゼンは私が担当することとなり、ピザとお酒が振る舞われる中ゆるりと発表が開始されました。未完成のプロダクトの機能を解説するのは骨が折れましたが、「社員の交流を促進する」「未経験の技術を採用する」という2つのコンセプトをゴリ押しすることによって審査員にアルコールが回るまで時間を稼ぎ、なんとか無事に終わらせることに成功しました。
モノは言いよう
なおもう一方のチームはトイレの空き状況がわかるアプリを開発しており、ラズパイとFlutterを駆使して見事に機能するプロダクトを作り上げていました。なんだか自分たちも考えたことがあるような気もしますが、それを完成まで持っていったのには完全に脱帽です。当然負けました。
振り返って
めちゃくちゃ楽しかったです。もちろんプロダクトが完成しなかったという意味では悔しい結果になりましたが、訳のわからない機能や画面に文句を言い合いながらわいわいと開発を進めるのは非常に面白く、チームメンバーの交流という意味では大変に有益でした。特に入社2ヶ月程度だった自分にとって、本ハッカソンを通してメンバーと仲良くなれたのは何にも変え難い経験となりました。
そのうち次が開催されるはずなので、そこではさらに参加者が増えることを期待したいところです。私も叙々苑弁当が出る限りは参加するつもりです。
ランチなびの供養
Discussion