目次

この記事は、DeNA23新卒 Advent Calendar 2022 の8日目の記事です! さまざまなジャンルの技術に関する記事が投稿されていくので、 ぜひご覧ください!🎄🌟

今回は10月に参加したJPHACKSの振り返りを書きました。

開発テーマが自由

今回参加したハッカソンは、開発テーマが自由でした。ハッカソンによっては、テーマが与えられてプロダクトを開発するものもありますが、今回は完全に自由でしたので、まずはチームでアイデア出しを行うことから始めました。

アイデア出し

色んなアイデアが出た

アイデア出しはmiroを使って行いました。チームメンバー全員がバラバラの場所に住んでいたので、オフラインで集まるのは困難でした。

アイデア出しでは、多種多様な面白いアイデアがたくさん出ました。面白いアイデアがたくさん出て、わいわいできて楽しかったです。

miroでアイデア出し

スケジュール管理失敗した

今回は開発期間が1週間ありました。コードはその期間内に書かなければ審査対象にならないのですが、プロダクトのアイデアやデザイン、仕様等は開発期間に入る前に決めて大丈夫でした。
そのため、自分も「あとは開発するだけ!」という状態で開発期間に入るつもりでスケジュールを立てていました。

しかし、実際は開発期間の直前にプロダクトの方向性、テーマが決まり、細かい仕様や機能の考えるのは開発期間中になりました。そのため、開発時間が足りず実装までいたらなかった機能がいくつかありました。

この原因は、テーマを決めるまでの過程で想定以上に時間をかけてしまったからです。面白いアイデアがたくさん出たので中々テーマを決めきれなかっこと・新規性や課題解決型のアイデア出しにこだわったことで、決定までに時間がかかりスケジュールが後ろにずれこんでしまいました。
アイデアを出し合う場では、軸を決めないと発散し過ぎてしまいまとまらなくなりがちですが、今回それが起こってしまった気がします。また、アイデアの絞り込みをみんなの話合いで決めようとした点も良くなかったです。結局全然絞り込めないみたいな状態に陥っていました。最終的に、みんなの投票でアイデアは決めました。全員の意見を聞いた上で、最終決また責任者が行うとか、投票で一番票数の多かったものにするというやり方で初めからやるべきだったのかなぁと思います。

ファシリテーションスキル身に付けなければ。。。

開発

開発スケジュール管理は上手くできた

スケジュール管理ツールは、Github Projectを使用しました。小さめの粒度でタスクを切り、タスクの大きさと優先順位を決めて開発を進めました。Github Projectはissueやプルリクと紐付けることができるので、プルリクをマージしたら自動でステータスが変更される点などが凄く便利でした。

Github Projectを使った開発スケジュール管理

開発スケジュール管理は上手くいったので、余裕を持って最低限の機能が動くプロダクトをデプロイすることができました。 タスクを細かく切ったことで、進捗の確認や手が空いたら順に拾っていくことなどをスムーズに行うことができました。

使用技術

バックエンド構築にはhasuraを使用しました。hasuraを使用した理由は、エンジニアが2人だったのでバックエンドの開発にかける時間がないと判断したからです。
また、フロント-バックエンド間の通信にはGraphQLを使用し、フロントのフェッチデータの型定義やhooks作成はスキーマから自動生成するようにしました。

この構成は凄く開発体験が良かったです。小規模なプロダクトを爆速で作りたいときはこれでいいのでは?と思いました。 (複雑なクエリ処理やビジネスロジックが含まれる場合はちょっとしんどそう。)

全体の技術構成図はこちらです↓

技術構成図

久しぶりにReactがっつり書いた

最近、Reactはちょっとした機能追加などでしか書いていなかったのですが、イチからコンポーネント作成したりページを作成したりすることができました。楽しかったです。

投稿時のUI

ハッカソン最高😎

色々書きましたが、ハッカソン楽しかったです。
一緒に参加してくれたチームメンバーに感謝🙏🏻


P.S.

@Sadmachineさんの「ハッカソンの振り返り (2)」もぜひご覧ください!