まず初めに
PSR-2については、以下のページが分かりやすくておすすめです。
▼PSR-2について詳しく解説している記事
▼PSR-2染まりすぎないようにするために参考になる記事
本記事はPSR-2になじみのないPHP技術者の方向けのもので、上記の記事を読んだ後の感想となります。
PSR-2とは結局何?
一言で表現すると「PHPできれいなソースコードを書くための指南書」だと思います。
もちろん拘束力なんてないし、PHPは蛇言語のようにコーディングスタイルが原因でシンタックスエラーになることだってありません。
これは個人的な見解ですが、PHPの技術者として最低限の知識として知っておいた方が良いものがPSR-2だと考えております。
世の中にはPHPを全社的に使っており、歴史も信頼も厚い企業はたくさんあります。
こういったPHPに特化している会社の一部では、独自の開発ルールやコーディング規約についてのナレッジ/ノウハウが存在しているところも多いでしょう。
洗練されているものも多くあり、PSRに取り込まれても遜色ない完成度のものも存在すると思います。
こういった "オリジナルで優秀な指南書" がある会社に勤め、先輩の働き方を真似て自然ときれいなソースコードが書けるようになるでしょう。
私の勤めている会社では、残念ながらオリジナルで優秀な指南書はありません。
でもPHPの世界には、PSR-2という素晴らしい指南書があります。
この指南書をしっかりと読み込み、頭で消化できれば自信に繋がることでしょう。
さて、PSR-2で書けるようになるということは、どのようなメリットがあるのでしょうか?
指南書(PSR-2)に沿って書くことのメリット
- きれいなソースコードが書けるようになる
- きれいなソースコードが読めるようになる
あらゆる文章において句読点や段落がない場合、読む人間のパフォーマンスを著しく低下させます。
プログラムのソースコードも同じです。
普段からPSR-2を順守するということは、他人や未来の自分にきれいな "メッセージ" を書くということに他なりません。
少し優しくなった気になれます。
またComposerで取得できるパッケージでも同じことが言えます。
PHPはインタプリタ言語なので、利用したいComposerパッケージのソースコードを手元に取得することができます。
「何か挙動がおかしいな…」という時に、サクッと中身を見ることができます。
事実、Laravel
もPSR-2に準拠しているため、困った時に役に立つかもしれません。
普段からPSR-2になれておくことで損することはないはずです。
ただし慣れていないことで苦労することはあるかもしれません。
フォーマッターに依存してはいけない
エディタやIDEのようなフォーマッター付きのツールを利用している人は、ショートカットコマンド一発できれいに整形してもらえます。
これで解決…というのは甘い考えです。
例えばPSR-2
からかけ離れた書き方をしている人が、フォーマッターを実行してしまうとどうでしょうか。
自分の書いたソースコードが、見る影もなく変わってしまうかもしれません。
動作自体は同じかもしれませんが、それはもはや自分の書いたソースコードではありません。
後で見返した時や修正する際に戸惑うことになるでしょう。
普段からPSR-2に慣れることが必要で、PSR-2をベースとした書き方で書く必要があります。
PSR-2をベースとした書き方を習得する
- 普段からソースコードを書く際はPSR-2に準拠するように書く。
- 書き上げた後にIDEやエディタのフォーマッターでPSR-2に整形しなおす。
- どの程度変わったのかを確認する。
- 変わった箇所を次から意識する。
はじめの間は上記の1~4を反復しましょう。
慣れてきたらフォーマッターを利用せず、ソースコードをプロジェクトにコミットする際に自身で添削しましょう。
また、プレーンなPSR-2のフォーマットで、気に食わない箇所があれば随時アレンジしていくと良いでしょう。
(アレンジする場合は、ちゃんとアレンジ後の書き方の優れている点を考えましょう。)
結論: PSR-2は、これから本格的にPHPで開発を始める人に読んでほしいもの
PHPとの出会いがどんな形であれ、それを仕事としたりOSSを作成する際の登竜門のようなものです。
プライベートでPHPを触る人であれば正直全くと言っていいほど無視してもいいと思います。
ただ、ビジネスでの名刺交換やメールの文面のように、お作法として身に着けることで恥をかかずに済むかもしれません。
例えば以下のような人です。
- 仕事上でPHPを使い始める人
- PHPで作ったものを、インターネット上(ブログやGithub、コミュニティ等)で披露する人
- PHPのコーディング規約がない会社で開発を行う人
以上