Ethna開発者が知るべき10のこと
1.AppID(プロジェクト名)は短くしましょう
最初にプロジェクトを作る時のAppIDを長くしてしまうと、後で後悔することになります。
短い方がよいです。
アルファベット2文字~3文字程度にしておきましょう。
例えばプロジェクトの名前を"Pocketmonster"にしたいと思って"add-project Pocketmonster"などとしたとします。
すると、プロジェクト内のあちこちの場所で"Pocketmonster"という長い名前を使うハメになります。
こうなると開発時に何かとめんどくさいし、後から変更するのも大変です。
"Pocketmonster"の代わりに"Pm"などにするのがよいでしょう。
2.省略できるものは省略しましょう
空っぽのアクションフォームクラスとか、空っぽのアクションクラスファイルとか、空っぽのビュークラスファイルを作ったりしていませんか?
アクションフォームクラスは、フォーム定義が空の場合は、クラスを作る必要はありません。
アクションクラスは、prepareが空の場合は、prepareメソッドを省略できます。
またアクションクラスファイル自体を省略できる場合があります。(ビューと同名のアクションクラスが必ずしも必要なわけではないという意味です)
ビュークラスは、preforwar()が空の場合は、クラスファイル自体を省略できます。
参考: Ethna > ドキュメント > FAQ > 開発FAQ
3.アクションクラスやビュークラスにロジックを詰めこまない
Ethna初心者はこれをやってしまいがちです。
下記のアドバイスに従いましょう。
Ethna > ドキュメント > チュートリアル > アプリケーション構築手順(3)
- アクションクラスにアプリケーションの核となる処理を記述しない
- アクションクラスはどんなに長くても100~200行程度におさめる
- 他のアクションクラスと重複する処理を記述しない
- 重複する処理がある場合は、そのアクションクラスを継承するか、アプリケーションのマネージャ的処理に移行する
4.「フィルタ」には2種類あります
プラグインとしてのフィルタ:アプリケーションやアクションの実行前、および実行後に呼ばれるフックポイントのことです。
アクションフォームのフィルタ:GETやPOSTで飛んできたフォーム値に対して、半角変換やトリムなどの変換を行う機能です。
5.Ethnaの機能を全部使おうとなどと力まない
プラグイン、フィルタ、AppManager, AppObject, CacheManager、InfoManager,UnitTestなどいろいろありますが、全部使わないといけないわけではありません。
私はAppObjectを使わないで、生SQLを書いたり自作のORマッパーを使ったりしています。
単体テストもproveコマンドとLime.phpでやっています。
Ethnaに付属のものを使う代わりに、好きなツールや外部ライブラリを柔軟に取り入れてみましょう。
6.アプリを複数作ってみましょう
Ethnaでアプリを1つしか作ったことがなければ、そのアプリの設計の良し悪しは自分で判断できないと思います。
アプリを3つくらい作れば、どう設計すれば開発スピードがあがるのか、メンテナンス工数が下がるのか、などがわかってきます。
私はこれまで大小含めて4つ作ったことがあります。
本記事に書いてあることは、そんな経験の中から学びました。
7.PHP以外の言語もやってみましょう
当たり前ですが、"Ethnaしか知らない" "PHPしか知らない"よりは、他のフレームワーク・言語も知ってる方がよいと思います。
Javaでリファクタリング・TDDを学ぶ
TDDやリファクタリングを学ぶならJava関連の書籍が充実しています。私は下記3冊の本でリファクタリングとTDDを学びました。
JavaとPHPはクラス設計がよく似ているので、割とすんなり入っていけると思います。
Eclipseを使って写経をやってみるのがよいでしょう。
Perlをやってみる
私は(未熟ですが)Perlが大好きなので最近MojoliciousやTengを触ったりしています。とても新鮮で、新しい発見があります。
単体テストでproveを使うようになったのも、Perlの影響が大きいです。
8.ウェブ上にアウトプットしましょう
Ethnaについて勉強したこと・疑問点・要望などを、ブログに書いたりTwitterでつぶやいたりしてみましょう。
Ethnaのコミッタから反応があったり、要望を取り入れてもらえることもあります。
以前、「tar.gzだけでなくzip版も配布してほしい」とブログで書いたら、対応してもらえたことがあります。
9.フレームワークのソースコードを読みましょう
Ethnaのソースコードを読んで挙動を把握しておくことはとても重要です。
私の経験上、これをやっている人とやっていない人で、開発スピードに大きな差があります。
- Ethna_Controllerが何をやっているか、流れを説明できますか?
- prepare(),perform(),preforwar()がどこから呼ばれているか、知っていますか?
- $this->af->validate() の戻り値が何かわかりますか?
例えば私は、エラーオブジェクトとロガーの関係がよくわからず、ドキュメントを何回読んでも頭に入らなかったのですが、ソースコードを直接見ることで疑問が解けました。
Ethnaのソースコードは大変読みやすいので、このようなことはよくあります。
10.他のアプリをEthnaに移植してみよう
私は過去に、素のPHPで書かれた業務アプリを1つと、Perlで書かれたYukwikiminiというアプリをEthna上に移植したことがあります。
「移植」というのは仕様が100%決まっているので、仕様について悩む時間を省くことができます。
その分だけ設計と実装に集中することができ、学習効率が非常に高いです。
一種の知的パズルゲームのようなものなので、とても楽しく作業できます。
あとがき
きっかけ
本記事は、下記の記事に触発されて書きました。関連記事
- フレームワーク初心者がEthnaを使いこなすための3つのコツ
- Ethnaの魅力を語る
- Ethnaのソースコードを読み解く 第1回
- [初心者向け]PHPフレームワーク学習用教材を開発しました。その名もYukiwikimini On Ethna
- 5分でWindowsにEthnaをインストールしてHello Worldを表示する方法