PhpStormで効率的になる方法:本当に重要なIDE
公開: 2022-03-11優れたソフトウェア開発者であるとはどういう意味ですか?
まず、作業している特定の技術スタックに関する深い知識が必要です。LAMP開発者の場合、間違いなくPHPとMySQLの専門家であり、最新のフレームワークを知っており、Linux管理にある程度のスキルを持っている必要があります。
次に、ワークフローで日常的に使用する補足ツールの実用的な知識が重要です。
バージョン管理システム、継続的インテグレーションツール、仮想マシン管理サービス(Vagrantなど)、そして明らかに統合開発環境(IDE)を適切に操作できる必要があります。
この記事では、人気のある堅牢なIntelliJ IDEA IDE PhpStormと、わずかな労力で効率を簡単に2倍にし、コーディング中のバグを防ぐ方法について説明します。
キーボードショートカットで自分を訓練する
IDEにとって最も単純で、おそらく最も重要なスキルである適切なキーボードの使用法から始めましょう。
経験豊富なプログラマーと通常のPCユーザーを比較すると、最初に気付くのは、プログラマーがほとんどすべての時間をキーボードの使用に費やし、マウスに触れることはほとんどないということです。 それには理由があります:それははるかに効率的です。
まず、良いタイピストになる
タイピングはIDEスキルに直接関係していませんが、すべてのキーを見つけるためにキーボードを見つめる必要がある場合、ショートカットは役に立ちません。
まだ1分あたり50語(WPM)を入力していない場合は、TypingClub.comなどのタッチタイピングトレーニングWebサイトを見つけて、速度を上げてください。
TypingRaces.comなどの競争力のあるタイピングWebサイトもあり、他の人とタイピングで競争することができます。 私の推薦? 毎日朝のウォーミングアップとしてレースに参加します。
PhpStormのショートカットを使用するように自分を訓練する
学ぶための最速の方法は、キーボードショートカットに代わるものを自分に与えないことです。
ショートカットを勉強していたとき、すべてのメニュー、タブ、ナビゲーションバーなどをオフにしました。[表示]メニューに移動し、すべてのマークのチェックを外すことで、同様に行うことができます([ステータスバー]を終了することもできます)。
私のIDEは次のようになります。
ラップトップを壊す調整段階を乗り越えるのに、約3〜4日かかりました。
モチベーションにフラグが立てられている場合は、PhpStormに生産性ガイドが組み込まれています。 機能のリストと各機能の使用統計が含まれています。 [ヘルプ]、[生産性ガイド]の順にクリックすると、次のように表示されます。
ご覧のとおり、ショートカットを使用すると、(6か月の間に)20,000を超える追加文字を入力する必要がなくなり、約1,000のバグを防ぐことができました。 かなりやる気を起こさせます!
また、あまり使用していない機能を教えてくれ、ショートカットスキルを向上させることができる場所を特定します。 統計を確認し、知識を賢く使用してください。
トップキーボードショートカット
Jetbrainsは、公式ドキュメントにリストされている利用可能なすべてのショートカットを含む便利なPDFを提供し、さらに「見逃せないキーボードショートカット」のリストを提供しています。 あなたがあなたの睡眠中にそれをすることができるまで、これをすぐに学び始めてください。
断然、私のお気に入りのショートカットは次のとおりです。
-
Ctrl+ E
最近使用したファイルを切り替えます Ctrl + /
コードのブロックをコメント化/コメント解除しますCtrl + B
クラス宣言に移動しますCtrl + N
クラスに移動Ctrl + R
検索して置換Ctrl +Alt + L
コードを再フォーマットしますAlt + Enter
意図的なアクションとクイックフィックスを表示しますCtrl + Shift + Enter
ステートメントの完了
これらのいくつかは自明であり、他はもう少しカバレッジを使用することができます。
Ctrl+EとEnterでファイルを切り替える
2つのファイルを頻繁に切り替える必要があると想像してください。たとえば、アプリのビジネスロジックを含むPHPクラスと、それをレンダリングおよび出力するために使用されるテンプレートを切り替える必要があります。
多くの開発者は、キーボードからマウスに切り替え、ファイルのあるタブに移動してクリックし、スクロールホイールで必要な部分を見つけます。 問題:それは非常に遅いです!
Ctrl+Eを押してからEnterキーを押すだけの方がいいのではないでしょうか。
Ctrl + Eを押すと、最近使用したファイルのリストが表示されます。すぐにEnterキーを押すと、現在のファイルの直前に使用されていたファイルに切り替わります。
戻りたい場合は、同じシーケンスをもう一度押してください。
これは、たった3回のキーストロークで、2つのファイルを切り替える最速の方法です。 1日に何百回もこれを行わなければならないときに、どれだけの時間を節約できるか想像してみてください。
Alt+Enterを使用して意図的なアクションとクイックフィックスを表示する
最新のIDEはエラーを強調し、コードを改善するためのいくつかの提案を提供します。 カーソルをコードの不完全または文書化されていない部分に移動すると、電球のアイコンが表示され、それをクリックすると、可能なアクションのポップアップメニューが表示されます。
Alt+Enter
を押すことで同じアクションを実行できますが、これははるかに便利です。
上のスクリーンショットの場合、PhpStormには2つのオプションがあります。関数にPHPDoc仕様を追加する(これは非常に良いアドバイスです。しばらくお待ちください)。および未使用のパラメーターを削除します。
同じショートカットを他の多くの一般的なアクションに使用できます。クラスプロパティのゲッターとセッターの作成、コンストラクターでのフィールドの初期化、未定義のメソッドとプロパティの追加などです。
Ctrl + Shift+Enterでステートメントを完成させる
このショートカットは非常に簡単であると同時に非常に便利で、正確に言うことを実行します。
たとえば、 $i = 0
と入力し、その直後にCtrl+Shift+Enter
を押すと、PhpStormは式にセミコロンを追加します。 if
とその後にショートカットを入力すると、PhpStormは角かっこなどを追加します。
このショートカットはできるだけ頻繁に使用してください。 すべてのコードが標準構造で構成されているため、時間を大幅に節約できます。 構造体の記述速度が上がると、コードの記述もはるかに高速になります。
IdeaVimプラグイン
ショートカットを使用すると生産性が大幅に向上しますが、それだけでは不十分な場合は、次のレベルはIdeaVimプラグインです。
ご存知かもしれませんが、Vimは、LinuxオタクやDevOpsのエンジニアがコマンドラインからリモートサーバーを管理するために広く使用しているコンソールテキストエディターです。
Vimには2つの重要な特徴があります。
まず、学ぶのは難しいです。 第二に、あなたがそれをよく知っているなら、それは報われる。 テキスト編集の生産性は、どのGUIエディターよりもはるかに優れています。 また、キャリアの中で、Vimなどのコンソールエディターを使用せざるを得ない状況もあります(たとえば、リモートWebサーバーで何かを修正する必要があり、コンソールにしかアクセスできない場合)。
しかし、VimはPhpStormとどのように関連していますか?
多くの開発者は、Vimの効率と最新のIDEの機能(コード補完、クラス検索、高度な検索、ナビゲーションなど)を組み合わせたいと考えています。 そのために、IdeaVimプラグインが作成されました。
重要な注意:これからは、Vimの基本を知っていると思います。 そうでない場合は、ほとんどすべてのLinuxディストリビューションまたはopenvimでアクセス可能なvimtutorでVimの使用を開始できます。
プラグインのインストール
1. [ファイル]、[設定]、[プラグイン]の順に移動し、プラグインの検索ボックスに「IdeaVim」と入力します。 プラグイン名の右側にあるチェックボックスをオンにして、「適用」をクリックします。 2.PhpStormを再起動します。 3. 「ツール」、「Vimエミュレータ」の順にチェックしてプラグインをオンにします。
4.元のPhpStormショートカットとVimショートカット(プラグインによって有効にされる)は互いに競合する可能性があるため、これらの競合を手動で解決する必要があります。 「ファイル」、「設定」、「その他の設定」、「Vimエミュレーション」の順に移動します。 競合するショートカットのリストが表示されます。 このリストでは、PhpStormショートカットを使用するか、そのキーシーケンスにバインドされたVimショートカットを使用するかを選択できます。 下のスクリーンショットで私の現在の選択を見ることができます。 決定できない場合は、ショートカットを未定義のままにしてください。 PhpStormは、初めて使用するときに選択するように求めます。
プラグインの使用法
プラグインをオンにすると、編集領域がVimに似たものになることがすぐにわかります。
- Vimのように、カーソルの形が変わり、長方形になりました。
- エディターに何かを入力しようとしても、何も起こりません。
この時点から、ナビゲーションにh
、 j
、 k
、 l
キーを使用し、通常モードと挿入モードを切り替えるためにi
キーを使用するなど、Vimで行うのとまったく同じようにファイルの編集を開始できます。
ほとんどすべてのVimショートカットがプラグインでサポートされています。
同時に、すべてのIDE機能が引き続き存在するため、キーボードのみを使用して(Vimのように)テキストを非常に高速に編集し、クラス、ファイル、使用法、および定義の間をジャンプできます(PhpStormの最新のワークフローのように)。
高度な検索
通常のテキストエディタに対するIDEの最大の利点の1つは、高度な検索を実装できることです。
小さなプロジェクトだけで作業した場合は冗長に見えるかもしれませんが、クラス間の複雑なOOP関係を持つ大きなコードベースで作業を開始すると、それがいかに不可欠であるかがわかります。
一般的な検索( Ctrl + F
)または検索と置換( Ctrl + R
)によってファイル内の特定の文字列を見つけるのは簡単ですが、何千ものファイルから特定のクラスの定義を見つける必要がある場合はどうでしょうか。 または、数千行のコードを含むクラスで特定のメソッドを検索したい場合はどうでしょうか。 または、検索結果からすべてのコメントを除外したいですか? そこで、PhpStormのような最新のIDEが役立ちます。
このセクションでは、PhpStormで最も役立つ検索のバリエーションを紹介します。
パスで検索
通常の検索の後、最も簡単な検索は、プロジェクトのサブフォルダー内のすべてのファイルで特定の文字列を検索することです。 PhpStormで簡単に実装できるので、他のどの検索オプションよりもはるかに頻繁に使用します。
たとえば、私のサンプルアプリでクラスUser
の使用法を検索します。
1. Ctrl + Shift + F
を押します。 検索オプションを含むポップアップウィンドウが表示されます。 クエリ文字列に「 User
」と入力します。 [プレビュー]タブにいくつかの結果が表示されます。
2.これで、[プレビュー]タブに切り替えて、そこで必要な結果を手動で見つけることができますが、100を超える一致があります。 面倒! もっと具体的にしましょう。
まず、クラスの使用法を検索しているので、「単語全体のみ」オプションをチェックしてみましょう。 E_USER_ERROR
のような結果を回避するのに役立ちます。
次に、コメントと文字列リテラルの検索を除外し、結果を.php
ファイルのみに制限しましょう。
また、プロジェクトのより具体的なサブフォルダーを指定することが理にかなっている場合もあります。 この場合、すべてのプロジェクト固有のコードはapp
フォルダーにあります。
それでは、スコープディレクトリをexample-app/app
に変更しましょう。
これで、次のような検索ウィンドウができました。
検索パラメータをより具体的にすることで、結果の数を数百からわずか24に減らしました。
今では、それぞれを手動で調べるのは非常に簡単です。 さらに、非常に便利なプレビュータブがあるため、各ファイルを個別に開く必要もありません。
日常の練習では、パス検索での検索は、私が行うすべての検索の約80%をカバーしています。 非常に便利なので、検索に他に何も使用しなくても、かなり効率的です。
宣言に移動
PhpStormのもう1つの非常に重要な機能(すべての最新のIDEと同様)は、クラスと関数の使用法と宣言の間をジャンプすることです。
新しいUser
を作成する関数があるとしましょう。 明らかに、 User
クラスのすべてのメソッドとプロパティを覚えているわけではないので、クラスの宣言を調べて、必要なすべてのアクションを実行する方法を決定する必要があります。 それを行うにはいくつかの方法があります。
まず、クラス宣言を読み取り専用のクイックポップアップウィンドウとして開くことができます。
カーソルを任意のクラスの使用法に移動し、 Ctrl + Shift + I
です。 読み取り専用ウィンドウが表示されます。
必要なすべてのデータを調べて、最初のファイルに戻ることができます。 非常に高速です。 ファイルを切り替える必要もありません!
ただし、前述したように、ポップアップウィンドウは読み取り専用であるため、 User
クラスで何かを変更する場合は、 Ctrl + Shift + B
という別のショートカットが必要になります。

これにより、クラスに直接移動します。 変更を加えるときは、 Ctrl + E, Enter
ます。
現在のクラスのすべてのメソッドを一覧表示します
私が日常的に使用している検索機能の最後のバリエーションは、「クラス構造による検索」です。 PHPクラスが非常に長く、特定のプロパティやメソッドを見つけるのが難しい場合があります。
クラスファイルが開いているときにCtrl + F12
を押すと、クラスの構造を示すポップアップウィンドウが表示されます。
メソッド名の入力を開始すると、入力したパターンに一致するメソッドのみが表示されます。
約100個のメソッドがあり(これは良い習慣ではありませんが、そのようなコードに出くわす可能性があります)、そのうちの2つを頻繁に切り替える必要があると想像してください。 通常の検索を使用すると、夢中になります。
代わりにファイル構造検索を使用すると、すべてのスイッチで約5回のキーストロークが必要になります。 Ctrl + F12
と入力し、目的のメソッドの名前の入力を開始し、 Enter
を押すだけで、その宣言が表示されます。
ちなみに、 Ctrl + F12
は便利なショートカットではないので、別のものに変更することを検討することをお勧めします。 個人的には、 Alt + R
を使用します。
PhpStormにはさらに多くの検索方法がありますが、これら3つはほとんどすべての日常の検索タスクをカバーできます。
機能の検索に関する要約
- 複数のファイルで見つかったものを検索する必要がある場合は、パス検索での検索(
Ctrl + Shift + F
)を使用して、検索オプション(フィルタリング)をできるだけ具体的にするようにしてください。 - クラスまたはメソッドのソースをすばやく確認する必要がある場合は、
Ctrl + Shift + I
を使用して、クイックポップアップウィンドウで調べます(編集する必要がある場合は、代わりにCtrl + Shift + B
で宣言に移動します)。 - 大規模なクラスがあり、その構造を検査したり、メソッドをすばやく切り替えたりする必要がある場合は、ファイル構造のショートカット(デフォルトでは
Ctrl + F12
)を使用します。
すべての基本的な言語構造でのライブテンプレートの使用
ショートカットを使用すると、コードをすばやく記述してナビゲートできますが、コードをさらに改善する方法があります。オートコンプリートとライブテンプレートです。
基本的なオートコンプリートは非常に簡単であり、あなたは確かにそれについて知っている必要があります。
クラス、メソッド、または変数の名前を入力し始めると、優れたIDEであれば、可能な終了のリストが表示されます。 それらのいずれかを選択して、最後まで入力しないようにすることができます。
とは言うものの、ライブテンプレートをさらに活用することができます。
このセクションでは、私が日常業務で使用しているライブテンプレートについて学習します。 私はそれらを3つのグループに分けます:基本的な言語構造、長い名前の関数、そしてHTMLチャンク。
基本的な言語構造
言うまでもなく、開発者は、 while
、 for
、 foreach
などの標準的な言語構造を1日に何度if
使用するため、毎回最初から入力するのは非常に非効率的です。 そのため、PhpStormにはそれらのライブテンプレートが組み込まれています。
人生を変えるライブテンプレートマジックの場合は、PhpStormを開き、編集領域にforek
と入力して、 Enter
を押します。 あなたはこれを見るでしょう:
PhpStormは、テンプレートを完全なforeach
サイクルに置き換え、必要なすべての変数のスタブを準備しました。 正しい変数名を入力するだけです。
Ctrl + J
を押すと、コードの現在の場所に適用できる、現在サポートされているライブテンプレートのリストが表示されます。 あなたはそれらのどれでも選ぶことができます。
お気づきかもしれませんが、ここでは非常に頻繁な構造が欠落しています。 たとえば、私は常にwhile
サイクルのライブテンプレートを見逃しているので、それを作成しましょう!
[設定]、[エディタ]、[ライブテンプレート]の順に移動し、[PHP]を選択して、ポップアップウィンドウの右上にある緑色の[+]をクリックします。
'abbreviation'フィールドに'wh'を入力し、'description'フィールドに'while(bool_expr){…}'を入力します。 「テンプレートテキスト」フィールドには、次のものが必要です。
while($EXPR$) { $END$ }
「テンプレートテキスト」テキストエリアの下にある「定義」リンクをクリックし、リストから「PHP」を選択すると、このテンプレートをどのコンテキストで使用するかがわかります。
それでは、それがどのように機能するかについて説明しましょう。
編集エリアにwh, Enter
すると、テンプレートテキストに置き換えられます。
カーソルが最初のテンプレート変数(この場合は$EXPR$
)に移動します。次に、任意の式( $i > 0
など)を入力して、 Enter
をもう一度押します。
その後、カーソルは次の変数(この例では1つしかありません)に移動し、以下同様に続きます。 $END$
は、すべての変数が入力された後にカーソルが移動する場所を示す特別な変数です。
変数は1つしかないため、 $EXPR$
を入力した直後に$END$
に移動され、サイクル本体を入力する準備が整います。
頻繁に使用するすべての言語構成用に独自のライブテンプレートを作成します。 このような構造を最初から入力することに毎日費やすよりも、事前に時間を費やす方がはるかに優れています。
PHP関数
残念ながら、PHPは、長くて一貫性のない関数名を持つ言語の評判があります。
良いニュースは、ライブテンプレートを使用してそれらを短い略語に置き換えることができるということです。 たとえば、配列にキーが存在するかどうかを適切に確認する場合は、関数array_key_exists($my_key, $my_array)
を呼び出す必要があります。
標準のオートコンプリートを使用しても毎回入力するのは非常に面倒なので、そのような場合はすべてライブテンプレートを作成するだけです。
個人的には、array_key_existsには「ake」が好きです。他のものを選択できます。 'ake'ライブテンプレートを作成する方法は次のとおりです。
HTMLチャンク
最後になりますが、ライブテンプレートの最も一般的な使用法は、HTMLチャンクの処理です。
ライブテンプレートをまだ使用していない場合は、標準のHTMLマークアップ要素を作成するために、多くの面倒な(そして基本的には役に立たない)作業を行っているに違いありません。 ライブテンプレートは、上記で行ったことを実行することでこれを変更しますが、「テンプレートテキスト」フィールドはHTMLです。
PHPDocsでバグを回避する
これまで、PhpStormの効率に関するヒントとコツを学びましたが、まだまだあります。 効率はそれが役立つ唯一の領域ではなく、プログラムの最初の実行前であっても、バグを回避するのに役立ちます。
箱から出して、PhpStormは明らかなエラーについて教えてくれます。
たとえば、ステートメントの後にセミコロンを忘れた場合は、赤でマークされますが、その機能は簡単なので、説明しません。
興味深いのは、PhpStormが、PHPDocsを介して必要な情報を提供するときに、はるかに複雑なバグについて通知する場合です。
理想的には、PHPDoc仕様はすべてのメソッドでチームに必須であり、可能な限り厳密に作成されています。 User
クラスの例をもう一度考えてみましょう。 User
オブジェクトの配列を返す関数があると仮定します。
デフォルトでは文書化されていないため、他の開発者は戻り値のタイプを知らず、不適切に使用する可能性があります。
たとえば、他の開発者がユーザー名のリストを取得したいとします。 何らかの理由で、彼女はUser
オブジェクトにgetName()メソッドがあると考えています。 しかし実際にはそうではないので、開発者は間違いを犯します。
PhpStormは、$ user変数について何も知らないため、これをバグとして扱いません。 そのため、気付かれずに、非常に厄介なエラーが発生します。
最初のオプションは、PHP7で可能になった厳密な型指定をオンにすることですが、何らかの理由でそれができないと仮定しましょう。 たぶん私たちはレガシーコードを扱っています。 この場合、PhpStormは私たちがそれを許せば私たちを助けてくれます。
これを機能させるには、すべての関数に対してPHPDocを生成する必要があります。 これは一般的に良い習慣と考えられており、バグを回避したり、他の開発者と仲良くしたり、雇用主がソースコードを調べるインタビューに合格したりするのに役立ちます。
PHPDocを生成するには、カーソルを関数の名前に移動し、 Alt + Enter
を押して、ポップアップメニューの[関数のPHPDocを生成]項目を選択し、もう一度Enter
を押します。
基本的なPHPDocテンプレートが表示されます。
PhpStormは戻り値が配列であると推測しましたが、それがUser
オブジェクトの配列であるとは推測できなかったので、代わりに「array」を「User []」に変更して、これを明示的に規定しましょう。
PhpStormにメソッドについて知っておくべきことを伝えたので、 getUserNames()
メソッド呼び出しに戻りましょう。
PhpStormがPHPDoc戻り型宣言を解析できるようになったので、エラーを指摘し、正確に何が間違っているかを示唆することさえできます。 PhpStormをPHPDocsと組み合わせると、PHPを非常に厳密な言語にすることができます。 素晴らしい結果です!
PhpStormはPHP開発者だけのものではありません
カバーされているすべてのトピックはPHP開発を中心にしていますが、PhpStormは非常に強力なIntelliJプラットフォームに基づいており、PHPの世界から遠く離れたさまざまな言語、フレームワーク、および技術スタックで使用できます。
フロントエンド開発
バックエンド開発者であっても、フロントエンドの問題を時々解決する必要があります。 これは、HTMLマークアップの簡単な修正、RESTクライアントへのパラメーターの追加、AngularJSでの記述などです。幸いなことに、これらはすべてPhpStormで実行できます。
基本的な経験則は次のとおりです。箱から出してサポートされているかどうかを確認します。 そうでない場合は、プラグインを探してみてください。
たとえば、Javascript、CSS、およびLESSやSASSなどの一般的なCSSプリプロセッサがすぐにサポートされます。 AngularJSのサポートはプラグインとして簡単に追加できます(インストールパスはIdeaVimプラグインの場合と同じです)。 この考え方により、ほぼすべての可能なフロントエンドタスクを解決できるようになります。
データベースの操作
通常、アプリケーションデータベースはコマンドラインまたはMySQL Workbenchなどの特別なツールを介して管理されますが、PhpStormはここでも役立ちます。
画面の右端にある[データベース]をクリックするだけで、使用可能なデータベースのリスト(最初は空)と、共通の編集領域のようにオートコンプリート機能を備えたクエリウィンドウが表示され、非常に便利です。
PhpStormは、ほとんどすべての最新のデータベースをサポートしています。 MySQL、PostgreSQL、Oracle Database、およびSQLiteはそのままでサポートされますが、MongoDBはプラグインのインストールによってサポートされます。
MEANスタック
最後の最も驚くべき非PHPの例は、MEANスタック開発です。
MEANは、MongoDB、ExpressJS、AngularJS、Node.jsの略です。
これはトレンドのテクノロジースタックであり、ほぼすべての場所で使用されています。 これは非常に高速で、高速で軽量のWebサービスに非常に適しています。
PHP開発者としても、PHPプロジェクトの補足ツールとしてNode.jsサービスを作成することがあります(WebSocketサービス、単純なチャットボットバックエンドなど)。
ご想像のとおり、MEANスタックのすべてのコンポーネントはPhpStormでサポートされているため、MEANスタックプロジェクトを作成する必要がある場合は、別のIDEは必要ないことに注意してください。 PhpStormは完璧に仕事をします。
PhpStormの力はあなたの手の中にあります
PhpStormのパワーとこの記事で取り上げた主要なスキルセットを使用すると、入力を完了する前に、効率を高めてバグを防ぐことができます。