はじめに
2025年10月から1か月間、「Booost!!! Excite Internship 2025」に参加しました。この記事では、インターンで取り組んだ内容や学んだことについてお伝えします!
自己紹介
私は、大学では機械系の学部に通う学部3年生です。普段は、同大学の文化祭実行委員会の情報局に学部1年生の頃から所属し、そこで情報系に興味を持ち、実行委員の活動をDX化するプロダクトの開発を行っています。時には、情報局のメンバーとハッカソンに出場したり、日々の生活を便利にするWebアプリを個人開発したりしています。長期間のインターンは今回が初めてでした。
インターン以外での技術経験
研究については、機械系ですが、カメラやLiDARを使用して計測・分析するような、情報系にも近いテーマで取り組んでいます。
個人開発では、生活を便利にする系統のものが多く、例えば自宅PCを遠隔起動するためのWOLアプリなどを作成しました。アプリケーション開発だけでなくインフラ分野も好きで、自宅ではミニPCなどを複数台使ってクラスター環境を構築して遊んだりもしています。
比較的最近出場したハッカソンでは、JPHACKS2024に参加し、Award Dayまで進むことができました。 過去のアルバイトでは、小中高校生向けのプログラミング指導をしていたこともありました。
インターンでやったこと
担当したプロジェクト
私は、SaaS事業部のFanGrowthチームに配属されました。 担当したのはフロントエンド開発です。このプロジェクトでは、既存機能の改修や、Vue.jsで構築されたページのReactへのリプレイスなどに取り組みました。
取り組んだ内容
開発環境構築
開発端末として高性能なMacを支給していただきました。しかも新品の状態で届いたため、とても驚いたと同時に大変嬉しかったです。というのも、私は普段Windows(厳密にはWSLのLinux)環境で開発を行っていたためです。支給されたMacは普段使いのPCよりもレスポンスが良く、非常に快適に開発作業を進めることができました。
一方で、WindowsとMacとではキー配置が大きく異なるため、この点には最も苦戦しました。Windowsでは大半の操作をCtrlキーで行うのに対し、MacではCommandキーが主体であり、かつCtrlキーも別の役割で存在します。配置場所も異なるため、インターン中に何度押し間違えたかわかりません。
その他の環境面については、ターミナルは普段から使い慣れていたzshでしたし、パッケージ管理もaptのような感覚でbrewを使えたので、特に苦労はありませんでした。
また、開発ツールとしてCursorを初めて使用しました。普段はGitHub Copilotが利用できるVSCodeで開発していたのですが、Cursorでの開発はAIとの連携がよりスムーズで、貴重な開発体験となりました。
担当したタスクと実装
インターン期間中は、主にReactで作成されたページの細かな修正作業を担当しました。業務に慣れてくると、既存のVue.jsで実装されていたページをReactへリプレイスするという、より大きなタスクも任せていただきました。
このリプレイスではデザインも刷新されており、私はある管理ページに関する一連の機能開発を担当しました。具体的には、データの一覧表示、キーワードやステータスでの絞り込み機能、そして新規作成・編集・削除を行うためのモーダル機能など、フロントエンド開発全般にわたる様々なタスクに取り組みました。
このタスクでは、コードの可読性や保守性を意識した設計を特に心がけました。例えば、ページ全体でデータ取得やモーダルの開閉といった状態管理を行い、実際の表示は「一覧表示エリア」や「検索フィルター」といったUIコンポーネントに委ねることで、ロジックとビューの関心を分離しました。
特に、新規作成・閲覧・編集など複数の役割を持つ複雑なモーダル機能の実装では、そのロジックをカスタムフックとして積極的に切り出しました。フォームの入力値管理やバリデーション、API連携といったデータ操作に関するロジックと、モーダルの表示モードや確認画面の開閉といったUIの状態に関するロジックをそれぞれ別のフックに集約しました。
このようにロジックを分離することで、ビューコンポーネント側は複雑な状態管理を意識することなく、受け取った値の表示とイベントの実行に集中できる設計を目指しました。
また、一覧で表示するカードのように、多くの情報を含むコンポーネントは、その中でも「基本情報」と「統計情報」のように、役割ごとにさらにコンポーネントを細かく分割し、見通しを良くする工夫も行いました。
成長したところ・難しかったところ
技術面
今回、初めて企業で実際に運用されている大規模なプロダクトの開発を体験し、学生団体での開発や個人開発では経験できない規模のコードやファイル量に圧倒されました。
配属先のプロダクトでは、専用のUIコンポーネントが整備されており、Storybookも充実していたため、フロントエンドの作成については仕様に慣れてしまえばスムーズに進めることができました。
開発中は、効率を上げることを特に意識していました。例えば、フロント側で叩くAPIの仕様や、リプレイス対象である旧Vue実装のページでどのような処理が行われているかをAIにリサーチ・要約させている間に、自分はFigmaのデザインを基にReact側のUIを作成する、といったプロセスを試していました。
また、プルリクエストを出すと自動的に gemini-code-assist によるコードレビューが実行される仕組みがあり、その指摘が非常に的確で、コード品質を担保する上で大変参考になりました。それだけでなく、メンターの方からいただけた的確なレビューや、時にはコードについて褒めていただけたことも、大きな励みになりました。
非技術面
コミュニケーションツールとしてTandemというサービスが導入されていたのが印象的でした。これは単なるボイスチャットツールとは異なり、同じルームにいると、他の人が始めた1on1の話し声も少しだけ聞こえる仕組みになっていました。これにより、まるで実際に同じオフィスにいるかのような感覚で、他の方々がどんな作業を進めているのかをなんとなく感じ取りながら自分のタスクを進めることができ、非常に面白い体験でした。
Tandem以外にも、Slackなどを通じて質問や相談がしやすい空気感があり、非常にありがたかったです。
また、期間中にはオフラインでのイベントにも参加させていただき、同時期にインターンに参加していた他の学生の皆さんとも交流する機会がありました。自分とは異なる分野で頑張っている方々の話は大きな刺激になりましたし、特にAIを開発にどう活かすかといった点でうまく活用しようと取り組まれている様子は、参考にできることが多かったです。
また、開発の進め方についても大きな学びがありました。特にリプレイスのタスクでは、機能ごとにタスクが分割されていたため、全体像を把握し、「次のタスクのことを想定して機能を整備する」といった見通しを立てて開発することの難しさを感じました。同時に、もしかしたら次のタスクは別の方が担当するかもしれない、という可能性も念頭に置いて開発することが、実務では必要なのだというマインドセットも身につきました。
チームでの開発サポートも手厚く、定期的な振り返りの場では、メンターの方が進行状況や困りごとがないかを丁寧に確認してくださったため、安心してタスクを進めることができました。
おわりに
1か月という短い期間でしたが、SaaS事業部のFanGrowthチームの一員として、実務でのフロントエンド開発に携われたことを大変嬉しく思います。
学生団体の開発では経験できなかった規模のプロダクトに触れ、特にビューとロジックを明確に分離するカスタムフックの設計や、再利用性を考慮したコンポーネント分割の重要性を改めて感じられました。
また、技術面だけでなく、TandemやSlackを通じた活発なコミュニケーション、オフラインイベントでの他の学生との交流、そしてタスクの見通しを立てて開発するマインドセットなど、チーム開発における非技術面での学びや気付きも非常に多かったです。
メンターの方をはじめ、手厚いサポートと的確なレビューで支えてくださったチームの皆様、そしてこのような貴重な機会を提供してくださったエキサイト株式会社の皆様に、心より感謝申し上げます。ありがとうございました!