framework-spider-core (1.1.02) | 2010-08-16 15:15 |
Welcome to framework-spider project wiki page! spider is light weight container for web applications work on PHP 5.
spider is not Unprecedented but everyone use easy. スパイダーは上記のポリシーの元、「今までにないフレームワーク」ではなく「誰もが簡単に利用できるフレームワーク」を目指します。
===テンプレート機能
spiderのテンプレート機能は、他の一般的なテンプレートエンジンで提供されるテンプレート機能とはやや異なる発想で提供されています。 一般的なテンプレート機能とは、HTMLやXHTMLページある部分をテンプレートファイル化しておき、ページから呼び出すといった実装になっていることが多いと思います。この「部分テンプレート化」の考え方だと、どうしても一つのファイルにおけるHTMLタグ構造の入れ子が完了しない場合が発生してしまい、開始タグと終了タグを喪失しがちです。最初に作った人でなければ大元のテンプレートは触れないなどという事態も多々発生します。
spiderのテンプレート機能は、ページ全体を覆うHTMLやXHTMLを指定する、どちらかというと真の意味のページテンプレートと呼べるものです。 テンプレートファイル側のページコンテンツを表示したい位置に{page-contents}というタグを記述することでページコンテンツの外側部分のHTMLを丸ごとひとつのテンプレートファイルに納めることが出来ます。 HTMLタグの入れ子構造を崩したファイルを確認しながら修正する必要はもうありません。
===ウィジェット機能
一般的な「部分テンプレート化」を担うのがspiderにおけるウィジェット機能です。 部分的なHTMLブロックを記述しておき、複数のテンプレートやページから呼び出すことができます。 ただ静的に指定ウィジェットを呼び出すだけであれば他のテンプレートエンジンとなんら変わりない機能ですが、spiderのウィジェット機能は静的呼び出しに加えて「ダイナミック(動的)ウィジェット機能」を提供しています。 ダイナミックウィジェット機能は、設定の変更もページの変更もテンプレートの変更も必要なく、特定のフォルダやページだけ自動的に読み込むウィジェットを変更する機能です。 このダイナミックウィジェット機能を利用すれば、「サイトのほとんどのページはひとつのテンプレートで記述できるのに、あのページとこのページの一部分だけで違うからテンプレートを追加しなければ...」というケースに強力な解決策を提供します。
===ページ振り分け機能
spiderでは、簡単なタグを記述し、該当ファイルを用意するだけで、同じURLへのアクセスに対してブラウザ毎のページ表示振り分けを行うことができます。
分岐するブラウザ定義は設定ファイルを一つ変更するだけです。
===プログラムモジュール呼び出し機能
プログラムをモジュール単位で呼び出すことが出来る為プログラムの再利用性が高まります。 JavaのフレームワークStrutsのMVCモデルを参考に独自のMVCモデルで作成しています。
ブラウザ毎のページ表示振り分け機能をコアで提供するのは日本のプログラムならではの発想と言えるかと思います。
現状、日本では世界でも類を見ないほど携帯電話向けのWebサイトが発展しており、Webサイトに携わるWebアプリケーションプログラマとして、Webデザイナーとして、携帯電話への対応やページの振り分け表示は避けては通れない問題だからです。
実際にframework-spiderのソースコードを入手するとデフォルトのページ表示振り分け設定はDoCoMo2.0,DoCoMo1.0,au,softbankとその他という設定で配布しています。(設定ファイルを変えることで振り分けの増減は自由に行うことができます。)
このページ表示振り分けは日本では避けては通れない問題であるにも関わらず、個別に実装したり、HTMLを別々に作成したりして対応していることがほとんどだと思います。
もちろん管理さえ正しく行えるなら携帯電話のサイトとPC向けのサイトが別階層や別URLにあるということは良いことなのかもしれません。 しかし、それは「同じ機能を持つファイルを多数増やしていく」ことに他ならず、最終的に運営上の修正や追加で管理しきれなくなるという現場は数えるほどというレベルの数字ではないはずです。
framework-spiderは開発の簡便さだけでなく、運用上の変更・追加も視野に入れたフレームワークを目指しています。
テンプレートエンジンはデザイナーとプログラマーとの共同作業・分業において大きな役割を果たすものとして注目され、近年普及した経緯があります。 実際に優秀なテンプレートエンジンともなれば、実行速度においても機能においても類を見ないほど成長しています。
しかし、テンプレートエンジンは本当に「分業」を為し得たのでしょうか?
エンジンが優秀になればなるほどテンプレートエンジンのカスタムタグは複雑になり、 もはやテンプレートではなく「プログラム」となってしまいがちです。
「テンプレートエンジン特有のカスタムタグ部分は結局プログラマーがサンプルを記述して渡している」
「デザイナーからHTMLやXHTMLを受け取って結局はプログラマーがデザインを適用している」
このような場面が多くの現場を占めるようになっていないでしょうか?
そもそもHTML内に<?php ?>でプログラムを記述できるPHPという言語にあたってテンプレート機能自体必要なのでしょうか?
テンプレートエンジンの出力用カスタムタグやループタグをデザイナーに覚えることを要求するくらいであればPHPのechoやforeachを理解してもらうだけで事足りる問題ではないでしょうか?
そもそもテンプレートという発想自体、もともと表示機能を保持していなかったperlやJavaと言った言語の発想です。 カスタムタグが優秀な必要などなく、必要ならPHPコードを記述すれば良いのではないでしょうか。
上記のような理由からspiderのテンプレート機能が提供するカスタムタグは出力に対する設定系タグと、「PHPコードを書くより簡便に済ませることができる」為の出力系タグのみ提供しています。
簡便なタグしか提供しない分、spiderはテンプレート機能、ウィジェット機能、動的ページ機能という他のテンプレートエンジンにない強力な機能を提供します。
spiderのテンプレート機能は、他の一般的なテンプレートエンジンで提供されるテンプレート機能とはやや異なる発想で提供されています。
一般的なテンプレート機能とは、HTMLやXHTMLページある部分をテンプレートファイル化しておき、ページから呼び出すといった実装になっていることが多いと思います。この「部分テンプレート化」の考え方だと、どうしても一つのファイルにおけるHTMLタグ構造の入れ子が完了しない場合が発生してしまい、開始タグと終了タグを喪失しがちです。最初に作った人でなければ大元のテンプレートは触れないなどという事態も多々発生します。
spiderのテンプレート機能は、ページ全体を覆うHTMLやXHTMLを指定する、どちらかというと真の意味のページテンプレートと呼べるものです。
テンプレートファイル側のページコンテンツを表示したい位置に{page-contents}というタグを記述することでページコンテンツの外側部分のHTMLを丸ごとひとつのテンプレートファイルに納めることが出来ます。
HTMLタグの入れ子構造を崩したファイルを確認しながら修正する必要はもうありません。
一般的な「部分テンプレート化」を担うのがspiderにおけるウィジェット機能です。
部分的なHTMLブロックを記述しておき、複数のテンプレートやページから呼び出すことができます。
ただ静的に指定ウィジェットを呼び出すだけであれば他のテンプレートエンジンとなんら変わりない機能ですが、spiderのウィジェット機能は静的呼び出しに加えて「ダイナミック(動的)ウィジェット機能」を提供しています。
ダイナミックウィジェット機能は、設定の変更もページの変更もテンプレートの変更も必要なく、特定のフォルダやページだけ自動的に読み込むウィジェットを変更する機能です。
このダイナミックウィジェット機能を利用すれば、「サイトのほとんどのページはひとつのテンプレートで記述できるのに、あのページとこのページの一部分だけで違うからテンプレートを追加しなければ...」というケースに強力な解決策を提供します。
spiderでは、簡単なタグを記述し、該当ファイルを用意するだけで、同じURLへのアクセスに対してブラウザ毎のページ表示振り分けを行うことができます。
分岐するブラウザ定義は設定ファイルを一つ変更するだけです。
ここまで説明したように、framewaork-spiderはライトでかつ開発効率と運用追加実装を視野に入れた必要十分なWebアプリケーションフレームワークであることがお分かり頂けたかと思います。それでは実際にframework-spiderを入手して利用してみてください!
AdSense is disabled. Please check setting.
[PageInfo]
LastUpdate: 2011-08-16 16:15:19, ModifiedBy: m_nakashima
[License]
Creative Commons 2.1 Attribution
[Permissions]
view:all, edit:login users, delete/config:members