🙄

Next.js × Python × Dockerで求人サイトを開発した4日間 ― エン・ジャパン インターン体験記

に公開

エン・ジャパンのサマーインターンに参加して、モダンWeb開発を体験してきた

はじめに

こんにちは。
2025年夏に開催された エン・ジャパン株式会社 エンジニアリンググループのサマーインターン(4日間)に参加しました。

本記事では、インターンの概要や実際に取り組んだ内容、学びや気づきをまとめます。
これからインターンに参加する学生の方や、モダンWeb開発を体験してみたい方の参考になれば幸いです。


自己紹介

  • 修士1年 / AIエンジニア
  • 普段は 画像処理・音声合成・自然言語処理 を中心にAI研究・開発に取り組んでいます
  • 使用技術: Python, PyTorch, YOLOv8, Docker, React, Next.js など

AI寄りのバックグラウンドでしたが、Web開発の実務フローを短期間で体験してみたいと思い参加しました。


インターン概要

今回の課題は、「小さな求人サイトを作る」Webアプリ開発 です。
特徴的だったのは、実務に近いモダンな構成が用意されていたことです。

  • フロントエンド: Next.js / React (SPA構成)
  • バックエンド: Python, MVC+S+R アーキテクチャ
  • 環境構築: Docker, devcontainer
  • 開発フロー: GitHub Flow(feature branch → Pull Request → review → merge)

最終日には、完成したWebアプリを動かしながら発表を行う流れでした。


技術的な取り組み

1. 環境構築

まずは Docker / devcontainer を使って環境をセットアップ。
普段はローカル環境で直接開発することが多いので、コンテナベースで開発環境を統一するメリットを実感しました。

  • ローカル環境を汚さない
  • チーム全員が同じ環境で開発できる
  • 「動く環境がない」というトラブルを回避できる
# backend起動
docker compose up -d

# frontend起動
npm install
npm run dev

2. バックエンド実装

バックエンドでは、API仕様に沿った機能追加 を担当しました。
具体的には、ユーザー認証や求人データ取得に関するエンドポイントを実装し、テストまで行いました。

実装時には以下を意識しました:

  • 責務分離(モデル・サービス・リポジトリ層の役割を明確に)
  • エラーハンドリング(例外発生時にユーザーへ分かりやすいメッセージを返す)
  • 再現性(レビューやデバッグ時に追いやすいログ設計)

3. フロントエンド実装

Next.js / React を使ったSPAで、APIと接続して求人一覧を表示する部分を担当しました。

  • フォーム入力からAPIリクエストを送信
  • レスポンスデータを整形してUIに反映
  • エラー時のメッセージ表示

普段AI研究ではフロント実装をする機会が少なかったので、UI/UX設計とAPI連携の難しさを肌で感じました。


4. GitHub Flowとコードレビュー

今回のインターンで一番印象的だったのは GitHub Flowとレビュー文化 です。

  • 実装は小さな単位でfeatureブランチを作成
  • PRを出したらSlackでレビュー依頼
  • コメントを受けて修正・再提出

特に「なぜこの実装にしたのか?」と問われるレビューが多く、自分の思考を言語化する重要性を実感しました。


学び・気づき

小さくPRを出すことの大切さ

大きな変更を一気に出すのではなく、小さく区切ってPRを出すことでレビューがしやすくなり、手戻りも減りました。
これは今後の研究や実務でも徹底したい習慣です。

設計段階での責務分離

フロントとバック、さらに層ごとの責務を分ける設計により、コードの読みやすさと保守性が大きく向上することを体感しました。

エラー処理とユーザー体験

「ただ動けばいい」ではなく、エラー時のユーザー体験(エラーメッセージ、ローディングUIなど)まで考慮する必要があることを学びました。


今後に活かしたいこと

  • AI/MLシステム開発でも、再現性や責務分離、レビュー駆動を強く意識する
  • コードの動作だけでなく、読みやすさ・保守性・チームで扱いやすい設計を重視する
  • 設計思想やレビュー文化を積極的に取り入れ、プロダクト思考を持ったエンジニアを目指す

まとめ

エン・ジャパンのインターンは、モダンWeb開発を短期間で実践できる貴重な機会でした。
技術的な学びだけでなく、チーム開発の進め方・レビューを通じた成長を強く実感できました。

今回の経験は、研究やAI開発だけでなく、今後のキャリア全体に活かせる財産になると感じています。


使用技術

  • 言語/フレームワーク: Python, Next.js, React
  • 開発環境: Docker, devcontainer
  • 開発フロー: GitHub Flow
  • その他: API設計, コードレビュー

Discussion