# LLM時代の開発を体験する ```{include} overview.md ``` ```{newpage} ``` ```{include} what-changed.md ``` ```{newpage} ``` ```{include} what-we-build.md ``` ```{newpage} ``` ```{include} how-to-learn.md ``` ```{newpage} ``` ```{include} prerequisites.md ``` ```{newpage} ``` ```{include} getting-started.md ``` ```{newpage} ``` [^chatgpt]: **ChatGPT**: OpenAIが開発した対話型AI。2022年11月に公開され、プログラミング支援を含む様々なタスクで高い能力を発揮します。 [^stackoverflow]: **Stack Overflow**: プログラマー向けの質問回答サイト。エラーや技術的な疑問について、世界中の開発者が質問と回答を投稿しています。 [^llm]: **LLM (Large Language Model)**: 大規模言語モデル。大量のテキストデータを学習したAIで、自然な文章の生成や質問への回答ができます。ChatGPTやGeminiなどが代表例です。 [^gemini-api]: **Gemini API**: Googleが提供するLLMのAPI(アプリケーションプログラミングインターフェース)。本書では、このAPIを使ってゲームの物語を生成します。 [^sqlite]: **SQLite**: ファイルベースの軽量なデータベース。設定が簡単で、開発から本番まで同じデータベースを使えます。大規模なデータベースサーバーの設定が不要です。 [^ec2]: **EC2 (Amazon Elastic Compute Cloud)**: AWSが提供するクラウド上の仮想サーバー。インターネット上に自分のPCのような環境を作れます。本書では、ここにアプリをデプロイします。 [^api]: **API (Application Programming Interface)**: アプリケーション間でデータをやり取りするための仕組み。本書では、Gemini APIを使ってAIの機能を利用します。 [^ui]: **UI (User Interface)**: ユーザーインターフェース。ユーザーが操作する画面のことを指します。本書では、チャット形式のUIを作ります。 [^htmx]: **htmx**: HTMLに属性を追加するだけで、JavaScriptをほとんど書かずに動的なUIを実現できるライブラリ。初心者に優しい技術です。 [^session]: **セッション管理**: ユーザーがWebサイトにアクセスしている間の状態を保持する仕組み。ログイン状態やショッピングカートの内容などを記憶します。 [^deploy]: **デプロイ**: 開発したアプリを実際に動かせる環境(サーバー)に配置すること。本書では、AWS EC2にデプロイします。 [^https]: **HTTPS**: 暗号化された安全な通信プロトコル。個人情報やパスワードなどを安全に送受信できます。URLが「https://」で始まります。 [^framework]: **フレームワーク**: アプリ開発を効率化するための土台となるソフトウェア。Djangoは、Webアプリ開発に必要な機能が最初から揃っています。 [^wsgi]: **WSGI (Web Server Gateway Interface)**: PythonのWebアプリとWebサーバーを接続するための仕様。GunicornはWSGIサーバーの一種です。 [^reverse-proxy]: **リバースプロキシ**: クライアントとサーバーの間に立ち、リクエストを適切なサーバーに転送する仕組み。Nginxは、この役割を担います。 [^ssl]: **SSL証明書**: 通信を暗号化するための証明書。Let's Encryptは、無料でSSL証明書を発行してくれるサービスです。 [^version-control]: **バージョン管理**: コードの変更履歴を記録・管理する仕組み。Gitは最も広く使われているバージョン管理ツールです。 [^ide]: **IDE (Integrated Development Environment)**: 統合開発環境。コードの編集、実行、デバッグなどが一つのツールでできるソフトウェアです。 [^batteries-included]: **バッテリー同梱**: Djangoの特徴を表す言葉。必要な機能が最初から含まれていて、追加の設定が少なくて済むことを意味します。 [^infrastructure]: **インフラ**: インフラストラクチャの略。アプリを動かすための基盤となる環境(サーバー、ネットワークなど)を指します。 [^prompt]: **プロンプト**: LLMへの質問や指示のこと。適切なプロンプトを書くことで、より良い回答が得られます。 [^architecture]: **アーキテクチャ**: システムの設計構造。どのように部品を組み合わせてアプリを作るかの設計図のようなものです。 [^brainstorming]: **壁打ち**: アイデアを出し合って議論すること。LLMと対話しながら、ゲームの企画を固めていきます。