framework-spider ~ フレームワーク スパイダー for PHP4/5

Welcome to framework-spider project wiki page! spider is light weight container for web applications work on PHP 5.

  1. Easy to set up, and defineless. 設置が簡単。設定ファイル変更の必要は特別なことをしない限り必要なし。
  2. Auto filing for user agents フレームワークレベルでブラウザ毎のページ表示振り分け機能を提供
  3. Model and View for programmers and designers.プログラマーとデザイナーの共同作業における真の意味での分業の確立
  4. Easy to learning. 不要な機能や不要なファイルを増やさないライトな設計とソースコード
  5. scalabe and distributable. スケーラビリティとサーバ分散を意識した高速な動作

spider is not Unprecedented but everyone use easy. スパイダーは上記のポリシーの元、「今までにないフレームワーク」ではなく「誰もが簡単に利用できるフレームワーク」を目指します。


目次

  1. 機能概要
  2. 導入と初期設定
    1. 設置方法
    2. ページを作成してみる
    3. テンプレート機能を使う
    4. ウィジェット機能を使う
  3. ブラウザごとにページ表示を振り分ける
  4. ダイナミックウィジェット機能
  5. プログラムモジュールの呼び出し
  6. プログラムモジュールの作成
  7. フォルダ全体に設定を施すフォルダデフォルト機能
  8. デザイナー・プログラマの分業ガイドライン
  9. 標準タグガイド
    1. 設定・読み込み用タグ
      1. {charset:文字コード指定}タグ
      2. {dynamic-page}タグ
      3. {module:モジュール名[ force[ get(..)[ post()]}タグ
      4. {preset:'属性名' 'スカラー文字列'}
      5. {rewrite-document-root:(true/false)}タグ
      6. {set-request-param:(true/false)}タグ
      7. {template:テンプレートファイル名}タグ
      8. {use-session:(true/false)}タグ
      9. {widget:ウィジェットファイル名}タグ
      10. {output-html}タグ
      11. {page-title:ページタイトル文字列}タグ(非推奨)
  10. ロジックタグ
      1. {write:(属性名)}タグ
      2. {if:(条件式)}{else-if:(条件式)}タグ
      3. {foreach:(配列) (キー名) (値名)}タグ
      4. {set:(属性名) (値指定)}タグ

機能概要

===テンプレート機能

spiderのテンプレート機能は、他の一般的なテンプレートエンジンで提供されるテンプレート機能とはやや異なる発想で提供されています。 一般的なテンプレート機能とは、HTMLやXHTMLページある部分をテンプレートファイル化しておき、ページから呼び出すといった実装になっていることが多いと思います。この「部分テンプレート化」の考え方だと、どうしても一つのファイルにおけるHTMLタグ構造の入れ子が完了しない場合が発生してしまい、開始タグと終了タグを喪失しがちです。最初に作った人でなければ大元のテンプレートは触れないなどという事態も多々発生します。

spiderのテンプレート機能は、ページ全体を覆うHTMLやXHTMLを指定する、どちらかというと真の意味のページテンプレートと呼べるものです。 テンプレートファイル側のページコンテンツを表示したい位置に{page-contents}というタグを記述することでページコンテンツの外側部分のHTMLを丸ごとひとつのテンプレートファイルに納めることが出来ます。 HTMLタグの入れ子構造を崩したファイルを確認しながら修正する必要はもうありません。

===ウィジェット機能

一般的な「部分テンプレート化」を担うのがspiderにおけるウィジェット機能です。 部分的なHTMLブロックを記述しておき、複数のテンプレートやページから呼び出すことができます。 ただ静的に指定ウィジェットを呼び出すだけであれば他のテンプレートエンジンとなんら変わりない機能ですが、spiderのウィジェット機能は静的呼び出しに加えて「ダイナミック(動的)ウィジェット機能」を提供しています。 ダイナミックウィジェット機能は、設定の変更もページの変更もテンプレートの変更も必要なく、特定のフォルダやページだけ自動的に読み込むウィジェットを変更する機能です。 このダイナミックウィジェット機能を利用すれば、「サイトのほとんどのページはひとつのテンプレートで記述できるのに、あのページとこのページの一部分だけで違うからテンプレートを追加しなければ...」というケースに強力な解決策を提供します。

===ページ振り分け機能

spiderでは、簡単なタグを記述し、該当ファイルを用意するだけで、同じURLへのアクセスに対してブラウザ毎のページ表示振り分けを行うことができます。

分岐するブラウザ定義は設定ファイルを一つ変更するだけです。

===プログラムモジュール呼び出し機能

プログラムをモジュール単位で呼び出すことが出来る為プログラムの再利用性が高まります。 JavaのフレームワークStrutsのMVCモデルを参考に独自のMVCモデルで作成しています。

なぜ今更PHPのフレームワークなのか

ブラウザ毎のページ表示振り分け機能をコアで提供するのは日本のプログラムならではの発想と言えるかと思います。

現状、日本では世界でも類を見ないほど携帯電話向けの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のテンプレート機能

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.