日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP 5 » 軽量テンプレートエンジン

軽量テンプレートエンジン

ページ: 1

投稿者 投稿
会員
登録者: 10 2009
返信数: 6
住居: 大阪府
PHP5で動作する「シンプル」かつ「軽量」なテンプレートエンジンを開発しました。
PHPで記述されたテンプレートエンジンとしてはSmartyが有名ですが、Smartyよりも機能を絞り、テンプレートファイル内で変数を展開する機能を中心に、付帯する機能を実装しています。
メールフォームなどの小規模システムを構築する場合などにとても使い勝手が良いと思います。

BSDライセンスにて配布しておりますので、改変も自由ですし、改変後に公開を強制されることもありません。
機能拡張して自身のテンプレートエンジンとして使用することが出来ます。

構文などを示したドキュメントも用意しております。
下記URLより一度のぞいてみてください。

【SimpleTemplate】
http://st.benefiss.com/
会員
登録者: 11 2010
返信数: 4
お世話になります。
exceptionCatcherと申します。
まず最初に、このような素晴らしいソフトウェアを公開されたことに敬意を表したいと思います。

先ほどダウンロードしてドキュメントを見させて頂いたのですが、Smartyのライセンスに関して誤解なされてるのではと思い、コメントさせて頂きます。

2003年、経済産業省から「オープンソースソフトウエアの利用状況調査/導入検討ガイドラインの公表について」という資料が公開されました。以下からダウンロードできます。

http://www.meti.go.jp/kohosys/press/0004397/

上記サイトの2番目のPDF資料に、ライセンスごとの解釈が掲載されています。
特に注目して頂きたいのが62~63ページです。(PDF文書の物理的なページ番号です。文書の下部に表示されるページ番号ではありません。)62~63ページはA3横イメージの資料で、左側が62ページ、右側が63ページになっています。

この資料によると、LGPLのSmartyでソース公開が必要となるのは、Smarty本体を修正した場合です。
その場合、Smarty本体及びSmarty以外のスクリプト全ての公開義務が生じます。

しかしSmarty本体を修正しない限り、Smarty以外のスクリプトの公開義務はありません。

例えばSmarty本体がPHP5.3系に未対応だったと仮定します。
そのため、Smarty本体をPHP5.3系でも問題なく動くように修正したとします。
このような場合「修正後のSmarty本体」「Smarty本体以外のScript」は公開せねばなりません。

Shigeru Kurataniさんは
「作成したスクリプトの一部が公開を必要」と記されていますが、
そのようなことはないと思われます。

もしかしたら私の解釈が間違っているのかも知れませんが、御参考までに。

以上

追伸

Zendによれば
PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません。
とのことです。

http://framework.zend.com/manual/ja/coding-standard.php-file-formatting.html#coding-standard.php-file-formatting.general
« 最終編集者 exceptionCatcher 日時 2010 年 12 月 12 日(日) 3:38. »
会員
登録者: 10 2009
返信数: 6
住居: 大阪府
exceptionCatcher様

詳細なご指摘ありあがとうございます。
このようなフィードバックは大変ありがたいです。

1.LGPLの理解に関して
ご指摘の資料を参照いたしました。また、GNUのLGPLページも少し読んでみました。
LGPLだけではなく、その他のOSS全般に言えることですが、「改変」・「再配布」した時点で
ライセンス契約に同意したとみなされます(ライセンス契約が成立します)。
そうすると、「修正」・「再配布」した時点で初めてライセンス契約上の問題が発生することになりますが、
実際のケースとして、例えば受託にてWEBシステムを構築した場合でも、「修正」もしくは、少なくとも
「再配布」していると言えます。
この場合、LGPLの適用を受けますので、やはり同等の自由を発注者に与える必要がライセンス上発生すると思われます。

また、ご指摘のPDF62~63Pを読みましたが、「修正」した場合のみ公開義務が発生するとは読めませんでした・・・。
※こちらは私の理解不足かもしれません。

仕事をしながらになりますので、少し時間がかかりますが、OSSライセンスに関する書籍等を参照してドキュメントの
修正を行っていきたいと考えております。

2.終了タグ("?>")に関して
確かに、ZEND FRAMEWORKのコーディング規約ではPHPコードのみの場合には、終了タグは記述しないとあります。
しかし、PHP公式ドキュメントにはファイルのインクルードに関して、「ファイルが読み込まれるときには、読み込まれるファイルの先頭で PHPモードを抜けてHTMLモードになり、最後に再びPHPモードに戻ります。 このため、読み込むファイル中のPHPコードとして実行する必要がある コードは、 有効なPHPの開始タグおよび終了タグで括る必要があります。」(http://jp.php.net/manual/ja/function.include.php)とありますし、公式ドキュメントの参考コードも開始タグ・終了タグ共に記述されております。

ZENDの規約にあるように、終了タグ後の空白が出力に影響する場合もあるのは分かりますが、現状のコードでも動作に不具合はないと思われますので、現状では、公式ドキュメントに則り終了タグを記述しておきたいと考えております。
会員
登録者: 11 2010
返信数: 4
お世話になります。
exceptionCatcherです。
ライセンスですが、PDFファイルの62~63ページを補足します。

(1)Smarty本体そのものを改修した場合における、Smarty本体の開示義務

これは62ページの「改変部分のソース・コード開示が必要か」という列と思われます。
GNU LGPL(3行目)の箇所をみると○ですので、これは開示しなくてはなりません。

(2)Smarty本体そのものを改修した場合における、Smarty以外の開示義務

これは63ページの「改変して領布する場合のソフトウエア全体について,以下のことが可能か」
というカテゴリの「ソース・コードを非開示とする」という列と思われます。

GNU LGPL(3行目)の箇所をみると×ですので、これは開示しなくてはなりません。

(3)Smarty本体を改修しなかった場合における、Smarty以外の開示義務

これは63ページの「他のコードと組み合わせて領布する場合,他のコードについて以下のことが可能か」
というカテゴリの「ソース・コードを非開示とする」という列と思われます。
(「他のコード」というのが「Smarty以外のスクリプト」に該当するのではと私は考えています。)
GNU LGPL(3行目)の箇所をみると○ですので、この場合、開示しなくてもよい、
という結論に達した次第です。

なお*3は、Java等で「オープンソースのライブラリ」を修正せずにjarやwar等をビルドしたような場合
「オープンソースのライブラリ」以外の独自開発したJavaのソースは開示しなくてもよい、という意味だと思われます。

これはあくまでも私の解釈ですが、御参考までに。

それと終了タグ("?>")の規約、そこに記されていたんですね。
PHPを始めた頃、どこかで読んだ気がしたのですが思い出せず、
その後、Zendのサイトで終了タグの記述をみつけ、
Zendが言ってるんならそうなのか、と決め付けていました。
矛盾したままのファジーな仕様として、今後も残りそうですね

以上
会員
登録者: 10 2009
返信数: 6
住居: 大阪府
exceptionCatcher様

ライセンスに関する補足説明を確認致しました。
先般ご指摘頂いたガイドライン(http://www.meti.go.jp/kohosys/press/0004397/)を現在読み進めております。
ご指摘のように、Smatyを含むLGPLに関する私の理解が間違っていたと感じております。
上記のガイドラインを含めOSSに関するドキュメントなどを参照して、理解が深まった時にLGPLに関する記述を
加筆・修正して行こうと考えております。

そこで、取り急ぎSimpleTemplateドキュメントからLGPLに関する記述を削除致しました。

ご指摘ありがとうございました。大変勉強になりました。
会員
登録者: 11 2010
返信数: 4
【2011.10.14追記】

上記で紹介していた経済産業省のサイトがいつの間にか削除されていました。そのため、以下に以前経産省からダウンロードしたPDF資料をアップロードしておきました。
http://exceptioncatcher.seesaa.net/archives/20111014-1.html
« 最終編集者 exceptionCatcher 日時 2011 年 10 月 14 日(金) 19:01. »

ページ: 1

日本PHPユーザ会 掲示板 » PHP 5 » 軽量テンプレートエンジン

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています