Ethna: 2009年5月アーカイブ

半年ほど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を簡単にインストールするツール
ApacheもPHPも入っていない状態のWindowsに、XAMPP + Smarty + Ethnaをインストールして"Hello World"と表示するまでを解説します。

今回は、前回の記事「10分でWindowsにEthnaをインストールしてHello Worldを表示する方法 」の改良版です。

5分と書いてますが、熟練すればもう少し速くなります。私は3分40秒でできました。:)

この記事でインストールするのは下記ツールです。
  • XAMPP 1.7.1( Apache 2.2 + PHP 5.2.9 + MySQL 5.1.33 他 )
  • Smarty 2.6.22
  • Ethna 2.3.6
環境
  • WindowsXP Pro SP 2
インストール後の構成
  • C:¥xampp
  • C:¥xampp¥php¥PEAR¥Ethna
  • C:¥xampp¥php¥PEAR¥Smarty

XAMPPをインストール

ダウンロードとインストール
XAMPPというのは、Apache・PHP・MySQLなどがセットになったパッケージソフトです。
xampp.JPG

XAMPP For Windows

上記URLにアクセスして、
ダウンロード > XAMPP Windows版 > EXE (7-zip) 自己解凍型7-ZIP アーカイブ
をダウンロードします。
WS000033.JPG
ダウンロードした"xampp-win32-1.7.1.exe"をダブルクリックすると解凍できます。
ここではc:¥に解凍することにします。

c:¥xampp
というフォルダができたらインストールは完了です。
起動する
解凍したxamppフォルダ内の、xampp-control.exeを起動します。
"XAMPP Control Panal"が立ち上がるので、ApacheとMySQLをスタートします。
WS000036.JPG
動作確認
ブラウザを立ち上げて、http://localhost/にアクセスします。
XAMPPのロゴが出ればOKです。 WS000037.JPG

EthnaSmartyをインストール

今回の記事のために、EthnaSmartyというのを作りました。

EthnaSmarty - WindowsにEthna+Smartyを簡単にインストールするツール

あとは、このページの説明に従って作業すればOKです。
ApacheもPHPも入っていない状態のWindowsに、Ethnaをインストールして"Hello World"と表示するまでを解説します。

10分と書いてますが、熟練すれば5分でできますw
私の最短記録は5分30秒でした。

この記事でインストールするのは下記ツールです。
  • XAMPP 1.7.1( Apache 2.2 + PHP 5.2.9 + MySQL 5.1.33 他 )
  • Smarty 2.6.22
  • Ethna 2.3.6
環境
  • WindowsXP Pro SP 2
インストール後の構成
  • C:¥xampp
  • C:¥xampp¥php¥PEAR¥Ethna
  • C:¥xampp¥php¥PEAR¥Smarty
お好みによって、D:¥などに変更してください。
ファイル一式を所定の場所にコピーするだけなので、アンインストールしたい場合はフォルダごと削除すればきれいに削除できます。
つまり、OSのレジストリやらを汚さずに試すことができます。

それでは早速行きましょう!

XAMPPをインストール

ダウンロードとインストール
XAMPPというのは、Apache・PHP・MySQLなどがセットになったパッケージソフトです。
xampp.JPG

XAMPP For Windows

上記URLにアクセスして、
ダウンロード > XAMPP Windows版 > EXE (7-zip) 自己解凍型7-ZIP アーカイブ
をダウンロードします。
WS000033.JPG
ダウンロードした"xampp-win32-1.7.1.exe"をダブルクリックすると解凍できます。
ここではc:¥に解凍することにします。

c:¥xampp
というフォルダができたらインストールは完了です。
起動する
解凍したxamppフォルダ内の、xampp-control.exeを起動します。
"XAMPP Control Panal"が立ち上がるので、ApacheとMySQLをスタートします。
WS000036.JPG
動作確認
ブラウザを立ち上げて、http://localhost/にアクセスします。
XAMPPのロゴが出ればOKです。 WS000037.JPG

Smartyをインストール

めちゃくちゃ簡単です。
これは1分でできますw

Smarty公式サイトのダウンロードページへ行きます。
http://www.smarty.net/download.php
WS000035.JPGSmarty 2.6.22 (.zip) をダウンロードします。
解凍したら、フォルダ名を"Smarty-2.6.22"→"Smarty"に変更します。
Smartyフォルダを、c:¥xampp¥php¥PEARの下に置きます。
これでSmartyは完了です。

Ethnaをインストール


Ethna公式サイトのダウンロードページへ行きます。
http://ethna.jp/ethna-download.html
2.3.6 zipをダウンロードします。
http://sourceforge.jp/projects/ethna/downloads/37491/Ethna-2.3.6.zip
zipファイルを解凍します。

ethna.batを設定する
Ethna-2.3.6¥bin¥
の中のethna.batをコピーして、
c:¥windows
に置きます。 メモ帳で開いて、下記の箇所を変更します。
34行目と35行目

@PEAR-DIR@
↓
C:\xampp\php\PEAR

42行目

set PHP_COMMAND=php.exe
↓
set PHP_COMMAND=c:\xampp\php\php.exe
Smartyへのパスを設定する
Ethna-2.3.6¥class¥Rendererとうフォルダの、 Ethna_Renderer_Smarty.phpを開いて下記のように変更します。
require_once 'Smarty/Smarty.class.php';
↓
require_once 'Smarty/libs/Smarty.class.php';
これでEthnaのインストールは完了です。

Ethnaフォルダを移動する
"Ethna-2.3.6"フォルダを、"Ethna"に名前変更します。
C:¥xampp¥php¥PEARにコピーします。
この結果、 C:¥xampp¥php¥PEAR¥Ethna¥Ethna.php
のようになっていればインストールOKです。
プロジェクトを作成する
コマンドプロンプトを開いて、
> ethna add-project -b=c:\xampp\htdocs Sample
と入力します。
> creating directory (C:\xampp\htdocs/sample) [y/n]:
と聞かれるので"y"と入力します。

c:¥xampp¥htdocsの下に、"sample"プロジェクトができあがります。
http://localhost/sample/www/ にアクセスして、"hello world"が表示されたら完了です。
WS000038.JPGお疲れさまでした!

Ethnaチームへのお願い

zip版でダウンロードできると、Windowsユーザには大変ありがたいのですが。。。
追記(2009.5.30)
Zip版ダウンロードが追加されたので、リンクを修正しました。
ご対応ありがとうございました。

このアーカイブについて

このページには、2009年5月以降に書かれたブログ記事のうちEthnaカテゴリに属しているものが含まれています。

次のアーカイブはEthna: 2009年6月です。

Ethna: 2009年5月: 月別アーカイブ