ソフトウェアエンジニアとしてのキャリアの大半は、ソフトウェアのデプロイや運用という同じ作業を繰り返すか、その作業を代わりにこなすソフトウェアを作ることに費やしてきました。

OpenAI で最初に担当したのは、クラウドインフラチームでアプリケーションチーム向けに新しい Kubernetes クラスターを立ち上げる仕事でした。プライベートリンクやクォータ、Terraform の問題を解決しながら、1 週間かけて一群のクラスターを準備していました。それが整うと、すぐに次の一群に取りかかっていました。
次に担当したのは、API チームで最新モデルの評価を実行する仕事でした。評価器やクォータ、構成、PyTorch にまつわる問題を一つずつ解決していました。評価が正常に実行され、モデルがリリースされると、次のモデルでまた同じ作業が始まりました。
今では、こうした反復作業を Codex に手伝ってもらっています。今もソフトウェアを作っています。正確には、Codex に手伝ってもらいながら作っています。ただ、タスクごとに個別の自動化を作るのではなく、次のことを実現するために Runme を開発しています。
- ワークフローに関するコンテキストを集め、整理する
- レビューと承認が必要な範囲を適切に保つ
- 過去の実行で得られた知見を、今後の Codex の実行に生かす
Codex を使った評価の実行
OpenAI では、新しいモデルや機能をリリースする際に、期待どおりに動くことを確認するための評価を実行します。評価を実行するときは、Runme ノートブックを作成し、目標を簡潔に書き出します。
# Goal: Run the evaluation against the current model
- Review a previous run to understand the workflow.
- Write a detailed plan in this notebook.
- Wait for me to review and approve the plan before beginning.
- Document the commands you run, their output, and how you interpret the results.
次に、そのノートブックのセルを目標として使うよう Codex に依頼します。
Read the goal cell in the Runme notebook open in the browser. Treat it as the
goal, write your plan in the notebook, and wait for my approval before starting.
Codex はノートブックを読み、作業の進行に合わせて更新します。プランができたら、私がレビューし、必要に応じて修正します。私が関わることで役に立つのは、多くの場合、Codex が選択肢の中から判断するのを手伝うことです。どの評価システムを使うか、新しいインフラを用意するか、それとも既存のリソースで対応できるか、といった判断です。
Codex が作業している間は、ときにはスマートフォンから進捗を確認し、行き詰まったときに少し助言することもあります。たとえば、クォータを使い切って開発環境を用意できない場合は、既存の環境を再利用するか、別の承認済みの選択肢を探すよう提案することがあります。
こうして、タスクを完了するために必要な手順と、うまくいかなかった試みを記録したノートブックができあがります。作業を終える前に、Codex と一緒に、そのままでは会話に埋もれてしまう判断も記録します。なぜその選択肢を選んだのか、現時点ではどの方法が望ましいのか、次に取り組む人は何を変えるべきか、といったことです。

ノートブックでの Codex との共同作業
Runme プロジェクトは、Codex と一緒にノートブックを作成するためのオープンソースのウェブアプリケーションです。Jupyter や Colab と同様に、Markdown、コードセル、HTML に対応しているため、指示、コマンド、結果、表、グラフを組み合わせたドキュメントを作成できます。
ノートブックは Google Drive に直接保存できます。そのため、一緒に働く人たちは、ドキュメントの保管場所を新たに増やすことなく、使い慣れた方法で成果物を見つけ、共有できます。
Runme は各ノートブックに付随する Markdown インデックスも、*.index.md という名前で書き出します。Google Drive はこのファイルをインデックスに登録できるため、エージェントが例や運用のコンテキスト、過去の実行結果を必要とするときに、以前のノートブックを見つけやすくなります。
エージェントは WebMCP を通じて Runme とやり取りします。アプリケーションの読み込み時にブラウザ側のツールが登録され、エージェントはそれらを使って次のことを行えます。
- Runme とそのノートブックの操作手順を読む
- ノートブックの内容を読み取ったり更新したりする、実行範囲を限定した JavaScript プログラムを実行する
- アプリケーションのドキュメントを読む
このアーキテクチャが重要なのは、Runme が静的ウェブサイトとして配信されるクライアント側のアプリケーションだからです。従来の MCP エンドポイントを公開するためだけにサーバーを追加すると、インフラが増えて運用が複雑になり、ノートブックのデータを扱う場所も変わります。WebMCP を使えば、アプリケーションの機能をブラウザから直接公開できます。
役立つコンテキストの収集と整理
評価を実行するたびに、作業の進め方を記録して、次回の実行を楽にする機会が生まれます。ワークフローが改善されるほど、そこから得られるコンテキストも有用になります。そしてそのコンテキストによって、Codex は次回のタスクにより効果的に取り組めるようになります。
エージェントに役立つ情報の多くは、日々の仕事の中にすでに存在しています。ただ、ターミナルの履歴や Slack、運用手順書、ドキュメント、ダッシュボードに散らばっています。難しいのは、記録が役立つと証明することではありません。作業を進めながらでも記録を残せるほど、その手間を小さくすることです。
Runme は、意図、行動、判断、結果を一つの成果物にまとめます。継続的な目標によって Codex はタスクに集中し続けられます。また、承認リクエストの自動レビューでは、既存の権限の範囲を変えずに、対象となる操作をレビューできます。
プランを実行に移せるかどうか、重大な選択に人間の判断が必要かどうかは、今も私が決めています。Codex は反復作業を実行し、何が起きたかを私が自分で書くよりも詳しく記録します。できあがったノートブックは簡単に共有できるので、その実践的な知識を一人のチャット履歴に閉じ込めておく必要はありません。
限りある時間を自分の手に
私はキャリアのかなりの部分を、気難しいマシンを思いどおりに動かすための「呪文」を探すことに費やしてきました。クラウドインフラや Kubernetes は、ソフトウェアのデプロイと運用を楽にしてくれるはずでした。ところが、CNCF landscape によく表れているように、ツールの巨大なエコシステムも生まれました。一つの問題を解決しようとすると、そのために必要なツールを選び、学び、運用するという新たな問題が生まれることがよくあります。
私にとって Codex の魅力は、大切な判断には自分が関わりながら、こうした繰り返しの運用作業を手伝ってもらえることです。
そうして限りある時間を少しでも取り戻し、愛犬たちと遊ぶことに使えたらと思っています。