CakePHP初学者が知るべき6つのこと
notoです。
完全にタイトル詐欺です。
これからCakePHPを学びたいと思ってる人が知ってたほうがいいことをまとめてみました。 初心者向け(?)とは言い難い内容かもしれません。
CakePHPの導入するメリットとしては、高速開発・日本語の情報量の多さかな。 それだけでも導入する理由としては十分だとは思います。
ドキュメントを読もう
分からないことがあったら、まずはドキュメントを読みましょう。 google先生に教えてもらうとしても、ブログの内容はアテにしてはいけません。疑ってかかりましょう。
ブログを書いている人は、google先生ではないからです。ボクの書いた記事も間違いが多々あります!!
プログラミングを行うなら、英語はある程度は読めないとキツイです。これは覚悟しましょう。
プラグインを活用しよう
ブログを信用するなと言いましたが、国内だけでもCakePHPを利用されている方は多いと思います。 それは開発するにあたって大きな強みとなります。
またプラグインが豊富に揃っているので、まずはプラグインが存在するか確認してみましょう。
CakePHPで普段使っているpluginをまとめてみた CakePHPプラグインのまとめ – 総括編
CakePHP2.xに対応していないプラグインもあるので確認はしてください。
オススメプラグインは
ACL(Access Control List)を管理することができます。
ACLとは管理者はこのページを閲覧することができるけど、ユーザーは閲覧できないよと、権限によってアクセスをコントロールする設定のことです。 CakePHPのACLはクソみたいに使いにくいので、このプラグインを利用しています。
検証環境がCakePHP1.3.xですが導入手順を記載しています。 CakePHP ACL Pluginを使ってみる
CakePHPの情報を発信している人を押さえよう
CakePHPの記事を多く発信されている方のブログは押さえておきましょう。 リリース情報、セキュリティホールが発見された場合、tips等多くの情報を発信されています。
ECWorks Blog
オープンソースを活用しよう
オープンソースとして公開されているコードをダウンロードしてコードを読みましょう。 そして書き方を真似しましょう。コピペはダメです。自分で写経してください。体で覚えてください。
デバッグの方法を知ろう
debug_kitでもいいのですが、ステップ実行が利用出来る環境だと尚良いです。 理由としては、CakePHPのコアコードを自然と見る機会が増える為です。ですので、ボクはIDEをオススメしています。
自分が使いやすいツールを選択しましょう。
ベストプラクティスを知る
Controllerで行うべき処理なのかModelで行うべき処理なのかを意識しましょう。
CakePHPを使ったMVC設計のベストプラクティス
※3/19 追記
テストを書こう
開発のプロセスは、データベース定義、コーディング(設計)だけではありません。 テストがあります。デプロイもあるけど。。
テストをどうして行うのか
もちろん正常に動作するかを確認するためです。
どうしてテストコードを書く必要があるのか
巷では、テストコードがないコードはレガシーコードと呼ばれています。 レガシーとは時代遅れとか古いとかそういった意味ですね。 つまりはダサいと。
テストコードがない場合(手動でテストを行った場合)を想像してみましょう。
- 不具合を修正したが、同じ不具合が再発する。
- 不具合を修正したが、別の機能で不具合が発生する。
- リファクタリングを行った為に、不具合が発生する。
- 新しい機能を追加したら、別の機能に不具合が発生した。
こういったことは、テストコード(自動テスト)があれば起こる割合は減ります。
プログラマは不安症です。自分が作ったものは不安で不安でしょうがないです。少なくともボクは。 常にテストが出来る状態をつくり、コードの振る舞いを明らかにして不安を取り除きましょう。
CakePHPはどうやってテストコードを書くの?
CakePHP2.xではテストフレームワークとしてPHPUnitを採用しています。(CakePHP1.xではSimpleTestが採用されています。)
PHPUnitは、PHPのメジャーなフレームワーク ZendFrameWork Symfony2でも採用されており、テストフレームワークのデファクトスタンダードです。CakePHP以外のフレームワークを利用する際にもPHPUnitには、お世話になります。
CakePHPでは、Testingのドキュメントも充実しています。
テストしやすいようにコーディングしていくと、自然と綺麗なコードになっていきますよ! テストコードの必要性については結構端折ってますが、書いたほうが自分も他人も幸せになれるのは間違いないです。
とりあえず読んでおいたほうがいい
basuke の日記 フレームワークで語るMVCの話 : PHP Advent Calendar #19
偉そうに書きましたが、ボクも修行の日々です。少しでもお役に立てれば幸いです。