こんにちは。テックリードの私だ。
日々のコードレビューを行っていて、次のような光景に絶望したことはないか?
- 「3項演算子に直せば3行で終わるのに、わざわざ冗長な `if-else` を書いている」
- 「PHP 8.1以降なのに、プロパティの型宣言が抜けていて静的解析でエラーになっている」
- 「配列の構文が `array()` のままでタイムスリップしたようなコードになっている」
君たちは「タイピング速度」を上げることで生産性を高めようとしていないか? それは大きな勘違いだ。プログラミングにおいて最大のボトルネックはタイピング速度ではない。「次に書くべきコードを脳内で構築する時間」と「後から負債を返済するリファクタリングの時間」だ。
世界最高峰のIDEであるPhpStormには、このボトルネックを物理的に粉砕する最強の武器が備わっている。それが Intentions(インテンション)――あのコードの左端にひっそりと佇む「黄色い電球アイコン」(`Alt + Enter` / `Option + Enter`)である。
今回は、単なるマニュアルの解説ではない。PhpStormの内部メカニズムと、チーム全体の開発速度をネクストレベルへ引き上げるための「実戦的Intentions活用術」を叩き込む。
—
1. なぜIntentions(電球アイコン)を使うべきなのか?
多くのジュニア・ミドルクラスのエンジニアは、IntelliJプラットフォームのIDEを使っていながら、警告(Red/Yellow Squiggly)を消すためだけに電球を使っている。これは宝の持ち腐れだ。
Intentionsの本質は、「AST(抽象構文木)の構造的変形を、人間の脳みそを使わずに安全に行うマシン語レベルのオペレーション」にある。
手動でコードを書き換える場合、以下のリスクが伴う:
1. タイポ(スペルミス)による構文エラー
2. スコープや変数の渡し間違い
3. コピペによる不要なインポートの放置
PhpStormのIntentionsは、言語仕様とプロジェクト全体の静的解析コンテキスト(PSRやPHPStan/Psalmのレベル)を完全に理解した上で、「意味を変えずに構造だけを完璧に最適化」してくれる。これを使わない手はない。
—
2. 実務で爆発的に効く!最強Intentionsユースケース4選
日々のPHP開発で、私がチームメンバーに「今すぐ使え」と指導している具体的なユースケースを4つ紹介する。
① 伝統的 `array()` からモダンな短縮構文 `[]` への一括変換
今だに `array(‘a’, ‘b’, ‘c’)` と書いているコードベースおじさんはいないか?
- 操作: `array()` の上にカーソルを置き `Alt + Enter`
- インテンション: 「Convert to short array syntax」
- 効果: 配列の可読性が劇的に向上するだけでなく、プロジェクト全体でのコードスタイルの統一コストがゼロになる。
② 冗長な `if-else` の3項演算子(Ternary)あるいは配分(Match)への昇華
条件分岐がネストした汚いコードを一瞬でスッキリさせる。
- 操作: `if` 文のブロックにカーソルを置き `Alt + Enter`
- インテンション: 「Replace `if` with assignment」 または 「Replace with `match` expression」(PHP 8.0以上)
- 効果: 複雑な条件分岐の意図を瞬時に把握できるようになり、Cognitive Complexity(認知複雑度)を劇的に下げる。
③ 不足している型ヒント・プロパティ昇格(Constructor Promotion)の自動適用
PHP 8.0以降の恩恵を最大限に受けるための必須技。
- 操作: コンストラクタの引数やメソッドの戻り値にカーソルを置き `Alt + Enter`
- インテンション: 「Use constructor property promotion」
- 効果: ボイラープレートコード(冗長なプロパティ宣言と代入処理)が消滅し、クラス定義が圧倒的にスリムになる。
④ マジックナンバーの定数化(Extract Constant)
コード中に直接書かれた数値や文字列を、意味のある定数へと昇華させる。
- 操作: 対象の文字列・数値を選択し `Alt + Enter`
- インテンション: 「Introduce constant」
- 効果: 保守性が跳ね上がり、仕様変更時の修正漏れ(バグ)を根絶できる。
—
3. 生産性を極限まで高める隠れたキーボードショートカット
Intentionsを使いこなす上で、マウスに手を伸ばす時間は「悪」である。以下のショートカットを指に叩き込め。
| ショートカット (Win / Mac) | アクション | プロの解説 |
| :— | :— | :— |
| `Alt + Enter` / `Option + Enter` | インテンションメニューの呼び出し | カーソル位置に応じた最適解を提示する。「困ったら電球」の精神。 |
| `Ctrl + Shift + Space` / `Cmd + Shift + Space` | スマートコード補完 | 型を完全に理解した上で、今そこに入れるべき変数をピンポイントで予測。 |
| `Alt + Shift + Up/Down` / `Option + Shift + Up/Down` | 行/文の上下移動 | カット&ペーストはもう古い。文単位で安全にコードを並び替える。 |
| `Ctrl + Alt + L` / `Cmd + Option + L` | コードの整形(Reformat Code) | チーム全員がこれに依存することで、無駄なインデント差分をGitから完全駆逐する。 |
—
4. チーム開発で役立つ!コーディング規約・設定の共有化ルール
個人がいくらIntentionsを使いこなしても、チームメンバーの規約がバラバラであれば、Gitの差分(Diff)が汚染され、コードレビューの品質が落ちる。
PhpStormの設定はすべてプロジェクト配下に `.idea` ディレクトリとしてコード化して保存できる。これをGitで共有することで、「チーム全員のIDE環境を完全に同期」させることができる。
特に以下の設定ファイルをリポジトリに含めることが、テックリードとしての必須要件だ。
実用的な設定ファイル構成例:`.idea/codeStyles/Project.xml`
チーム全員のインデント、改行コード、配列の書き方ルールをプロジェクト単位で強制する。
—
5. 絶対に入れるべき神プラグイン
標準のPhpStormだけでも強力だが、プロの開発環境を構築するなら以下のプラグインは外せない。
1. PHP Annotations
- DoctrineやPHPUnitなどで多用されるアノテーションの補完・ジャンプを爆速化。
2. Laravel Idea (※Laravel案件の場合)
- 有料だが「買わない理由がない」神プラグイン。Eloquentの補完、ルーティング、バリデーションの検証を完璧にPhpStormに統合する。
3. Rainbow Brackets
- ネストが深い複雑なPHPの条件式で、対応する括弧を色分けして視覚的負荷をゼロにする。
—
6. まとめ:今日から始めるアクションプラン
PhpStormのIntentions(電球アイコン)は、単なる「お助け機能」ではない。それは「あなたのコードを常に最高品質に保ち続けるための自動リファクタリング・パートナー」だ。
今日から以下のルールを実践してほしい:
1. キーボードから手を離してマウスでコードを直すのをやめる。
2. 赤や黄色の波線、あるいは「なんか冗長だな」と感じた箇所で、躊躇なく `Alt + Enter`(`Option + Enter`)を押す。
3. IDEが提案してくる多様なインテンションの中から、最も美しい構文を選択する。
これを1週間続けるだけで、あなたの書くPHPコードは見違えるほど洗練され、開発スピードは確実に数倍に跳ね上がるだろう。
プロの道具を使い倒し、コードで語れ。