📖

はじめてのハッカソン&複数人開発の記録と反省

2023/08/29に公開

技育CAMPのマンスリーハッカソンに参加しました

技育CAMP TOP

2023年の8月に開催された技育CAMPハッカソンVol.8に参加しました。
作ったもののリンク
以下個人的なログと反省点になります。はじめて参加する方の参考になれば幸いです。

反省点の結論

  • 事前開発期間からコミュニケーションを取ろう。
  • gitの使い方や開発の流れ・役割分担を事前に決めておこう。
  • プレゼンの資料を作る時間をちゃんと見積もろう。

ここからログ(プロフィールから参加後まで)

プロフィールと状況

  • 25卒の大学院生(現在M1)
  • 専門は機械学習/画像処理
  • プログラミングスキルはpythonがメインだがゲーム(Unity)を始めとしてjsやGCP等もちょこちょこかじっている
  • 目的としては就活に向けてチーム開発の経験を得る/成果物の生成
  • 作りたいものは当時、特に持ち合わせていなかった

のような感じです。今回は思いつきで行動しました。

技育CAMPのハッカソン

年に20回ほど開催されるハッカソン。今回は年内8回目。「最低限の基礎を学んだ方」から対象となるようなハッカソン。10日ほどの事前開発期間と2日間のハッカソンにわかれている。

チームと個人での参加、またランダムなチームメンバーとなる即席チームの3種類が存在するが今回は即席チームを選択。テーマはフリーでした。雰囲気はゆる~い感じを目指しており、はじめてでも参加しやすいと感じました。

事前開発期間

チーム分けが発表されてから当日までに色々するべきだとは思いましたが、4人中3人の自己紹介が流れてきてもう一人の自己紹介を待ってたら事前開発期間が終了してました。のでほとんど何もしないままハッカソン当日を迎えました。

またチームメンバー全員がはじめてのハッカソンで具体的に何をすればいいのかわからなかったので、その点も何もできなかった1つの要因であったと思います。

ハッカソン1日目

開会式が終わってからチームのうちの1人がやっぱり音信不通だったので3人のチームになりました。まずgithubリポジトリを作りましたが、チームメンバーが使えるようになかなかなりませんでした。ので初日の6~8時間をgitの使い方のすり合わせ・環境構築に費やしました。めっちゃもったいない。

ようやく全員がgitのpushができるようになってから何を作るか話し合いました。今回は僕の頭から離れなかったPeople翻訳のようなおもしろchrome拡張を作りたいという点で合意できたので、まずはmanifestの設定やテキスト要素の移動を個別に開発し始めました。

ハッカソン2日目

2日目までにある程度の機能はメンバーの2人がそれぞれの視点から実装していたので、自分はmanifestやpopupのデザインと機能の統合を担当しました。

それぞれが「マウスオーバーした要素が逃げていく」という機能と「数字だけ赤くなる」という機能を開発していたので、マウスオーバー要素が戻っていくようにしてもらい「マウスオーバーした要素が逃げていき、戻ってきたら数字だけ赤くなっている」という機能が出来上がりました。自分はその機能統合を行った上でデモ動画の作成やリロード処理を作成し、ハッカソン終了を迎えました。

発表~閉会

発表は真ん中より後らへんで、特に問題なく終わりました。
発表を見てみるとやはり実益を重視したアプリケーションが多く、自分たちが作成したようなそこまで実益を重視しないアプリケーションはゲームを除くと少数でした。

発表や結果発表が終わった後に参加者同士で交流する機会がありました。そこで色々学べたのですが、一番大きかったのはスライド駆動開発というものでした。これは予め発表スライドを作成しておき、そのスライドに沿って開発を行うというもので、工程に無駄がなくアイデアの整理や意見の集約が行えるため今後参考にしようと思えました。

反省点の詳細について

冒頭で挙げましたが、3つの反省点について個別に述べていきます。

  • 事前開発期間からコミュニケーションを取ろう。

今回の最大の反省点です。寄せ集めのチームでたまたま経験者がいたらよかったですが、今回は初心者のみのチームであったため、事前開発期間の使い方が分からず結果的にgitで大幅な時間をロスしました。それ以外にも他の人との技術レベルや意思/やる気の確認、開発したい物のアイデア出しから決定、実装までやれることは無限にあるため、めちゃめちゃ重要です。わかってたけどどう進めたらいいかわからなかった……。

  • gitの使い方や開発の流れ・役割分担を事前に決めておこう。

初日に6~8時間費やしたgitは特にチーム開発だと重要だと思います。他にチーム開発の手法ってあるんですか……?あるなら教えて頂きたいです。

githubを使うに当たっては、流れが簡易であるgithub flowを意識しましたが、各ブランチを自分のブランチに統合してからメインのブランチに統合していったのであまりgithub flowとは言えないかもしれません。今でもこういった短期間での開発フローはいまいちイメージが湧かないのでここらへんは経験がどうしても必要になってくるところなのかと感じました。具体的なブランチの図があるサイトを参照してなんとか自分の中ではイメージを掴むことができました。リベースは全然してないですが……。

  • プレゼンの資料を作る時間をちゃんと見積もろう。

プレゼン内で流す動画作成などは統合作業を行うのと平行して自分が行いましたが、それでもコードフリーズ(開発終了)から発表資料の提出までに時間がなく、デモ動画はデザインをちゃんとしたバージョンのものに差し替えできませんでした。上記で言及したスライド駆動開発や、機能を実装する人とプレゼンを作る人などで分ける等、複数人開発ならいろんなアプローチがあると思います。

最後に

はじめて参加したハッカソンで行き当たりばったりでしたが、なんとかチームで開発をして完成までこぎつけて発表できたので、その点はとても満足しています。しかし、事前の知識や準備が不足していたことでプロダクトとしての完成度はどうしても落ちてしまったと考えます。

参考

Discussion