ddev について
DDEV は、Dockerベースの環境で PHP/Node プロジェクトをローカル開発するためのコマンド操作を案内するスキルです。DDEVを使う開発者向けに、ツールのショートカット、サブディレクトリのパス解決、プロジェクト状態の確認方法を扱います。
主な機能
- 01コンテナ内で一般的な開発ツールを実行
- 02プロジェクトのサブディレクトリからDDEVを操作
- 03コンテナ内のサブディレクトリパスを解決
- 04プロジェクトとサービスの状態を確認
- 05WordPress Multisiteなどのガイドを参照
活用シーン
- 01コンテナ内でComposerの依存関係をインストール
- 02プラグインのディレクトリからnpmやPHPUnitを実行
- 03プロジェクトのバージョン、URL、サービス状態を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ juvojustin/ opencode-ddev --skill ddevインストール後、Claude Code で/ddevを入力して読み込まれたか確認します。
同梱ファイルreferences/npm-projects.mdreferences/wordpress-multisite.md
詳細
DDEV
DDEV は、PHP/Node プロジェクト向けの Docker ベースのローカル開発ツールです。一般的な CLI ツール(composer、npm、wp、drush など)をラップし、ローカルにインストールしなくてもコンテナ内で実行できるようにします。詳細なドキュメント:https://docs.ddev.com
CLI のショートカット
DDEV には、コンテナ内のツールに処理を委譲するショートカットコマンドが用意されています。ddev exec の代わりに、以下を使用してください。
ddev composer install # runs composer inside the container
ddev npm run build # runs npm inside the container
ddev wp plugin list # runs wp-cli (WordPress only)
ddev drush cr # runs drush (Drupal only)
ddev artisan migrate # runs artisan (Laravel only)
ddev console cache:clear # runs bin/console (Symfony only)
ddev yarn add <pkg> # runs yarn inside the container
ddev php -v # runs PHP inside the container
ショートカットと対応するコマンドの全一覧は、ddev help を実行して確認してください。
DDEV コマンドは任意のサブディレクトリから実行できます
DDEV は、プロジェクトツリー内の任意のサブディレクトリからプロジェクトルートを自動的に検出します。ほとんどの DDEV コマンドは、シェルの現在の場所に関係なく、そのまま動作します。
ddev wp plugin list
ddev mailpit
ddev db
ddev composer show
ddev npm ls
ddev drush cr
ddev start
ddev describe
ddev ssh
これらのコマンドに特別なフラグやパス解決は必要ありません。
--dir によるスコープ指定が必要な場合
--dir フラグが必要なのは、コンテナ内の特定のサブディレクトリを対象にする必要があるファイルパスに依存するスクリプトを ddev exec 経由で実行する場合に限られます。これは、作業ディレクトリからの相対パスでファイルを操作するコマンド(例:特定の composer.json を読み込む composer install や、特定の package.json を読み込む npm install)に該当します。
ステップ 1:コンテナパスを解決する
同梱の resolve スクリプトを実行して、ホスト側のサブディレクトリをコンテナパスに対応付けます。
scripts/resolve-ddev-root.sh "$(pwd)"
出力(JSON):
{
"project_root": "/Users/you/Projects/mysite",
"container_path": "/var/www/html/wp-content/plugins/my-plugin",
"relative_path": "wp-content/plugins/my-plugin",
"project_name": "mysite"
}
relative_pathが空の場合 -- 作業ディレクトリは DDEV ルートです。--dirは必要ありません。relative_pathが空でない場合 -- ファイルパスに依存するコマンドでは、container_pathの値を使って--dirを指定します。
ステップ 2:スコープを指定してコマンドを実行する
DDEV が起動していない場合は、先に ddev start で起動します。
# Install dependencies scoped to a plugin subdirectory
ddev exec --dir="/var/www/html/wp-content/plugins/my-plugin" bash -c "composer install"
ddev exec --dir="/var/www/html/wp-content/plugins/my-plugin" bash -c "npm install"
# Run a script that reads files relative to the working directory
ddev exec --dir="/var/www/html/wp-content/plugins/my-plugin" bash -c "phpunit"
--dir を指定しない場合、これらのコマンドはコンテナのドキュメントルート(/var/www/html)で実行され、誤った composer.json、package.json、またはプロジェクトコンテキストを対象にします。
コンテナ内でコマンドを実行する
ショートカットがない場合や、コンテナ内の特定のディレクトリを対象にする必要がある場合は、ddev exec を使用します。
# Runs in web container at docroot
ddev exec ls -la
# Scope to a subdirectory for file-path-sensitive operations
ddev exec --dir="/var/www/html/wp-content/plugins/my-plugin" bash -c "composer install"
# Run in the database container
ddev exec -s db mysql -e "SHOW DATABASES"
# Shorthand alias
ddev . ls -la
サブパスの対応付け(ddev exec --dir 用)
パス解決が必要なのは、ddev exec --dir を使用して、ファイルパスに依存するスクリプトの対象をサブディレクトリに限定する場合のみです。標準的な DDEV コマンド(ddev wp、ddev mailpit、ddev db、ddev start など)では不要です。これらのコマンドは任意のサブディレクトリから自動的に実行できます。
DDEV ルートの解決
同梱の resolve スクリプトを使って DDEV プロジェクトルートを特定し、コンテナパスを計算します。
# From any subdirectory within a DDEV project
scripts/resolve-ddev-root.sh /path/to/wp-content/plugins/my-plugin
このスクリプトは、.ddev/config.yaml を探してディレクトリツリーを上方向にたどります。引数を指定しない場合は、現在の作業ディレクトリを使用します。
パスを手動で計算する
スクリプトを利用できない場合は、パスを手動で計算します。
.ddev/config.yamlを含むディレクトリ(DDEV プロジェクトルート)を特定します- そのルートから現在の作業ディレクトリまでの相対パスを計算します
/var/www/html/を先頭に付けて、コンテナパスを取得します
プロジェクト情報
ddev describe を使うと、現在の DDEV プロジェクトの詳細情報を取得できます。構造化された JSON 出力を取得するには、-j フラグを追加します。
ddev describe -j
次のような有用な詳細情報が得られます。
- プロジェクトタイプ(wordpress、drupal、laravel など)
- プライマリ URL とすべてのプロジェクト URL
- PHP バージョン と Node.js バージョン
- データベースの種類とバージョン(mariadb、mysql、postgres)
- ウェブサーバーの種類(nginx-fpm、apache-fpm)
- web、db、および追加サービスのサービスステータス
- ホストとコンテナの対応付けに使われる公開ポート
JSON 出力フィールドの例:
type- プロジェクトタイプ(wordpress、drupal など)primary_url- メインのプロジェクト URLurls- すべてのプロジェクト URL(HTTP および HTTPS)の配列php_version- 使用中の PHP バージョンnodejs_version- 使用中の Node.js バージョンdatabase_type- データベースの種類(mariadb、mysql、postgres)webserver_type- ウェブサーバー(nginx-fpm、apache-fpm)services- 各サービスのステータスと詳細情報
リソース
scripts/
- resolve-ddev-root.sh - ディレクトリツリーを上方向にたどり、任意のサブディレクトリから DDEV プロジェクトルートを特定します。プロジェクトルート、コンテナパス、相対パス、プロジェクト名を含む JSON を返します。
references/
- npm-projects.md - DDEV で npm/Node.js の開発サーバーを実行する方法。ポートの公開、ホストへのバインド、Vite、Next.js、Astro 向けのフレームワーク別の例を含みます。
- wordpress-multisite.md - DDEV で WordPress Multisite をセットアップするガイド。WP-CLI コマンドを使ったサブドメイン、異なるホスト名、サブディレクトリの構成を扱います。