PHPMatsuriの楽しさは参加者自身です
10月 19, 2011 by yandod · Leave a Comment
参加者の写真やブログも公開されてきてまだまだ熱気が醒めやらない感じですが今年のPHP Matsuriが無事に終りました。あまりにも多くの事が頭を巡っているのですが、特に大きいものをいくつかまとめて書こうと思います。
Epic Sax Guy

参加された方で来日したGarrettの人柄とEpic Sax Guyが印象に残っていない人は皆無なのではないでしょうか。強烈に明るくオープンでひょうきんな彼のキャラクターはハッカソンの空気を支配していましたね。前回はLithiumの機能についての評判を多く耳にしましたが、今回は逆にLithiumをGarrettの人柄の話題が食っていた気がします。最新のフレームワークの機能やツールは確かに魅力的ですがそれ以上に魅力的なのはその人自身なのではと彼に会ってから感じています。そして毎日数時間はEpic Sax Guyを聞いてしまうわけです。
言葉では伝わらない体験

今年は昨年よりもさらに増えて総勢で90名を越える規模でのハッカソンになりました。初めての参加者の方も居ましたが多くの方から聞いたのが「どういうイベントなのかよくわからなかった」というものです。2年連続の参加となるSioさんも誤解していたようにハッカソンとはどういう雰囲気なのかを言葉で伝えるのは難しい所があります。
朝のあいさつでも話しましたがPHPMatsuriはヤフーが開催しているOpen Hack Day(現在は Hack Uに改名された模様)をコピーしたイベントです。画像やビデオ、文章などのさまざまな手段では伝わらない楽しさを伝える為に自分たちで開催してしまおうと思ったのがきっかけです。
実際にスタッフの1人である@shin1x1さんも「2日目のデモ発表の時間になってみてこういうイベントだったのかとわかった」と言っていました。参加者のレポートから漂う謎の熱気を理解したい方は実際に参加する事が唯一の方法なのだと思います。
参加者の力

豪華ゲストによる講演や忍者軍団、スイーツ、ワークショップと企画が目白押しですが、PHPMatsuriの本当の目玉コンテンツは参加者の皆さん自身です。参加した方それぞれが感じた楽しさは参加者が実際に開発した発表した体験そのものが中心になっていると思います。参加したけれど発表をしなかった方が「次回は発表する」と強く思う人が多いのも周囲を見ていてそれを感じているからではないでしょうか。
今年も@sizuhikoさんをはじめとしたスタッフの献身的な努力で無事にイベントを終える事ができました。まだ余韻に浸っている段階ですが今後も参加者自身の活動が中心となるハッカソン形式のイベントをさらに幅を広げて行って行きたいと思います。
参加者の皆さん、スタッフの皆さんお疲れさまでした!
※写真は@koyhogeさんと@suzukiさんのFlickrから引用しています。素晴らしい写真をありがとうございます!
CandyCane v0.8.1 をリリースしました
9月 19, 2011 by yandod · Leave a Comment
v0.8.1ダウンロードページ
CakePHPで作られた第3のRedmine、CandyCaneのバージョンをv0.8.1のバージョンを打ちました。
ご存知の方もいると思いますが、github上でウォッチされたPHPのプロジェクトのランキングで4位にCandyCaneが入りました!(※ただし、1日限り)。前回のエントリで一連の流れについて書きましたが、CakeFestでの発表で認知度が高まった事が数字に現れたようです。またCakePHPのコアデベロッパのグラハムが開発に協力してくれているのでかなり開発速度が上がっています。
今回は世界中でインストールしてみた人が増えた事から得られたフィードバックを中心に修正しています。やはりインストーラーでWordPressのようにインストールできる点についてはうまくいっているようです。
また既存のRedmineのスキーマを流用する場合はRedmineのV0.8以降に行われたスキーマ変更に追従していない部分があることが分かっています。この部分のキャッチアップについてはスキーマを更新するMigrateをインストーラーに統合してからの対応になるでしょう。
延べ作業時間は16時間、11のバグ修正と1つの機能追加です。また次回のリリースからはPHP5向けにコードを記述していきます。困る人も殆どいないと思いますが、PHP4向けの修正が継続できるようにブランチだけは作っています。
- Bug #97: チケットの複数編集時に選択内容が保持されない
- Bug #103: チケットの状態を終了にした際に進捗率が100%になっていない
- Bug #114: 最近のプロジェクトにアーカイブされたプロジェクトが表示されている
- Bug #138: 複数のチケットを編集した際に履歴が1つしか作られていない
- Bug #153: 送信元メールアドレスとフッタの設定が機能していない
- Bug #154: 活動のアイテムの並び順が日付の降順になっていない
- Bug #160: 非公開プロジェクトのwikiがメンバー外から見える
- Bug #164: Search hits against wiki of pravate project for unlogged in user.
- Bug #166: (user/edit) don’t load user’s language
- Enhancement #167: (user/edit) Option without password
- Bug #168: Issue priority changes when adding update/comment to issue
- Bug #170: Emain wont be sent on bulk edit of issue.
日本のCakePHP使いが死力を尽くしたCandyCaneにブレイクの兆し
前回のエントリを書いてからまだ一週間も経っていませんが、CakePHP版RedmineのCandyCaneへの反響に驚いています。CakeFestでの発表の後に下記の反応を貰った事は前回触れましたが、その後も色々な反応がありました。
CakePHPのコアメンバーの1人である@predominantさんからの反応や、会場に来ていた@theMojoWillさん、配信を見ていた@sumardiさんからの反応は発表のあとすぐに届きました。
Really enjoying @yando‘s talk at #CakeFest on CandyCane. http://t.co/vT775re
@yando cool. thanks. watched ur presentation from Kuala Lumpur. great.
その後、数日たってNYにお住まいでCakeFestにもいつも来ている@savantさんが他にもRedmineを移植しようとしているフランスのユーザーがが居るのを発見したと教えてくれました。この@kwikyさんは勇敢にもフルスクラッチでRedmineを移植しようとしており、最初の画面が表示された所までで協力者を探しているようでした。
@yando Just saw this: http://t.co/TRkDOWi
このまま2つのPHP版Redmineが開発されていくのはあまりにも悲しいという事でさらに@phpMagpieさんが会話に参加。この方もイギリスの方でCakeFestの参加者です。
@yando would be much better for the guy to help out with CandyCane rather than going it alone … I’m sure he will when he realises
メッセージをkwikyさんに送ったところ、自分のプロジェクトを速攻で閉鎖し、すぐにCandyCaneにフランス語のロケールとフッターのコードの修正やスキーマのミスの修正を送って来てくれました。

会話に参加していた@phpMagpieさんもCandyCaneをインストールしてCSSのリンク切れを教えてくれました。
@yando I’m installing candycane, seems there are missing css files at first install page? admin.css 960.css reset.css
このあたりの状況を見ていた@itemanさんが「ブレイク」という言葉で祝福してくれました。ちなみに何ヶ月か前に徹夜のネットラジオでCandyCaneの今後の展開について語ったりもしたので、状況を分かって頂けたのかもしれません。
candycaneブレイクしていますね。おめでとうございます。
時を同じくしてバグ管理のプロジェクトにもインストール時に不具合に遭遇したという報告や、いくつかの挙動の報告をIgorさんがしてくれています。またインストール方法について案内した後にすばらしい一言をくれました。
“good job about porting Redmine to PHP. I was really looking for something like this.”
(Redmineの移植すごいですね。こういうのを探していたんです)
そしてその後、CakeDCでのCandyCane導入を考えているといっていた@predominantさんが本気を出して怒濤のリファクタリングを開始。一晩に33ものコミットを行って不具合の修正などをしてくれています。結果的にネットワークチャートがすごいことに。

また気づいていないうちにドイツの@meinnerdさんがRedmineを移植した上に結構できてるみたいで、こいつらおかしい!というお褒めの言葉をくれていました。
I think I’m losing it. Somebody actually ported Redmine to PHP. And even included all of the warts. This is insane! http://t.co/4XGJnPr
地道にインストーラーの国際化などをしておいたおかげか、ひとまず各所でインストールしてみる事は成功しているようです。最新のRedmineから移行するとスキーマーの違いでエラーになる部分があることも分かってきましたが、この辺りの対応はバグが落ち着いて来た所ですることになるでしょう。
また日本からもリアル案件でCandyCaneを使っている!という熱い情報がすでに寄せられています。
元々CandyCaneは当時東京に居たCakePHPユーザーが中心になって行った開発合宿の成果物ということで多くの人の手が入っているのですが、ここに来てコントリビューターのリストが一気に国際色を帯びました。日本でも有数のCakePHP使いの皆さんが死力を振り絞って作ったコードがこういう形で陽の目を見るのはとてもうれしいです。またその事を忘れない為にもフッターにはコントリビューター一覧へのリンクを付ける事にしました。
思えば2泊3日で睡眠時間が1日数時間という地獄のような合宿があってこそ。gitもそこで覚えた人もいたし。
すでに立ち上げからは2年が経過し、こんなに多くの人の手が入ったコードを扱っている事には我ながら驚いています。またフィードバックを受けながらソフトウェアが進化するというオープンソースの基本原理を実際に体験する事が出来てなんとも不思議な気持ちです。
日本に居なかったので日本の勉強会での発表やハッカソンなどは全くできていなかったのですが、協力して頂いた皆さんのコードや声を無駄にしないように気長に続けて行ければと思います。
さしあたってはバグの修正とプラグイン開発の土台作りまではこのまま走って行ければと思います。アジャイルの対応やSCMなどの連携はプラグインとして実装できるようにしておいて、各地のCake使いが作れるのが理想かなと思っていますので。
今後も宜しくお願いします。
CandyCaneの発表で感じた発信と恩返しの大切さ
9月 6, 2011 by yandod · 3 Comments
前回のポストで書いたようにイギリスのマンチェスターで開催されたCakePHPの公式イベント、CakeFestに参加してきました。今回はスピーカーとしてこれまで開発を続けて来たCakePHP版Redmine、CandyCaneについての発表を行い感じた事をまとめます。
発表までの経緯と内容
CandyCaneはRedmineをCakePHPに移植すればもっと使いやすい課題管理システムになるのではというアイデアからスタートしたオープンソースプロジェクトです。2009年の4月に行った開発合宿での成果を元に地道に開発を続け、現在は140ほどのページが動作しバグの管理ができる状態になっています。日本のCakePHPでは少しは知られているソフトウェアですが、日本のCakePHP以外のコミュニティや海外のコミュニティではあまり知られていない状態でした。
昨年のCakeFestにも応募したのですが、再挑戦した今年に公式カンファレンスでの機会を得る事ができました。
今回の発表では特に日本で人気が高いと思われるRedmineの紹介とCandyCaneの開発の経緯と実際にインストールして使用するデモという構成でした。
自分の考えを発信する事の大切さ

(会場内のバーでの交流の様子)
拙い英語による発表でしたが、発表後にはさまざまな反応を会場にいた人やオンラインで見ていた人達から貰う事ができました。またRedmineを実際に使っている人が参加者の3割くらいに達していたことも驚きでした。(すでにTracからは離れた人が予想よりも多かった)実際にもらった反応は下記のような感じです。
来場者のイングランドのWill Wilsonさん
「Redmineからの移行はどうすればいいのか?」という質問を貰い、その後レストランで話した所「Redmineいいなと思ったけれど、PHPで運用したい」というまさにCandyCaneを開発する前に僕が思った事と同じ反応。またプロジェクト作成からメンバーの追加などのステップが分かりにくい点を改善したい等、発表で重視して説明した内容について熱く語ってくれました。
CakePHPのコア開発者の1人でもあるGraham Weldonさん
「今後の開発予定は?」という質問と10月に大阪で行われるハッカソンでは「CandyCaneのCake2移行をやるよ」「CakeDCの内部で使っているRedmineをCandyCaneに変えたい」というこれもまた熱い反応を貰いました。
オンラインで発表を見ていたマレーシアの@sumarudiさん
最初は来場者の誰かなのかと思っていましたが、オンラインで見ていたという事でした。是非使ってみたいという反応を貰いました。
貰った反応はどれも自分がこれまでに感じた内容そのものだったり、「使ってみたい」という前向きな反応で本当に嬉しく感じました。日々の生活の中で感じた事や自分の為に手を動かした内容を発表したからこそこういった反応を得る事が出来たのだと思います。また特に反応をしなかった人からも「CandyCaneをやっている日本のyando」というキャラ認識を受け、コミュニケーションがしやすくなりました。ブログだったりプレゼンテーションだったり、プログラムだったり文章だったりと手段はさまざまですが自分自身が何かを発信したからこそこういった貴重な体験をする事が出来たのだと思います。日々の生活の中で継続的にアウトプットを行う事は簡単ではないですが、自分がどんな人間なのか、どんな事を考えているのかを発信する事の大切さをあらためて実感しました。
またインターネットというツールを使う事でプログラムそのものや英語のコンテンツは世界中に伝わります。今回もマレーシアやイングランドの人から反応が貰えるとは全く予想していませんでしたし、バングラディシュのFahadさんと2年越しくらいで初対面をした際にも「初めて会ったのに、そんな気がしない」なんて話していました。インターネットはやはりすごい。
恩返しの大切さ
(CakeFestのパーティの様子)
読み手やオープンソースの利用者として見た場合、自分が見たものや使ったものへ反響を返すという事も大きな意味があると思います。facebookが広まった事でついつい「イイネ」をクリックしたりリツイートする事で賛同の意思を伝える事が増えてきました。たしかにそういった反響もうれしいですが、それ以上に文章や直接の言葉で貰う反応はうれしいものです。そういった反響をくれた人の事は強く記憶に残りますし、がんばってアウトプットを続けようという大きなモチベーションになります。またオープンソースソフトウェアであれば実際にバグを修正したり、ドキュメントや記事を書くなどの方法もあります。
CakePHPも海兵隊から除隊された後にOSCommerceのカスタマイズなどをしていたphpnutがポーランド人のマイケルの作った”Cake”に対してすごくいいねと反応を返し、面倒なプロジェクト運営やサーバー管理は全部、俺がやるから一緒にやろうと誘ったのがきっかけだったそうです。自分が良いなと思ったものに対してポジティブなフィードバックをしたり、ちょっとした協力をする事で何か大きな事が生まれていくと思うと、そういった日々の恩返しも大切だと感じました。
自分自身から発信する事の大切さ、恩返しの大切さはオープンソースを知っている者としてはけして目新しい事ではなく、元々分かっていた事でした。不思議ですがその知っていた事をとても新鮮かつ染み入るように実感する事が出来ました。今後も開発をがんばろうというやる気が湧きましたし、日頃目にしているサービスや記事、ソフトウェアに対してきちんと恩返しをしていこうと思います。
長文になりましたが、読んで頂いてありがとうございました。
CakeFest 2011に参加しました。
9月 4, 2011 by yandod · 3 Comments
毎年恒例のCakePHP公式イベント、CakeFestに参加してきました。今回はスケジュールの都合で4日間のうちにごく一部だけ参加しました。ベルリン、シカゴ、マンチェスターと今回で3回目ですがアットホームな雰囲気でとても良かったです。
自分の発表の準備と時差ぼけで基調講演すら参加できませんでしたが、コアデベロッパーやパワーユーザの方々と有益な時間が過ごせました。下記は印象に残ったことのリストです。
- グラハムが猛烈なヒゲになった。
- ポーランドやスペイン、オランダ、スイスなど色々な国からの参加者。Cakeはこの多様性がすごい。
- phpnutのマリーンを除隊してからプログラミングを仕事にし、ポーランド人のマイケルの作ったRailsっぽいコードを見て感激し面倒ごとは引き受ける形でプロジェクトが始まった話。
- プロトタイプ版のMacBook Airを始めて目撃。
- CandyCaneの発表は聴衆は多く無かったけれどポジティブなフィードバックを何人かから貰えた。
- Redmineは二割くらいの人が使っていた。no more minor in Europe.
- グラハムがphpmatsuriのハッカソンでCandyCaneをCake2に載せ替えるハックをしてくれるらしい。
- 女性参加者はゼロなのでゲイバーにいったみたいです。
- マイクロソフトがスポンサーしたディナーにはDJが始まった来ていた。
- DJがビヨンセをかけたところ会場が一瞬で無人になった。
これなかったhiromi2424がいれば存在感を発揮できたのに。
続きは後で書く。
検索機能を実装しました – candycane v0.8.0
7月 5, 2011 by yandod · Leave a Comment
v0.8.0ダウンロードページ
CakePHPで作られた第3のRedmine、candycaneのバージョンをv0.8.0に更新しました。今回はインストーラーの国際化やチケットの関連付け機能の有効化、検索機能の最初の実装といった機能を盛り込みより実用性が向上しています。機能の実装に伴って判明した問題点などもありますが、まずは日常の利用をカバーする事を優先しています。特にインストーラーについては3分程度でインストール可能で、気に入らなければフォルダごと捨てられます。この点についてはRedmineと比較してもかなりスムーズな所かなと思っています。
なお先日のCakePHP2.0勉強会で発表した際にカウントしてみたところ現状で130を超えるアクションが実装されている事がわかりました。マニュアルの執筆をするのであれば当然この130のアクションに対してスクリーンショットの撮影や執筆が発生するとわかってしまい、戦慄しています。
View more presentations from yandod
延べ作業時間は52.50時間、4のバグ修正と5つの機能追加というのが作業の概要です。なんというか、1週間は僕はcandycaneの為に働いているようですね。正直に申しましてこれだけの作業時間を確保するのは健康に支障があるレベルですので、細かなバグ修正から機能の実装まで参加してもらえる方をお待ちしております。。。。
また検索の実装にはSearch Pluginを使っており、k1Lowさんの記事が大変参考になりました。ありとあらゆる検索機能を実装する方にこのプラグインをお勧めしますよ。
- 機能 #107: パスワードリマインダーが動かない
- 機能 #119: インストーラーが翻訳されていない
- 機能 #124: CI環境の構築
- バグ #139: 優先度による色分けができてない
- 機能 #140: チケットの関連付けができない
- 機能 #146: チケット検索ができない
- バグ #148: Xampp上でインストール実行後のWelcome画面がErrrorとなり表示されない。
- バグ #149: 添付ファイルが添付できない?
- バグ #150: 言語リストに余分なdefault.potが表示される
最初の一歩を踏み出しませんか?
6月 14, 2011 by yandod · Leave a Comment
CakePHPのイベントが2つ開催されますね。

まず1つは再来週に東京で開催されるCakePHP2.0 勉強会@Tokyo。こちらはCakePHP2のネタを中心に昼から夕方までということでがっつりと情報収集ができそうです。また懇親会は会場でそのままということで知り合い作りにもいい機会になるのではないでしょうか。東京のCakePHP勉強会は年に数回なので、今年もう一度開催されるかは微妙なところです。座席の空きがあるうちに予定をつけて参加申し込みをするといいと思います。
なお初めて参加する方はツイッターなどで気になっている人に先に連絡をとってみてとりあえずその人と話しにいくとか考えると気楽になりますよ。あとはLTに参加するのもいいと思います。

もう1つはCakePHPの公式カンファレンス、CakeFestです。僕も今年参加できれば3年連続の参加になりますがとてもアットホームな雰囲気で参加しやすいカンファレンスです。とくにCakeは英語ネイティブじゃない人の参加がけっこう多い印象もあり、英語が苦手でも気楽です。去年は市川さんが発表者として参加していましたね。
「海外のカンファレンスに参加するなんて、自分には無理だ」と思う人はぜひ市川さんのこの投稿を読んでみてください。
ただ、世界の壁は高いと思ってたけど、そんなに英語での発表は敷居が高くない。
発表するものがあるなら、それが旬のうちに発表したほうが良いです。チャンスはすぐに逃げていきます。発表者登録のサブミットボタンを押すのを躊躇することもありますが、最後は何も考えずに細かいことはいいんだよと思って、とりあえず押してみると世界が変わるかもしれません。その前に、この記事を読むことをオススメします。僕はこの記事に勇気付けられました。
市川さんの文章は海外のカンファレンスで発表するという事について書いていますが、参加するだけでも同じ事ですね。
「勉強会に初めて参加する」「初めて発表をしてみる」「初めて海外のカンファレンスに参加してみる」どれもやってみる前はとても重たく感じますが、実際やってみるとそんなに大変でもなく、それ以上の収穫が自分に残ります。そして市川さんも言っているとおりそれに挑戦できる瞬間というのは決して多くはありません。人それぞれ違うステップを目の前にしていると思いますが、ぜひ最初の一歩を踏み出してみましょう。不安があればツイッターなどで助けを求めればきっと助けてもらえるはずです。
追記:
自分でやるイベントを忘れていました。10月に大阪でPHPMatsuriというハッカソンをやります。ハッカソンというのは泊まり込みで開発した内容を翌日にLTのような形式で発表するというものです。こちらはまた改めて紹介します。
メールが送れるようになりました – CandyCane v0.7.1
5月 31, 2011 by yandod · 4 Comments
草葉の陰で粛々と開発中のcandycaneの更新情報です。
5月分の作業の目処がついたのでバージョンを打ちました。バグフィックス中心ですが、更新情報をメールで通知する機能を新規に実装しました。これは実際にイベントの運営管理でチームメンバーと課題を共有する必要があり、必要性に応じて実装を行いました。
元のRedmineの実装ではActionMailerを使っていたのでCakePHP用のActionMailerのコード例(by @felixge)を微妙に修正したものを取込んでいます。
メールが送信されるさまざまなイベントに送信のトリガーを仕込む必要がありますが、現在はチケットの新規登録と更新時のみメールが送信されるようになっています。
延べ作業時間は23.75時間、12のバグ修正と1つの機能追加というのが作業の概要です。
- バグ #99: ロードマップの件数をクリック後に検索条件が適用されていない
- バグ #106: ロールの編集ができない
- バグ #110: カスタムフィールドの登録が出来ない
- バグ #116: ロードマップに表示されるタイムトラッキングの情報が絞り込まれていない
- バグ #117: バージョン情報を更新後にリダイレクトしない
- バグ #118: 全ての活動からニュースをクリックするとエラー
- バグ #120: チケットのフィルタに対象バージョンがない
- バグ #121: Wikiに権限制限がかかっていない
- バグ #122: 変更履歴ページのバージョンがソートされていない
- バグ #123: 非公開のカスタムクエリが表示されない
- バグ #126: 活動のRSSが壊れている
- バグ #128: ユーザーのステータス変更ができない
- 機能 #127: 更新のメール通知
正直なところ1人で空いた時間に進めるにはこのくらいの作業量が限界かなと思います。(他にもブログを書いたりしているので)リファクタリングやバグつぶし、単体テストなどやりたい事はたくさんあるんですが、、、さてどうなりますか。コードをいじってみたい方はまずインストールしてみて、バグ探しや既知のバグの修正などをやってみてもらえるととても助かります。
マニュアルの作成なんかもやりたいんですが、orz。
あとメールの受信者を割り出す処理にバグがあって、テストサイトにアドレスを登録している方々にSPAMが送信されました。ご迷惑をおかけして申し訳ありません。
candycaneのユニットテストを復旧中
5月 14, 2011 by yandod · Leave a Comment
ユニットテストをそろそろ復旧させてCI環境に載せるべく作業。
テスト実行時に app配下ではなく、 cake配下の app_model.phpを読んでしまいエラーになっていた部分を対応。またfixtureの設定の漏れがあったのでそのあたりも修正。
さらにテーブル名がべた書きされていたケースがあったので設定に追随するように修正といった所。
テスト実行用の環境の作り方が何パターンかあるのでその全てをカバーするにはまだ調整が必要そう。ちなみにテスト環境の組み合わせは
- 動作用とは別のDB名+通常と同じテーブル名
- 動作用と同じDB名+プリフィクス付きのテーブル名
- 動作用と別のDB名+プリフィクス付きのテーブル名
いずれにせよ正しい方法でテーブル名を取得していれば問題ないのですが、ひとまず独自のメソッドがあるので底に寄せて行く予定です。なお開発合宿時は各自バラバラの設定で、PostgreSQLも使っていたくらいなのでわりかしどの環境でも動いていました。
candycaneバグ修正 #110
5月 12, 2011 by yandod · Leave a Comment
バグ #110 カスタムフィールドの登録が出来ない
カスタムフィールドが登録できないバグを治しました。修正は1行ですが原因の特定に2時間近く掛かりました。カスタムフィールドは表示順をpostionという項目で制御しており、管理画面の矢印をクリックすることでソートすることができます。この機能を実装しているのがlistビヘイビアで、このビヘイビアを実装すればどんなテーブルでもたちまち並び替えが出来るようになるというものです。このビヘイビアのbeforeSaveに問題がありました。(答えはコードの後にあるので、じっくり見てから読み進めても良いですよ)
1 2 3 4 5 6 7 8 9 10 11 12 | function beforeSave(&$Model) { $result = true; if(empty($Model->id)) { $position_column = $this->settings[$Model->alias]['column']; $conditions = $this->settings[$Model->alias]['scope']; $result = $Model->find('first', array('conditions'=>$conditions, 'order'=>"$position_column DESC")); if($result) { $Model->data[$Model->alias][$position_column] = $result[$Model->alias][$position_column] + 1; } } return $result; } |
さて、わかりましたか?
問題があったのは11行目。挿入しようとしたデータと同じpostionの行があった場合は番号をインクリメントするのですが、テーブルが空の場合などデータが無いと$resultがfalseになりbeforeSaveが異常終了してしまいます。なので修正はこれをtrueに変えただけです。モデルのコールバックやバリデーションを自作した場合は最後の戻り値に注意深くなければならないという事を再確認しました。
でもこれでチケットやプロジェクト、ユーザーに好きな項目を拡張する事ができるようになりましたね!

















