【SmartyView】SmartyView1.2.0.7119/6311 For CakePHP1.2

 CakePHP1.2用SmartyViewの最新版を公開いたします。

 このViewを利用することで、SmartyテンプレートをCakePHPで利用することが出来ます。
 ご利用には別途Smartyテンプレートシステムを用意する必要があります。

 Bakeryにも1.2用SmartyViewが紹介されているのですが、CakePHP1.2.0.6311betaあたりから仕様の合わない部分や不具合等がいくつかありましたので、作り直して公開しております。基本的に、アーカイブを解凍していただき、そのままのディレクトリ構造をcakeシステムに適用していただければ動作すると思いますので、導入は簡単です。是非ご利用ください。

 詳しくは、アーカイブ中のreadmeをお読みください。

※RC1で大きな仕様変更があったため、こちらの仕様に合わせて修正したSmartyViewを以前のバージョンのCakePHPに適用することが出来ませんが、afterSmartyRenderコールバックが呼び出されない不具合がありましたので、以前のバージョンを修正したものも合わせて公開させていただきます。6311betaを引き続きお使いの方は、SmartyView1.2.0.6311版をお使いください。

ダウンロードはこちら

▼CakePHP1.2.0.7119 RC1向け
smartyview-1.2.0.7119.zip

▼CakePHP1.2.0.6311 beta向け
smartyview-1.2.0.6311.zip

CakePHP RC2/RC3をご利用の方は こちら をご利用ください。

SmartyView・Tplcutter等の今後のリリースについて

 えっと、毎日コンスタントにSmartyViewおよびTplcutter目当てで来訪していただいているようで、感謝しております。しかしながら、現状RC1向けにバージョンアップの発表が遅れてしまっていて、ご迷惑をおかけしているかもしれません。期待されている方には大変申し訳なく思っております。

 そこで、やっとなのですが、SmartyViewの方は、ようやく発表の目処が立ち、ソースの準備がようやく出来ました。本日中に発表できるかと思いますので、よろしくお願いいたします。

 お分かりかと思いますが一応書きますと、RC1からvendorおよびwebserviceの仕様変更がなされたため、現行SmartyViewは使用することが出来ません。使用するとその旨のエラーが出ます。ソースにそれほど違いはないのですが、念のためにRC1のview.phpから新たに作り直しました。
 また、beta向けの現行バージョンに大きなミスがあり、afterSmartyRender()コールバックが処理されない不具合があるため、現行バージョンからも修正を行いました。このため、今回のリリースで2バージョン公開いたします。beta版を既に組み込んでしまってバージョンアップがしにくい場合でも、修正バージョンが使えますのでご安心ください。

 また、Tplcutterの方ですが、いくつかの仕様変更と新機能の追加を予定しています。こちらの方のリリースは、申し訳ございませんが来週以降となります。ちなみに、現行バージョンをRC1内で問題なく使用できることを確認しております。もうしばらくお待ちください。
 ちなみに新バージョンでは、ドキュメントにも書きましたが拡張子をhtmlとして編集しやすくする改良と、忘れ去られていたelement用テンプレートの作成機能追加、その他諸々を予定しています。

 それから、少し先の話になりますが、以前からやろうとして放置していたblogシステムの方を着手する予定です。ただし、そのままblogツールを作っても面白くないので、システムを部品化して、必要な機能のみを導入できるような仕組みを企画中です。例えば、現行の(Cakeで作った)webサイトに、コメント機能だけ乗せるとか、そういった使い方が出来るものです。
 とりあえず、SmartyViewとTplcutterが落ち着いたらぼちぼち作り始める予定ですが、まあ予定は未定なので、生暖かく見守っていただけますと幸いです(^^;。

 あと、ECWorksのメインサイトも裏で用意していたりします。ダウンロードや技術情報などは、今後こちらの方でする予定でいますが…ちょっと停滞しています。すみません。まあこちらもなる早で頑張ります。

第3回CakePHP勉強会

CakePHPの勉強会がまたまた開催されます。

▼Event Entry::第3回CakePHP勉強会
http://events.php.gr.jp/event.php/event_show/45

受付開始から10分を待たずに、もう定員間近!
この記事が見られる頃には、もう締め切られてしまうと思いますけど(汗)。

ライトニングトーク募集とのことですが、Tplcutterとか、Silverlightネタとか、今なら準備できるかも。でも需要がないだろうなぁ……

CakePHPフォーラムを見ていて最近思うこと

 最近滞り気味のブログ更新ですが、仕事が忙しいのもあるのですが、CakePHPのバージョンが近々上がりそうなので、それを待っている状況です。特に、次のバージョンからwebservice関連が廃止されるようなので、SmartyViewもTplcutterも大幅な変更が予想されます。nightlyビルドから開発を進める方法もあるのですが、正式版が出てからの方が2度手間にならないと思うので…(^^; というわけで、もうしばらくお待ちいただけると。

 そんなわけで、つなぎではないのですが、少し思ったことを。

 CakePHPフォーラムの話なのですが、最近レベルの低い質問が多い気が。
 誰とは言いませんけど、少し考察したり、Cakeのソースを追ってみたり、はき出されたHTMLを観察したりすれば分かりそうな問題を、簡単に人に頼っている気がする。しかも、節操なく何度も何度も。それに該当する人に対して一度アドバイスをしたことがありますが、それに対するコメントから察するに、結果しか求めていないような素振りだったので、労力の無駄と思い、それ以降は無視することにしました。可哀想かもしれませんけど、その人のためにせっかく時間を割いて書いた情報を、ググって検索した情報程度に思われてもなんか癪なので。

 これらの人に限った話ではないですが、分からなかったら人に聞く…確かにそれが一番早いですが、もう少し人に頼らない方法で解決出来ないものか、と思います。基本的に人に聞くだけでは、自分のスキルは育たない。「何故そうなるのか?」を自分なりに導き出すことが、結果を知る以上に大事なことだと思います。問題に対しての結果を100%を知らなくても、「何故」の部分さえしっかり覚えていれば対処が出来るし、他の問題が出てきても、沢山の「何故」を覚えていれば、その組み合わせで解決の糸口を探すことが出来る場合もあるのです。

 私は、Cakeを使い始めてそんなに経ってはいませんが、大きな問題に直面することなく、なんとか使えています。今まで蓄積してきた「何故」のおかげで、大抵は問題が解決できるためです。

 一つアドバイスをするのなら、CakeはまがりなりにもPHPのプログラムな訳ですから、大抵はシステムのソースコードを読むことが一番早い問題解決になると思います。

 この「何故」の話は、話しだすと長くなるので今はこのくらいにしておきたいと思いますが、そのうちコラムにでもして書きたいと思います。

【CakePHP】アソシエーションの図解

すみません。最近とっても忙しくて、更新どころではありませんでした。

予定していた連載も出来る状態ではなかったため、フェードアウト気味でした。まだちょっと出来るような状況ではないため、こちらの方はもうしばらくお待ちください。
それから、SmartyViewのアップデートもしなければならないのですが、こちらもなかなかアーカイブを作る暇が無く(というか、こちらの方はただ単に面倒くさくてやっていないだけだと思う(大汗))、まだ更新していません。ごめんなさい。近日中には上げます。

さて、本題にはいりますが…
今更なんですが、業務としてCakeを使い始めています。
安定性重視で1.1でやっていくつもりでいたのですが、1.2でも問題がなさそうなので(PostgreSQLを扱うために、bdo_source.phpだけはアップデートしています)、こちらの方で開発しています。
また、デザイン等を考慮する必要もないため、勉強も兼ねてSmartyViewは使わず純正でやっています。

だいぶCakeのことが分かってきたのですが、「アソシエーション」の基本的なことがイマイチ理解できていなかったのですが、図を書いてようやく分かりました。つまりこういうことだったのですね!

hasOneとhasManyは単数か複数かの違い、belongsToはhasOneの逆方向の意味だというのは何となく分かっていたのですが、hasAndBelongsToManyの意味が理解できなかったんです。上図の例でいくと、BookmarkとKeywordだけで、両方向から複数のつながりを表すのかと思っていたのですが、bookmark_keywordsという別テーブルを作ってそれぞれのidを定義することで双方向で複数形を表すんですね。Cakeを使う前も、もちろんこういう考え方はしていましたが、Cakeではテーブルさえ用意すれば、特にモデルで定義する必要はなく、BookmarkにKeywordを、KeywordにBookmarkをhasAndBelongsToMany定義するだけで動かすことが出来る、ということなんですね。

今回の案件ではbookmark_keywordsにも意味を持たせたかったりとか、登録方法が若干特殊なため、hasManyを双方向でかけているのですが、通常時では楽できそうです。

あとはバリデーションがうまく使いこなせるようになりたいです。
なんか1.1とやり方が変わっているみたいで、随時バリデートをかけながら登録するのなら問題ないのですが、まとめてバリデートをかけて、全部問題ないことを確認してから登録するような仕組みには使えなくなってしまったようなので、今回はとりあえずControllerのなかでチェックしてしまっています。この辺は1.1の仕様に戻して欲しいなぁ…

AZASの会勉強会

以前の記事で書きましたが、ローカルな勉強会に参加しました。
AZASの会と命名されたそうで、私もメンバー入りさせていただきました。

勉強会の内容は、今回は私の方で提供させていただきまして、タイトルは「フレームワークのフレームワークを作ろう(α版)」。まあ簡単に内容解説しますと「CakePHPベースで自分の使いたい機能をあらかじめつっこんでおいて、それを流用しましょう」的な内容で、その「つっこむ機能」に、当方制作の「SmartyView」、そして「TinyMCE」「モバイル対応のコンポーネントおよびヘルパー」を例に挙げ、機能追加の方法を一通りなめた感じです。
「α版」という表記は何かといいますと、予定しています連載の中で、同様の解説を行うつもりだったため、その先行版という意味合いです。今回急いで資料を作成したため、勉強会の内容をそのままこちらに持ってくることが出来ないため、練り直したものを紹介させていただきますのでお楽しみに(?)。

終了後はそのまま食事会になり、麻布にある店(名前忘れました)で歓談。
半月後にまたやりましょうということで解散になりました。
CakePHP勉強会はいろいろと無理があった部分があったと思いますが、少人数だと緩やかに出来て良いですね。楽しかったです。

ちなみに解散後なんですが、メタボ対策の一環で渋谷まで歩いて帰ろうと思っていたのですが、何を血迷ったか道路標識の「←恵比寿300m」に惹かれ、方向転換。その300mは「恵比寿方向に行く道に出るまで300m」という意味合いだったらしく、渋谷を行って半分帰ってくるくらいの距離を歩きました(涙)。とにかく疲れた!

仕事の方の難所がクリア出来たっぽいので、来月あたりからCake関連を本格的にやっていけそうです。次の案件もCakeでやれそうですし。頑張っていきたいと思います。

CakePHP1.2.0.6311+PostgreSQLでの注意点

仕事が大変に忙しくて、連載どころではない状況です。
お楽しみにされている方はおそらくいないと思いますが(汗)、それでもやると言った以上まだ出来てない点については大変に申し訳ないと思っています。
とりあえず来週末までが山場です。それを超えればある程度余裕が出ると思いますので、ようやく始められるかな、といった感じです。なので、もうしばらくお待ちいただければ…

さて、そんな忙しい中、先日の「第二回CakePHP勉強会」でお知り合いになれた方が自社内で主催するCakePHPの勉強会にお誘いを受けまして現在楽しみにしています。予習をしていかないと落ちこぼれになりそうですので、現在慌ててやっているところですが、その際に一つ問題を解決しなければいけないところがありましたので、それをメモ書きしておきます。

先日の記事「CakePHP1.2+PostgreSQL8.3」で、問題なく動く事を書いてしまったのですが、実は注釈がありまして、「CakePHP1.2.0.6311には不具合があり、modelのfindは出来てもsave(更新)とdelが出来ない」のです。これはbdo_source.phpに不具合があり、発行するSQLがMySQLのみで有効な文法で出てくるためです。こちらにその情報がありますので、それに従いbdo_source.phpを入れ替えれば動作するようになります(ただし、findAll deleteAll(※) が効かないという報告があります。scaffoldを使う分には問題なさそうですが)。
まあ情報が出ていますので次のバージョンでは修正されそうですから、今回はファイルをそのまま入れ替えてしまいましたけど、一般的には新しいクラスでextendしてパッチを当てる方法もありかもしれません。cake領域に技術介入してしまうと、アップデートが大変になりますから…

※「findAll」ではなく「deleteAll」の間違いでした。訂正いたします。
※CakePHPのバージョン表記が間違っていました。正しくは1.2.0.6311です。

CakePHP勉強会に行ってきました

昨日開催されました「第2回CakePHP勉強会」に参加しました。

とにかく大人数で圧倒されっぱなしでしたが、大変に為になりました。
関係者・参加者の皆様、どうもありがとうございました。

さて、勉強会の内容での要点および感想を超簡単に書きますと…

■yando氏:「addons.mozilla.org@CakePHP」
 memcacheがかなり有効である。
 Smartyは前バージョンで使われていたが、現バージョンで削除された(高負荷では不利?)

■寺本氏&北村氏:「@ニフティトピックイット」
 短期間でのサイト構築ができた。
 規模が大きくなると、負荷対策への考慮が必要になる。

■すずき氏:「CakePHP Mail Conponent」
 日本語環境ではバグが多く現時点では実装に向かない。

■たぐち氏:「初心者がはまりやすいCakePHPのうっかりポイントまとめ」
 自分のつまづいた点と同じだったので共感できた。

■s-yo-ko氏: 「CakePHP+Oracle」
 PostgreSQLと同じくauto increment問題の解決をしなければならない。
 1.2では動作するが、最新版はdeleteが再度動かなくなっている。

■ttsuruoka氏:「あのオープンソースソフトウェアを CakePHP に移植する 」
 Railsからの移植は比較的簡単である。

という感じです。

全体的な感想としては、ちっと自分的に予習不足で勉強会に望んでしまったかなと後悔しています(汗)
全体的にある程度触っていないと辛い内容で、どちらかというと個人では扱わないような規模を対象とした開発をしている方には役に立つような内容が多かった印象でした。次回開催でネタが何になるかにもよりますが、それまでに精進しておかないと…

また、内容がかなり駆け足だったため、メモをとるので精一杯だった状況でした。出来れば手元に資料が欲しかったです(プリント代等の費用が発生しても構わないので)。時間も足りなかった印象で、平日開催の難しさも少し感じました。

懇親会でご挨拶できなかった方も大勢いまして、残念です。
次回も参加したいと思っておりますので、その際には是非よろしくお願いいたします。

CakePHP勉強会

本日20:30から開催とのことで、本日はウキウキ気分です(謎)。

今回初めてなので遠慮してしまったんですが、なんかLTネタ提供すれば良かったかな?
とりあえずってことならSmartyネタなんだけど…ちょっと開発中のサポートツールなんかとか。
次回もしそういう機会があるのなら、やっぱり連載ネタでしょうね。
その頃には良いところまで進んでいるか、完結しているかもしれませんし…いや、それはないかも(汗)。

というわけで、連載ネタは順調に遅れています(汗)。
しかも「第0回」でイントロダクション的な内容なのに…
なんというか、本編にいくまでの段取りがとてもいろいろあるため、なかなかまとめきれません。
しかも本業の方がテンパっちゃっている状況でもありまして(大汗)。
週末目処で頑張りますので、もうしばらくお待ちください。

あ、あと勉強会の様子もですね(笑)。

全然関係ないのですが、bakesaleを動かそうと思ったけどうまくいかなかった。
MySQLのSQLを無理矢理PostgreSQL用に書き換えてDBを作ったのだけど、それがまずいのかな?
でも、良く分からない403エラーが出ている(でもエラー画面があるはずなのにそれが呼ばれていない)っぽいので、リダイレクト関連かもしれない。
これがダメだったら自作かなーなんて思っていたりもします(涙)。
以上、ひとりごとでした。

第2回CakePHP勉強会

 CakePHPの勉強会(第二回)が受付されていましたので、全力で応募しました(笑)。前々から興味があって、ようやくその機会が訪れた訳ですが…間に合って良かった。瞬殺でしたね(^^;。

 いや実は、プログラム系で勉強会やセミナーなど、参加経験が全くないんですよ(大汗)。今までは書籍やマニュアル等で独学だったんですけど、CakePHPは学ぶところが多くありそうだし、とにかく早くマスターしたい。それから、今後おつきあいが長くなるでしょうから…まあそんなわけでちょっと冒険しました。

 開催内容については後日レポートさせていただきたいと思います。
 ご参加の皆さん、是非宜しくお願いいたします。