フレームワーク初心者がEthnaを使いこなすための3つのコツ

半年ほどEthna(2.3.x系)を使ったショッピングサイトの構築に携わってわかったこと。

  • アクションフォームを制す者はEthnaを制す
  • 「プラグイン」、「フィルタ」は最初は理解できなくても気にしない
  • Ethna本体のソースコードを読もう

アクションフォームを制す者はEthnaを制す

アクションフォームを理解し使いこなすことが、Ethnaを使いこなすカギです。

Ethnaでの開発をはじめると1画面につき、次の3点セットをバリバリ記述することが、主な作業になると思います。
  • アクションクラス
  • アクションビュー
  • テンプレートファイル

私は当初、アクションフォームというのは、単に入力値をチェックするだけものだと思っていました。
アクションフォームクラス内で、入力値を定義しておいて、
    var $form = array(
        'id' => array(
            'type' => VAR_TYPE_INT,
        ),

        'name' => array(
            'type' => VAR_TYPE_STRING,
        ),
    );
同ファイルのアクションクラスのprepare()内で、入力チェックをし、判定結果によって遷移先を振り分ける。
function prepare()
    {
        if ($this->af->validate() > 0) {
            // バリデーションエラーだったら、入力画面に戻す
            return 'input';
        }
     ...
    }

しかし一方で、アクションフォームには、アクションクラスやアクションビューからSmartyに値を渡すという役割もあります。
//ビュークラスなどで
$this->af->setApp('name' => 'DQNEO');
//tplファイルで
{$app.name}さん、こんにちは
また、便利なフォームヘルパも、アクションフォームが密接に絡んでいます。
//tplファイルで
{form ethna_action="foo"}
  {form_input name="mailaddress"}
{/form}

このように見ていくと、アクションフォーム=入力チェックという認識は、アクションフォームの一側面しか見ていないと気づきました。
アクションフォームというのは、ユーザの入力、アクションクラス、ビュークラス、テンプレートファイルなどを含めた、Ethna全体に関わる何かなのです。
狭義には、「アクションクラス、ビュークラス、テンプレートファイルの3者間でデータを共有するための入れ物」です。
しかしもっと広い視点で見ると、「アクションフォームこそが、Ethnaの中心であり、Ethnaという太陽系の太陽なのだ。」とわかりました。
というわけで、アクションフォームを理解することが重要です。

アクションエラーも重要
同じような理由で、アクションエラーも重要です。

アクションフォームとアクションエラーをきちんと理解すれば、頭の中のもやもやがかなりすっきりします。
公式ドキュメントを読んだだけでは、なかなかアクションフォームやアクションエラーの実体が見えてこないので、ぜひソースコード(Ethna_ActionForm.phpとEthna_ActionError.php)を読みましょう。

プラグイン、フィルタは最初は理解できなくても気にしない

「プラグイン」「フィルタ」という用語が、Ethna本や公式ドキュメントによく登場します。
最初のうちは理解できないかもしれませんが、気にしないでください。
Ethnaにおいて、「プラグイン」「フィルタ」は、1つの言葉で2つの違う意味が(同音異義語みたいなもの)あり、初心者を混乱させます。

フィルタ:
1.アクションフォームで入力チェックの際に行われる「文字列変換機能」
2.Ethna本体の実行前や実行後、アクションの実行前や実行後に走らせる特別な処理 (実行時間計測、携帯電話の機種判別など)

プラグイン:
1.Ethna本体のプラグイン機構
2.Smartyのプラグイン機構

ソースコードを読んだり開発したりしてるうちに、いつかわかってきますので、最初は無理に理解しなくてよいと思います。
MovableTypeやPukiwkiもそうですが、プラグインを使わなくても充分便利ですし、いろんなことができます。
まずは基本機能を使いこなせることを目指しましょう。

余談ですが、「フィルタ」に関しては1を「フォームフィルタ/入力フィルタ」、2を「アクションフィルタ/アプリケーションフィルタ」など適と、適切な名前に変更した方がよいと思います。

Ethna本体のソースコードを読もう

フレームワークのソースコードを読むなどという行為は、一見大変そうに見えます。
上級プログラマやハッカーのやることだと思っていました。
ところがEthnaのソースコードは大変読みやすいです。

Ethnaがちょっと使えるようになってきたら、ソースコードを読むことをオススメします。

  • 読みやすい。難しいコードが出てこない
  • ファイル数が少ないので全体を理解しやすい
  • マニュアルやEthna本を読むより、ソースコードを見たほうが早いことがある
読みやすい。難しいコードが出てこない
難しいコードや関数はほとんど出てきません。
「すごいプログラマはすごいコードを書かない」と誰かが言っていましたが、まさにそのとおりです。
メソッドや変数の命名も大変シンプルでわかりやすいです。
(コードのコメントが日本語であることも心強いです。 )
PHPのコードを書く上でかなりお手本になります。

試しに、Ethna_ActionClass.phpを開いてみてください。
コードのあまりの短かさに唖然とするでしょう。

「え、アクションクラスって、たったのこれだけ?」

他にも、Ethna_ActionError.phpなんかもかなりシンプルです。
マニュアルよりソースコードの方が短いくらいです。
$this->ae->add()と$this->ae->addObject()の違いをすぐ忘れてしまう人は、一度アクションエラーのソースコードを覗いてみてください。
一発でモヤモヤがすっきりします。

私はPHPを初めてまた半年ほどですが、Ethnaのソースコードはゆっくり読めば理解できます。
「PHPを極めてからEthnaのコードを読もう」などと身構える必要はありません。

ファイル数が少ないので全体を理解しやすい
これもありがたいことです。
Ethnaの全体像を理解するには、Ethna_Controller.phpの_trigger_WWW()を見てみてください。
ここだけ見れば、Ethnaの全体の流れがよくわかります。
ここを見た後で、アクションフォームなり、アクションエラーなり、自分でトピックを決めて読み進んでいけばよいと思います。

私は主要なファイルのソースコードを印刷して、カバンに入れて持ち歩いています。
ソースコードが短いので、印刷してもほんとに薄いです。(A4一枚に両面2ページずつ印刷している)
混んでる電車の中で読むにも都合が良いです

マニュアルやEthna本を読むより、ソースコードを見たほうが早いことがある
Ethnaはドキュメントが少ないですが、たいていのことはソースコードを見ればわかります。
知りたいことをGoogleで検索しまくっても全然見つからないとき、ソースコードを見ると数分でわかった、ということがよくあります。

まとめ

Ethnaは初心者にやさしいフレームワークです。
みんなEthnaを使いましょう!
関連記事:
5分でまっさらなWindowsにEthnaをインストールしてHello Worldを表示する方法
EthnaSmarty - WindowsにEthna+Smartyを簡単にインストールするツール
カテゴリ: