ソースコード学習パス
これは OpenCode ソースコードのガイド付きコースです。以下の 8 モジュールはボトムアップ順に並んでいます:基礎(設定、プロバイダー、権限)から始まり、統合層(MCP、LSP)、コアエンジン(Agent)、最後にユーザー向けインターフェース(Command、CLI)で終わります。
各章は 1 つのモジュールのアーキテクチャ、型、コアフロー、設計トレードオフの深掘り(3000-4000 字)です。順序通りに読めば完全なメンタルモデルが得られますし、必要なモジュールだけ飛ばして読むこともできます。
前提スキル
ソースコードを読む前に、以下に慣れていることを確認してください:
| スキル | 重要度 | 理由 |
|---|---|---|
| TypeScript | 必須 | コードベースは完全に型付けされており、型が主要なドキュメントです |
| Promises / async-await | 必須 | ほぼすべてが非同期です(LLM ストリーム、ファイル I/O、ツール実行) |
| Node.js streams | 重要 | LLM レスポンスとセッションイベントはストリームです |
| Git / ターミナル | 有益 | リポジトリをクローンしてローカルでデバッグします |
| React / Vue | 不要 | TUI は Web フレームワークではありません。フロントエンドスキルは不要です |
所要時間の目安
| 目標 | 時間 | 学べること |
|---|---|---|
| 1 モジュールを理解 | ~30 分 | 1 章を読んでそのモジュールの動作を説明できる |
| 完全なリクエストをトレース | ~1 週間 | prompt が CLI → Session → Agent → Provider → Tool → レスポンスへ流れる過程を追える |
| 機能を変更 | ~1 ヶ月 | ある挙動(例:新しい権限ルール)を変更して動かせる |
| 拡張を書く | 1-3 ヶ月 | プラグイン、カスタムツール、コアへの貢献ができる |
8 つの章(順序通り)
基礎 — 土台
-
Config · 初級 · ~25 分 設定の読み込み:6 層の優先度、Zod スキーマ、JSONC 解析、ホットリロード。ここから始めてください。他のすべてのモジュールが設定に依存します。
-
Provider · 初級 · ~20 分 モデル抽象層:OpenCode が Vercel AI SDK で 75 以上の LLM に、プロバイダーごとの HTTP クライアントなしで通信する仕組み。
-
Permission · 中級 · ~25 分 安全ゲート:3 段階の決定(許可/拒否/確認)、ワイルドカードマッチング、カスケード拒否、一括承認。
統合 — 外部プロトコル
-
MCP · 中級 · ~25 分 外部ツールチャネル:3 種のトランスポート、OAuth 2.0 + PKCE、MCP ツールが AI SDK の動的ツールになる仕組み。
-
LSP · 中級 · ~25 分 IDE グレードのコード理解:Effect Service アーキテクチャ、30 以上の言語サーバー定義、診断。
コア — エンジン
- Agent · 上級 · ~30 分 設定と実行の分離:Agent は設定定義、Session がループを駆動。並行制御、エラー処理、状態管理。
インターフェース — ユーザーが触れる入口
-
Command · 上級 · ~20 分 コマンドは関数ではなく設定:4 つのソース(組み込み、Config、MCP プロンプト、Skills)、テンプレート駆動実行。
-
CLI · 上級 · ~25 分 エントリーポイント:Yargs コマンドツリー、デュアルモード設計(TUI worker vs 非対話 run)、SSE イベントブリッジ。
どこから始めるか
コードベース初めての場合:Config から始める。
prompt がコード編集になる過程を理解したい場合:Agent に飛び、コールチェーンを逆追いしてください。
新しいツールで OpenCode を拡張したい場合:MCP と Command を読んでください。
関連リンク
- モジュール概要カード — 8 モジュールのビジュアルハブ
- クイックスタート — まず OpenCode を動かす
- SDK — OpenCode を自分のアプリに組み込む