Codex Cloudを使ってみよう

に公開

みなさん、OpenAIが提供している「Codex Cloud」をご存知でしょうか?

5月頃プレビュー版が公開され、10月頃にはPlusユーザーにも解禁され盛り上がるかと思いきや、
意外と反応が少なくせっかく良いサービスなのに、勿体ないなあと感じているのは私だけでしょうか?

https://openai.com/ja-JP/index/introducing-codex/

https://developers.openai.com/codex/changelog/?utm_source=chatgpt.com#month-2025-10

そんなイマイチ話題にならないCodex Cloudなんですが、個人的には現在利用できるWebベースのAIエージェントの中で一番使い勝手が良く、将来的にはこの形の延長線上で進化していくんじゃないかなと感じています。

そこで今回は、Codex Cloudの基本的な使い方から、実際に使ってみて感じたメリット・デメリット、具体的な使用感を踏まえて紹介したいと思います!

https://developers.openai.com/codex/cloud/

基本的な使い方

使い方はとってもカンタン!

まず、対象のリポジトリを連携して実行環境を作成します。

環境作成

次に、プロンプトを入力し、対象のリポジトリ、ブランチ、そして生成する修正案のバージョン数を選択して実行します。

タスクの実行

10〜20分ほど待つと、修正内容の提案とコードが表示されます。内容に問題がなければ、ボタン一つでプルリクエストを作成できます。

タスク結果

こちらが実際に生成されたプルリクエストです。
https://github.com/okdyy75/dev-rails/pull/1

環境構築

次に具体的なプロジェクトでCodex Cloudを実行するための環境構築の方法について紹介します。

Codex Cloudのタスクは、OpenAIが提供するcodex-universalというDockerイメージを使用したコンテナ環境上で実行されます。ベースイメージにはubuntu:24.04が使用されており、linux/amd64アーキテクチャで動作します(2025年11月時点)。

詳細は公式のGitHubリポジトリを参照してください。

https://github.com/openai/codex-universal

環境構築の注意点

環境構築における重要な注意点として、Codex Cloudの実行環境上では基本的にDockerを利用できません。

そのため、PostgreSQLやRedisといったミドルウェアが必要な場合は、codex-universalのベースイメージ(Ubuntu)に直接インストールする必要があります。

補足:Dockerのインストールを試すも…

参考までに、Dockerの公式サイトを基にUbuntuへのインストールを試みます

https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository

# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

# Dockerインストール
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Dockerを起動
sudo systemctl start dockersudo systemctl start docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

Dockerの起動に失敗します。

docker run --rm hello-world

docker: failed to connect to the docker API at unix:///var/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /var/run/docker.sock: connect: no such file or directory
Run 'docker run --help' for more information

dockerコマンドを直接実行しても、デーモンに接続できず、やはり動作しません。

Rails + PostgreSQL 環境の構築例

簡単なTODOアプリを例に、Rails + PostgreSQL環境を構築する手順を紹介します

  • PostgreSQL: 16
  • Ruby: 3.4
  • Rails: 7.2

サンプルリポジトリはこちらです。

https://github.com/okdyy75/dev-rails/tree/dev-codex

実際の設定は以下の通りです。

Ruby + PostgreSQL 環境

  • 環境変数やシークレット: 適宜設定します。
  • スクリプト: セットアップとメンテナンスのスクリプトを設定できますが、セットアップスクリプトだけでも問題なく動作します。
  • インターネットアクセス: 「共通の依存関係」プリセットを選択すると、github.comnpmjs.comなど、一般的なドメインへのアクセスが許可されます。もちろん、許可するドメインを個別に設定することも可能です。

プリインストールされたパッケージを選択すると、下記のように各種ランタイムのバージョンを選択できます。

プリインストールされたパッケージ

セットアップスクリプトの作成

セットアップスクリプトを作成する際は、まずローカル環境でcodex-universalコンテナを起動し、対話的にコマンドを実行しながら必要なソフトウェアのインストールや設定を確認するのがおすすめです。

# ローカルでコンテナを起動するコマンド例
docker run --rm -it \
    -e CODEX_ENV_NODE_VERSION=20 \
    -e CODEX_ENV_RUBY_VERSION=3.4.4 \
    -e RAILS_ENV=development \
    -e RAILS_DB_HOST=localhost \
    -e RAILS_DB_USER=postgres \
    -e RAILS_DB_PASSWORD=postgres \
    -e RAILS_MASTER_KEY=xxxxx \
    -v $(pwd):/workspace/$(basename $(pwd)) -w /workspace/$(basename $(pwd)) \
    ghcr.io/openai/codex-universal:latest

最終的に、今回のRails + PostgreSQL環境用のセットアップスクリプトは以下のようになりました。

# 直接PostgreSQLインストール
###################
# ref: https://www.postgresql.org/download/linux/ubuntu/
sudo apt install curl ca-certificates
sudo install -d /usr/share/postgresql-common/pgdg
sudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
. /etc/os-release
sudo sh -c "echo 'deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $VERSION_CODENAME-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
sudo apt update
###################

sudo apt -y install postgresql-16

# DB起動
service postgresql start
service --status-all
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'postgres';"

# バックエンド設定
cd /workspace/dev-rails/apps/api
bundle install
bundle exec rails db:create
bundle exec rails db:migrate
bundle exec rails db:seed

# フロントエンド設定
mise install node@20.10.0
mise global node@20.10.0
cd /workspace/dev-rails/apps/frontend
cp .env.example .env
npm install

# AGENTS.md作成
cat <<'EOF' > AGENTS.md

APIサーバー
http://localhost:3000

フロントエンド
http://localhost:3001

## コマンド
- APIの起動: `cd /workspace/dev-rails/apps/api && bundle exec rails server -p 3000`
- フロント画面の起動: `cd /workspace/dev-rails/apps/frontend && npm run dev -p 3001`

## 開発時の注意点
- 作業完了後は必ず下記コマンドを実行してください
  - cd /workspace/dev-rails/apps/api && bundle exec rubocop -A
  - cd /workspace/dev-rails/apps/api && bundle exec rails test
  - cd /workspace/dev-rails/apps/frontend && npm run lint
- この実行環境では Docker を使用できません
- この AGENTS.md はコミットしないでください

EOF

スクリプトのポイント

  • パッケージインストール: ベースイメージがUbuntuなので、PostgreSQLの公式ドキュメントを参考にUbuntuでのインストール方法を実行します。
  • AGENTS.md: 実行環境ではDockerコマンドが使えないため、AGENTS.mdに起動コマンドなどを明記しておくと、Codexエージェントがそれを認識してタスクを実行してくれます。

Codex Cloudの実行環境スペック

公式ドキュメントには実行環境のマシンスペックが明記されていなかったため、コマンドを実行して調べてみました。

# OS情報
cat /etc/os-release

# CPU情報
lscpu

# メモリ情報
free -h

# ディスク情報
df -h

結果は以下の通りです。

項目 内容
OS Ubuntu 24.04.3 LTS
カーネル Linux(x86_64)
CPU Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
コア数 3コア
メモリ 約 0.5GB / 17GB(使用中)
ディスク 約 23GB / 63GB(使用中)

リソースにはある程度の上限が設定されていると思われますが、この豊富なリソース環境を定額で利用できるのは、Codex Cloudのメリットの一つかもしれないです。

各コマンドの実行結果詳細

:::

→ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.3 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

→ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 46 bits physical, 57 bits virtual
Byte Order: Little Endian
CPU(s): 3
On-line CPU(s) list: 0-2
Vendor ID: GenuineIntel
Model name: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
BIOS Model name: CPU @ 0.0GHz
BIOS CPU family: 0
CPU family: 6
Model: 106
Thread(s) per core: 1
Core(s) per socket: 3
Socket(s): 1
Stepping: 6
BogoMIPS: 5586.87
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge m
ca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht sysc
all nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xt
opology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq
ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt
tsc_deadline_timer aes xsave avx f16c rdrand hypervis
or lahf_lm abm 3dnowprefetch cpuid_fault fsgsbase tsc_
adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512
f avx512dq rdseed adx smap avx512ifma clflushopt clwb
avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xget
bv1 xsaves arat avx512vbmi umip avx512_vbmi2 gfni vaes
vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq
rdpid fsrm arch_capabilities
Virtualization features:
Hypervisor vendor: KVM
Virtualization type: full
Caches (sum of all):
L1d: 96 KiB (2 instances)
L1i: 64 KiB (2 instances)
L2: 2.5 MiB (2 instances)
L3: 48 MiB (1 instance)
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0-2
Vulnerabilities:
Gather data sampling: Not affected
Itlb multihit: Not affected
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Vulnerable
Reg file data sampling: Not affected
Retbleed: Vulnerable
Spec rstack overflow: Not affected
Spec store bypass: Vulnerable
Spectre v1: Vulnerable: __user pointer sanitization and usercopy b
arriers only; no swapgs barriers
Spectre v2: Vulnerable; STIBP: disabled; PBRSB-eIBRS: Not affected
; BHI: Vulnerable
Srbds: Not affected
Tsx async abort: Not affected

→ free -h
total used free shared buff/cache available
Mem: 17Gi 479Mi 16Gi 44Ki 748Mi 17Gi
Swap: 0B 0B 0B

→ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda 63G 23G 37G 39% /
tmpfs 64M 0 64M 0% /dev
shm 989M 0 989M 0% /dev/shm
kataShared 1.0M 24K 1000K 3% /etc/hosts
Finalizing container setup
Test complete

:::

まとめ:実際に触ってみた感想

出来ること

  • インターネットアクセスの制限(ドメイでの許可)
  • 画面のスクリーンショットの撮影

出来ないこと

  • Dockerの実行
  • モデルの指定
  • MCPの実行
  • 画面操作の動画撮影

その他・細かいTips

  • 生成する修正案のバージョン数は3がおすすめです。実装の方向性が2つ以上同じだった場合、この後自分で実装するか、プロンプトを再調整するか判断しやすくなります。
  • レートリミットはChatGPT Plusプランだと、1画面(バックエンド+フロントエンド)の作成をバージョン数4で実行すると、到達するくらいの感覚です。
  • codexコマンドや/status, /modelといったCodex CLI内部のコマンドは利用できませんでした。
  • miseがプリインストールされているため、RubyやNode.jsの細かいバージョン指定が可能です。ただし、言語によってはインストールに時間がかかるので注意が必要です(Node.jsは数秒、Rubyは4〜5分かかりました)。

総評

Codex Cloudの最大の利点は、インターネットアクセスを制限したサンドボックス環境でAIエージェントを安全に実行できることだと思います。意図しないAPIリクエストやファイル操作といったリスクを心配することなく、自由にエージェントを動かす事ができるのはCodex Cloudならではですね。加えて、いくら動かしても定額料金で収まるというのも嬉しいポイントです。

一方で惜しい点としては、やはりDockerが使えないことや、開発環境を細かく設定できない所ですね。しかし、それを差し引いても、現状で最も実用的で使いやすいweb型AIエージェントの一つかと思います!

実務で利用する上でのつらみ

  • 開発がDocker環境を前提としている場合、導入が難しい。
  • 環境構築時にdumpファイルやマスターデータ等のファイルをアップロードできないため、seedファイルを整備する必要がある(それが本来あるべき姿ではありますが・・)。

現状、一部業務で使ってみているんですが、まだCodex Cloudが生成したプルリクエストをそのままマージできるケースは少なく、やはり手動での修正がまだ必要かなと感じます。

主な用途としては、RSpecのテストケース作成や、新規画面の雛形作成などに利用しています。この技術がさらに進化すれば、プロンプトで指示するだけで開発が完結する未来もそう遠くないかもしれません!

Discussion