「Ethna(えすな)」
http://ethna.jp/
という、PHPで記述されたウェブアプリケーションフレームワークを利用すると、何ができる、又は、何がしやすくなるのですか?
GREEも、Ethna(えすな)を利用しているようですが。
http://labs.gree.jp/Top/Document/20060707.html
初心者にも分かるように、できるだけ簡単に、説明していただけないでしょうか?
よろしくお願い致します。
PHP に限らず、ウェブアプリケーションを作成する際には同じ処理が何度も何度も実行されることになります。
こういうのをいちいち作成していては非効率なのでフレームワークという形にまとめるのです。
ウェブアプリケーションでよくある処理としてはログイン認証や、ショッピングカートなどのセッション保持機能、ブラウザ等の判別、データベース等へのアクセスなどが必要でそれらはサイトごとに極端に変わったりしません。
逆に言うと極端に変わらない部分をまとめたのがフレームワークということになります。
無料パック的な側面もありますが、主な目的としてはプログラム作成時のルール決めを行うことにあると思います。
同じプログラムを作る場合でもそのままでは人によって千差万別の作り方があります。
一定の共通ルールに従って作ることで、共通ルールを知っている人同士であれば比較的他人が作ったものでも把握しやすくなります。
企業などで複数人で作成する必要がある場合、これは重要です。
イメージの例を挙げるなら、車を思い浮かべるといいと思います。
自動車であれば、概観や性能の差こそあれ根本的な部分の操作方法は一緒ですよね?
ハンドルがあってアクセルが有ってブレーキがあって。
車を設計する段階で、アクセルの必要性を議論することは無いですよね?
そういう枠組みに相当するのがフレームワークです。
とはいえ、ルール決めをすることは逆に得意不得意を作ってしまうことでもあるので、自動車にも、軽自動車・大型車があるようにいろいろなフレームワークがあります。
たとえばこのはてなも「はてなフレームワーク」によって作成されています。
重ね重ねありがとうございます。
なるほど。ルールづけですか。
>企業などで複数人で作成する必要がある場合、これは重要です。
では、例えば、一人でPHPなどで、WEBサービスを開発しようとしたら、それらフレームワークは利用するメリットはないのでしょうか?
車のアナロジーで言えば部品メーカーに部品を供給してもらって作った方が楽になります。自分は全体のデザインやカスタマイズに専念できるという具合です。
なるほど。
何かのテンプレートなどをカスタマイズするイメージでしょうか?
機能の詰め合わせというよりは、
プログラムの流れを整理するのに便利な機能が
うまくまとめられていると考えるほうが良いのではないでしょうか
例えば、データを保守する管理画面を作ろうと思って
商品管理、顧客管理、在庫管理とか画面を作ると仮定すると
データ処理は、追加、削除、変更、一覧
画面表示は、一覧表示、入力画面、編集画面、確認画面(入力チェック)、結果画面
という具合に、殆ど、同じような機能の繰り返しになります
フレームワークがなかったら、
毎回、この画面や機能の遷移を制御する
プログラムを書かないといけなくなりますが
フレームワークを使えば、ethna に限らず、
一定のルールで定義を書くだけで、それらの遷移を
自動制御(は大げさかもしれないですが)してくれます
全体の流れをフレームワークが制御してくれるので、
プログラマは、個々のプログラムの詳細に専念することが出来
作業工程も少なくなるというメリットがあります
なるほど。
確かに、ethnaの趣旨説明でも似たような文章がありました。
ところで、ethnaのようなフレームワークは、たくさんあると思うのですが、それぞれのフレームワーク間では、やはり違いなどはあるものなのでしょうか?
フレームワークを半年前から使い始めました。私の実感を述べさせていただきます。
・プログラムの方法が制限されているので、どこを関数にして、どこをクラスにして、どれを別ファイルにしてなどを考えなくてよくなったので開発スピードが上がった
・入力チェックの方法が統一できたので、安心して運用できるようになった。
・プログラムの方法が制限され、フレームワークのルールに乗っ取ってコードを書くので、後から見やすく、拡張もしやすい。
他にもいろいろメリットはあると思いますが、使ってみてから思ったのは、「初心者を脱出できたな」という感じです。特に中規模以上のプロジェクトに自信が持てるようになりました。
フレームワークは、Maple,Ethna,Mojaviと使いましたが、Ethnaが日本語のドキュメントも揃っており、PHP初心者の私にも読みやすいソースだったのでお勧めです。
おぉぉ!
実体験に基づくご回答をありがとうございます!
とても参考になりました!
ご回答ありがとうございます。
つまり、よく使う機能を集めた無料パックみたいな感じのイメージでよろしいのでしょうか?