ダッシュボードからプラグインのインストールが可能に – CandyCane v0.8.5リリース
CandyCaneダウンロード
(ページ下部にZipとtar.gzの圧縮ファイルへのリンクがあります)
RedmineをPHPに移植したタスク管理システム、CandyCaneのバージョンが0.8.5になりました。一部で話題になったにゃーんダウンチャートを生んだプラグイン機構を改良し、プラグインのインストールとアンインストールがダッシュボードから出来るようになりました。またプラグインのひな形を生成するシェルコマンドも同梱され、プラグインの開発をすぐに始める事ができます。
今回は作例としてチケットに「イイね」の機能を付けるLike Itプラグインを作成してみました。CakePHPベースでの開発はやはり効率がよくかなり少ないコードの分量で機能を実装する事ができたと思います。このプラグインのデモ動画はこちらです。
プラグインのカタログはgist上で管理しています。みなさんが作成したプラグインもgithubで公開されていればカタログに追加する事でダッシュボードからの配布が可能になります。ガントチャートのような独立性の高い機能については是非ともプラグインとして実装された事例が出てくればと思います。また僕自身が公開しているプラグインもそうですが、ネタっぽいものでも作ってみると勉強になるのでCakePHPの学習題材としても良いのではと思います。
開発にかかった時間は25時間。また今回から@okonomiさんが送ってくださったプルリクエストも含まれています。
- Bug #207: Supporting plugin architecture. Part3
- Bug #208: Kindly notice mod_rewrite availability.
- Bug #209: list is broken on render if it has more than 3items.
- Bug #211: Plugin generation by console.
- Bug #214: 「トラッカー」画面でワークフロー未設定のエラーメッセージが表示されない
- Enhancement #185: “Like” feature for issue.
- Enhancement #210: Get plugin catalog from remote.
まだバグつぶしや実現できていない構想もありますが、プラグイン機構で自由に機能を追加しやすい土壌が整ってきました。機能だけでなくデザインなどについても自由に組み替えて利用できるようなシステムにしていければよいなと思います。インストールも簡単ですので、お時間のある方はインストールの上でいじってみたり、プラグインを作ってみて貰えれば大変嬉しいです。
最近の反響
2011年を振り返る(206投稿,176コミット,8プレゼンテーション)
12月 31, 2011 by yandod · Leave a Comment
激動の2011年が終っていきます。Nyan CatをBGMに今年の活動を振り返ってみようと思います。
ブログ記事
今年は新たに英語の情報を紹介するA-Listersというブログを立ち上げ、このブログと英語版のブログと併せてかなりたくさんのブログ記事を書いた一年になりました。それぞれのブログに投稿した記事数をせっかくなので数えてみます。
- A-Listers 119
- candycane development 47
- CandyCane yet another Redmine on CakePHP 5
- 個人の英語ブログ 35
合計で206本。こんなに書いたのは初めてです。ただ夏頃に体調を崩したのでここまで書くと健康を害するようなのであまりお勧めできません。
オープンソース活動
今年はCandyCaneに大きな手応えを感じる事が出来た一年でした。さまざまな国からプルリクエストや感想などが届きはじめ、業務で利用しているという話も多く聞きます。思い描いていた機能を実現するまで後少しなのでこのまま頑張って行きたいですね。また、「CandyCaneで起業すればいいじゃん」というアドバイスも国内外から受けています。これについても思案中です。
githubでのコミット数はcandycaneとにゃーんダウンチャートのリポジトリの合計で176コミットでした。どうしても私生活が忙しい時などは引っ張られてしまいますね。
candycane$ git shortlog -sn 43690c..06ed
118 Yusuke Ando
88 Graham Weldon
46 yandod
13 ha1t
3 elboletaire
3 Steve Grosbois
3 Michito Suzuki
2 Òscar Casajuana
1 hiromi2424
1 tomo
cc_nyancat$ git shortlog -sn
13 Yusuke Andoプレゼンテーション

プレゼンテーションの活動についてはCandyCaneの発表を中心に8回行いました。特に今年はイギリスで行われたCakeFestでの発表に採択されたおかげで初めて海外のイベントで発表する機会を得たのが良かったです。英語的には反省点はいくらでもありますが、発表した事によって世界中からフィードバックを得る事が出来たので成功したと思っています。とはいえもっとスムースに話せるようになりたいので英語の練習はまだまだ欠かせないです。
発表の後に得たフィードバックについては何本か記事を書いて多くの方に読んでもらえました。
CakeFest 2011に参加しました。
CandyCaneの発表で感じた発信と恩返しの大切さ
プログラマがコードを書き、公開する事の価値
とにかくアウトプットが大事
日本では震災の影響や海外進出が身近になったことでいろいろと日本のスタイルに対して物を言う空気が出来て来たように思います。自分自身も思う所はありますが、そういった事に対して議論をしているだけで労力を使うよりは自分が理想だと思う事を実行に移して、アウトプットを出して行く方が良いのではと思っています。
来年も引き続きアウトプットを意識して自分が良いと思った事を実行に移す一年にできればよいなと思います。
各地、各方面でお会いした皆様やオンラインでやりとりした皆様には大変お世話になりました。来年も宜しくお願い致します。
昨年の振り返り記事
2010年を振り返る
にゃーんダウンチャートが使えます – CandyCane v0.8.4
RedmineをPHPに移植したCandyCaneのv0.8.4をリリースしました。 このリリースによりさまざまなプラグインを開発できるようになりました。完全なプロダクトを作るというのはかなり難しい目標です。そこでプラグインシステムを用意して必要な人が自分の好きな機能を追加できるというのが望ましいと考えていました。CandyCaneのプラグインはCakePHPの流儀で作成する事ができ、これによりプラグインを作ってみる方が増えてくればよいなと思っています。ではプラグインの概要を見てみましょう。
CandyCaneのプラグインの基礎
CandyCaneのプラグインはCakePHPのプラグインです。. CakePHPのMVCをベースにしたコードを書く事でCandyCaneにプラグインとして追加できます。また追加のコードからCandyCaneのモデルやヘルパー、コンポーネントなどを呼び出す事が出来ます。例えばチケットのデータやプロジェクトのデータをモデルから取得できます。作成したページがCandyCaneとやり取りをする為のAPIも用意されています。これらのAPIはプラグインの内部のinit.phpから呼び出します。
画面上部のメニューへのページ追加
アプリケーション全体のレベルのページを追加したい場合は画面左上のメニューにリンクを追加する事になるでしょう。リンクを追加するにはMenuContainerオブジェクトをプラグインの中のinit.phpから使います。
$menuContainer = ClassRegistry::getObject('MenuContainer'); $menuContainer->addTopMenu( array( 'url' => '/cc_nyancat/nyan/index', 'class' => 'nyan-cat', 'caption' => 'Nyan Cat', 'logged' => false, 'admin' => false ) );
プロジェクトタブへのページ追加
CandyCaneの多くのページはプロジェクト以下の要素として動作します。このようなページを作成する場合はページをプロジェクトタブに追加することになります。その場合はMenuContainerクラスを使います。また現在のプロジェクトをURLから推定する為のルーティングの設定が必要です。
$menuContainer->addProjectMenu( 'nyancat', array( 'plugin' => 'cc_nyancat', 'controller' => 'cc_nyancat_chart', 'action' => 'index', 'class' => '', 'caption' => 'Nyan Down Chart', 'params' => 'project_id', '_allowed' => true // for bypassing permmission system. ) ); // make sure put new route setting which includes project_id App::import('Core','Router'); Router::connect('/projects/:project_id/nyanchart/:action', array( 'plugin' => 'cc_nyancat', 'controller' => 'cc_nyancat_chart' ));
ページ内の特定の場所へのHTML挿入
CandyCaneの既存のページに変更を加えたい場合、テンプレートの構造を元に変更を加えられます。HookContainerクラスのオブジェクトを使って任意のテンプレートをフックできます。テンプレートが分離されているポイントに対しては好きなテンプレートを追加できます。例えばこの場合はNyan Catがissues/relationsテンプレートの後に表示されます。
$hookContainer = ClassRegistry::getObject('HookContainer'); $hookContainer->registerElementHook( 'issues/relations', // target element name. '../../plugins/cc_nyancat/views/elements/nyancat', // additional template you want to inject. false // it should be true when you want to inject before the target template. );
プラグインのインストール
プラグインのインストールには手動の作業が必要ですが、近いうちに自動化する予定です。とはいえ手順はapp/pluginsの下にプラグインを展開するだけです。CandyCaneのプラグインは”cc_”で始まるディレクトリで作成され、CandyCaneは”app/plugins/cc_*”配下のinit.phpを探してプラグインをロードしています。
実際の例を見るにはcc_nyancat plugin のgithub上のコードを動かしてみてください。みなさんが実際にプラグインを作成して面白い使い方ができるようになることを楽しみしています。
おまけ:各界の反応
candycane v0.8.3 をリリースしました
12月 1, 2011 by yandod · Leave a Comment
RedmineをPHPに移植したチケット管理システム、CandyCaneのv0.8.3をリリースしました。今回のリリースではphpmatsuriでの成果とバグフィックスを含んでおり、これによりプラグインを用いてCandyCaneを拡張できるようになりました。
サンプルとしてNyan Catを表示するcc_nyancatプラグインを開発しました。このプラグインを導入するデモ動画があります。こちらの動画ではプラグインがサブディレクトリに配置するだけで有効になる様子をご覧になれます。
延べ作業時間は10時間、6のバグ修正と2つの機能追加です。
- Bug #65: チケットの移動時に関連削除処理でエラーがでる
- Bug #67: チケットを移動させると起票者が変わる
- Bug #75: ログインしていないのにニュースが編集できてしまう
- Bug #158: News module was spamed.
- Enhancement #159: Sending email on updating news.
- Bug #178: Users can’t Update issues
- Enhancement #186: Supporting plugin architecture. Part1
- Bug #190: Fix denial of permissions for users with permissions moving issues
イベントの開催などが一段落したので今後は開発に多くの時間を割けるようになりそうです。githubでのプルリクエストや実際に使ってみたなどのご報告も歓迎です。宜しくお願い致します。
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から引用しています。素晴らしい写真をありがとうございます!
プログラマがコードを書き、公開する事の価値
9月 26, 2011 by yandod · 2 Comments

年に一度のPHPの祭典、PHPMatsuriが10月15日から大阪で開催されます。PHPMatsuriはゲストによる講演と開発スペースでの開発大会(ハッカソン)を同時に行うというイベント形式でいわゆるカンファレンス、セミナーとは少し違っています。今回はイベントの開催に向けたリレーブログの先陣を切る形でハッカソンに参加すると事の価値を考えてみようと思います。
プログラミングはコードを書く事抜きには理解できない
プログラミングの世界では次から次へと新しいフレームワークやライブラリ、ツールなどが登場します。興味を持った技術についてWEBページや書籍を読んだりする事は新しい知識を入手する最初の方法です。しかし、本で読んだだけのプログラミング言語やフレームワークを「理解した」と言えるでしょうか?ポール・グラハムのエッセー「ハッカーと画家」にこんな一節があります。
作家や画家や建築家が、創りながら作品を理解してゆくのと同じで、 プログラマはプログラムを書きながら理解してゆくべきなんだ。
多くの場合は実際に書いてみると、自分が理解していなかった点がありうまくいかなかったり、手を動かしてみて初めて理解できたと実感した経験は誰でもあるのではないでしょうか。実際にプログラムを書くという行為は絶対に必要な要素と言って良いでしょう。ハッカソンにはその為の時間と場所があります。
コードを公開する事による効果は予測を越える

実際にコードを書く際にGoogleなどで色々検索するというのは普遍的なアプローチです。ちょっとしたオプション指定やエラーメッセージ、gitのコマンドの使い方などで毎回検索しているものが誰にでもありますよね。しかしそういった内容を自分自身が公開した回数は検索する回数よりもずっと少なかったり、あるいは0だったりしませんか?
コードを公開するというのは心理的に抵抗があるものです。汚いとか拙いという批判を受けたら困るとか、そもそも自分の書いた断片にそこまでの価値は無いだろう、もうすこし出来上がってからでいいだろうなんていう理由がすぐに出てきます。しかし実際の所コードを公開する際には規模や完成度は必須条件ではないはずです。僕自身もRedmineをPHPに移植したCandyCaneを公開する事でヨーロッパや南米といった予想もつかなかった所からの反応を得る事ができました。また逆に同じくRedmineを移植しようとして最初の画面だけで放置していたフランスの方を発見して協力して貰う事もできました。もし彼が作りかけのコードを公開してくれていなかったら、僕は彼を捜す事はできなかったですし、フランス語の翻訳が行われるのももっとずっと後になっていたと思います。
どんな小さな断片であってもコードを公開した効果はどこかで現れます。そしてそれはバタフライ効果のように自分の想像以上の形で返って来る事があります。
非日常に参加する事で自分のセンスを呼び起こす

プログラムを書いてみようと思ってもなかなか実行できないのが世の常です。またそもそも毎日業務で書いているとそれ以外の事をする余力が生まれてこないのも仕方ない事と言って良いでしょう。ですがハッカソンは非日常の世界です。(なのでジェダイの騎士も登場します)
その雰囲気は高校の文化祭の前夜のような不思議な連帯感と何があっても許されるような雰囲気、自分でも想像もしないような根気が生まれて来るそんな空間です。
また海外からのゲストと直接やりとりする事ができるというのも特別な出来事です。時間はたっぷりとありますし、動かそうとしているコードという題材もあってコミュニケーションは取りやすいです。海外ゲストでなくても気になっているプログラマーや技術があれば近くに陣取るだけで色々なインスピレーションが得られるでしょう。
PHPMatsuriの参加チケットはイベントの1週間前か、予定数に達した時点で販売を閉め切ります。特にこれまでハッカソンに参加した事が無い方にこの時間を経験してもらいたい!と思って準備を進めています。すでに予定数の3割くらいの参加者がチケットを購入していますので、ぜひとも参加を検討してみてください。お祭りの会場で待っています!
では明日のリレーブログ担当の@hidenorigotoさんにバトンをお渡しします。
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”に対してすごくいいねと反応を返し、面倒なプロジェクト運営やサーバー管理は全部、俺がやるから一緒にやろうと誘ったのがきっかけだったそうです。自分が良いなと思ったものに対してポジティブなフィードバックをしたり、ちょっとした協力をする事で何か大きな事が生まれていくと思うと、そういった日々の恩返しも大切だと感じました。
自分自身から発信する事の大切さ、恩返しの大切さはオープンソースを知っている者としてはけして目新しい事ではなく、元々分かっていた事でした。不思議ですがその知っていた事をとても新鮮かつ染み入るように実感する事が出来ました。今後も開発をがんばろうというやる気が湧きましたし、日頃目にしているサービスや記事、ソフトウェアに対してきちんと恩返しをしていこうと思います。
長文になりましたが、読んで頂いてありがとうございました。
検索機能を実装しました – 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が表示される























