読者です 読者をやめる 読者になる 読者になる

Atomエディタでatom-beautifyを使ってPHPのソースコードを整形する(追記あり)

使っているPCが凄まじく貧弱なのが悪いのだけど、今まで使ってきたEclipseの遅さに耐え切れなくなってきた。しかたがないので幾つかのIDEを触ってみたのだけど、ぶっちゃけAtomエディタでいいんじゃないかという結論に陥ってしばらく前から使ってみている。

いくつかのサイトを見ながらPackageや設定をごちゃごちゃしているのだけど、その中でもPHPソースコードの自動フォーマットの話。はじめのうちちゃんと動かなかったのが動くようになったので一先ず覚書として書き残しておく。

はじめに準備すること

なにはなくともAtomエディタをインストールする必要があるのでやっておく。日本語化など必要な設定があれば良しなに。PHPも動作するように忘れずに。Windows環境の場合、インストーラーがあるのでそちらからインストールしておく。詳しくはマニュアルを参照のこと。

ちなみにPHP環境変数でPathを通しておくこと。Windowsの場合、コマンドプロンプトから以下のコマンドで動けば良い。

$ php -v

PHP-CS-Fixer をダウンロードする

後ほどインストールする atom-beautify は PHP-CS-Fixerというライブラリを使ってPHPソースコード整形を行なう。そのために予めダウンロードしておく。

GitHubのページではいくつかのインストール方法が書いてあるが、面倒臭ければ直接php-cs-fixer.pharをダウンロードしてしまう。ダウンロードしたファイルはどこか適当な場所に展開しておく。自分は面倒だったのでDropboxの配下に放り込んだ。確認までに以下のコマンドを実行して結果が返ってくることを確認しておく。

$ php /path/to/php-cs-fixer.phar

atom-beautifyをインストールする

Atomエディタの設定から install を選択、atom-beautify をインストールする。ここら辺は特に何事も無く。

php-cs-fixerの設定をおこなう

atom-beautify をインストールした後、Atomエディタの設定画面からpackagesを選択、atom-beautify の Settings を選択する。えらい長い設定画面が開くので、以下の項目を設定していく。

設定項目が上下に分かれているので要確認。

設定名 説明 設定値
Language Config - PHP - Beautify On Save 保存時に自動で整形するか? お好きに
Language Config - PHP - Default Beautifier どの整形ツールを使うか? PHP-CS-Fixer
Language Config - PHP - Disable Beautifier Languager 整形を有効にするか? チェックを外す
PHP - PHP-CS-Fixer Path php-cs-fixer.pharのパス /path/to/php-cs-fixer.phar
PHP - Fixers php-cs-fixerのオプション お好きに
PHP - Level どの整形基準を使うか お好きに

実行してみる

これまででatom-beautifyの設定が終わったので実際にPHPのプログラムを整形してみる。まずは適当なPHPファイルを開いて、右クリックから「beautify editor contents」を選択するとコードが整形されるはず。実行の際には一瞬GitCatのシルエットがポップアップされる。

ちなみに設定がおかしいとポップアップは出るのになにも変化がないという不思議な状況になるので注意。その際は、右クリックから「Debug Atom Beautify」から実行することでデバッグ出力がクリップボードに貼り付けられるので、そっから追いかけていく。

デフォルトのショートカットとしては「ctrl-alt-b」が割り振られているので適宜振り直すなり、なれるなりしておく。

php-cs-fixerの設定値

PHPの整形ルールなどは php-cs-fixer の設定に従う。Fixerに設定可能な値などについては、GitHubのReadmeを参照のこと。個人的には「align_double_arrow,short_echo_tag」を指定している。

また、Levelについては以下の様な値が準備されているので、用途にあったものを指定しておく。

  • psr0
  • psr1
  • psr2
  • ymfony

なんか上手く動かない 追記:2016-05-28

上記を設定してatom-beautifyを起動しても上手く動かない。なんとなく動いたようなエフェクトがあるんだけどコードが整形されない。という現象にぶち当たった。よくわからないのでDebug Atom Beautify を使ってログを見てみたところ、以下の様なエラーを吐いている様子。

Fixersを指定した時はこんなの

[Symfony\Component\Console\Exception\RuntimeException]
The "--fixers" option does not exist.

Levelを指定した時はこんなの

[Symfony\Component\Console\Exception\RuntimeException]
The "--level" option does not exist.

要するに設定画面で、FixersやLevelを指定するとphp-cs-fixerがコケてしまうらしい。なんぞ?試しにコマンドラインから実行してみても確かにそういうエラーが出てくる。Readme通りにやってもエラー出るしなぁ。

とりあえずは、FixersとLevelの指定を空にしてやると動くのでそのようにしておく。

なんか上手く動かない 追記:2016-05-28

あと、プログラムにsyntax errorがあるとうまく動かない。動かない時はその辺りも確認のこと。