OpenAI Codex CLI 入門：ターミナルベースのコーディングアシスタント

ソフトウェア開発の世界は常に進化しており、AI搭載ツールは現代の開発者のワークフローに不可欠な要素となりつつあります。その中で登場したのが **OpenAI Codex CLI** です。これは、多くの開発者が最も時間を費やす場所、つまりターミナルで動作するように設計された、軽量かつ強力なコーディングエージェントです。

あなたのコマンドラインに、コードベースを理解し、コードを書き、コンポーネントをリファクタリングし、テストを生成し、複雑なスニペットを説明し、ファイルを管理し、さらにはコマンドを実行できるアシスタントがいることを想像してみてください。しかも、そのすべてがバージョン管理とセキュリティ境界を尊重しながら行われます。これがCodex CLIの目指すところです。ChatGPTのような高度な言語モデルの推論能力と、ローカル開発環境と対話する実践的な能力を融合させることを目的としています。

このチュートリアルでは、OpenAI Codex CLIのセットアップ、設定、使用方法をガイドし、ターミナルから直接コードと対話する方法を変革します。

**(画像: CodexデモGIF `codex "explain this codebase to me"` を使用)**
*(プロンプトで提供されたGIFがここに埋め込まれていると想像してください。Codex CLIがコードを分析し、ターミナルで説明を提供している様子を示しています)*

---

### 1. 実験的テクノロジーに関する免責事項

始める前に、**Codex CLIは実験的なプロジェクトである**ことを理解することが重要です。オープンソースコミュニティ内で活発に開発が進められています。これは以下のことを意味します：

*   **安定性：** まだ完全に安定していない可能性があります。バグや予期しない動作に遭遇するかもしれません。
*   **機能：** 一部の機能は未完成であったり、変更される可能性があります。
*   **破壊的変更：** 将来のアップデートで、以前のバージョンやワークフローとの互換性を損なう変更が導入される可能性があります。

開発チームは、以下を通じてコミュニティの参加を奨励しています：

*   バグレポート（不具合報告）
*   機能リクエスト（機能要望）
*   プルリクエスト
*   一般的なフィードバック（「Good vibes」）

この段階でCodex CLIを使用することにより、あなたはその進化に参加することになります。GitHubのIssueやプルリクエストを通じて、その未来を形作る手助けをしてください！

---

### 2. はじめに：なぜCodex CLIなのか？

![](https://github.com/openai/codex/raw/main/.github/demo.gif)

グラフィカルなIDE拡張機能やWebベースのAIチャットインターフェースも強力ですが、Codex CLIは特に、コマンドラインの速度、効率、制御を好む開発者向けに作られています。

**主な利点：**

*   **ターミナルネイティブ：** ターミナルで作業する開発者向けに設計されています。
*   **ChatGPTレベルの推論：** 強力な言語モデルを活用し、コンテキストを理解し、コードや説明を生成します。
*   **コード実行とファイル操作：** チャットにとどまらず、実際にコードを実行し、依存関係をインストールし、リポジトリ内のファイルを変更できます。
*   **バージョン管理対応：** Gitワークフローと自然に統合し、AIが生成した変更を確認してコミットできます。
*   **ほぼ設定不要：** Node.jsとOpenAI APIキーがあればすぐに始められます。
*   **設定可能な自律性：** 変更の提案からコマンドの自動実行まで、エージェントにどれだけの自由を与えるかを決定できます。
*   **セキュリティ重視：** 特に自律性の高いモードにおいて、意図しない副作用を防ぐためにサンドボックス化を実装しています。
*   **マルチモーダルな可能性：** 将来的には、スクリーンショットや図を理解する機能も計画されています。
*   **オープンソース：** どのように動作するかが透明であり、誰でも開発に貢献できます。

要するに、Codex CLIは、あなたの特定のリポジトリを深く理解し、対話する**チャット駆動開発パートナー**となることを目指しています。

https://github.com/openai/codex

---

### 3. 前提条件とシステム要件

Codex CLIをインストールする前に、システムが以下の要件を満たしていることを確認してください：

| 要件             | 詳細                                                            |
| :--------------- | :-------------------------------------------------------------- |
| オペレーティングシステム | macOS 12+, Ubuntu 20.04+/Debian 10+, または Windows 11 via WSL2 |
| Node.js          | バージョン22以降（LTS推奨）                                     |
| npm (または yarn)  | Node.jsにバンドル (またはyarnを別途インストール)                  |
| OpenAIアカウント   | APIキーを生成するためにOpenAIのアカウントが必要です。                 |
| OpenAI APIキー     | OpenAI APIへのリクエストを認証するための秘密鍵。                   |
| Git (オプション)   | バージョン2.23+推奨（統合とセーフティネットのため）。               |
| RAM              | 最小4 GB（8 GB推奨、よりスムーズなパフォーマンスのため）             |

---

### 4. インストール

Codex CLIのインストールは、npm (Node Package Manager) または yarn を使って簡単に行えます。

**npmを使用する場合 (推奨):**

ターミナルを開き、以下のコマンドを実行します：

```bash
npm install -g @openai/codex
```

**yarnを使用する場合:**

yarnを好む場合は、このコマンドを使用します：

```bash
yarn global add @openai/codex
```

**権限に関する重要事項：** グローバルなnpmインストールに`sudo`を使用しないでください (`sudo npm install -g ...`)。これは後で権限の問題を引き起こす可能性があります。権限エラー（`EACCES`など）が発生した場合は、`sudo`に頼るのではなく、npmのパーミッションを修正する方が良いです。お使いのオペレーティングシステム固有のガイドについては、「npm permissions fix」などで検索してください。

インストールが完了すると、ターミナルで `codex` コマンドを実行できるようになります。

---

### 5. 設定：APIキーとカスタム指示

**a) OpenAI APIキーの設定 (必須)**

Codex CLIは、OpenAIモデルと通信するためにOpenAI APIキーが必要です。このキーを `OPENAI_API_KEY` という名前の環境変数として設定する必要があります。

**現在のターミナルセッションのみ:**

```bash
export OPENAI_API_KEY="your-api-key-here"
```

`"your-api-key-here"` を、OpenAIプラットフォームから取得した実際の秘密鍵に置き換えてください。

**APIキーを永続的にする:**

上記の `export` コマンドは、現在のターミナルセッションに対してのみ変数を設定します。毎回設定する手間を省くには、シェルの設定ファイルに `export` 行を追加します：

*   **Zsh (macOSで一般的):** `~/.zshrc` に行を追加
*   **Bash (Linux/WSLで一般的):** `~/.bashrc` または `~/.bash_profile` に行を追加

行を追加した後、ターミナルを再起動するか、設定ファイルを読み込みます（例：`source ~/.zshrc`）。

**b) オプションの設定ファイル**

Codex CLIは、ホームフォルダ内の隠しディレクトリ `~/.codex/` にある設定ファイルを探します。

*   **`~/.codex/config.yaml`:** デフォルトの動作をカスタマイズします。
    ```yaml
    # 例: ~/.codex/config.yaml
    model: o4-mini # 使用するデフォルトのOpenAIモデル (例: gpt-4, gpt-3.5-turbo, o4-mini)
    fullAutoErrorMode: ask-user # フルオートモードでコマンドが失敗した場合の動作: 'ask-user' または 'ignore-and-continue'
    ```

*   **`~/.codex/instructions.md`:** AIモデルに対するグローバルで個人的な指示やガイドラインを提供します。このMarkdownファイルにより、すべてのプロジェクトでCodexがどのように応答するかを形成できます。
    ```markdown
    # 例: ~/.codex/instructions.md
    - コードの変更は常に明確に説明してください。
    - 適切な場合は、関数型プログラミングのアプローチを優先してください。
    - 新しいJavaScript/TypeScriptファイルにはTypeScriptを使用してください。
    - 明示的に指示されない限り、強制プッシュ (`git push -f`) は避けてください。
    ```

これらのグローバルな指示は、プロジェクト固有のファイルによって補強または上書きすることができます（高度な使用法を参照）。

---

### 6. クイックスタート：最初の対話

インストールとAPIキーの設定が完了したら、Codex CLIの使用を開始できます。

**1. 対話モード:**

ターミナルでプロジェクトディレクトリに移動し、単に次のように実行します：

```bash
codex
```

これにより、対話セッション（REPL - Read-Eval-Print Loop）が開始されます。Codexはおそらく、最初のプロンプトや目標を尋ねてきます。その後、現在のディレクトリのコードに関連するタスクを実行するようにチャットで指示できます。

**2. 初期プロンプトを指定して実行:**

最初の指示を引数として直接渡すことができます：

```bash
cd /path/to/your/project
codex "main.pyのmain関数の目的を説明して"
```

または

```bash
cd /path/to/your/project
codex "UserCardコンポーネントをstyled-componentsを使用するようにリファクタリングして"
```

Codexはプロンプトを読み取り、関連ファイル（必要な場合）を分析し、計画やコードの変更を提案し、続行する前にあなたの承認を待ちます。

**3. 自動承認で実行 (注意して使用):**

特定のプロンプトに対してCodexが提案するアクション（ファイルの変更やコマンドの実行など）に自信がある場合は、`--yes` (または同様の) フラグを使用して、各ステップでの確認プロンプトをスキップできます。

```bash
# 注意: このモードは予期しない変更を引き起こす可能性があるため、注意して使用してください。
codex --yes "src/components ディレクトリに Button.tsx コンポーネントを追加して、基本的なスタイルを適用して"
```

**警告:** 自動承認モードは、特に新しいプロジェクトや不慣れなコードベースで作業する場合、意図しない変更やエラーを引き起こす可能性があります。Codexが何を実行しようとしているかを理解している場合にのみ使用してください。通常は、対話モードで提案を確認する方が安全です。

---

### 7. 主なコマンドとユースケース

Codex CLIの真価は、多様な開発タスクを自然言語で指示できる点にあります。以下に一般的な使用例をいくつか紹介します。

**a) コードの説明と理解**

既存のコードベースを理解しようとしている場合、Codexは非常に役立ちます。

*   **ファイル全体の説明:**
    ```bash
    codex "このファイル `server/api/auth.js` の目的と主要な機能を説明して"
    ```
*   **特定の関数やクラスの説明:**
    ```bash
    codex "utils/helpers.py ファイル内の `calculate_metrics` 関数のロジックをステップバイステップで説明して"
    ```
*   **コードベース全体の概要:**
    ```bash
    # プロジェクトのルートディレクトリで実行
    codex "このリポジトリの全体的なアーキテクチャと主要なコンポーネントについて教えて"
    ```

Codexはコードを分析し、平易な言葉で説明を提供します。これにより、新しいプロジェクトへのオンボーディングや、複雑なコード部分の理解が加速します。

**b) コードの生成と変更**

ゼロからコードを書いたり、既存のコードを修正したりする作業もCodexに依頼できます。

*   **新しい関数の作成:**
    ```bash
    codex "Pythonで、数値のリストを受け取り、その平均と標準偏差を返す関数を書いて"
    ```
*   **既存コードのリファクタリング:**
    ```bash
    codex "components/LegacyForm.jsx を、React Hooksを使って関数コンポーネントにリファクタリングして"
    ```
*   **機能の追加:**
    ```bash
    codex "models/User.java に、ユーザーの最終ログイン日時を追跡するフィールドと関連するゲッター/セッターを追加して"
    ```
*   **バグ修正:**
    ```bash
    codex "このJavaScriptコードスニペットを実行するとエラーが発生する。問題を特定して修正案を提示して：\n\`\`\`javascript\n// ... (バグのあるコード) ...\n\`\`\`"
    ```

Codexは変更案を提示し、多くの場合、差分（diff）形式で表示されるため、適用前に確認できます。

**c) テストの生成**

単体テストや統合テストの作成は、品質保証に不可欠ですが、時間がかかる作業でもあります。

```bash
codex "services/payment_processor.rb の `process_payment` メソッドに対するRSpecテストを生成して。成功ケースといくつかの失敗ケース（例：無効なカード番号、残高不足）をカバーするようにして"
```

Codexは、指定されたファイルや関数に基づいてテストケースの雛形を生成し、テスト作成プロセスを効率化します。

**d) ファイルの管理**

Codexは、プロジェクト内のファイルを検索、作成、変更することもできます。

*   **ファイルの検索:**
    ```bash
    codex "プロジェクト内で `.env.example` という名前のファイルを探して"
    ```
*   **新しいファイルの作成:**
    ```bash
    codex "ルートディレクトリに `CONTRIBUTING.md` ファイルを作成し、基本的な貢献ガイドラインのテンプレートを記述して"
    ```
*   **ファイルへの追記:**
    ```bash
    codex "`README.md` の末尾に、セットアップ手順のセクションを追加して"
    ```

**e) コマンドの実行**

依存関係のインストール、ビルドプロセスの実行、Gitコマンドの操作など、ターミナルコマンドの実行もCodexに指示できます。

*   **依存関係のインストール:**
    ```bash
    # package.json があるディレクトリで実行
    codex "このプロジェクトに必要なnpm依存関係をインストールして"
    # (Codexは 'npm install' を実行することを提案します)
    ```
*   **Gitコマンド:**
    ```bash
    codex "現在の変更をステージングして、「feat: 新しい認証エンドポイントを追加」というメッセージでコミットして"
    # (Codexは 'git add .' と 'git commit -m "..."' を提案します)
    ```
*   **カスタムスクリプトの実行:**
    ```bash
    codex "package.json に定義されている `build` スクリプトを実行して"
    # (Codexは 'npm run build' または 'yarn build' を提案します)
    ```

Codexは実行するコマンドを提示し、承認を求めます（自動承認モードでない限り）。これにより、AIにターミナル操作を委任しつつ、コントロールを維持できます。

---

### 8. 高度な使用法

基本的な使い方に慣れたら、Codex CLIをさらにカスタマイズして活用できます。

**a) プロジェクト固有の指示**

グローバルな `~/.codex/instructions.md` に加えて、プロジェクトのルートディレクトリに `.codex/instructions.md` ファイルを作成することで、そのプロジェクト固有の指示を与えることができます。

例えば、特定のコーディング規約や、使用すべきライブラリ、避けるべきパターンなどを指定できます。

```markdown
# 例: /path/to/your/project/.codex/instructions.md
- このプロジェクトでは、状態管理にZustandを使用してください。Reduxは使用しないでください。
- APIクライアントのコードは `src/api` ディレクトリに配置してください。
- すべての公開関数にはJSDocコメントを追加してください。
- テストはJestとReact Testing Libraryを使用してください。
```

プロジェクト固有の指示は、グローバルな指示と組み合わされますが、競合する場合はプロジェクト固有の設定が優先される傾向があります。

**b) モデルの選択**

`~/.codex/config.yaml` または環境変数 `CODEX_MODEL` で、使用するOpenAIモデルを指定できます。モデルによって、速度、コスト、推論能力が異なります。

```yaml
# ~/.codex/config.yaml
model: gpt-4o # より高性能なモデル
# model: gpt-3.5-turbo # より高速で安価なモデル
# model: o4-mini # さらに高速なモデル
```

プロジェクトの要件や予算に応じて適切なモデルを選択してください。

**c) 自律性とエラー処理**

`config.yaml` の `fullAutoErrorMode` 設定は、自動承認モード (`--yes`) でコマンドが失敗した場合のCodexの動作を制御します。

*   `ask-user` (デフォルト): エラー発生時にユーザーに指示を求めます。
*   `ignore-and-continue`: エラーを無視して次のステップに進もうとします（注意が必要です）。

自律性を高める場合は、潜在的なリスクを理解し、Gitなどのバージョン管理システムで変更を追跡できるようにしておくことが重要です。

**d) セキュリティとサンドボックス化**

Codex CLIは、特にコマンド実行機能において、セキュリティを考慮して設計されています。開発チームは、意図しない副作用を防ぐためのサンドボックス化や安全策を実装しようとしています。しかし、実験的なツールであるため、特に高い自律性モードや信頼できないコードベースで実行する際には、常に注意が必要です。実行を承認する前に、Codexが提案するコマンドやファイル変更をよく確認してください。

---

### 9. トラブルシューティング

Codex CLIの使用中に問題が発生した場合の一般的な解決策をいくつか紹介します。

*   **`command not found: codex`:**
    *   インストールが正しく完了しているか確認してください (`npm list -g @openai/codex`)。
    *   npmのグローバルインストール用ディレクトリがシステムの`PATH`に含まれているか確認してください。
*   **APIキーエラー (`401 Unauthorized` など):**
    *   環境変数 `OPENAI_API_KEY` が正しく設定されているか確認してください (`echo $OPENAI_API_KEY`)。
    *   APIキーが有効であり、OpenAIアカウントに十分なクレジットがあるか確認してください。
    *   シェルの設定ファイル (`.zshrc`, `.bashrc`) を変更した場合は、ターミナルを再起動するか `source` コマンドで再読み込みしたか確認してください。
*   **Node.js/npmのバージョン問題:**
    *   前提条件で指定されたNode.jsのバージョンを満たしているか確認してください (`node -v`)。古い場合はアップデートしてください。
*   **権限エラー (`EACCES`)**:
    *   グローバルなnpmパッケージのインストール/実行時に権限エラーが発生する場合は、セクション4で述べたように、`sudo` を使わずにnpmの権限設定を修正してください。
*   **予期しない動作やバグ:**
    *   Codex CLIは実験的です。問題が解決しない場合やバグを発見した場合は、GitHubリポジトリのIssueを確認し、既存の報告がなければ新しいIssueを作成して報告することを検討してください。

---

### 10. 貢献とヘルプ

Codex CLIはオープンソースプロジェクトであり、コミュニティの貢献によって進化します。

*   **バグ報告:** 問題を発見した場合は、GitHubリポジトリでIssueを作成してください。再現手順や環境情報を含めると役立ちます。
*   **機能リクエスト:** 新しい機能や改善のアイデアがあれば、Issueやディスカッションで提案してください。
*   **プルリクエスト:** コードの修正や機能追加に貢献したい場合は、プルリクエストを送ることができます。貢献ガイドライン（通常 `CONTRIBUTING.md` ファイルにあります）を確認してください。
*   **ディスカッション:** GitHubリポジトリのディスカッションセクションで、他のユーザーや開発者と交流できます。

プロジェクトのGitHubリポジトリ（`aici/codex` など、現在アクティブなフォークや後継プロジェクト）が、最新情報、Issueトラッカー、貢献方法を見つけるための主要な場所となります。

---

### 11. まとめと今後の展望

OpenAI Codex CLI（およびその後継ツール）は、ターミナル中心の開発ワークフローにAIの力を統合するための有望なアプローチです。コードの理解、生成、リファクタリング、テスト作成、さらにはコマンド実行まで、開発サイクルの多くの側面を加速させる可能性を秘めています。

実験的な性質上、まだ荒削りな部分や変化はありますが、そのオープンソースの性質と活発なコミュニティは、将来の発展に大きな期待を抱かせます。設定可能な自律性、バージョン管理との統合、そしてローカル環境で直接動作する能力は、他のAIコーディングツールとは一線を画す特徴です。

将来的には、マルチモーダル機能（画像や図の理解）の統合や、さらに洗練されたコード理解・生成能力、より堅牢なサンドボックス環境などが期待されるかもしれません。

このチュートリアルを通じて、Codex CLIの基本的なセットアップから応用的な使い方までを理解していただけたなら幸いです。ぜひあなたの開発ワークフローに取り入れ、その可能性を探ってみてください。そして、フィードバックや貢献を通じて、このエキサイティングなツールの未来を一緒に形作っていきましょう。

**Google Geminiについて**

この記事では、元々のリクエストにあった「OpenAI Codex CLI」に焦点を当てて解説しました。このツールは主にOpenAIのモデル（GPTシリーズなど）を利用します。

一方で、「Google Gemini」も非常に強力なAIモデルファミリーであり、同様のコーディング支援タスクを実行できます。Geminiをターミナルベースのコーディングアシスタントとして利用するには、以下のような方法が考えられます：

1.  **Google Cloud Shell Editor:** Google Cloud環境内で、AI Duetなどの統合されたコーディング支援機能を通じてGeminiを利用できます。
2.  **Gemini API:** Google AI Studioや各種クライアントライブラリを通じてGemini APIにアクセスし、独自のCLIツールやスクリプトを構築することができます。これにより、特定のワークフローに合わせてGeminiの能力を活用するカスタムソリューションを作成できます。
3.  **サードパーティ製ツール:** Gemini APIを利用して構築された、コミュニティ製のCLIツールやインテグレーションが登場する可能性もあります。

Geminiモデルは、その大規模なコンテキストウィンドウや高度な推論能力により、複雑なコードベースの理解や生成においても優れた性能を発揮する可能性があります。もしGeminiをコーディングに活用することに興味があれば、Google AIのドキュメントや関連ツールを探求してみることをお勧めします。

この記事で解説したCodex CLIのようなツールの「コンセプト」（ターミナルでAIと対話し、コードを操作する）は、特定のモデルに限定されるものではなく、将来的にはGeminiを含む様々なAIモデルをバックエンドとして利用できるツールが登場、あるいは既存ツールが対応していくと考えられます。