【ハッカソン初参加!】技育CAMPの2023マンスリーハッカソンvol.9に参加しました!
こんにちは、regiです!先日に技育CAMPの2023マンスリーハッカソンvol.9に参加させていただいたため、今回はその参加記を書かせていただきます!
はじめに
私自身は今回がハッカソン初参加でした。初めは即席チームを組ませていただく形で参加しようかも考えましたが、ハッカソンを通して初挑戦してみたい技術がフロントエンド側にもバックエンド側にもインフラ側にもあったため、今回は個人参加という形を取りました。もう勉強がメインですね。
開発したプロダクト
概要
私は「ごほうびマネージャー」というサービスを開発しました。どういうサービスかというと、「頑張った自分にご褒美♪」という日常での些細な出来事を管理することが出来るWebアプリケーションです!
簡単に何が出来るかを説明すると、「『ハッカソン』を『600』分頑張ったら『ハーゲンダッツ』のごほうび!!」というふうに、『』の部分をユーザが設定することが出来て、そこから実際に設定した内容を頑張った時間を送信することで、その総時間に応じてごほうびをGETすることが出来ます。本サービスでは「『ハッカソン』を『600』分頑張ったら『ハーゲンダッツ』のごほうび!!」という設定の1セットを「サイクル」と呼んでいます。
デモ
※ハッカソン期間中ではUIの作りこみに割く時間が無かったため、簡素なものとはなっていますが許してください!
まずはアカウントの登録をしてみます。
次に、先ほど登録したアカウントでログインしてみます。
ログインすると、TOPページに飛びました。
当然ですが、まだサイクルが設定されていないため、早速設定していきましょう!
「サイクルを作ってみる!」を押すと、このようなページに飛びました。
先ほどの例の通りに入力し、「これで作る!」を押してみます。
そうすると無事にサイクルが作られ、それがTOPページにも反映されました!
次に、早速「がんばりを報告する!」を押してみましょう!
「がんばりを報告する!」を押すと、このようなページに飛びました。
今回は500分と入力し、「報告!」を押してみます。
そうすると無事にTOPページに反映され、「あと600分!」の表記が「あと100分!」というふうに変わりました!
試しにまた「がんばりを報告する!」を押して、時間を報告してみましょう!
今回は400分と入力し、「報告!」を押してみます。
そうすると無事にTOPページに反映され、「あと100分!」の表記が「あと300分!」というふうに変わりました!
そして、もともと設定していた「600分」を超えたため、ハーゲンダッツのごほうびが1回分もらえました!嬉しい!
最後に、「使ったごほうびを報告する!」を押してみましょう!
「使ったごほうびを報告する!」を押すと、このようなページに飛びました。
今回は1回と入力し、「報告!」を押してみます。
そうすると無事にTOPページに反映され、「1回分」の表記が「0回分」というふうに変わりました!
またごほうびGET出来るようにこれからも頑張ろう!
技術スタック
今回はフロントエンドはReactで実装し、バックエンドはPythonで実装しました。そして、構成はAWSサーバレス構成を採用しました。具体的な構成は以下の通りです。
これは余談ですが、AWSサーバレス構成において最終的には以下のような構成を目指していましたが、当然ながら時間が足りなかったために上のような構成となりました...。期間が2週間の個人開発で初挑戦技術を欲張るのはやめよう!
初めてチャレンジしたこと
- AWSサーバレス構成の構築
- API Gatewayの導入
- Lambdaの導入
- DynamoDBのテーブル設計
- IAMロールの設定と付与
- CloudFrontの導入
- Terraformの導入
- Reactの導入
- SPAの採用
- セッション認証の実装
- ブランチのマージ時にPull Requestを必須にするように設定
- 独自ドメインの取得
チャレンジしたかったが手が回らなかったため、今後行なっていきたいこと
- Route 53の設定
- ACMで発行したSSL証明書の設定
- Golangの導入とパフォーマンス比較
- KMSを用いた環境変数の暗号化
- 本サービスの機能実装もろもろ
- 可読性の考慮
- 変数名や関数名の命名規則の整備
- TerraformやReactのディレクトリ構成の最適化
- CloudFrontとS3の構成のTerraformでの管理
- 開発環境や本番環境の整備
- 動作やパフォーマンスのテスト全般
ハッカソンを完走した感想
私自身は「アッと驚くサービスを作ってやろう!」という気持ちよりも「インフラ面で構築したことがない構成を構築してみたい!特にサーバレス!」という気持ちの方が勝っていたため、他のチームの方々の発表ではサービスの機能やUIなどが私のそれらと比べると凄すぎて、もうずっとこちらがアッと驚かされっぱなしでした...。それに、「スライドとか2~30分くらいで作ったもので良いか~」と思っていたら、他のチームの方々はスライドも「ガチ」で作っていたため、恥ずかしくなってしまいました(泣)
しかしながら、本来の目的であったサーバレス構成の構築をTerraformを用いて行なうことを実際に成功させることが出来たため、非常に嬉しくなりました!これからもインフラ面を中心に知識を付けていき、様々な構成を実際に構築していきたくなりました!
また、もしも再びハッカソンに参加させていただく機会がありましたら、しっかりとサービスの機能やUI、スライドにも力を入れたいと思います(笑)