はじめに
Kawa_です。
KC3Hack2024で3度目のハッカソンチャレンジをしたら、これまでのどのハッカソンよりも楽しい経験ができたので記事に残します。
この記事を読んでくださる皆さんに、ハッカソンの楽しさ、KC3Hackの良さが伝わるとうれしいです。
受賞に届かなかったので、受賞した経験が読みたい人には別の記事をご覧になることをお勧めします。
これまでに
KC3Hack2024以前のハッカソンの記録もついでにしておきます。ここは本編ではないのでザックリいきます。
技育CAMPキャラバンin京都
2023年4月に開催されたハッカソンです。
これが初めてのハッカソンでした。
ReactとAIを使用した絵本の自動作成プロダクトの開発をしました。(未完成)
Web系を触るのがこの時点で初めて、チーム開発をするのも初めてと何もかも初めてだらけでした。
僕が担当したのはお問合せページ。正直必要のないタスクでしたが、何もかも初めてだった僕に配慮してくれたのだろうと感謝しています。
Reactの勉強としても、チーム開発の勉強としてもいい経験になりました。
関西ビギナーズハッカソン Vol2
2023年8月に開催されたハッカソンです。
2回目のハッカソンでした。
予定調整サービスの開発をしました。(未完成)
前回と同じくReactを使いました。めちゃくちゃやる気を持って挑みましたが実力不足を痛感する苦しいハッカソンでした。チームメイトにものすごく迷惑をかけてしまい、プロダクトもぼろぼろでした。本当に申し訳なかったです。
力不足であることがどれだけ迷惑をかけるのか、人脈の重要性を実感しました。
BitSummit GameJam 2023
ハッカソンとは少し違いますが、GameJamにも参加しました。
HomeToHopeというゲームを作成しました。
もちろん無力でずっとおんぶしてもらっていましたが、チームメイトが本当にみんな最強で最終的にはTGSにもちらっと出させていただきました。
いろんな意味で濃密な経験をさせていただきました。
KC3Hack2024
本編です。
2024年2月に開催されたハッカソンです。
最終発表会までにチーム発表・テーマ発表が二週間前、
アイデア発表(作成プロダクトの発表)が一週間前にあり、
コードを書ける開発期間はアイデア発表から最終発表会までの一週間
という日程で行われました。
私は電子計算機応用部(愛称C.A.C.)の中で仲の良かった一年生4人と組んで出ました。
チームの中ではハッカソンの経験があるのは私だけだったので必然的(半ば暗黙的)に私がリーダー役を任されることになりました。
作成したプロダクト
私たちのチームは最終的に「ミチクサ」という、寄り道の提案アプリを開発しました。
出発地と目的地、寄り道の際に寄りたい場所のジャンルを入力・選択すると最短経路とミチクサ経路を表示します。
情報の入力ページのデモ版の画像
最短経路とミチクサ経路を表示したデモ版の画像
使用技術としては、flutterをメインとしてマップの表示・店舗検索などにGoogleMapsAPI,GoogleMapsPlatform、エディタにAndroidStudioを利用しました。
テーマ発表~アイデア発表
僕はバイトを入れていたので参加できませんでした。正直何とかなると思っていたのですが、僕のほかにもバイトを入れていたり寝ていたりしたチームメイトばかりだったので、最終的に聞いていたのは一人だけでした。
アイデア発表までの期間は事前勉強も含めてあったので、なるべく早くどんな技術を使うのかを確定させたかったので、急ぎ目で会議やらなんやらをしました。最終的に2日間ほどは事前勉強の時間がとれてよかったです。
アイデア発表・デザイン作成
アイデア発表の日とその次の日はアプリのデザインの作成をしました。(次の日は私がバイトを入れていたのでコードを書く作業はしたくなかったからです。)
ちょうど部活の新入生歓迎会の準備ともかぶっていたため、そちらを優先してやるという条件でデザインセンスのある人がアプリアイコン、画面UIのデザインをだいたい作りました。
他はバイト、アプリの基礎部分の実装(GoogleMapの表示)、やる気の消失でできていなかったので最終的には助かりました。
アイデア発表は、最終発表会を別の部活の合宿に行くために参加できないことがわかっていたメンバーの一人が発表しました。
開発期間
(GoogleMapに近いUIになっていたのでそれを想像していただくとわかりやすく読めるかもです。)
アイデア発表から二日、いよいよコーディングな時間の始まりです。この時点で実装にかかわれるのは4人でした。
全員がflutter未経験、チーム開発でのGit,GitHubの利用になれていなかったですが、優秀なチームメイトが多かったので割と何とかなりました。
何をするにも今回のプロダクトではMapの表示や利用が不可欠だと考えたので私はアプリのUI面の実装を、残りの三人はGoogleMap関係の実装をしてもらいました。(一応希望を取り、Mapの実装関係に人が偏ったので私はUIに落ち着きました。)
割と早い段階でMapの表示自体は完成しました。が、現在地の取得やデフォルトでMapのカメラを取得してきた現在地に合わせるところで少し詰まってしまいました。
また、私もtopページにある「検索バー」の実装に少し苦戦しました。
(初めてだからね、仕方ないね)
コードを書いているのは3人(?)
一人はデザインを固めた時点でコーディングには関わろうとしませんでした。(書きたくなかったらしいです)
もう一人は、バイトを機関の半分ほど入れていたため学習機関に満足な学習が行えず、チーム開発の雰囲気を感じてもらうことしかできませんでした。(優先度の低いタスクをお願いし、なんとか完成させてくれたので優秀ではありました)
コードを書いていた二人をこれ以降では以下のように呼ぶことにします。
mapの表示を完成させてくれた人:M君
もう一人:D君
制作合宿
運よく、C.A.C.で作品を作る二泊三日の合宿が開かれました。対面で相談しながら開発を行えたので、問題の共有などがスムーズに行え、非常に有意義な時間になりました。
この合宿での平均睡眠時間は全員が3.5時間と、限界に近い開発をしていましたがこの合宿で主要な機能を作り切ることができました。
天才の覚醒
制作合宿中の話になります。
早い段階でMapの表示に成功したM君を追いかける形でMapの実装にかかわっていたD君が覚醒しました。文字通り覚醒です。この覚醒がなければ今回の完成度までは到達できていなかっただろうので助かりました。
Map周りの実装には、APIを使用していたので当然その知識が必要で、初めて見るであろう非同期処理などの概念も出てきます。本来なら私がその辺にチャレンジするのでも良かったですが、希望の優先をするのと、もともとその人が優秀なのもあってM君D君にお任せしました。M君が苦しんでいた問題を解決し、二人でルートの表示や店舗の検索などの実装を完成させてくれました。
(もともとM君は覚醒済みです。この言い回しだと危ないものをキメているみたいですがw)
苦労話
いや、苦労話としては実はそんなにないのですが...
初めての経験だったことを書いておきます。
リーダー役を任されたのでそれっぽいことをできるようには頑張りました。
まずはGitの管理、GitHubの操作を率先してやりました。チーム開発の経験が僕よりも浅い人が多かったので、Gitの運用についてをDiscordにまとめたり、プルリクマージ、コンフリクト解消についてもほぼほぼ私に任せてもらいました。まぁその分開発に意識を割いてもらえたので良かったです。
スケジュールもある程度は意識して動きました。はじめのアイデア出しの時からこれには結構気を付けました。
の割には開発開始の2日目にバイトを入れてしまっていたのでデザインを考える日が2日間に伸びてしまい、初速がゆっくりめになってしまいましたが。デザインからいくつか区切りがあったので、そこから可能な完成形をある程度見てそこに着地できるようにそれぞれの開発を進めました。ほぼD君の覚醒のおかげなのですが、想定通りにスケジュールが進んだので良かったです。
アプリの設計もふわっと考えながらそれを共有していましたが、知識不足のため時間がかかりがちでしたし、しっかり形になりませんでした。ここもチームメイトのサポートがあってこそだったので感謝です。
最終発表会
なんとか形になったところで最終発表会になりました。
このままでは僕の影があまりにもなさ過ぎたので、せめてものとスライド作成と発表を担当させてもらいました。
当日は、2名がC.A.C.とは別の部活の合宿に参加していたため欠席。私含めほか3名は遅刻、中でも私以外はほぼコードフリーズ終わりに到着ということでした。おそらく今回参加したチームの中で一番ひどいチームだったでしょう。
受賞すらなかったものの、他のチームのプロダクトを見せていただきいい刺激を貰い、私たちのプロダクトに対しても好評をたくさんいただけたので良かったです。
懇親会
ピザめっちゃうまかったです。ありえないほどがっつりいただきました。もうこれだけのために参加していたといっても過言ではないほどにしっかり食べました。ごちそうさまでした。
お気持ち
ハッカソンでリーダー役をし、コードを書きながら周りのサポートをするというのは難しかったですが、とてもいい経験になりました。M君がリーダー仕事のサポートをしてくれたのもいろんなことが円滑に進んでいった理由だと思っています。
今回のハッカソンでは、これまでと違いある程度深い関係を築けているメンバーだったのもあって、ほんとうに楽しく開発を進めることができました。また、最終的にはプロダクトの仮完成までできるほどで本当に良かったです。
もちろん、初めての人とやることで新しい角度からの知識が得られるところはあると思いますが、仲のいいメンバーでやることはいくらか気が楽でリラックスして楽しめた気がします。
KC3Hackにはそのようなメンバーができたこのタイミングで実践的な場を提供していただけて、ありがたかったです。
最後に
最後まで読んでいただきありがとうございました。
私自身の担当がUIであったこともあってあまり面白いことは書けませんでしたが、これを読んだ人の何かになれれば幸いです。
皆さまも、よいハッカソン・開発ライフを。