1. LLM時代の開発を体験する

1.1. この章で学ぶこと

  • LLMが開発にもたらした変化

  • 本書で作るアプリの全体像

  • 学習の進め方

  • 必要な前提知識(ほぼゼロでOK)

1.2. 何が変わったのか

1.2.1. プログラミング学習の革命

2022年11月、ChatGPT[1]の登場はプログラミングの世界を一変させました。 それ以前は、エラーメッセージが出たら何時間もStack Overflow[2]を検索し、英語のドキュメントと格闘し、時には諦めてしまうこともありました。

しかし今は違います。 エラーが出たら、そのままLLM[3]に貼り付けて質問すれば、数秒で解決策が返ってきます。 分からない概念があれば、対話しながら理解を深められます。 まるで、24時間365日付き添ってくれる優秀なメンターが手に入ったようなものです。

../_images/the_development_experience_in_the_LLM_era.svg

図 1.1 LLM時代の開発体験

1.2.2. 従来の学習フロー

疑問が発生
  ↓
Google検索 (10分)
  ↓
Stack Overflowで似た質問を探す (20分)
  ↓
英語のドキュメントを読む (30分)
  ↓
試行錯誤 (1時間)
  ↓
うまくいかず挫折...

この流れに覚えがある人も多いのではないでしょうか。 特に初心者にとって、「どこで何が間違っているのか分からない」という状況は、プログラミング学習の最大の壁でした。

1.2.3. LLM時代の学習フロー

疑問が発生
  ↓
LLMに質問 (30秒)
  ↓
即座に回答が返ってくる
  ↓
分からない部分を対話で深掘り (5分)
  ↓
実装して動作確認 (10分)
  ↓
成功体験を積み重ねる!

学習のスピードが大幅に向上しただけでなく、挫折ポイントが激減しました。 これがLLM時代の開発の最大の変化です。

1.2.4. 開発者に求められるスキルの変化

LLMの登場で、開発者に必要なスキルも変わりました。

以前重視されたスキル:

  • すべての文法を暗記

  • フレームワークのAPIを細かく記憶

  • エラーメッセージのパターンを覚える

  • 大量のドキュメントを読破

今重視されるスキル:

  • 適切な質問をする力(プロンプト[4]力)

  • LLMの回答を評価する力(正しいかどうか判断)

  • 本質的な設計判断(アーキテクチャ[5]、セキュリティ)

  • 問題を分解して段階的に解決する力

コードを書くことから、設計と対話へ。これが新しい開発スタイルです。

1.2.5. でも、すべてLLMに任せればいい?

そうではありません。LLMは強力なツールですが、万能ではありません。

../_images/visual_selection.svg

図 1.2 LLM時代の開発スキル

LLMが得意なこと:

  • 定型的なコードの生成

  • エラーメッセージの解説

  • 既存のベストプラクティスの提示

  • コードのリファクタリング提案

LLMが苦手なこと:

  • 最新すぎる情報(学習データの締切以降)

  • プロジェクト全体の文脈理解

  • 最適なアーキテクチャの判断

  • セキュリティの深い考慮

つまり、LLMは最高の相棒ですが、最終的な判断は人間が行う必要があります。 本書では、この「LLMとの協働」を実践的に学んでいきます。

1.3. 本書で作るもの

1.3.1. テキストアドベンチャーゲーム

本書では、サンプルプログラムとしてAI と会話しながら進めるテキストアドベンチャーゲームを作ります。

このサンプルプログラムを実際のサーバーにデプロイして、サービスを開始できるところまで解説していきます。 従来の入門書ではサンプルコードを作るところまでで終わることが多く、実際にサーバーを立ててサービスを公開する段階で多くの初心者が苦労しているようです。 そこで本書では、サンプルプログラム自体はシンプルに留め、サーバー構築やサービス公開に関する説明を手厚くするように心がけています。

とはいえ、つまらないサンプルプログラムだと作っても面白くありません。そこで今回は、楽しみながら開発できる簡単なテキストアドベンチャーを作ってみることにしましょう。

1.3.1.1. ゲームの概要

あなたは廃墟となった地下研究施設で目覚めました。
記憶は曖昧で、ここがどこなのか、なぜ自分がいるのか分かりません。
薄暗い廊下、錆びた機械、奇妙な痕跡……
この施設から脱出しなければなりません。

> 周囲を見回す

薄暗い部屋です。
壁には古いコンピューター端末があり、かすかに光を放っています。
扉は閉まっていて、電子ロックがかかっているようです。

次の行動:
1. コンピューター端末を調べる
2. 扉を調べる
3. 部屋を詳しく探索する

> 1

端末の画面には不可解なメッセージが表示されています……

このゲームの特徴は、ストーリーが AI(Gemini API[6])によって生成されることです。 プレイヤーの選択によって、物語は無限に分岐します。

1.3.1.2. なぜこのアプリを選んだのか

さて、本書の目的は「環境構築からデプロイまでを体験する」ことです。 このアプリはシンプルな構造で、実際のサービス作りを体験してみるにはうってつけです。

シンプルさ:

  • 画像アップロード不要

  • データベースは SQLite[7]

  • 1 台の EC2[8]で完結

学習要素の豊富さ:

  • LLM API[9]連携(Gemini API)

  • チャット UI[10]の実装(htmx[11]

  • セッション管理[12]

  • AWS EC2 へのデプロイ[13]

  • HTTPS[14]

実用性と拡張性:

  • 実際に遊べる

  • 友達に見せられる

  • シナリオを変えて別ゲームに

  • 機能追加しやすい

コード量は少ないですが、Web アプリ開発の本質的な要素はすべて含まれています

1.3.2. 完成イメージ

../_images/game-desktop.png

図 1.3 ゲーム画面(デスクトップ)

Tip

完成したアプリを試す

本書の完成形のデモは以下で体験できます:

https://adventure-dev-journey.com/

1.3.3. 技術スタック

本書で使用する技術は以下の通りです。

バックエンド:

  • Python 3.13+: プログラミング言語

  • Django 5.2: Web フレームワーク[15]

  • SQLite: データベース(学習用として開発・本番共通で使用)

  • Gunicorn: WSGI[16]サーバー(Webアプリを動かすためのソフトウェア)

※1 … 本書では、執筆時点での安定版(Python 3.13、Django 5.2)を使用します。バージョンが異なる場合でも、基本的な流れは同じです。

※2 … 本格的な商用サービスでは、PostgreSQL や MySQL などのサーバー型データベースを使用するのが一般的です。

フロントエンド:

  • htmx: 動的な UI(JavaScript ほぼ不要)

LLM:

  • Google Gemini API: 物語生成

デプロイ:

  • AWS EC2: サーバー

  • Nginx: リバースプロキシ[17] (Webサーバ)

  • Let’s Encrypt: SSL 証明書[18](HTTPS 化)

開発ツール:

  • Git: バージョン管理[19]

  • Cursor: IDE[20]

注釈

なぜこの技術スタック?

  • Django: 初心者に優しく、機能が豊富(バッテリー同梱[21] 必要な機能が最初から揃っている))

  • htmx: JavaScript フレームワークの複雑さを回避

  • SQLite: データベース設定の壁を排除

  • AWS EC2: インフラ[22]の基本を学べる

すべて「初心者が環境構築・デプロイで挫折しない」ことを最優先に選びました。

1.4. 学習の進め方

1.4.1. 本書の構成

本書は、実際にアプリを作りながら学ぶハンズオン形式です。

第1部: 準備と企画(第1-4章)

  • 開発環境のセットアップ

  • LLMとの壁打ち[23]で企画を固める

  • Djangoの基礎

第2部: 開発(第5-7章)

  • Gemini API連携

  • チャットUIの実装

  • ゲームロジックの改善

第3部: デプロイと運用(第8-12章)

  • AWSの準備

  • EC2へのデプロイ

  • HTTPS化

  • 運用

第4部: 発展(第13章)

  • 機能拡張のアイデア

  • 次のステップ

1.4.2. 学習時間の目安

第1章: 30分(読むだけ)
第2章: 2時間(環境構築)
第3章: 2時間(Django基礎)
第4章: 1時間(企画)
第5章: 2時間(LLM連携)
第6章: 3時間(UI実装)
第7章: 2時間(ロジック改善)
第8章: 1時間(AWS準備1)
第9章: 1時間(AWS準備2)
第10章: 4時間(EC2デプロイ)←最難関
第11章: 2時間(HTTPS化)
第12章: 2時間(運用)
第13章: 1時間(今後の発展)

合計: 約23時間

推奨ペース:

  • 集中型: 週末2日 × 3週間

  • 平日型: 平日2時間 × 12日

  • マイペース型: 1日1章、2週間

重要

挫折しないコツ

  1. 必ず手を動かす: 読むだけでなく、実際にコードを書く

  2. エラーを恐れない: エラーは学習のチャンス

  3. LLMに頼る: 分からないことは即座に質問

  4. 完璧を目指さない: まず動かす、改善は後で

  5. SNSで発信: 学習記録をシェアするとモチベーション維持

1.4.3. サンプルコードの使い方

本書のサンプルコードはGitHubで公開しています。

# リポジトリをクローン
git clone https://github.com/h3adeu/adventure-game.git
cd adventure-game

サンプルコードの使い分け:

  1. 自分で実装 → サンプルで答え合わせ(推奨)

    • 学習効果が最も高い

    • エラーに強くなる

  2. サンプルを写経

    • 手を動かすことで理解が深まる

    • コメントを読みながら進める

  3. サンプルをベースに改変

    • 動くものから始められる

    • 独自機能を追加して学ぶ

Tip

おすすめの進め方

第1-7章: 自分で実装 + サンプルで確認

第8-12章: サンプルを参考にしながら実装

第13章: 自分なりにカスタマイズ

1.4.4. LLMの活用方法

本書では、各章に「LLMへの質問例」を掲載しています。 質問は、後ほどインストールする cursor に対して行っても、 ChatGPT, Claude, Gemini などの LLM (チャット)に対して行っても構いません。 本書では、あなたと LLM との会話(チャット)の形式で紹介しています。

良い質問の構造:

【背景・目的】
〇〇という機能を実装しています。

【現状】
△△までは動いています。

【問題】
しかし、以下のエラーが出ました:
[エラーメッセージをそのまま貼り付け]

【試したこと】
- ××を試しました → 結果は□□
- ◇◇も試しました → 変化なし

【環境】
- OS: macOS 14.2
- Python: 3.13.x
- Django: 5.2.x

【質問】
このエラーの原因と解決方法を教えてください。

この構造で質問すると、LLMは的確な回答を返してくれます。

本書での表記:

あなた: [質問]

LLM: [回答]

あなた: [フォローアップ質問]

LLM: [詳細な説明]

この対話形式で、実際のLLM活用を体験できます。

1.5. 必要な前提知識(ほぼゼロでOK)

1.5.1. 安心してください、初心者でも大丈夫です

本書はプログラミング初心者を対象にしています。 以下のような前提知識は必要ありません:

  • × Pythonの詳しい文法

  • × Webフレームワークの経験

  • × データベースの知識

  • × AWSの経験

  • × コマンドライン操作の経験

1.5.2. あると望ましい知識(でもなくてもOK)

以下の知識があると理解がスムーズですが、なくても問題ありません。 本書内で必要に応じて説明します。

レベル1: これだけあれば十分

  • 何かしらのプログラミング経験(言語は問わない)

  • Webサイトの基本概念(URL、ブラウザ、サーバー)

レベル2: あるとスムーズ

  • HTMLの基礎(タグの概念)

  • CSSの基礎(スタイルの概念)

  • 変数、関数、if文などの基本的なプログラミング概念

レベル3: あれば理解が早い

  • Pythonの基礎文法

  • コマンドライン操作の経験

1.5.3. 「分からない」はチャンス

本書の最大の特徴は、LLMを活用することです。 分からないことがあったら、その場でLLMに質問してください。

例: HTMLを知らない場合

あなた: HTMLとは何ですか?初心者向けに説明してください。

LLM: HTMLは、Webページの構造を作るための言語です...
[詳しい説明]

あなた: <div>タグと<span>タグの違いは何ですか?

LLM: <div>はブロック要素で...

このように、学習しながら進められるのがLLM時代の開発です。

1.5.4. 本書で身につくスキル

本書を完走すると、以下のスキルが身につきます:

技術スキル:

  • Pythonの基礎

  • Djangoの基本的な使い方

  • LLM APIの活用

  • HTMLとCSSの基礎

  • コマンドライン操作

  • Gitの基本

  • AWSの基礎

  • デプロイの実践

非技術スキル:

  • LLMへの適切な質問力

  • エラーメッセージの読み方

  • 問題を段階的に解決する力

  • ドキュメントの読み方

  • トラブルシューティング能力

開発マインドセット:

  • 完璧を目指さず、まず動かす

  • エラーを恐れない

  • 対話しながら理解を深める

  • 継続的に改善する

1.5.5. 学習リソース(任意)

本書だけでも完結していますが、より深く学びたい場合は以下のリソースも参考にしてください。

Python基礎:

HTML/CSS基礎:

コマンドライン:

Git:

注釈

外部リンクについて

※外部サイトのURLは2025年12月時点のものです。 サイトの内容は各運営者に帰属します。

注釈

LLMに学習計画を作ってもらう

「Pythonを3日で基礎から学ぶ計画を作ってください」とLLMに頼めば、あなた専用の学習計画を作ってくれます。これもLLM時代の学習法です。

1.6. さあ、始めましょう

1.6.1. 開発の旅へ

ここまで読んで、少しでも「面白そう」「やってみたい」と思ったなら、準備は整っています。

プログラミングは、自転車に乗ることと同じです。最初は転ぶかもしれません。 エラーが出て、何が間違っているのか分からないかもしれません。でも、転びながら学ぶのが一番の近道です。

そして今は、LLMという強力な味方がいます。24時間いつでも質問できる、優秀なメンターです。

1.6.2. 本書の約束

本書は、以下のことを約束します:

  1. 挫折ポイントを明示: 「ここでつまずく人が多い」を先に教えます

  2. 実際のエラーを掲載: リアルなエラーメッセージと解決法

  3. LLMとの対話例: 実際にどう質問すればいいかを示します

  4. 段階的な説明: 一度にすべてを理解しなくてOK

  5. 動くものを作る: 理論より実践、まず動かす

1.6.3. 次の章へ

準備はできましたか?

次の第2章では、開発環境を整えます。 Python、Git、エディタをインストールし、初めてのLLMとの対話を体験します。

この環境構築こそが、多くの人がつまずくポイントです。でも安心してください。 本書は環境構築とデプロイに特化しています。 一つ一つ、丁寧に進めましょう。

Tip

コーヒーを用意して

プログラミングは、焦らずじっくり取り組むのがコツです。 コーヒーやお茶を用意して、リラックスした状態で始めましょう。 エラーが出ても、それは「学習のチャンス」です。 深呼吸して、LLMに質問してみてください。