はじめ
記事を書いた理由
ハッカソン時の管理者(PM)に書いてと言われたので書くしかないよね...「ハッカソン」という言葉を聞いて、皆様は何をイメージされるでしょうか。「徹夜でプログラミング漬け」「凄腕エンジニアの集まり」—正直、私も参加するまではそう思っていました。
本記事は、ハッカソンというイベントがどんなものかを知りたい方、そして「自分にもできるだろうか」と参加を迷っている初心者の方に向けて書いています。
私たちは「さぁ、きっと」というチーム名で、金沢工業大学の情報工学科生をターゲットにした過去問共有サービス「過去問K.I.T.A」を開発するために、初めてのハッカソンに参加いたしました。制作の動機はシンプルです。プロジェクトで忙しい工大生のために効率よく勉強してほしい、そして自分たちが単位を取得したい。過去問をもらえる人ともらえない人の差を埋めたい、という切実な願いから生まれたプロダクトです。
この記事では、初めての挑戦で私たちが何を学び、何に悩み、そしてどのようにして一つのサービスを完成させたのか、その舞台裏の全てを包み隠さず公開します。
特に、初心者でも挑戦すれば大丈夫だということ、そして自分たちで一つのモノを作り上げる楽しさを強くお伝えしたいです。
ハッカソン準備・当日までの流れ
私たち「さぁ、きっと」は、合計5名でハッカソンに臨みました。役割分担は以下の通りです。
フロントエンド:2名
バックエンド:2名
プロジェクトマネージャー(PM):1名(リーダー)
特筆すべきは、リーダー以外の全員がハッカソン初参加だったことです。私たちの最大の目標は「ハッカソンというイベントを知ること」であり、そのため技術選定においては「最も簡単な技術スタックで、確実にプロトタイプを完成させること」を最優先としました。
選定した主な技術は以下の通りです。
フロントエンド : HTML/CSS, JavaScript
バックエンド : Firebase
ターゲットである工大生が必ずPCを持っているという前提から、開発を簡略化し、ウェブ画面での制作に集中しました。
アイデア出しと知識の壁
アイデア固めの段階では、「過去問K.I.T.A」の要件(過去問の共有、質問機能、検索機能など)を定義しました。しかし、この段階で知識の乏しさを痛感したメンバーが多くいました。実現したい機能に対して「技術的に何ができるのか」「どれくらいの工数がかかるのか」を具体的にイメージできず、時間管理や機能の優先順位付けに苦労しました。
初心者開発者としての挑戦
私自身、フロントエンドを担当しましたが、HTML/CSSを学んでから日が浅く、過去の知識を応用するのに難しさを感じました。また、チーム開発に不可欠なGit/GitHubの知識が乏しく、開発と並行してバージョン管理の方法を学ぶ必要がありました。
しかし、大変なことばかりではありませんでした。
2日間の短い期間で、コードが想定通りに動き、みんなで決めたデザインが画面に表示された瞬間には、大きな達成感を感じることができました。これは、一人で開発している時には得られない、チーム開発ならではの喜びでした。
結果として、2日間の制作時間を最大限に活かすため、最終日には徹夜での作業となりましたが、この熱量が短期間でモノを作り上げるハッカソンの醍醐味だと知ることができました。
絶え間なく発生するコンフリクト
ハッカソン期間中、開発の熱が上がるにつれて、最も私たちを悩ませ、そして成長させてくれたのがコンフリクトでした。
私たちは5人チームで開発を進めていたため、同じファイルを同時に編集する機会が多くありました。特に、Gitの操作に不慣れなメンバーが多かったこともあり、開発が進むたびにgit pullやgit mergeの際にコンフリクトが頻繁に発生しました。
その都度、私たちが行ったのは以下のことです。
-
どのファイルで、誰のコードと競合しているのかを確認する
-
リーダーや比較的Gitに詳しいメンバーを中心に集まり、どう解決するのが最善か話し合う
-
コンフリクト解消方法などを即座に調べ、その場で解決策を実行する
コンフリクトが発生するたびに開発は一時的にストップしましたが、これを「Gitを学ぶための実地訓練」だと捉え直しました。最終的に、コンフリクトを乗り越え、自分の書いたコードがマージされた瞬間は、機能が実装できた時と同じくらい嬉しかったです。
この連続するトラブルシューティングこそが、短期間で技術的な課題を克服し、チームとして成長できた最大の要因だと感じています。
発表と結果
開発を終え、いよいよ迎えた成果発表の時です。私たちは、制作した過去問共有サービス「過去問K.I.T.A」について、スライド発表形式でプレゼンテーションを行いました。
発表では、以下の点に重点を置いて説明しました。
課題: プロジェクトで忙しい工大生が効率よく勉強したい、過去問の格差を埋めたいという切実な課題。
解決策: 年度別、科目別で過去問を手軽にアップロード・ダウンロードできる機能、質問機能など。
短い発表時間の中で、私たちが設定した「金沢工業大学の情報工学科生」という具体的なターゲット層と、過去問格差を埋めたいという切実な制作目的は、審査員や聴衆にしっかりと伝えることができたと感じています。
結果と反省点
残念ながら、今回のハッカソンでは特に賞を受賞することはできませんでした。
結果を受けてチームで話し合ったのは、やはり「アイデアの斬新さ」と「実装の完成度」のバランスの難しさです。企画段階で既存のアプリにはないオリジナルの機能を実装できれば良かったという反省や、2日間という短期間でコンフリクトなどのトラブルに時間を取られたことで、目指していた機能のすべてを実装しきれなかった点が、結果に繋がったと分析しています。
しかし、賞を逃したとはいえ、ゼロから一つのサービスを完成させ、多くの人の前で発表できたという経験自体が、私たちにとっては何物にも代えがたい大きな成果となりました。
ハッカソンで得られたもの・学び
今回のハッカソンは、私たち「さぁ、きっと」のメンバーにとって、技術面でも精神面でも、非常に大きな財産となりました。
技術面の成長
開発期間中、私たちは何度もコンフリクトという壁にぶつかりました。しかし、そのたびに解決策を調べ、チームで協力して修正を行った結果、最も習得できたのは「Git/GitHubの知識」です。
本や動画で学ぶ座学とは違い、実際にコードを共有し、競合を解決していく中で身につけた知識は、今後どのプロジェクトに参加する上でも不可欠なスキルだと実感しました。2日間で、私たちは多くの経験を積み、バージョン管理の重要性を身をもって理解することができました。
非技術面の成長
賞を受賞できなかったという結果はありましたが、それ以上に得られたのは「諦めない力」です。機能が実装できず焦り、コンフリクトで手が止まり、徹夜作業で肉体的にも限界を迎える状況でしたが、チームの誰一人として開発を放棄しませんでした。
この極限状態の中で、プロダクトを完成させるという一つの目標に向かって粘り強く取り組んだ経験は、今後の困難な状況を乗り越える自信に繋がります。
開発初心者へ
そして、ハッカソンへの参加を迷っている初心者の方に最も伝えたいメッセージが、「初心者でも挑戦すれば大丈夫」ということです。その根拠は、私たちには頼りになる先輩たちがいたからです。
初めてのハッカソンで知識が足りなくても、Gitの操作でトラブルを起こしても、先輩たちは決して私たちを責めず、丁寧に教えてくれました。チーム開発は、技術的な知識を学ぶ場であると同時に、困ったときに助け合える仲間と出会う場でもあります。もし経験豊富なメンバーがいるなら、その環境に飛び込むこと自体が、最大の学びとなるはずです。