こんにちは!日々のコーディング、お疲れ様です。
ふと気づくと、「ああ、この配列のすべての要素のキー名を一括で変えたい」「すべてのプロパティに `public` って付けたいだけなのに、正規表現を考えるのが面倒くさい……」なんて絶望的な気持ちになること、ありませんか?
ネットで「PHP 文字列 一括置換」と検索して、訳の分からない難解な正規表現とにらめっこし、結局ミスってコードを壊してしまう……。そんな無駄な残業は、今日で終わりにしましょう。
世界最高峰のPHP統合開発環境である PhpStorm には、Multi-Cursor(マルチカーソル) と Selection(選択拡張) という、魔法のような機能が備わっています。これらを使いこなせば、正規表現の知識など一切不要で、複雑なリファクタリングや一括編集を「直感的かつ瞬殺」できるようになります。
今回は、これからPhpStormを使いこなしたいと考えているあなたに向けて、ツールの役割から基本設定、そして実務で震えるほど役立つ実践テクニックまで、優しく丁寧にお伝えしていきますね。これをマスターすれば、毎日のコーディングスピードが文字通り劇的に変わりますよ!
—
1. PhpStormの「マルチカーソル」とは何か?(ツールの役割と本質)
私たちが普段行うテキスト編集は、基本的に「1つのカーソルで1箇所ずつ直す」というリニア(線形)な作業です。しかし、現代のWeb開発では、同じような構造のコード(DTOのプロパティ定義、連想配列、テストデータの量産など)を大量に書きます。
マルチカーソルとは、「画面上に複数のカーソルを同時に出現させ、キーボードからの入力を完全に同期させる技術」です。
なぜ正規表現より優れているのか?
正規表現は強力ですが、「書き間違えたときの爆発力(=バグの混入)」が怖いですし、何より脳のRAMを激しく消費します。
一方、マルチカーソルは「自分の目で確実に見えている場所に対して、同時にタイピングする」ため、視覚的な安心感が圧倒的です。直感的に操作でき、思考を中断させません。
—
2. まずはここから! 運命を変える基礎セットアップ
PhpStormのデフォルト設定でも十分強力ですが、あなたの思考スピードにIDEを完全に同調させるための「黄金のショートカット」を確認しておきましょう。
OS別の基本ショートカット一覧
まずは以下のショートカットを、今日から指に覚え込ませてください。(※本記事では主にmacOSを基準に解説しますが、Windows/Linuxでは `Cmd` を `Ctrl` に、`Option` を `Alt` に読み替えてください)
| 操作 | macOS | Windows / Linux |
| :— | :— | :— |
| 任意の場所をクリックしてカーソル追加 | `⌥ (Option)` + クリック | `Alt` + クリック |
| 次の一致する文字列をマルチカーソル化 | `⌘ (Command) + G` | `Ctrl + G` |
| すべての一致する文字列を選択 | `⌃ (Control) + ⌘ + G` | `Ctrl + Shift + Alt + J` |
| 選択範囲の拡大(Selection Expansion) | `⌥ (Option) + ↑` | `Ctrl + W` |
特に `⌥ + ↑`(選択範囲の拡大)は、コードの構造(構文木=AST)を理解した上でスマートに範囲を広げてくれる、PhpStormの隠れた超重要機能です。ぜひ覚えておいてください。
—
3. 実践!「HelloWorld」的なコード一括編集体験
百聞は一見に如かず。実際に手を動かして、マルチカーソルの爽快感を体験してみましょう。
いま、以下のような「名前と年齢が並んだ、ちょっとイケてない配列データ」があるとします。
// 修正前のコード
$users = [
‘tanaka’ => 20,
‘suzuki’ => 25,
‘sato’ => 30,
];
これを、「すべてのキーをダブルクォーテーションで囲み、末尾のカンマをセミコロンに一括変更する」という作業を、正規表現を使わずにやってみます。
手順ステップ
1. 最初の編集箇所をクリックする
`’tanaka’` の左側のシングルクォーテーション `’` の位置をクリックしてカーソルを置きます。
2. ショートカットで次々にカーソルを追加する
そのまま `⌘ + G` (Windowsは `Ctrl + G`)を2回叩いてみてください。
あら不思議!下の行の `’suzuki’` と `’sato’` の同じ位置にも、自動的にカーソルが追加されました。
3. 一括でタイピングする
ここでキーボードから `”` (ダブルクォーテーション)を入力します。すべてのカーソル位置に同時に `”` が挿入されます。
4. 自由自在にカーソルを動かす
`->`(右矢印キー)や `End` キーを押すと、すべてのカーソルがそれぞれの行の末尾に移動します。そこでカンマ `,` をバックスペースで消し、`;`(セミコロン)に書き換えます。
たったこれだけで、以下のように美しくコードが書き換わります。
// 修正後のコード
$users = [
“tanaka” => 20;
“suzuki” => 25;
“sato” => 30;
];
(※文法エラーになるのでセミコロンへの変更は例えですが笑)、このように「同じパターンを繰り返す絶望的な手作業」を、マルチカーソルは一瞬で消し去ってくれます。
—
4. 【現場で震える】複雑な置換作業を瞬殺する応用テクニック
ここからが本番です。実務の現場で遭遇する「うわ、これ面倒くさいな……」というシーンをマルチカーソルとセレクションで瞬殺するテクニックを2つご紹介します。
テクニック A:大量のプロパティへのアクセス修飾子(public等)の一括付与
LaravelやプレーンなPHPで、DTO(Data Transfer Object)クラスなどを書いているとき、以下のように一気にプロパティを定義したい場面があります。
// リファクタリング前:名前だけ並んだ状態
class UserData
{
$id;
$name;
$email;
$role;
}
ここに `public readonly ` という修飾子をすべての行に一発で付与したいとします。
1. 行頭を一括選択する
一番上の `$id` の行の行頭(`$` の直前)にカーソルを置きます。
2. 列選択(Column Selection)モードを使う
- macOS: `Shift + ⌥ + ↓` (またはマウスの `的中ドラッグ`)
- Windows: `Shift + Alt + ↓`
下に向かってドラッグするか、ショートカットで4行分の「垂直なカーソル(カラムカーソル)」を出現させます。
3. 文字を入力する
そのまま `public readonly ` とタイピングします。
なんと、4行すべてに同時に文字が流し込まれます!
// リファクタリング後:一瞬で完了
class UserData
{
public readonly $id;
public readonly $name;
public readonly $email;
public readonly $role;
}
正規表現で置換置換……と悩んでいた時間が、文字通り「0秒」になります。
—
テクニック B:連想配列のキー名だけを一括してリネームする
例えば、APIから受け取ったスネークケースのキーを、キャメルケースに直したいとします。しかし、全体を置換すると別の場所の同名変数まで変わってしまうリスクがあります。
ここで登場するのが、「選択範囲内でのインクリメンタル検索マルチカーソル」です。
1. 対象のブロックを選択する
対象の連想配列部分をマウスや `⌥ + ↑`(選択範囲の拡大)で選択します。
2. すべてを選択状態にする
選択した状態で、`⌃ + ⌘ + G` (Windowsは `Ctrl + Shift + Alt + J`)を押すと、そのスコープ内(またはファイル内)にある一致する文字列すべてにカーソルが当たります。
3. 一括編集する
文字を書き換えると、選択したすべての箇所が同期して書き換わります。
これにより、「意図しない別の場所のコードまで置換してしまった!」という、開発者なら誰もが一度は経験する冷や汗ものの事故を100%防ぐことができます。
—
5. おわりに:手を止めず、思考を止めないために
今回ご紹介したPhpStormのマルチカーソルとセレクション機能は、単なる「便利なショートカット」ではありません。「開発者の脳のメモリ(認知的負荷)を極限まで解放し、本質的なロジックの構築に集中させるための強力な武器」です。
最初は「マウスでクリックしたほうが早いかも……」と感じるかもしれません。しかし、騙されたと思って毎日の業務の中で意識的にキーボードショートカットを使ってみてください。3日後には、マルチカーソルなしの生活には戻れなくなっているはずです。
PhpStormという最高峰の相棒と共に、快適で圧倒的なスピードを誇る開発ライフを存分に楽しんでくださいね!それでは、また次の技術でお会いしましょう。