🧑‍🎓

学生チームとアプリケーション開発コラボをしました

2024/01/18に公開

はじめに

BEENOSの野口です。
2022年12月に下関で開催されたハッカソンにて入賞した九州大学の学生3名とBEENOSのエンジニア3名でアプリケーション開発のコラボ企画をおこなったので、その取り組みについて共有させていただきます!

BEENOSのエンジニアと大学生とでアプリ開発を行うという取り組みは今回が初の試みとなり、お互いに苦戦する場面も多々ありました😅
今回の記事では実際に開発をおこなった学生チームの代わりに、メインメンターの野口より制作したアプリケーションの紹介をさせていただきます!

企画の目的

当初はBEENOS社内での利用を想定した要件でアプリを製作してみるといった話も挙がりましたが、学生チームのメンバーが自分たちのアイデアで作ってみたいものをサポートしようという方向性に定まり、以下の内容を目標にして取り組みが開始しました。

  • 学生チーム : 最終的に自分たちが作り上げたサービスをインターネット上に公開するという経験や、費用面でなかなか手が出しづらいGCP・AWSなどを利用したシステム構築の経験を通して、今後の自分たちの開発へ活かすこと。
  • BEENOS : 新卒採用活動としての今回の取り組みのフィードバックを学生チームからいただいたり、制作物の紹介などを通して今後のBEENOSの採用活動の活性化に繋げること。

期間・内容など

  • 開発期間 : 2023年4月~2023年9月末日の約6ヶ月間
  • 開発内容・詳細
    • 組織単位での紙媒体の書籍管理想定したアプリケーションを開発していただきました。
      • 実際に下関のハッカソンで入賞した際の発想をベースとして、ターゲットや設計をより詳細にして拡張するイメージです。
    • 社内のSlackにシングルチャンネルゲストとして参加していただき、基本的にはテキストでやり取りをしつつ、定期的に進捗共有会を開いて開発方針の確認や技術的な疑問についての連絡を行いました。
      • 学生チームのメンバーも他社での長期インターンを併行していたため、そちらに支障がない範囲で今回の開発に取り組んでいただくということで、細かなスケジュール管理などは行いませんでした。
    • 期間中、クラウド上にサービスを展開するにあたっての費用は、BEENOSの技術者向けの開発補助費として確保されている予算を割り当てていただけるということでマネージャー承認をいただきました。

メンバー紹介

学生チーム (敬称略)

※写真の左上から順に並んでいます

  • 森 正晴
    • 九州大学 経済学部 経済工学科 在学
    • インフラ担当
  • 林 春希
    • 九州大学 経済学部 経済工学科 在学
    • フロントエンド担当
  • 田中 匠美
    • 九州大学 経済学部 経済工学科 在学
    • バックエンド担当

      背景に設定されているのは学生チームメンバーオリジナルのアイコンで、将来的には起業することも視野に入れて野心的に動いているそうです!

BEENOSチーム (敬称略)

※写真の左から順に並んでいます

  • 野口 大輔
    • 2020年 新卒入社
    • 普段はBuyee・転送コムの開発のインフラ部分を担当
  • 森田 聡太
    • 2022年 新卒入社
    • 普段はGroobeeの開発のアプリ部分を担当
  • 倉内 悠太郎
    • 2022年 新卒入社
    • 普段は新規事業を中心とした複数プロダクトのアプリ部分を担当
  • 釜坂 聖
    • 2019年 新卒入社
    • 初期は新規事業開発を担当、現在はAI技術を用いた事業推進に参画

サービス概要

  • アーキテクチャ
    • 今回はAWSを利用してサービスを設計しました。
      • 学生チームのメンバーはクラウドサービスを利用するのも初めてだったので、アーキテクチャも0から調べながらの構築となりました。
    • ↓色々と調べながら構築していた際の図です!
      • ALBがパブリックサブネットになかったり、ターゲットとなるECSサービスもパブリックのままだったりと、色々と試行錯誤の過程が見てとれます。
  • 初期の頃の機能盛りだくさん計画ER図 (Zennの記事の都合で等倍表示ができないため文字が読み取れない状態になってます)
    • 結構しっかりと設計をしていたのが見てとれます。
  • 最終的に落ち着いた時のER図
    • 実際に開発しながら、ペースを考慮して一部設計を変更したり、取捨選択した結果以下のようになりました。
  • 画面の例
    • サインイン・サインアップ画面 : 認証の機能にはAmazon Cognitoを利用しています。
    • 書籍一覧ページ
      • 読んでる本・積読本・読みたい本など、本ごとにステータスを割り当てて見ることが可能です。

使用技術・サービス

  • Frontendの主な技術情報
    • フレームワーク : React
    • ビルドツール : Vite
    • 認証機能はAmazon Cognitoを利用するためにAWS Amplifyを組み合わせた実装・展開
  • Backendの主な採用技術
    • 開発環境 : Docker
    • DBエンジン : PostgreSQL
    • フレームワーク : FastAPI (FlaskベースのPython製Webフレームワーク)
  • インフラ部分の採用技術
    • 基本的には全てAWS上のサービスを利用
      • VPC
      • Route53・ACM
      • RDS
      • ECS・ECR
        • コンテナの土台はFargateを採用
      • ALB
        などなど

工夫ポイント・よかったこと(学生チームより)

  • 林さん
    • UXの観点を最優先に考えました。

    • ロジック的に正しいよりもユーザーの意思に寄り添ったものを目指しました。

    • 趣旨から外れるかもしれませんが、ハッカソンで実装した内容を改めて考えることで総合的な理解が深まりました。ハッカソンの時の「よくわからないけど実装したらとりあえず動いた」というような状況を放置しないことを心がけました。

  • 田中さん
    • テストをカバレッジ90%以上に保てるようにちゃんと書きました。

    • AWSの認証部分を開発時にはモックで突破できるようにいい感じに実装しました。

  • 森さん
    • AWSでインフラを組むのが初だったがデプロイしきれて良かった。動くものが作成できたので達成感がありました。

    • フルタイムで働きつつ開発を進められたことがやりきることに対する自信になりました。

    • 構成自体は手動で作成したもののCI/CDはgithub actiotionsを使用して、ECRへの自動プッシュ、ECSへの自動デプロイまではなんとか実装することができました。

苦労したこと(学生チームより)

  • 林さん
    • 自分を過信しすぎた=見積もりが甘かった結果だと考えており、反省しています。

    • 頭の中にいいアイディアが浮かんでも、実際にはそれを実現する技術がなかったり、時間が取れなかったりしてなかなか実行に移らないことがわかりました。

    • ある程度の想定のもと建てた目標と期限に対してイレギュラーが起こった時の修正方法や、どうしても波があるモチベーションを加味しての目標・期限設定に課題が残りました。

  • 田中さん
    • 設計段階であれもこれもと機能をモリモリにしすぎたせいでリリースまでが長くなり、後半のモチベ管理がかなり厳しかったと感じました。

    • 最初はミニマムで作って最速リリースし、検証と改善を繰り替えすことの重要さが身に沁みました。

  • 森さん
    • ギリギリ投稿に間に合ったといえど、締切を過ぎてしまったことを反省しています。

    • 3人での開発だったが3人が仕事をしている場所がばらばらでコミュニケーションを円滑に取れませんでした。

      • コミュニケーションの工夫があればもっとスムーズに開発が行えたはずだと思っています。

今回の企画を振り返って(学生チームより)

  • 林さん
    • とりあえず実行に移してみるということの重要さを学びました。

      • 実行に移さず終わるぐらいなら、アイディアが固まらなくても不十分なまま実行に移した方が最終的な成果の期待値が高いことを感じ、このことをもう少し早く気づけたら、、という後悔の思いもあります。

    • 最終的に振り返ると、ただ技術的に伸びるよりも、さらにベースとなるような部分の学びが多かったと感じています。

      • 実際にこのプロジェクトをやっていなければ実行に移すことの難しさは学べていなかったと思っており、それを学べたのが今回の1番の成果と考えています。

  • 田中さん
    • モチベーションを適切に維持できる仕組みと、モチベーションが低下した際にも一定以上のアウトプットが出せる仕組みを両方整えて置くことが重要だと感じました。

      • 今回のコラボ活動では、後者の環境はありがたいことにBEENOSの社員さんとの定例MTGによって達成されており、今回作成したアプリケーションが最低限形になったのはこの点が大きいのではないかと考えます。しかし、前者の環境を整備できなかったことが、最低限しかアウトプットが出せなかった原因だと思うので、この部分の反省を今後のチーム開発に活かしていきたいと思います。

    • アプリ制作がとても楽しくて、今回の取り組みをきっかけとしてReact-TSでのフロントエンド開発と、golangでのシステム開発、バックエンド開発ができるようになりました!

  • 森さん
    • 私の開発が3人の中でも最も遅れていて非常に苦しい時期もありましたが、野口さんにたくさん助けてもらいなんとか完全ではないものの動くものを作成できました。

    • フルタイムで働きつつ開発を進められたことがやりきることに対する自信になりました。

    • 今後の方針としては、まずは作成した結果をTerraformに置き換えていければと考えています。

      • また、今は一旦動くものをということでかなりセキュリティ的にも不安な部分があるので、そこをきちんと学んで個人的に修正をしていけたらと考えています。

フィードバック(BEENOSエンジニアより)

  • 学生チームの3名とも、ハッカソンに参加した時点ではまだプログラミングに触れたばかりだったというのを後から知り、慣れない技術がありながらもこれだけ開発に積極的に挑戦したことをまずは賞賛したいです👏
    • 感想にもありましたが、この企画がスタートしたタイミングでは3名とも大学は休学し、開発経験を積むために別の企業にてフルタイムで働いているという状態でした。その中で空いた時間をうまく利用して今回の企画に挑戦したこと、本当に素晴らしいことだと思います👍
  • 「当初作りたかったもの・設計していたものが、諸々の都合で想定していた期限までに作りきれずに、結果的に縮小した状態でのローンチ」はエンジニア界隈では結構あるあるですよね!
    • 筆者の野口自身も経験があり、そこから学んだこともあるので、同じようにこの経験を一つのステップとして前向きに捉えていただけたらと思います!
  • まだ取り組みを始めたばかりの頃に、「試しにAWS AppRunnerを使って簡単に公開してみようか」という会話をした後の数時間でデプロイと公開が成功した時のメンバーの喜んでる姿😆が印象的でした!
    • 後半は色々な技術を組み合わせて苦戦したシーンも多かった印象ですが、最初のこうした成功体験があったおかげで、試行錯誤しながら挑戦を続けたりや楽しんで開発を進められたのではないかと思っています。
  • メンターとしても、”自分でなんとか動く状態にすること”と”誰かに教えながら最適な着地点に持っていくこと”の差は大きいなと改めて感じ、貴重な学びになったと思っています。
  • 実際に商用サービスを扱っている方がER図やアーキテクチャ図を見ると「この設計なんか考慮が足りていないかも🧐」「もっとこうしたほうが良いのでは?」といったツッコミポイントも多いかもしれません。
    • 確かに現時点では「動くものがローンチできた」という1つのステップをクリアしただけという状態で、未完成な状態であることは、きっと開発した本人たちが一番自覚していることでもあると思います。
    • 今回の経験をきっかけにしてアプリ開発の楽しさを体感し、振り返りながらぜひより良い状態を目指して改修していただいたり、次の開発に活かしていただけたりしたらメンターとしても嬉しいです🙌

まとめ

  • 内容盛りだくさんの記事となりましたが、今回の取り組みについての紹介は以上となります!
  • 制作したアプリケーションは今回の取り組みの間はインターネット上に公開されていましたが、企画終了後は費用の都合で停止状態となっています🙏
  • 学生チームの皆さんが制作したアプリケーションが、いずれ多くの方に利用されるサービスとしてリリースされることを期待しています!
  • また、一緒に学生チームのみなさんと関わって下さったBEENOSのエンジニアメンバーの釜坂さん、倉内さん、森田さん、ご協力ありがとうございました😊

Wanted!

BEENOSグループでは一緒に働いて頂けるエンジニアを強く求めております!
少し気になった方は、社内の様子や大事にしていることなどをThe BEENOSにて発信しておりますので、是非ご覧ください。

とても気になった方はこちらでも求人を公開しておりますのでで求人も公開しておりますので、お気軽にご応募ください!
「自分に該当する職種がないな...?」と思った方はオープンポジションとしてご応募頂けると大変嬉しく思います 🙌

世界で戦えるサービスを創っていきたい方、是非是非ご連絡ください!よろしくお願い致します!!

世界で戦えるサービスを創っていく

BEENOS Tech Blog

Discussion