【CakePHP/Tplcutter】LTで紹介できなかった実演などを紹介したスライドを公開します(cakecon)

「CakePHPカンファレンス東京」のライトニングトークで、実演できなかった部分について、加筆してスライド化したものが出来ましたので公開いたします。とりあえずのTplcutterの便利な点が一通り分かるかと思いますので、是非ご覧ください。

ちょっと画面が小さいため、拡大できるバージョンを見た方が良いかもしれません。ちなみに下記URLでご覧いただけます。
http://www.slideboom.com/presentations/24747/Tplcutter%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E8%B6%85%E9%AB%98%E9%80%9F%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B5%E3%82%A4%E3%83%88%E9%96%8B%E7%99%BA%28%E4%BD%BF%E3%81%84%E6%96%B9%E7%B7%A8%29

もしよろしければご感想などいただければ。
ツッコミどころ満載だと思いますので。
そもそもこのボリュームをやるつもりだったのか? とか(激汗)。

【CakePHP/Tplcutter】カンファレンス中のスライド公開します(cakecon)

お待たせしました。
LT中で使いましたスライドを公開します。

なんと、未公開映像付きです(笑)。
というか、後半を表示できなかったんですよね。
それでははじまりはじまり…

こちらで見ていただくと、フルスクリーンになったりします。
http://www.slideboom.com/presentations/24080/Tplcutter%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E8%B6%85%E9%AB%98%E9%80%9F%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B5%E3%82%A4%E3%83%88%E9%96%8B%E7%99%BA 

詳細版スライドは、ちょっと調整した後にアップしてみます。

※言いたいことにそれほど差がなかったので、今回はやめることにしました。
後日新規で作ってみたいと思います。

【余談】
最初、フォントが崩れてしまい「こりゃ公開無理だ…(;-;)」と思っていました。
「フォントを埋め込む」でppt作っていないといけなかったんですね。
こういったことも今回初めてだったので、今回はとても勉強になりました。
今後も発表はやっていきたいですね。

【関連サイト】
http://conference.cakephp.jp/
http://events.php.gr.jp/events/show/55

【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を直接さらしても良いのですが、見ることが出来ない人もきっといるでしょうから。
全部の中身を分解するか、スライドを公開できる場所を借りるかのどちらかにしようとも考えています。
新原さんのサイトに、スライドが公開されているのを見たのですが、これにしてみようかな。

【CakePHP/Tplcutter】「CakePHPカンファレンス東京」が終わって(cakecon)

カンファレンスに参加された皆様、お疲れ様でした。
また、私のLTに耳を傾けていただきまして、ありがとうございました。

もう少しまともなスピーチがしたかったのですが、場慣れしていないというスキル不足と、あまりにもボリュームに対して時間がなさ過ぎた題材を選んだという点でとても反省しております。個人的に、出来は100点中10点です(大汗)。次回こういった機会がありましたら、100点を提供できるように頑張りたいと思います。

というわけで、私の発表しました「「Tplcutter」を用いた超高速ウェブサイト開発」について、補足事項というか、いいわけめいたものを書きつつ、他の方のスピーチに対して私の思いをつらつらと書いていきたいと思います。

まず、補足事項というか言い訳なのですが、実際に発表できた内容は用意していた20%ほどで、すべてを5分で語るのはとてもとても無理でした(大汗)。とりあえず、Tplcutterの優れている点を絞り込み、今回は一撃で空のサイトにビューを生成して放り込む部分をかろうじて実演をしたのですが、本当に実演したかったところは別のところにもありました。

カンファレンス終了後や、懇親会中で、予想以上に多くの方から「これはおもしろい・興味あるツールだ」とおっしゃっていただけました。皆さんに話を聞くと、おおむね同じような悩みを抱えていらっしゃっていて、つまるところ「デザイナーとのやりとりでアップデートが大変に楽になる(可能性を秘めている)」とのことでした。私の一番主張したかったところはここであり、実装よりはむしろ更新の部分でしたので、このような感想をいただけたということは、このツールの方向性は正しかったと胸をなで下ろしています。

特にびっくりしたのはCakePHPプロジェクトマネージャーのGarrett氏で、懇親会中、英訳した資料を渡すついでに少しだけお話しできたのですが、開口一番「Oh, Tplcutter! It is VERY COOL!!」とお言葉をいただけました。まさかこのような評価をしてくれるとは思っていませんでしたので、とてもとても光栄です。

実はGarrett氏と話す前に、今回は通訳を担当されていた、堂園さんにご挨拶させていただいたのですが、そのときも「いや、Garrettはかなりクールだといっていた」といわれてまして、何かの間違いだと思っていました。もともとTplcutterは、ホビーユース・大規模開発の方をターゲットとしていなくて、「実務でフレームワークを使って制作している中小向けのツール」のつもりだった…つまりメジャー路線ではないと思っていたのです。LTも「東大に記念受験する出来の悪い学生」のような気持ちで臨んでいたので、自分的にはウケが悪い筈だったのです。Garrett氏も、現在のフレームワーク、とりわけCakePHPの「高速開発」のコンセプト内で、ビューの実装に関する、何か「もや」のようなものを感じていたんでしょうかねぇ。

繰り返しになりますが、デモンストレーションがあまりにも未完成のため、100%の利点を伝えることが出来なかったのですが、機会ありましたら別の形で紹介できればと思っています。もしお望みでしたら、出張講演(???)等も全然OKですので(笑。

発表に使ったスライドは、後日アップさせていただきます。
また、更に詳細に書いたスライドもありますので、そちらもチェックの後にアップさせていただきます。

個人的には、全く笑いの取れなかった点も残念に思っています。
他の方は皆さん面白い話を織り交ぜられていましたが、私の方はもうそれどころではなく、時間内にデモまでいくのに精一杯で、終わってみたら超つまらない内容でした(大汗)。デモの中に笑いを用意していたのですが、完全に予定外でしたね(;^;)。

まあ、とりあえず一部の方ではありますがそれなりの評価をいただいて手応えもありましたので、今回に関してはこれで良しとしたいと思います。

さて、他の方のスピーチに私なりの思いを語ってみたいと思います。

【安藤さん;国内でのCakePHPの利用状況について】

スピーチ内で「高速開発フレームワーク」という、CakePHPのコンセプトを強調されていましたが、私もその考え方に乗っているクチでして実際その通りだと思っています。
また、「フレームワークは生産性と保守性の向上である」というのもその通りで、私もそれを切実に感じてフレームワークを検討し、現在に至ります。丁度1年前の話になります。

【岸田さん:Agileな開発現場での実践例】

「テストケース」の使い方についてご説明いただき「あとあと役立つ」的な説明をされていました。この「あとあと」の重要性というのは、開発内容でとても左右されるのではないかと思います。パッケージソフトや、業務ソフトなどについてはかなり重要だと思います。

ちなみに私はwebプログラミングを本職としたのは比較的に新しく、以前はゲームの開発をやっておりました(最初はプログラマーとしてでしたが、プランナーが本職でした)。当時はテストケースという考え方はなく、ひたすら「人の手によって発生した不具合」を集計し、反映させる作業を繰り返していました。ただ現在考えてみると、ゲームのようなコンテンツアプリは、かなりイレギュラーな場合の不具合が圧倒的に多く、今回のようなテストケースが仮に組み込めるにしても、本当に価値のあるデバッグは人の手によるものでしか分からない点があったりします。ゲームの話は結構極端かもしれませんが、インターフェース部分、とりわけフロントエンド開発では、ページ遷移などの影響でテストケースに支障が出る可能性が多分にあるのではないかと考えます。

極端な話、私は「いくらテストケースをしようが、人の手によるエラーのチェックは省くことが出来ない」と考えていて、このことはテストケースを含むデバッグプロセスを想定する上で念頭に置いた方がよいのではないかなと思います。

【Garrett氏招待講演】

CakePHP開発のテーマはとして「State of Nature(ありのままに出来る自由)」と「Social Contract(ルール作り)」他があるそうで、特に「ルール作りをすることで、(皆が)より自由な発想が出来る」という思想のようです。
つまり「面倒なところはプログラム任せ。自分はよりやらなければならないところに特化する」という私のテーマと合致しているところがあり、とても嬉しく思っています(そういえば岸田さんも同じようなことをスピーチ内でおっしゃっていましたね)。
Garrett氏の説明を受け、やっぱりCakeは全体のシステム(プログラム、というわけではなくて、プロジェクト全体の意味)が良くできているなと改めて思いました。

ちなみに、Cakeの未来としては、とりあえずRC4が出るそうです。また、近いうちに1.3が始まり、2.0でPHP5オンリー化を目指すそうです。
そして、チケットを出す際には「テストケースとパッチを一緒に上げる」を是非しましょう、とのことです(笑)。

【鶴岡さん:XoopsCubeなのにCakePHPを使う】

XoopsCubeは実は使ったことがなかったのですが、私も実は同じようなコンセプトのCMSを作り、それを現在も商売として運営していますので、「中小向けのCMS市場」というのは需要があることはよく分かります。ただ、実際に運営してみて思ったことは「HP作りたいけどやり方が分からない」という方の多くは「PCも分からない」というくらいのスキルギャップがあり、いくら便利なCMSを作っても使ってくれないという事を身にしみていたりします。つまり、サービス運営側がCMSを使うことは何ら問題がないのですが、エンドユーザに提供するまでをやってしまうとカオス入りしかねないと思っています。そういった意味で「中小の市場は、想像よりは意外に狭い、でもやり方次第で顧客を獲得できる可能性は高い」という感じですかね。

【青木さん:旅行代理店様向けチケット予約をCake+Ajaxで】

Ajaxは私も結構注目している技術で、それでいてなかなか難しい技術だったりすると思っています。あおきさんの目指した「ユーザインタフェースの向上」は代表的なAjaxの使用例なのですが、私はもう一つのテーマを最近追求していたりします。
じつは、最近「連想くん」を紹介させていただいているのですが、こちらもAjaxは当たり前のように使っているのですが、実はAjax化は苦肉の策だったんです。「連想くん」での採用理由は、なんと「不可分散(というか時間短縮)」で、クライアント側に処理を肩代わりしてもらうことで、サーバ側の硬直時間を作らない仕組みになっています。
少し奇妙に思われるかもしれないのですが、これはPHPがシングルタスクである点から由来しています。例えばGoogleやアマゾンへいくつかのリクエストを送るのですが、個数が増えると順番に実行していかなければなりませんので、終了するのに時間がかかってしまうのです。そこで、Ajaxで複数のリクエストを同時に発行し、効率よく結果が得られるようになっています。
連想くんの例はあくまでも一例なのですが、UIとしてのAjaxはもう過渡期かなと思いますが、そのほかの使い方も出来るのではないか、という可能性みたいなものを感じています。

【青木さん:連想検索】

実は、全く同じコンセプトが当方の「連想くん」だったりするのです。
ただし、連想くんの連想エンジンは、全く違うもので、青木さんのところはかなり本格的なアルゴリズムのもとで行っているようですが、当方のものはかなり「エセ」だったりします(^^;
これからは連想検索の時代だと思います。
「検索のコンシェルジュ」的な存在だと思います。
間違いなく、今後の主流になるのではないかと予感があります。
本当はちゃんとご挨拶して連想検索について熱く語りたかったのですが、タイムアウトでその夢は叶いませんでした(涙。

【梶原さん:CakePHPerのためのBDDのすすめ】

SpecというツールやBDDという技術は実はよく知らないのですが、こういった考え方は必要かなと思います。考え方のフレームワークを実現するツール、という印象を受けました。あまりにも知識がなさ過ぎてコメントが難しいのですが、今後勉強が必要と感じました。

以上、ざっと書かせていただきましたが、私はまだ小さなところでやっているなぁと感じました。
また機会がありましたら発言させていただきますが、この次はもっとホット&クールなネタを用意しないとですね。

長文失礼いたしました。
ごめんなさい、昨日今日ほとんど寝ていないので超眠いです。
今日のところはもう寝ます。

【追記】
ねねとまつさん(赤がすきさん)、捕捉ありがとうございます。
トラバ張っていただけているみたいなのですが、何故か管理画面上では出ているのに、公開画面に出てきてないのです(涙)すみません…出てきましたー
Tplcutter期待されていたそうで、大変に嬉しく思います。資料をなる早で公開させていただきます。

【追記2】
ご紹介いただいてありがとうございます。
以下Tplcutter関連のコメントを捕捉です。

creazy photograph :  CakePHPカンファレンス東京:参加レポート
ラボブログ : CakePHP カンファレンス東京で「フェイス女学園」が紹介されました!
看招 血染東方一片紅 : CakePHPカンファレンス東京に行ってきた
本を読む : CakePHPカンファレンス東京」にオンライン参加
WEBで地域活性化~岐阜県中津川市加子母から発信☆WEBシステム屋の日記~ : CakePHPカンファレンス東京に行ってきましたよー
d.tosh10の日記 : 10/25 CakePHPカンファレンスに行って
パンプキンスパイスラテ : CakePHPカンファレンス東京にいってきた!
/halt/Snapshot : CakePHPカンファレンス 東京は最高のイベントでした
tdoiの日記 : CakePHP カンファレンス Tokyo
Think Twice : カンファレンス振り返り
わすれないように. : cakePHPカンファレンス@tokyo に参加してきた