【Tplcutter】開発経過報告(その1)

Tplcutterは、とりあえず開発が進んでおります。
一応経過報告など。

開発バージョンは、繰り返しになりますが「革命」とありますように、機能的に大きな変更をしております。最初は従来バージョンをベースに開発していたのですが、せっかくなので「一から」作り直すことにしました。ソースコードははっきり言って別物になっていて、いくつかの技術は転用しますが、たとえばパース部分は新しいアルゴリズムで動いております。

そんなわけで、現在はメインシステムのコードはまだほとんど組み上がっていない状態で、主要技術のテストコード状態なのですが、パースについては動くものができあがりつつあります。現状仕様を満たしたタグをきっちり抜き出せるようになり、オプションパラメータも良好に得られるようになりました。
一番心配していた部分がうまく動くようになったので、とりあえず今回の目玉については満たせそうですが、次の課題は「抜き出したオプションを利用して加工する」部分になります。

コードを書いていく上で、いくつかさらに新機能を盛り込むことにしました。
まずは、値を定義できる「define」コマンドがあるのですが、これに「スコープ」を付けることにしました。現バージョンも「ピース」機能でdefineに相当する事が出来るのですが、ピースで定義したものは同app内ですべてのファイルに対して有効になっていて、局所的な指定が出来ませんでした。なので、スコープを付けてほかに影響しないような設定が出来るようにすれば、より解りやすいテンプレートが作れるのではないかと思います。現時点では「public(app内ですべてに有効)」「protected(ファイル内で有効)」「private(contentなどのブロック内で有効)」の3種類にしようかと考えています。app外オプションはちょっと危険だと思いますので、現在は考えないようにしていますが、技術的には出来ないことはないと思います。
それから「include」で外部ファイルの読み込みに対応。PHPコマンドを使っても同様の動きは出来ますが、こちらは「ファイル加工時に組み込みしてしまう」ため、生成物の実行時に無駄な処理ステップがなくなるメリットがある点、そして「デザイナ側でPHPを意識しないテンプレートが組める」当初のコンセプトに沿える点があります。
さらに、PHP変数挿入コマンドも追加します。これはSmartyの「{$hoge}」に相当するコマンドです。ぶっちゃけPHPタグで書けば全く不要なコマンドなのですが、これもデザイナー向けであることと可視化できることにメリットがあります。ボックス指定が可能で、ボックス内にダミー値を入れておくことで編集中のテストを容易にします。なお、Smartyのように条件分岐とか繰り返しとか欲しくなるかもしれませんが、今のところはそれ以上のPHPエイリアス系のコマンドは設けないつもりです(defineで工夫することで似たようなことは出来ると思います)。

最後に、これは別の意味で重要かもしれませんが、本バージョンを正式な「1.00」バージョンにしようかと考えています。あまりにも機能が変わってしまったため、既にマイナーチェンジの域を超えてしまったからです。そして、以前から思っていた「CakePHPだけでなく、あらゆるプラットホームでも使える」柔軟な設定が、本バージョンで満たせそうだからです。0.2.0でそれに近づいてはいましたが、現にWordPressでは「ヘッダ・フッタ」が切り出せないために使えなかったですし、まだまだ汎用ではありませんでした。まあ、まだ「システム固有の動作」に対応できる仕組みになっているか、検証が出来ていませんが、出来ていなかった場合を想定していくつかの対応も考えていますので、たぶん大丈夫だと思います。

そんなわけで、夢もふくらみつつあるTplcutterですが、開発自体は進んでいますので、気長にお待ちいただけると。公開は2月中をめどにしていますが、正直自信はないです。
また、今回は完成間近になりましたらβバージョンを公開して、正式リリース前に、皆さんに若干テストしていただきたいと思っています。その際には是非ご協力いただけますと幸いです。