1月 18

Ethnaをインストールしてみた。


基本的に私はPHPで開発するときはSymfonyだが、今回Ethnaを入れてみた。
今回はそのEthnaについて思いのまま書いてみる。
基本的にはココを見れば一通りのドキュメントがそろっているので、
そちらを見たほうがよいだろう。

Ethnaとは

Ethna(えすな)とは、Greeが開発した和製のPHPフレームワークである。
日本でPHPフレームワークといったら、Cake , Symfony , Zendなんかがポピュラーだが、Ethnaはそれに続く立ち位置だと思う。
和製PHPフレームワークとしては、一番使われていると思われる。もちろんGREEもEthnaを使ってできている。

Ethnaをインストール

インストールはPearでサクッと入る。

pear channel-discover pear.ethna.jp
pear update-channels
pear install -a ethna/ethna

上記コマンドで打ったら

/usr/share/pear

以下にEthnaのソースが展開されたので、ここにphpのパスを通しておく必要がある。
php.iniに以下を追加。

include_path=".:/usr/share/pear"

ethnaが入っているか確認

ethna -v
Ethna 2.5.0 (using PHP 5.2.9)

Ethnaを使ってみて思った全体感

まず思ったことは、フレームワークはやりのMVCがしっかりしている。
公式ドキュメントを見ても分かるが、
コントローラーやアクションに余計なものは書かないように推奨されている。(アクションに200行以上書いちゃだめとか)
逆に言うと、MVCって何?的な人がEthnaを使えばMVCってのが何となく理解できるのではないだろうか。

Ethnaのテンプレートエンジン Smarty

Ethnaの特徴の一つは、テンプレートエンジンとしてsmartyを採用している。
また、バリデート時のエラーメッセージやformのデフォルト値、viewオブジェクトでセットした値が非常にアクセスしやすくなっている。
さらに、ユーザーが入力したform値に関してはデフォルトでエスケープ処理がされているという便利設計。
しかし、ヘッダー、フッターを都度かからなければならずsymfonyのlayout.phpみたいな便利な機能がない。
ヘッダー、フッターのインクルードファイルを作るほかないだろう。

Ethnaの文字コード

当初はEUC-JPがデフォルトだったが、最新版ではUTF-8がデフォルト。
やはりUTF-8がよい。

EthnaのDB接続

メインはPEAR::DBを継承したEthna_DB_PEARを使っている。
whileでresultセットを回して、1件、1件fetchする感じ。
直感的にSQLをかけるのは良い。
便利なことに、マスター用の接続、スレーブ用の接続(複数セットした場合は自動で振分け機能付き)など色々な接続を簡単に設定できる。

一応、O/Rマッパーも独自で実装されている。
ぱっと見は使いやすそうだが、やはりSymfonyのマッパー等にくらべると少々弱い感じがする・・・。
オブジェクトの配列を一気に取得して、がんがん回して、がんがんセットしていきたい。見た目、一つずつしか取得できない?
ただ、webのform値を一気にimport(set)できるのは便利そう!スクリプトが綺麗になる。

コレは便利formについて

チュートリアルをサクッと見ると、すごく便利に見えたのはformについて。
formのバリデートはそれ専用に書くところがあるし、エラーハンドリングやエラーメッセージもテンプレート側でsmartyを使ってアクセスしやすい。またエラー時にvalue値としてformの値をセットするが、デフォルトでエスケープされている。
また、バリーデート済みのform値はO/Rマッパーを使用してそのままオブジェクトにset->updateできる。

symfonyにも同様の機能があるが、こちらの方がテンプレートも自由にかける等少しライトに実装されており、つかいやすそう。

Ethnaのパフォーマンス

symfonyとethnaで「Hello World」を出力するアプリを作ってみて、各10回計測し、それの平均値をもとめてみた。

  • Ethna : 0.0724179
  • Symfony : 0.0970384

すくなくともsymfonyより早いので問題ないでしょう。symfonyが重すぎ・・・。
あとはDB接続周りに依存するでしょうね。

まとめ

とりあえず思ったことは、EthnaはライトなWebアプリケーションを作るのにはすごく向いているなと思う。
また、全体的に分かりやすいので習得コストもそれほどかからないだろう。
ただし、Symfonyなどと比べるとやはり機能が少ない(symfonyが多すぎ)。
もし、大規模なアプリケーションを開発するのであれば、EthnaではなくSymfonyなどを検討してみても良いと思う。

written by YSU \\ tags: ,