NUTMEGに入って5ヶ月経ったのでどれくらい成長できているのか振り返ってみた

NUTMEGに入って5ヶ月経ったのでどれくらい成長できているのか振り返ってみた

はじめに

NUTMEG B3の准教授と呼ばれている者です。

最近は開発モチベーションの急上昇と将来への不安が入り混じり、混乱した状態に陥ることが多く、そのせいか奇行に走ってしまうこともあります。申し訳ありません。

さて、ここまで技大祭とNUTMEGハッカソンを走り抜け、その過程で多くの経験や知識を得て、NUTMEGに加入する前と比べて格段に成長したと感じています。本ブログでは、

  • 開発に参加する際の自分の考え方
  • 開発を通じて得られたこと

について、時系列に沿って共有していきたいと思います。NUTMEGに興味がある方にとって、技術力がほとんどない状態からどのくらい成長できるかの参考になれば幸いです。


知識・経験が皆無の状態でトラパに挑戦してみた

NUTMEGに入るまでに持っていた知識といえば、

「Python?まぁまぁかな〜」

「機械学習?多少のモデルの原理くらいなら?」

という、何とも中途半端な素人エンジニアでした。

そんな私ですが、以前から興味があったDSチームに参加し、プロジェクトを通じて機械学習を使って技大祭に貢献したい、そして機械学習を用いた開発に挑戦したいという思いがありました。その結果、DSチームのTracking Parkingプロジェクト(以下トラパ)に参加することになりました。

トラパの挑戦は絶壁のようだった

機械学習にちょっとだけ触れたことがある程度の私にとって、トラパは非常に大変なものでした。具体的には、

  • チーム開発の経験がまったくなかったこと
  • ネットワークやデータベースに関する知識の不足

が主な課題でした。しかし、メンター制度のおかげでGitHubとDockerの基本的な使い方を教えていただき、最低限のチーム開発ができるレベルには成長することができました。

とはいえ、プロジェクトの根幹に関する知識が不足していたため、このままでは力不足でした。

夏休み中旬まで積極的な行動を取らなかった

ではその間、何をしていたかというと、

  • バイトに明け暮れていた
  • 個人でAtCoderに取り組んだり、データベース設計に関する本を読んでいた
  • トラパのYOLOを使ったナンバープレート検出システムの開発

といったことを行っていました。最低限のことはやっていたつもりでしたが、振り返るともう少し積極的にコミットすべきだったと反省しています。

技大祭が近づくにつれて

この状況の中、時間は容赦無く過ぎていきました。この段階での課題としては、

  • OCRでナンバープレートを読み取る機能がない
  • ラズパイの処理性能がリアルタイム処理に足りない
  • YOLOのファインチューニングで精度向上が必要
  • 駐車台数を出力する機能が不足している
  • etc…

といった問題がありました。

「やばい」

技大祭まで1ヶ月を切り、この状況は「やばい」の一言に尽きました。末端の私でも危機感を強く感じていました。

技大祭前日まで

技大祭前日までは、ひたすら開発の日々でした。

YOLOのファインチューニングについては、のせさんの高性能PCをお借りし、自分はナンバープレートのOCR機能と、その後の駐車台数を出力する機能を追加しました。

電源の確保という激アツ展開に

電源を確保できたことで、ラズパイの処理性能不足を解消することができました。しかしその代わり、車でデスクトップPCを運用するという、かなり無茶な環境での実行となりましたが、何としてもトラパを成功させたいという一心で、なりふり構っていられませんでした。

以下は、前日に何とか環境構築を試みている様子です。 20240914_011056

技大祭当日

当日ものせさんにお手伝いいただいて

車内でデスクトップPCやラズパイを動かしていたものの、IPアドレスが見当たらず接続ができませんでした。そのため、早朝にのせさんに来ていただいて対応をお願いしました。(後にUSBハブが原因だと判明しました)

そしてやらかす

「ノートPCがあればいつでもアクセスできるし便利だろう!」

そう思ってMacを車内に放置するという、今思えば非常に浅はかな行動を取ってしまいました。当然、MacBookくんは熱を帯びてしまい、最終的にはショートしてしまいました。その結果、トラパの実行を断念することになりました。

振り返ってみて

いい意味で失敗してよかった

悔しい気持ちはありますが、これを来年に向けてのバネにしていきます。

技術力の飛躍的な向上を感じた

具体的には

  • 機械学習システムの開発経験
  • データベースの知識
  • SSH接続の知識

を得ることができたと感じています。

自分の限界が底上げされた

毎日のように深夜3時、4時まで作業することが続き、それが苦ではなくなりました。これがきっかけで、何かを頑張るときに 「トラパの方がきつかった」 と思えるようになりました。

NUTMEGハッカソンに挑戦してみた

さて、ここからはNUTMEGハッカソンについてお話しします。技大祭が終わり、息つく間もなくNUTMEGハッカソンが開催されました。参加の動機は以下の通りです。

  • これまでハッカソンに参加したことがなく、NUTMEGハッカソンはハードルが低く楽しそうだった
  • バックエンドに触れれば、トラパで使用しているデータベースへの理解が深まるかもしれないと考えた

こうした理由から、軽い気持ちで参加を決意しました。

新たな挑戦

今回のお題は「技大祭を⚫️⚫️するWebアプリケーション」でした。私たちのチームは、マップとチャットを連携させたSNSアプリの開発に取り組みましたが、私はフロントエンドの経験が全くなく、このままではフロント必須のハッカソンにおいてお荷物になってしまう状態でした。

フロント、やるしかねぇべ。

行ったこと

  • Dockerの環境構築
  • Next.jsでのフロント作成のサポート
  • PostgreSQLを使ったデータベースの構築とデータ送信機能の実装
  • Vercelを使ったデプロイ環境構築

トラパで得た経験を活かして

  • GitHubの運用
  • Dockerを用いた環境構築

これらはトラパで得た経験を活かしてスムーズに進めることができました。

とはいえフロントはまだ赤ちゃんレベル

チームメンターの窪坂さんに多大な助力をいただき、何とか開発をサポートすることができました。正直、まだ理解できていない部分も多いですが、最低限必要な機能を実装し、デプロイまでこぎつけることができたのは、窪坂さんの的確なアドバイスと多くの時間を割いてくださったおかげです。

ハッカソンを終えた感想

スクリーンショット 2024-10-02 15.52.29

トラパでの成長を実感できた

GitHubやDocker周りの環境構築をスムーズに行えたことから、トラパでの経験が無駄ではなかったと実感でき、本当に嬉しかったです。

1つのものが出来上がる喜び

チームの目標であった「動くものを作ろう」という方針に基づき、実際にデプロイを行い、発表当日までに形にしていく過程はとても楽しいものでした。日に日にアプリが形になっていくのを見るのは本当に嬉しい体験でした。

フロントエンドに触れることができて良かった

今回の経験をきっかけに、自分で作りたいものが増えました。不安な部分も多かったのですが、結果として、フロントエンドに触れることができて良かったと感じています。

総括して得られたこと

AIシステムの開発経験

AI、デバイス制限、データ取得の難しさを体感し、AIを絡めたプロジェクトの難しさを学びました。

チーム開発の基礎

GitHubやDockerの運用を最低限自力で行えるようになりました。

自分の限界を知ることができた

限界までやってみることで、失敗しても「これだけ頑張った」と言える自信がつきました。

Webアプリのデプロイまでの経験

おかげで個人でアプリを作りたいという意欲も湧きました。

お気持ち

技大祭、NUTMEGハッカソンを通じて、多くの技術力を得ることができたと実感しています。特に、開発にフルコミットする経験をしたことは非常に良かったと思っています。

また、先輩や同期には心から感謝しています。先輩方の主導で技術力をより高めることができましたし、同期が頑張っている姿を見ることで自分も頑張ることができました。

何より、開発を楽しむことができました。楽しさがモチベーションを維持し、それが好循環を生んだのだと思います。

今後は

トラパの運用方法の再考

今回の反省を踏まえて、現在の運用法が最適かどうか見直したいと考えています。

GCI 2024 Winterの修了

現在個人で参加している、外部のAI入門講座でデータサイエンス領域で基礎力を高めたいと考えています。

さらに余裕が生まれたら

新しいプロジェクトの立ち上げ

具体的には

  • アンケートを分析し、客観的に改善点を見つけたい
  • HPのアナリティクスを解析したい
  • FinanSuで、自然言語処理を活用して機能を便利にしたい
  • トラサポを何とかして復活できないか検討

など、構想だけが積もっています。

Webアプリの開発(個人または少数で)

今回のハッカソンで得た知識を用いて、食堂の注文管理アプリを作れたら良いなと考えています。あわよくば、機械学習システムも組み込んでみたいなとも思っています(必要かどうかは別になりますが)。

今後もNUTMEGメンバーとして頑張り、自他ともに認めるつよつよエンジニアになれるようこれからも努力していきます。