【Tplcutter】Tplcutterの今後とカンファレンス後での私の決意(cakecon)

昨日のカンファレンスであまりにも疲れてしまったため、カンファレンス関連のブログを物色しながらゆっくりしています。

昨晩ざっくりとカンファレンスの感想等を書いたのですが、肝心なことを書き忘れていたのでちょっと紹介したいと思います。

それは、Tplcutterの今後についてです。

現在バージョン0.2.0で、バージョンコードからも分かるように完成型の仕組みではありません。
自分自身、何処でバージョン1.0とするかはまだ決めかねているのですが、おそらく「全ての人がViewの高速実装に関して満足が得られるようになった」ときが1.0かな、と思っています。

前置きはこれくらいにして、とりあえず現在考えている「直近のバージョン」について、アイデアを書いてみたいと思います。

●(CakePHP)「プリフィックス」の対応
 CakePHPでは、以前に「webservice」という機能が搭載されていて、Tplcutterはこれに対応しているのですが、これが改新されて「プリフィックス」という機能に置き換わりました。プリフィックスに関するViewの実装はwebserviceと全く変わってしまったため、現在のTplcutterでは対応しておりません。
 とりあえずTplcutterは0.2.0で、「基本機能としてはまあおおむね使えるものになった」と思っているので、やっとプリフィックス対応に取りかかれるかな、という感じです。

●(CakePHP)img等のタグをhelperに置き換える?
現在のTplcutterでは、相対パスを絶対パスに置き換えることで、helperを用いないでビューが作れる、つまり可視性に優れている利点があります。ところが、この点が後に問題を引き起こす可能性があり、出来ることなら変換後はヘルパーに置き換わっていた方がよいのではないか、と考えています。それは「いずれ、Cakeの管理下にないパスが使えなくなってしまうのではないか」という点です。

実はあまりふれていないのですが、ベースパスが「/」である環境については全く問題なく動くのですが、たとえば「http://www.hoge.com/~user/cake/app/webroot/」なんかで運営されていて、ベースパスを「/cake/app/webroot/」なんかにしている場合、現在動かないのではないかと思います。何故なら、Tplcutterでこれを考慮していないからです。おそらくbasepathとかオプションを作って指定してやれば出来るようになるのではないかと思いますので次のバージョンではそうしようと思っていますが、これを超える考慮が必要になるときがいずれ来るのではないか、という予言めいた思いがあります。
Cakeに限らず、どのフレームワークにも言えることなんですが、この辺の制御を完璧にフレームワークに任せてしまった方が安心感があるんですね、当方としては(^^;;;。

 
ただ、これに関しては弊害もあって、結局パスをhelperにしても、helper内でまた同じURLに戻すわけで、オーバーヘッドを増やすだけのように思います。そんなわけで、現在心が揺れている状態です。

【追記】

一晩考えてみたのですが、やはりこれはそのままにしておいた方が良いと判断しました。
よくよく考えてみたら、全てのフレームワークについて考慮しなければならなくなりますし、それに「問題が起きたときにやればよい」わけで、先取りしすぎた機能かな、と。
オプションでそのようなものを作っても良いかもしれませんが、とりあえずやめておきます。

●layoutファイル生成の抑制と別名指定
現在の仕様では、layoutファイルは必ず作られ、またレイアウトファイル名はコントローラ名と同一で生成されます。この縛りをなくす仕組みを入れたいと考えています。

●定数の宣言と挿入
「ピース」機能で、指定ボックスを記憶して他のテンプレートに挿入できる機能を0.2.0で搭載したのですが、この技術を応用して、決められた値をあとでテンプレートに挿入できる機能を考えています。これはどう行った場所で使えるかというと、たとえばAmazonのアソシエーションIDを一カ所に指定しておくだけで全部を変換できるとか、URLがちょくちょく変わる状況で、一発変換させたいとか、そういった使い方が出来るような仕組みです。
こういったことはPHPのdefineで出来ますが、あくまでも設定するのは「デザイナー側」である点が考え方として異なります。また、defineすら呼び出さずにテキスト化されるため、オーバーヘッドになりません。

 
【追記】
 
●コマンドライン上の制御オプション(ある意味復活)
一時的に制御を変えたいようなオプションを、コマンドラインから与えられる仕組みはやはり必要とのことで、コマンドライン解析を復活させようと思っています。その理由は下記に。

●ファイルコピーの抑止オプション
●ファイルコピーの強制オプション
●テンプレート書き出しの抑止オプション
「画像だけ更新したい」「画像はそのままにしておきたい」「タイムスタンプが古くても上書きしたい」という場合の強制力オプションを付けようと思います。 

※上記の機能は「あくまでもアイデア」ですので、実際にこれらが次のバージョンがつくかどうかは分かりません。必要なものから順番にやっていくつもりではいます。

 

もし他に「こんなのが欲しい」というような要望がありましたら、是非お寄せください。
ちなみに次のバージョンがでるまでには時間が結構空くと思うので、ダウンロード控えはされない方が良いと思います(笑)。いまのTplcutterを是非ご活用いただければ!

 

それから、CakePHPプロジェクトマネージャーのGarrett氏と交流して、「やはり国際化は必要だ」と感じています。氏自身が最後に語ってくれたと思うのですが、「もっと英語で発信して欲しい。そうすればこのような素晴らしいアイデアが世界中の皆で活用できる」ということで、それについては私も実感しました。

ただ、私自身が英語が苦手であり、いつも翻訳ソフトに頼っているというのも事実でして…
Garrett氏にTplcutterのスライドの英訳を渡したのですが、中身は翻訳ソフトの成果みたいなものです。英語のテキストを打つ時間より、調べたり考えたりする時間の方が100倍は長かった気がします。この年になって恥ずかしいのですが、やはり英語をきちんと使えるようになりたい。そうすればもっといろんな人とディスカッションできるのに…と思います。

なので、今後の活動として「国際化」もテーマの一つに入れたいかなと思います。
ちなみに、カンファレンス後の帰路で本屋に立ち寄り、英語の本を物色していた恥ずかしい私です(^^;;;。

さいごに…
スライドの方はもう少しかかります。
提供方法をどうしようか悩んでいるからです。
pptを直接さらしても良いのですが、見ることが出来ない人もきっといるでしょうから。
全部の中身を分解するか、スライドを公開できる場所を借りるかのどちらかにしようとも考えています。
新原さんのサイトに、スライドが公開されているのを見たのですが、これにしてみようかな。