PhpStorm Scratch Files 徹底活用術:プロジェクトを汚さず「思考の速度」で検証コードを焼き捨てるアーキテクチャ
開発現場において、最大の敵は「コンテキストスイッチのコスト」と「ゴミファイルの蓄積」だ。
ふとしたアルゴリズムの挙動確認、複雑な正規表現のテスト、あるいは外部APIのレスポンス構造の確認。こうした「ちょっとしたコードの検証」のために、わざわざGit管理下のプロジェクト内に `test.php` や `temp/debug.php` を作成し、 `.gitignore` に追記し、検証が終わったら手動で削除する――。
この泥臭いワークフローは、エンジニアの認知負荷を高め、脳内のキャッシュを不必要にクリアさせる。
JetBrains製IDEの隠れたキラー機能である 「Scratch Files(スクラッチファイル)」 は、この非効率な日常を根底から破壊する。本稿では、単なるメモ帳代わりとしての使い方を超え、Dockerコンテナ環境やCLI、さらにはCI/CDパイプラインの周辺領域までを巻き込んだ、最高峰のスクラッチファイル活用アーキテクチャを提示する。
—
1. 内部アーキテクチャ:Scratch Filesはどこに生息し、どう動いているのか?
まず、ツールを骨の髄まで使い倒すために、その内部構造を理解しておこう。
プロジェクト内のファイルはGitリポジトリに紐づくが、Scratch FilesはIDEのグローバルな設定領域にサンドボックスとして保持される。macOSであれば通常、以下のパスに格納されている。
~/Library/Application Support/JetBrains/PhpStorm
プロジェクトに依存しないため、どのリポジトリを開いていなかろうと、IDEさえ起動していれば一瞬で呼び出せる。つまり、「コードを書くためのグローバル・キャッシュ」としての性質を持つ。
内部管理の仕組みと自動保存
Scratch Filesに記述された内容は、リアルタイムでIDEのVFS(Virtual File System)およびディスク上の専用領域にフラッシュされる。明示的な「保存(Ctrl+S / Cmd+S)」の概念がなく、タブを閉じようがIDEを強制終了しようが、書いたコードは一言一句失われない。
この「永続的な一時領域」という特性をハックすることで、思考の速度を一切落とさずにコードを書き捨てることが可能になる。
—
2. 実践:思考を止めない検証ワークフローの構築
ショートカット一発で「言語コンテキスト」即時切り替え
Scratch Filesの真骨頂は、ファイルを作成した瞬間に任意の言語構文(PHP, JSON, SQL, HTTPなど)をアサインできる点にある。
1. ショートカット `Ctrl + Alt + Shift + Insert` (macOSなら `Cmd + Shift + A` から “New Scratch File” を呼ぶのが最速)を押下。
2. 言語を選択する(例: `PHP`)。
3. 即座にエディタが開き、PhpStormの強力な静的解析(Inpection)、補完(IntelliSense)、リファクタリング機能がフル装備された状態でコードを書き始められる。
実例:Dockerコンテナ環境でのシームレスな実行
「手元のホストマシンにPHPのバージョンが入っていない」「プロジェクトごとに異なるDocker環境(PHP 8.2 vs 8.3など)でコードの挙動を確かめたい」。
ここで多くの開発者は、Dockerコンテナ内にわざわざアタッチしてエディタでファイルを修正する。しかし、Scratch FilesとPhpStormの「CLI Interpreters」機能を結合させれば、ホスト側のテンポラリファイルを一瞬でコンテナにマウントして実行できる。
1. Remote Interpreterの紐付け
PhpStormの `Settings / Preferences > PHP > CLI Interpreter` に、既存のDocker ComposeやDockerイメージを登録しておく。
2. 実行設定(Run Configuration)のテンプレート化
Scratchファイルを開いた状態で `Ctrl + Shift + R` (macOS: `Ctrl + Shift + R` または `Control + Shift + R`)を押すと、即座にそのスクラッチファイルをリモートPHPインタプリタで実行する一時的なRun Configurationが生成される。
以下の設定ファイルをIDEにあらかじめ仕込んでおけば、あらゆるScratchファイルを一撃でDocker上の特定コンテナで実行可能だ。
{
“name”: “Run Scratch in Docker”,
“type”: “PhpRemoteDebugConfigurationType”,
“environment”: “DockerCompose”,
“interpreterId”: “docker-compose://[path]/docker-compose.yml//php”,
“scriptPath”: “$FilePath$”,
“workingDir”: “/var/www/html”,
“dockerComposeCliOptions”: [
“–no-deps”
]
}
※上記は概念的なJSON表現だが、PhpStormはScratchファイル実行時に自動的に適切なインタプリタをアタッチするスマートなフォールバック機構を備えている。
—
3. 高度な応用:HTTP Client ScratchによるAPIモック&検証
バックエンド開発において、PHPのロジック検証とセットで必ず発生するのが「APIの疎通確認」だ。PostmanやcURLコマンドをわざわざ立ち上げる必要はない。PhpStormのScratch機能には `.http` ファイル(HTTP Client)の作成が含まれている。
プロジェクトの外側に、以下のようなHTTPスクラッチを作成する。
1. 認証トークンの取得(OAuth2 / Bearer)
POST https://api.staging.internal/oauth/token
Content-Type: application/json
{
“client_id”: “sandbox_client”,
“client_secret”: “${STAGING_CLIENT_SECRET}”
}
> {%
// レスポンスからアクセストークンを環境変数に自動バインド
client.global.set(“auth_token”, response.body.access_token);
%}
2. 取得したトークンを使って検証対象エンドポイントを叩く
GET https://api.staging.internal/v1/users/me
Authorization: Bearer {{auth_token}}
このHTTPクライアント・スクラッチの強烈な点は、環境変数の管理(`http-client.env.json`)と連携し、本番・ステージング・ローカルの切り替えが一瞬で行えることだ。ブラウザや別ツールを開くことなく、IDEのペイン内でPHPのコードとAPIリクエストを並べて同時並行でデバッグできる。
—
4. パフォーマンスとメモリ消費の最適化ハック
「便利だからといって、何百個もScratchファイルを放置してよいのか?」
答えは NO だ。
IDEの内部アーキテクチャ上、すべてのScratchファイルは起動時にVFSへインデックスされる。不要なファイルを無尽蔵に放置すると、以下の弊害が生じる。
- インデックス作成時間の増大(起動の遅延)
- グローバル検索(Shift + Shift)にゴミカスがヒットし、ノイズが増える
エキスパートが実践する「自動クリーンアップ・ポリシー」
1. 命名規則の徹底と定期パージ
Scratchファイルには自動で `scratch_1.php` のような連番が振られるが、そのまま放置してはならない。検証が終わったものは、作成から数日以内に容赦なく削除(`Delete`)する。
2. コンソール・スクラッチ(Console Scratches)の活用
特定のデータベース接続に紐づくSQLの実験には、通常のファイルではなく「Database Console」を利用する。これは履歴管理が適切に行われ、不要になったクエリは自動的にローテーションされるため、ディスクを圧迫しない。
—
5. まとめ:開発体験(DX)の極限化へ向けて
PhpStormの Scratch Files は、単なる「メモ帳」ではない。それは、「アイデアをコードという実行可能な実体に変換するまでの摩擦係数をゼロにするための装置」である。
プロジェクトの境界線に縛られず、コンテナ環境とシームレスに結合し、APIの検証からアルゴリズムのテストまでを完結させる。このワークフローを手にいれた瞬間から、あなたの開発スピードは物理的な制約から解放される。
明日からではなく、今この瞬間のコード検証から、Scratch Filesを主軸とした「書き捨て型アーキテクチャ」を導入せよ。思考のスピードにIDEが完全に追従する快感を、ぜひ体感してほしい。