記事概要
ハッカソンに初めて参加した専門学校生の体験記です。
作ったアプリの内容や、開発の流れ、もっとこうすればよかったと思っている点などまとめました。
自分の技術力でも足りるかな?という不安があり今まで参加していませんでしたが、学ぶことが山ほどあって、もっと早くに参加すればよかったと思っています!
完成した開発物
通りすがりメモリー
位置情報付きの投稿文を地図上に表示するSNS
スクリーンショット
機能
- 投稿機能
- 絵文字アイコン機能
- 画像の添付
- 位置情報の取得
- 位置情報に応じたマップ上への投稿表示 など
自己紹介
- 所属 :24卒の専門学校生
- ハッカソン経験:ハッカソン経験なし
- インターン :Ruby on Railsを用いた長期インターン(10か月)と短期インターン(2週間)
- デザイン :Figmaを使って簡単なプロトタイプを作れる
- 技術 :メインはRails。その他、Laravel、Flask、Kotlin、Cも一応触ったことがある
- インフラ :HerokuやS3は使用経験あり
チーム構成
開催一か月半ほど前に、運営によってチームが決定。全員初対面で別の学生団体所属でした。
- Ruby on Railsを使う専門学校2年生(私)
- React+TypeScriptを用いたハッカソンでの開発経験がある大学1年生
- Pythonで競プロを行っている大学1年生
- HTMLやCSS,JSを勉強している大学2年生
事前に行ったこと
デザイン・プロトタイプの作成
※以下のデザイン案を用いて、簡単に動くプロトタイプも作成した
技術選定
- Ruby on Rails7
- 全員がWebアプリケーション寄りの知見を持っていたため
- Railsは短期間での開発に向いているため
- Docker
- チーム開発を円滑に行うため
- なるべく簡単に環境構築を行うため
- PostgreSQL
- デプロイ環境(後述)が公式でサポートしているため
- (Heroku)
- 簡単に扱うことができるインフラ環境であるため
- 過去にDockerイメージをデプロイした経験があるため
- (S3)
- 画像を保存するため
- Heroku使ってフォルダ内に保存すると一定時間で消えてしまうはず(失敗経験有)
- 画像を保存するため
- Maps JavaScript API / Geocoding API
- GoogleMap上に特定の地点を表示するために使用
環境構築
- 使用予定の技術を乗せたDockerイメージを作成
-
docker-compose up
すれば環境構築が完了し、全員のPCで問題なくRailsの画面が出てくることを事前に確認
キャッチアップ
- Railsを触ったことのないメンバー
- Railsチュートリアル
- Rails経験済みのメンバー
- 使用予定のAPIの取得とキャッチアップ
- 環境構築のためのDockerのイメージの作成
役割分担
バックエンド2人、フロントエンド2人
上記情報の共有
- notionで情報のまとめページを作成
- 役割分担や使用技術、機能に関する情報を記載
ハッカソンを通してのGKPT
GoodとKeep
※Keep : Goodを再現するために必要なこと
- 他のチームに比べ、初動が速かった
- 事前に環境構築をチームメンバー全員のPCで行う
- 教材を決定し、事前にキャッチアップする
- 想定した機能を作りきることができた
- 機能に優先順位をつけ、それに従って開発を進める
- 必要最低限の機能を洗い出し、MVPを作成する
- 何のためのアプリなのか言語化し、「やらないこと」を明確にする
- 開発で躓いたら、状況を整理してすぐにメンターさんに質問する
- マネジメントを担当する場合、自分の個人のタスクに使える時間は減るので、他の人にお願いできそうだったら依頼する
- 回帰バグによる手戻りがほとんど無かった
- 自動テストを作成する
- mainブランチにmergeする前に必ずレビューを行う
- レビューの際にはローカル環境で動くかどうかまで調べる
ProblemとTry
- 評価項目の一つである「課題解決」という色が薄かった
- アプリの内容を決定する際に、評価項目を勘案する
- デプロイを行うことが出来なかった
- 対応策未定
- いろいろなサービス(Heroku、Render、GCP)にデプロイしてみたところ、少しの不具合がありつつデプロイが一応できたところもあったので、違うサービスでトライしてみるのは有りかも
- プレゼンの準備が不十分だった
- コードフリーズだけでなく、開発(デプロイ作業など含め)を停止する時間を事前に決める
フィードバック(要約)
- スコープの絞り方が上手かった
- アプリの持ち味である「臨場感」をもっとプレゼンで強調するとよりオーディエンスには魅力的に伝わったと思う
- ハッカソンでコードレビュー、レビュー、テストまで書いているのが素晴らしい
- 既存のSNSにはない絵文字機能が面白い
- Dockerが最初から導入されていた点が良かった
感想
色んなエンジニア学生を見ることで、自分の開発の特徴を知ることができたので良かったです。 受賞できなかったことは悔しいですが、また挑戦したいと思います!