AtomでPHPの開発環境をつくる

こんにちは id:hacktk です。
今回は開発環境の話をしたいと思います。

  • 異なる開発環境でコーディングスタイルを合わせる話
  • AtomでPHP書く時に入れておきたいパッケージの話

※ 2017年9月14日、Atom IDEのほうも書きました。 tech.innovator.jp.net

※ 2017年12月3日、Visual Studio Codeに移行しました。 tech.innovator.jp.net

背景

私は普段 Atom で開発をしていますが、他のメンバーは PhpStorm を主な開発環境としているようです。
こういった状況では、各人の環境によってコードのスタイルに差が出てしまいがちですよね。
(例えばタブのソフト/ハード、PHPDocの有り/無しなど)
幸いPHPにはPSR-2というコーディング規約*1があるので、それに従いましょう。
Atomではパッケージを入れることでリアルタイムチェックができます。
あとAtomは、そのままでは各種IDEのように便利ではありません。これを実用的なレベルにするパッケージも入れておきます。
(他に便利なパッケージがあればぜひ教えてほしいです)

※ 以下に書くlinter系パッケージは linter に依存しています。

絶対入れるやつ(チーム開発には必須)

  • editorconfig
    • プロジェクトごとにコーディングスタイルを統一するツール
  • linter-phpcs
    • PHP_CodeSnifferを使ってリアルタイムチェックを行う
    • PSR-2(or PSR-1)に準拠できる
    • PHP_CodeSnifferを入れておく必要がある

editorconfigは全員入れてほしいです。
タブなどはエディタやIDEで独自に設定できると思いますが、それだとスタイルがバラバラになってしまってつらいですし、VCSで無駄な差分が生まれたりします。

絶対入れるやつ(個人的に必須)

  • docblockr
    • PHPDocの生成や入力をサポートしてくれる
  • linter-php
    • PHPの構文チェック
  • linter-phpmd
    • PHP Mess Ditectorを使ってコードの問題を指摘してくれる
    • PHP Mess Ditectorを入れておく必要がある
  • goto-definition
    • Classなどの定義にジャンプできる

開発しやすくする系のパッケージです。
私はつい最近までPHPDocを書く習慣がなかったのですが、同僚に怒られたこともありちゃんと書くようにしました。

静的解析について

PHPは7.0から引数と戻り値にスカラー型のタイプヒントを指定できるようになりました。
また7.1ではnullableな型やvoidが導入されたり、複数の例外をcatchできるようになるなど、どんどん静的解析が必要になってきている気がしています。
とはいえPHPは動的型付け言語ですし、宣言的に記述できる部分は積極的にしていくべきだと思うのです。
ということでPHPDoc書いていきます。
あと静的解析の自動化もやっていくぞ

恒例のやつ

弊社ではPHP7以上でコード書いていきたいエンジニアを募集しています。

recruit.innovator.jp.net

*1:PSRについてはこちら http://www.php-fig.org/psr/