こんにちは 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以上でコード書いていきたいエンジニアを募集しています。
*1:PSRについてはこちら http://www.php-fig.org/psr/