LoginSignup
0
0

PhpStormが思いのほかよくなっていた

Posted at

久しぶりにPHPを使う

皆さんは、PHPを書くとき何を使っていますか?
昔はsakura editorや秀丸を使っていましたが最近はもっぱらPhpStormが多いです。
1ファイルだけのバッチっぽい何かの場合は、VsCodeでちゃちゃっとする事もありますが
ファイル分割が必要な規模は、基本的にPhpStormを使います。

PhpStormの何が良いのか?

個人的にPhpStormのここが良いと思う所は大ざっぱに以下の様なものになると思います。
・インストールした瞬間PHPで必要そうなものは大体入っている
ものぐさな私からすると必要なプラグイン(似たようなプラグインが山のようにあるので選定するのがつらい)を探さなくてよい事です。
・他言語用の統合環境も一通り揃っており操作感もほぼ同じ(全部のせコースを使っている為)
・地味に機能が豊富(設定周りもかなり充実している)
・ローカル AI による行全体コード補完(NEW)

ローカル AI による行全体コード補完(NEW)

今回は、この機能について話したいと思います。
この機能は、2024.1のバージョンに実装されたものです。
2023.?に追加されたAI Assistantなるものが追加されましたがこれとは別物です。
AI Assistantは、ChatGPTの様な機能でエディタ費用とは別枠でサブスク料金が発生します。
但し、そこそこ高性能な応答をする感じです。
2023年4月当時にお試しで使用した印象はGitHub Copilotと同性能な印象です。
※「ローカル AI による行全体コード補完」は、エディタ料金に含まれるため別途費用は掛かりません。

で、今回の話したい「ローカル AI による行全体コード補完」についてですが
例えば、以下の様なコードを書いたとして

function dump(string $filename, mixed $msg): void {
	file_put_contents($filename, $msg."\n", FILE_APPEND);
}

オブジェクトや配列も面倒なのでダンプするかとなった時の補完です。

function dump(string $filename, mixed $msg): void {
	if (is_object($msg) || is_array($msg)) $msg = json_encode($msg, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
	file_put_contents($filename, $msg."\n", FILE_APPEND);
}

1行丸ごと1度の補完ではなく、ifとか$mとか打つと残った部分で最短な補完の提案がでます。
例えば、$mと打つと$msg = json_encode($msg);の提案がでます。
後は、整形済みにしたいので…
$msg = json_encode($msg,);と入力すると$msg = json_encode($msg, JSON_PRETTY_PRINT);の補完が出る感じです。
ついでに、エスケープやユニコードも見やすくしたいので…
$msg = json_encode($msg, JSON_PRETTY_PRINT |);と入力すると
$msg = json_encode($msg, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);という感じの提案がでます。

この行で入力した文字は、if ( | $m , | |です。
中々の補完度です。
そして、何よりうれしいのがこの機能はネットワークを使用しない事でしょう。
仕事で使っていると、守秘義務やら何やかんやでソースそのままでやり取りに気を遣う必要がありますがこの機能は、ローカル動作の為、そういう部分は考えないで良いのは非常に助かります。

慣れた言語であれば、この手の補完はあまり恩恵がないのかもしれませんが、慣れていない言語や暫くさわっていないとスペルがうろ覚えだったりしても少し打てばそれっぽいコードを提案してもらえるので非常に助かります。

こういった、高機能・高品質の機能が誰でも簡単利用できるようになり、提供してくれる方に感謝しかありません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0