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