新卒研修で挑戦した生成AIの活用と映画館アプリ開発
はじめに
こんにちは。クラウドエース株式会社 25 年度新卒の永井です。
4 月に入社してから早くも数ヶ月が経ちました。今回は、5 月から 6 月末まで行われた新卒研修を通じて、Web アプリケーションを一度も作ったことがなかった自分が、映画館アプリをどのように作成していったのかを、研修の流れとともに振り返りながらご紹介します。
- 「クラウドエースの新卒研修ではどんなことをやっているのだろう?」
- 「未経験からでもアプリを作れるようになるのか?」
本記事を通じて、その雰囲気を感じていただければ幸いです。興味があればぜひ読んでみてください。
新卒研修の日程
-
4 月:社会人基礎研修
社会人マナーや会社概要など、社会人としての基礎を身につける -
5 月上旬〜中旬:Phase 1 技術基礎知識研修
システム開発・Web アプリケーション開発の全体像を把握し、IT 技術およびシステム開発に必要な基礎知識を習得する -
5 月中旬〜下旬:Phase 2 専門技術深化・実践準備
フロントエンドやバックエンド、仕様書とソースコードの読解演習を通して、開発現場で必要となる知識とスキルを習得する -
6 月:Phase 3 実践 Web アプリケーション構築
Phase 2 までの学習内容を総合的に活用し、Web アプリケーションの構築を実施。実践的な問題解決能力、チームワーク、技術コミュニケーション能力を養う -
6 月下旬:Phase 4 仮想サポート研修
実際に顧客から寄せられる技術的な問い合わせを想定し、環境を再現しながら「なぜその問題が発生したのか」「どのように解決するのか」を学んだ
これ以外にも、テクニカルライティング研修などのさまざまな研修を受けました。
このように、4 月から 6 月にかけて基礎から実践まで幅広い研修が行われています。
今回の記事では、この中から社会人基礎研修を除いた技術研修について、Phase ごとに学んだことや実践したことをまとめてご紹介します。
特に Phase 3 実践 Web アプリケーション構築 に焦点を当て、どのようにアプリケーションを開発したのか、そして生成 AI とどのように向き合ったのかについて詳しく書いていきます。
技術研修
Phase 1: 技術基礎知識研修
Phase 1 では、コンピューターの仕組みを基礎から学びました。
GUI と CLI の違いや Linux について学習し、MacOS 上でのターミナル操作も実習形式で体験しました。
さらに、Git や GitHub の基本的な使い方や運用方法を理解し、HTTP や Web サービスがどのように提供されているのかといった根本的な仕組みに触れました。
研修内容は以下の通りです。
- Web アプリケーションとシステム開発の概要
- Linux 基礎研修
- Git・GitHub 研修
- ネットワーク研修
これらを通じて、エンジニアとして必要な基盤知識と、クラウドエースで活用されている基礎技術を身につけることができました。
Phase 2: 専門技術深化・実践準備
次に、Phase 2 では実際にアプリケーションを作成する上での基礎となる知識を学びました。
フロントエンドからバックエンド、データベース、さらには Google Cloud の使い方まで幅広く研修を行いました。
研修内容は以下の通りです。
- フロントエンド研修
- バックエンド研修
- データベース研修
- Google Cloud 研修
- ソフトウェア研修
- ドキュメンテーション研修
これらを通じて、アプリケーションを作成する際にどのような構成で作り、どのように公開するのかを学びました。
特に印象に残ったのはドキュメンテーション研修です。通常はもっと経験を積んでから学ぶ上流工程について解説を受け、「言われたことをただこなす」のではなく、その指示にどのような意図があるのかを考えるきっかけになりました。
Phase 3: 実践 Web アプリケーション構築
この研修では、これまでに学んできた内容を活かして 映画館の予約サイト を作成しました。
今回の想定は以下の通りです。
- 顧客:M 社(映画館「令和シネマズ」を運営)
-
背景:コロナ禍での顧客ニーズに対応し、オンラインでチケット購入ができるようにしたい
※現状はオフライン販売のみで、オンライン化が急務となっている
このようなシナリオに基づき、約 50 個の要求が提示されました。
このシートは、Cursor や Gemini で編集しやすいようにあらかじめ用意されたものです。
実際には CSV としてダウンロードし、Cursor 上で編集を行いました(一部の確認には Gemini も活用しました)。
主な要求の例は以下の通りです。
- 座席は 1 席 2,000 円とする
- スクリーンは 2 種類あり、A は 100 席、B は 50 席を予約可能とする
- 会員登録情報を基に予約できるようにする
- その他多数
また要求資料とは別に各チームごとに自由な機能追加をすることで、いかに独創的でユニークなサイトを作成できるかが課題となりました。
アプリ制作までの流れ
6 月第 1 週目は、上流工程にあたる システムの基本設計 を進めました。
具体的には以下の流れで、1 週間かけて上流工程をまとめています。
- 要求分析・要件定義
- 見積もり
- 基本設計
- 結合テスト仕様書の作成
この週では、クラウドエースで新卒の段階では通常触れることのない工程に取り組みました。
予算の立て方や工数の割り振りなどを考え、メンターの方に評価していただきました。
また、Gemini を活用して要件をまとめたり、言語化が難しい部分を補ってもらったことで、研修を円滑に進めることができました。
実際に作成した成果物の一部
ユースケース図
画面遷移図
※ 今回は mermaid を利用して生成 AI に作成させました。
実際のプロジェクトでは専用の設計ツールを利用することが多いです。
機能要件(抜粋)
画面 | 区分 | 主な機能 | 開発難易度 | 工数目安 | 備考 |
---|---|---|---|---|---|
トップページ | ユーザー画面 | 映画一覧、検索・フィルタ | 中 | 6日 | デザイン確定、API 仕様確定 |
会員登録画面 | ユーザー画面 | 入力フォーム、バリデーション | 低 | 3日 | 標準フォーム |
上映日時選択画面 | ユーザー画面 | 空席確認、料金表示、選択処理 | 高 | 8日 | API 連携多、リスクバック含む |
決済画面 | ユーザー画面 | Stripe API 連携、成功/失敗処理 | 中 | 6日 | セキュリティ要件あり |
管理者ダッシュボード | 管理画面 | KPI 表示、予約情報管理 | 中 | 9日 | データ集計、外部認証連携 |
裏話
自分たちは工数を「3 人 × 3 ヶ月 = 9 人月」と見積もっていました。
ただ、実際に案件に入ったときには「このサイトにこの人月は盛りすぎたな…」と感じました(笑)
6 月 2 週目以降はいよいよ実装フェーズに入りました。
まずは、基本設計で作成したサイトの基礎機能から実装を開始しました。
ここからは、まさに Cursor を擦り切れるほど使い込みながら開発を進めていきます。
Cursor はコード補完や生成 AI 機能を統合したエディタで、クラウドエースでは Cursor Teams を導入しており、新卒研修でもこの環境を利用しました。
その後は、画面遷移図に沿って「各ボタンを押したら次の画面に遷移する」といった指示を追加していくだけで、それらしいサイトが完成していきました。特に印象的だったのは、画面の変更がいつでも簡単にできたことです。トライアンドエラーもありましたが、「このデザインを〇〇のように変えて」と指示するだけで、理想のサイトにどんどん近づいていきました。このときは後々生成 AI に手こずらされるとは思ってもいませんでした…。
実際に作成したトップページ
これまでは研修としてサンプルのワークフローやプロンプトなどが共有されていましたが、ここからは各チームでブレストを行い、それぞれの裁量で追加開発を進めるフェーズに入りました。
私たちの班は「管理側」と「一般利用者側」にサイトを分け、データベースを介して上映スケジュールや予約を管理できるようにしました。
また、追加機能として「回数券・割引券システム」や「映画館紹介ページ」を作成することにしました。
役割分担は以下の通りです。
基礎設計担当
- 基礎設計に基づく環境の構築
- ログイン機能の実装
- 基本機能全般
- 映画館紹介ページ
アドミン担当
- DB を介した映画の登録・編集・削除
- 予約管理
- 上映作品の登録
追加機能担当
- 基本設計にない機能の開発
- 割引システムの構築
- 回数券システムの構築
これらを Git 上で管理していましたが、近しい作業(例:ログイン機能と認証機能)を複数人が生成 AI を使いながら同時に進めた結果、大量のコンフリクトが発生しました。
さらに、人によって環境が異なり「自分の環境では動くのに他の人の環境では動かない」といった問題も起き、約 1 週間作業が停滞してしまいました。
そこでチームで話し合い、以下の対策を取りました。
- お互いにプルした後、まず誰かがそのコードを動かして問題がないことを確認してからマージする
- 作業を完全に役割分担し、同じ箇所を触らないようにする
この対策により、次の週からは円滑に作業を進められるようになりました。
ここまで大まかなアプリ作成の研修の流れを紹介しましたが、ここからは私たちが直面した課題と、その解決方法について書いていきます。
Case 1: 無限デプロイバグ
いよいよ Cloud Run にデプロイして実際に動かそうとしたときに発生したバグです。
(ちなみに私は前日に有給を取っており、翌日出社して同僚の顔を見た瞬間「あ、これはやばそうだな」と感じました…笑)
どんなに研修資料通りにデプロイを進めてもエラーが出てしまい、IAM 権限の確認なども行いましたが解決できませんでした。
調査の結果、デフォルトサービスアカウントを誤って削除したことによる影響である可能性が高い という結論に至りました。
最終的には別のメンバーのプロジェクトで開発を進めることにしましたが、チーム内では「このプロジェクトは呪われてるかもね」と冗談を言い合い、笑い話になりました。
Case 2: データベース連携がうまくいかない!!
今回作成した Web アプリは以下のような構成になっていました。
上映スケジュールや予約情報などをデータベースを介して更新する仕様でしたが、スキーマやカラムを統一しなければならないことを忘れ、各自が好きなように作成してしまいました。
その結果、データがまったくまとまらないという問題が発生しました。
最終的には、データベースを一番多く触るアドミン側の構造に合わせることにしました。
さらに生成 AI にデータベースのマスタールールを作成してもらい、そのルールをチーム全員で確認した上で実装を進めたことで、ようやく円滑にデータベース操作ができるようになりました。
ただし、生成 AI がうまくいかない場合や、何かとデータベースを初期化したがる癖があり、その点では苦労しました。
Case 3: 報告が甘い!!
これは技術的な内容ではありませんが、大きな学びとなったケースです。
研修では毎日 30 分程度のチーム内進捗報告会があり、議事録と文字起こしを記録しながら、その日の進捗を報告することが課題として設定されていました。
しかし、私たちのチームでは午前中の研修が終わると常に一緒に作業をしていたため、進捗を改めて報告・確認する必要がないと考え、議事録もあまり詳しく書いていませんでした。
その結果、研修担当の方から「報告が甘い」と指摘を受け、なぜ報告が必要なのか、報告の重要性 について改めて指導をいただきました。
それまでは「単なるチーム内の進捗確認」程度に思っていましたが、実際には現場に出た際に 上司へ進捗を示す大事な指標 になることを学ぶきっかけとなりました。
これらの経験を通じて、技術力だけでなく チーム開発を円滑に進めるための姿勢や考え方 を身につけることができたと感じています。
完成したサイト
実際に完成したサイトの一部をお見せいたします。
実際に完成したトップ画面
予約完了画面
アドミントップページ
研修を受けて
生成 AI を活用した開発のよかった点・悪かった点
今回の研修では、生成 AI を積極的に活用しながら成果物を作成しました。
特にコードライティングはほとんど行わず、生成 AI にコードを書かせ、間違った挙動や考え方があれば修正を指示するという進め方が中心でした。
ここでは、生成 AI を使って感じたことをまとめます。
よかった点
- コーディングの高速化により、できることの幅が大きく広がった
- 現状を容易にまとめて共有できた
- とっかかりの難易度が下がり、開発に入りやすかった
悪かった点
- A を作ってほしいのに、A と B を作り、その B でエラーが発生することがあった
- データベースを初期化したがる癖がある
- 「わかりました」と返答しても、実際には理解していなかったり間違っている場合がある
- 人間の補助なしでは、自分の能力以上のことはできない
- 業務で使うレベルでは、必ず人の手によるチェックが必要
- 比較的すぐに「諦める」ケースがある。
研修の中ではこうした課題を強く感じましたが、これはあくまで短期間で成果物を仕上げる研修環境での印象です。
実務の現場では、生成 AI の使い方やプロンプトの工夫次第でもっと活用の幅が広がると思います。
今後は「人が補助する前提」でうまく組み合わせながら、より実践的に活かしていきたいです。
実際に解決できないエラーが長時間発生し、AI からは「キャッシュの更新をしていないのが原因」と言われました。
しかし、毎回きちんとキャッシュは更新しており、最終的にコードをすべて見直したところ重大なミスが発覚。
その際には、私が思わず AI を叱るような文章を投げてしまいました(笑)。
研修の感想
今回、人生で一度しかない新卒研修を受けたことで、今後の技術者としての心構えや、生成 AI を活用した仕事の進め方を学ぶことができました。
最後に、自分の感想と同僚の感想を紹介し、本記事を締めたいと思います。
- 感想 1:初めてのチーム開発では意思疎通や伝達に最初は問題がありましたが、最終的には良いものを作成できました。また、生成 AI はいつから人間を疑うようになったのか…
- 感想 2:コードをさっと書き上げる点は頼もしかったですが、自信満々に間違うことも多いため、手綱を握ることが重要だと感じました。
- 感想 3:顧客やエンドユーザーに本当に役立つ機能要件、非機能要件を考えることは難しいと感じました。
この研修を通じて、技術的な知識やスキルだけでなく、チームで協力することの大切さや、生成 AI を使う上での向き合い方を学ぶことができました。
ここで得た経験を糧に、今後は実務の現場でも成長を続け、より多くの価値を提供できるエンジニアになっていきたいと思います。
ここまで読んでいただき、ありがとうございました!
Discussion