ぼくとわたしのCakePHP

CakeMatsuri2009CakeMatsuriリレーブログ第6弾ということで、kaz_29さんからバトンをいただきましたので、今回は私MASA-Pがちょろっと書かせていただきたいと思います。先の諸氏がとても素晴らしい記事を書かれていますのでプレッシャーかかっています(^^;。皆さんの満足いく記事になるかどうかは分かりませんが、ちょっと視点を変えたネタも織り交ぜていきたいと思います。

■CakePHPを使い始めた理由

私は初めてCakePHPに出会ったのは、約2年ほど前。1.2ベータ版が出始めた頃になります。おそらく青年団(といっても私は名ばかり参加ですが)の中では後発部隊です。PHP歴は結構古くて4.06ぐらいから使っていましたが、それまではピュアPHPメインで開発しており、オープンソースフレームワークにはあまり興味がなく、いわゆる「オレオレフレームワーク」をメインで使っていました。

CakePHPを使い始めた理由は大変に消極的なもので、結局はPHP4のサポート終了がきっかけです。勤務先ではPHP4ベースのオレオレフレームワークをメインで使っていましたが、未来がないことが分かったのでメンテナンスはやめて、なんか適当なフレームワークを使おうと思いました。正直開発の合間をぬってメンテナンスするのに疲れたので(^^;。でも、会社の事情があってPHP5なサーバを立てる予算がしばらく下りそうもなかったため、とりあえずPHP4で作っておいて、PHP5なサーバを立てた時にするっと移行出来るようなフレームワークじゃないと… ということで、ほぼ実質CakePHPしか選択肢がありませんでした(^^;。

他にも理由はありましたが、大変に長くなりますので こちらの記事 を参考にしてください。なれそめについて一応詳細に記してあります。

▼なぜCakePHPなのか?
http://blog.ecworks.jp/archives/5

また、CakePHPに対しての私の思いは、過去にこちらの記事に書かせていただいております。こちらも是非ご参考ください。

【戯れ言】あえてCakePHPをヨイショしてみる
http://blog.ecworks.jp/archives/654

■なぜ「Ktai Library」を開発・公開したのか?

皆さんが興味あるのはきっとこの辺でしょう。

実はKtai Libraryの前身は10年近く前から存在していまして、iモードやJskyなんかも出はじめちゃったりしたため、「じゃあ携帯サイトなんか作ってみたらどうだろうか?」ということで実験的に携帯サイトを作って運営し、その時に出来た副産物を流用しています。 この携帯サイト、今では大変に印象が悪いのですが、いわゆる「出会いサイト」を作りました(一応「系」ではないです)。サクラもいないとっても健全なサイトでした(^^;。個人でやっていた割に会員数もそこそこ集まり、一回登録した人とお会いしたことも(ぉ。
…と、余談はこれくらいにして、一応当時もPHPやperlで携帯サイトを作る本が発売し始めたりしていましたが、どれも「キャリアで振り分けて違うHTMLを表示する」というものでした(今でもそのように解説されている書籍はありますよね)。当初からこの手法は納得できなかったのです。「画像や絵文字は確かに違うけど、他はほとんど一緒じゃん」みたいな。
以来、少しずつライブラリを成長させ、今日に至る感じです。この成長させたものが現在の「lib3gk.php」です。

で、CakePHP向けにまとめたのは、CakePHPの勉強中に携帯案件が来たためで、ちょうど良いのでCakeで作ってみようと。はい、私も当時はバイブル的な存在であった「CakePHP(1.1)ガイドブック」を片手にやりました!(この本には大変に感謝しています)
でも、実際の携帯サイトとなるとこの本の内容では足りない。ページ制御はまあ良いとして、絵文字やら何やらはやはり携帯ライブラリじゃないと… というわけで、とりあえずコンポーネントとヘルパーを作ってライブラリを組み込み、案件をなんとかしのぎました。

しかし、案件が一段落して考える時間が出来たとき、ふと思ったんですよね。「Cakeで実用的な各キャリア対応携帯サイトを作る場合、他の人はどうしているんだろう?」と。
ググってみると、いくつか情報は出てきますが、みんな各種各様というか、それぞれが何かしらんを最初から作って使っているみたい。なんかそれは時間的にもったいないというのか、1つ標準的なライブラリがあれば、みんなそれを使って楽できるんじゃないか?と。出来るだけ簡単な導入で、余った時間に一杯でも多くコーヒーを飲んでもらえればと思い、とりあえずアーカイブ化して発表したのが今年の3月です。
細かくバージョンアップしてはいるものの、まだ満足いくライブラリにはなっていませんが、でも今でははてブでも100に迫るブックマーク数となり、今でも多くの方に注目されている点については嬉しく思っています。

■プロジェクトを公開するようになって変わったこと

私はCakePHP関連では3つのプロジェクトを公開しています。一つはPHP1.2用のSmartyView(こちらはkaz_29さんの方でプラグイン化をしているので、実質手を離れました)、一つは最近音沙汰のないTplcutter(大汗)、そしてKtai Libraryです。

今まで私は、プロジェクトを公開したことはなかったのですが、CakePHPを使ってなんとか過密している自分のタスクを乗り切れるようになったため、恩返しの意味も込めて公開しました。でもこの行為がとても自分の世界観を広げたというか、華麗なる一歩だったように思います。いろんな意見が寄せられてプロジェクト自身の精度が上がっていくというのもあるのですが、それ以上に、いろんな方とお話をする機会が増えました。そして、いろんな方と接していくうちに、「ああ、自分はまだまだなんだな」と。「公開=成果・終わり」ではなく「公開=始まり・勉強」じゃないかと最近よく思います。
そして自分の世界観をさらに変えた「イベントでの発表」も、プロジェクト公開をしなかったらなかったように思います。

■イベントで発表するようになって変わったこと

自分の最大の転機はやはり「CakePHPカンファレンス東京」で、TplcutterのLTをした時だと思います。この5分は自分の人生の何割かを確実に塗り替えたと思っています。
発表の出来は、表向きはおそらく歴代LTでも最低の部類でしょう。アンケート結果もとても痛かったです(笑)。でも、懇親会で色々な方に「自分にも覚えがある」「詳細に聞きたかった」「使ってみたい」と嬉しい感想が聞け、さらにプロジェクトマネージャー(もう「だった」になってしまいましたね)のgwoo氏に「クールだ」と言ってもらえてとても嬉しかったです(そして当時通訳していた堂園さんがこのことを教えてくれなかったら、gwoo氏と直接話そうと思わなかったです。大感謝です)。
私は人前で話すのが大変に苦手で、こういったことは出来るだけ避けて通りたい方でしたが、この日をきっかけに逆転しましたね。「伝えること」はとても楽しいです。そして伝えることでたくさんのリターンがあります。その中でも一番の収穫は、皆さんの反応を受け取ることで、自分自身もより成長できる点だと思います。

第4回の勉強会では、今度はLTではなく普通のセッションでKtai Libraryの話をしてほしいとyandodさんからオファーが来て、これまたどうしようという感じだったのですが、またとないチャンスだったので引き受けることに。前回のLTではいろいろなものを詰め込みすぎて結果早口になってしまい何が何だか分からない発表になっていたように思ったので、この点はまず改善しないとと思いがんばりましたが、やっぱり肩の力が入りすぎていて、つまらない発表だったように思います。伝えるということはとても難しい… でも、LTの時と違っているのは、この難しい部分が楽しくなってきたことですかね。そしてその後の懇親会では、LTの時以上にいろんな人とお話しする機会が得られました。

そして今回のCakeMatsuriでは、ワークショップのスピーカーとしての参加。Ktai Libraryの話を1時限まるまるすることになりました。今までの失敗を生かして、もう少しましな話が出来たらと思っています。大変に楽しみにしています。

■積極的に発信してみよう!

色々書いてしまいましたが、通して言いたいことは「自分から何かを発信すると、それ以上の体験が得られる」ということです。私の場合はプロジェクト公開とイベントでの発表で大きく世界観が変わりました(たぶん)。もし、なにか行き詰まりや限界を感じていたり、もっと違う世界を除いてみたかったりしたら、ただやるのではなく、それを誰かに見てもらう方が、何倍も効果があるのではないかと思います。そして、それが知識となるだけでなく、それ以上のいろいろなものも一緒にやってくると思います。
ちょっと余談なのですが、最近私はプログラミングの勉強はそっちのけで起業するための勉強をしているのですが、私がもっとも尊敬する起業家が書かれた本の中に「与えよ、さらば与えられん」という、聖書の一節をもじった文が紹介されているのですが、これは格言だなぁと思います。

また、ブログ等で文章として公開すること自体良いことだとは思いますが、声としてそれを生身の相手に伝えるのはそれ以上に効果があります。これは自分自身で体験したことなので間違いないと思います。どんなに些細なことでも構いませんから、是非LTで発表してみてはいかがでしょう? 幸いなことに、CakeMatsuriでまだ募集しているようです。今がチャンスですよ!(笑)

■そしてCakeMatsuriです!

今年もCakePHP最大のイベントがやってきます。「CakeMatsuri」が10/30, 31に開催されます。
今回はなんと2日間開催! しかもカンファレンスだけでなく、ワークショップも催されます。今までの勉強会はコースが1つしかありませんでしたが、今回は3つのコースから選択できますので、より自分の知りたい内容が選べて良いのではないかと思います。自分自身で体験しながら学べるのもワークショップならではですよね。
そしてカンファレンスの方も、今年もコアデベロッパーの方をお呼びしています。生の…いや、焼きたてほやほやのCake話が聞けると思いますので、参加して損はないと思います。
さらに、昼食やパーティが会場内で催されますので、今回のイベントはユーザー同士で話す機会が大変に多いと思います。「LTはまだ勇気が…」という方でも、いろいろな人とお話しすることで、いろんな事を得られると思いますので、大変に有意義なイベントになると思います。お時間あるようでしたら…いや、お時間作って是非是非ご参加を!

CakeMatsuri2009

次のリレーブログは、「CakePHPのおいしい食べ方」でおなじみの堂園さんです。どうぞお楽しみに!

【SmartyView】SmartyViewは「SmartyView plugin」に生まれ変わります!

cake-logo先日少し予告させていただきましたが、当ブログにて公開させていただいておりました「SmartyView」をプラグイン化したものをhithubにて公開させていただくことになりました。
また、今後は派生バージョンとして、DBを利用したバージョンのSmartyViewも公開される予定です。

SmartyView pluginでは、プラグイン化に加え、かねてから使いにくかった「配列の利用」について、標準でできるような関数が用意され、若干の機能強化が図られています。

kaz_29さんのご提案により、より良いプロジェクトとして生まれ変わったこと、大変にうれしく思います。私も修正等で引き続きメンテナンスさせていただくと思いますが、「SmartyView plugin」を是非ご愛顧いただけますと幸いです。

詳しくは、SmartyViewの紹介ページをご覧ください。

【CakePHP】いっぱいいっぱいなのでまとめ書き

cake-logoしばらく更新が止まってしまい申し訳ございません。
もういろいろといっぱいいっぱいで、全部処理が止まっています。
仕方がないのでまとめ書きを。

「第一回CakePHPオフ会」について

まず、今更になってしまいましたが、先日の「第一回CakePHPオフ会」ですが、大変に盛況でした。
当日のレポートを詳しく書かないといけないと思っているのですが、やっている暇が全くありません。
一応、会場の様子は画像に収めていますので、解説なしで公開いたします。
ご参加の皆さん、それからcakephperさんkaz_29さん、お疲れ様でした。

▼「第一回CakePHPオフ会」の様子
http://picasaweb.google.co.jp/ecwmasap/1CakePHP#

「すごいぞ!! Media Plugin」のスライド公開について

申し訳ございませんが、オフ会で発表しましたスライドも公開している暇がありません。
大した内容ではありませんのであまり期待はしないでもらいたいのですが、月末ぐらいに準備したいと思います。

「SmartyView」の新バージョンについて

それから、SmartyViewなのですが、新バージョンが出来ています。
公開したいのですが、上げている暇がないです。
また、kaz_29さんが「SmartyView plugin」「SmartyDBView plugin」なるものを準備しておりまして、今後こちらの方で公開させていただく予定です。一応窓口はgithubになる予定です。
たぶん近日中に準備が出来るんじゃないかと。
ちなみに、オーバーライド部分のソースを1.2.4に合わせただけで、Stable版ならどれでも動くと思います。

「Ktai Library」について

ちょっとまだ開発が止まっています。
バイナリ問題をなんとかしたいのと、携帯の新機種情報を加えたいのと、絵文字変換を強化したいのがあるのですが、ちょっと手つかずです。

ちなみに、携帯関連については、今後少し動きがある予定です。
今必死に、それに向けて作業しているのですが…
こちらの情報も、そのうちに。

その他

いくつか面白いTipsがあるのでまとめたいのですが、やっている暇がないです。
また、CakeSchemaは結構便利なので、そのまとめなんかもやりたいのですが…
ちょっと公開は後回しになります。

時間がない中で唯一やったのが、Amazon EC2のAPIが変わってしまうので、急いでWPプラグインを変更したことぐらいです(今頃)。本当は「連想くん」も変更しないといけないのですが、こちらはもうスルーします。

他にもいろいろと伝えたいことはあるのですが、本当に、いろいろごめんなさいです。

【KtaiLibrary】バージョン0.1.0公開!

icon_ktaiお待たせいたしました!
Ktai Library 0.1.0の公開を開始しました。
上記タブ「Ktai Library for CakePHP」からダウンロードできます。

繰り返しになりますが、構築済みサイトにKtai Libraryを適用する場合は、app_controllerを上書きしないように、特に気をつけてください。バックアップをとることをお薦めいたします。

今後のバージョンアップについてですが、現在 app_controllerに書いているリダイレクト対応を、将来的にはコンポーネント中で行うようにしたいと考えています。他の記事でも書いていますが、現在のCakePHPで実装されています「beforeRedirectコールバック」が想定していない実装になっているためで、チケットを投げている最中です(regenさんありがとうございます)。修正されたら、Ktai Libraryも修正を行い、さらに手間のかからない導入が出来るようにしたいと考えています。
機能的なバージョンアップは、後は細々としたものになりそうです。GPS対応とか、そういったものになりそうです。また、現在い携帯SCOについて勉強を始めたところでして(遅すぎ?)、そういったものも興味あります。もしアイデアなどありましたら是非お寄せください。

【追記】
ダウンロードページの0.1.0のファイルリンクが間違っていました。
0.0.2版がダウンロードされてしまった方は再度ダウンロードし直してください。
申し訳ございません。

【SmartyView】DB内のTplを読み込みSmartyに適用する方法を紹介されています

cake-logo下記ブログで、SmartyViewをベースに、DB中にあらかじめ格納したTplを読み込んでSmartyに適用する手法を紹介されています。

▼kaz_29@はてな:CakePHPでテンプレートにDBを使用する方法
http://d.hatena.ne.jp/kaz_29/20090428/1240929093

このアイデアは面白いですね!
例えば規模の大きなブログサービスとかを構築する場合、WEBサーバを複数台で並列させる場合を想定しなければならないと思いますが、DBで管理することで簡単にスケール変更が出来たりします。また、DBに任せてしまうことでファイル管理が不要になるので、プログラム側でのデータ管理は楽になりますね。
逆に、DBに置くことでアクセスが遅くなるデメリットは考えられますので、キャッシュの仕組みは必須かも。それさえ解決できれば、メリットは大きいのではないでしょうか?

私も今後、少し大きな規模の案件に着手しそうですので、大変に参考になりました。

【SmartyView】CakePHP1.2.2.8120版対応の件

cake-logoすっかり書き忘れていましたが、SmartyViewはCakePHP1.2.2.8120版にも対応しています。
ソースを見てもらうと分かるのですが、view.phpは中身が以前のものと全く同じです。

そういえば、最近の本家のTracを見ると、必死にバグつぶしをやっているように見受けられますので、近々バージョンが上がりそうな気配が。いや、まあ主観ですけどね。

【SmartyView】近日発売のCakePHP本に紹介されファイル添付されました!

41d6davhx3l__sl500_aa240_新たなCakePHP本が秀和システム様から近日刊行されます。
その中で、当サイトで紹介しておりますSmartyViewが取り上げられ、付録CDにアーカイブ一式(smartyview-1.2.1.8004.zip)が添付されることになりました。

【書名】
オープンソース徹底活用
CakePHPによるWebアプリケーション開発

【著者】
掌田 津耶乃

【出版社】
秀和システム

【店頭発売】
2009年3月14日

【書籍情報】
ISBN978-4-7980-2222-2 C3055
B5変型
448ページ
CD-ROM一枚添付

かる~くコラムも書かせていただきました。
秀和システム様、それから著者の掌田様、ありがとうございました。

ちなみに、内容はXAMPPベースで書かれているようで、今までのCake本には無かった環境での解説がされているようです。特に初めての方がローカル内で試してみたい場合にはもってこいの内容ではないかと思います。

【ご購入はこちらから(Amazon.co.jp)】

アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。

【お知らせ】あけましておめでとうございます

2008年はあっという間の一年でした。
でも、なんとか「CakePHPの情報を発信する」ことを継続できたこと、さらにSmartyView、そして現在一番力を入れているTplcutterを公開できたことを嬉しく思っています。
残念なことに、2009年は世界大不況の年となってしまうわけですが、そんな世界情勢に負けないよう、ECWorksはビッグに考えていきたいと思います。

まず、「革命」というテーマで現在開発をスタートしているTplcutter次バージョンを手始めにリリースし、懸念事項であった国際化も行っていきたいと考えています(元々はアプリ単体は(エセ)英語で出来ているので、ドキュメントさえ英語化できれば…)。

国際化については、Tplcutterに限らず、今後の情報発信でもチャレンジしていきたいと思います。そのために、現在英語を再勉強中です(大汗)。まだ一週間しか経っていませんので全然身についていない状況ですが、一年後に少しでも出来るようになってくれれば。その間に、何度かBakeryに投稿するのがとりあえずの目標ですね。
ちなみに、現在はCNNニュースをポッドキャストで入手したものを毎日聞いて耳を鍛え、英単語をとりあえず3000語レベルの1100語を毎日目を通し(暗記ではなく目で覚える)、Newsweek等の英語の活字を読む(意味が分からなくても文章を読む)ようにしています。書いて話す部分はとりあえず後回しなのですが、今のところ続いています。学生の頃は苦痛でしかなかった英語学習も、とても楽しくなってきました。

そして、国際化だけでなく、勉強会などでの発表も継続していきたいですね。先日のカンファレンスでは100%伝えきれなかったことが心残りでしたので、もう少し長いトークが出来たら是非やりたいです。

SmartyViewについては、CakePHPがstableになったので、1.2版については打ち止めにして、次期バージョンに向けての開発をしたいと思います。PHP5専用となるCakePHP2.0に対応したSmartyViewは勿論なのですが、Cakeは1.3版が予定されているらしいので、リリース次第ではそちらも対応を迫られるかもしれません。また、Smartyについてもバージョン3が予定されていますから、こちらの対応も考えないといけませんね。まあSmartyViewについては流動的になると思います。

あとは、最近WordPressの情報を書き始めたのですが、その辺の具体的なTipsについてもやっていきたいと思います。たぶんTplcutterとの複合技がメインになるかと思います。

更に…水面下では、更にビッグな目標を何点か掲げています。第一弾は暖かくなる頃の発表になるかとは思いますが、決まり次第お知らせいたします。

それでは、今年もどうぞECWorksをよろしくお願いいたします。