こもろぐ @tenkoma

What We Find Changes Who We Become -- Peter Morville著『アンビエント・ファインダビリティ 』

広告:本ブログで紹介している書籍等商品の紹介でAmazonアソシエイトを利用していることがあります。

CakePHP+NetBeansでモデルやコンポーネントのコードを補完してくれるようにする

code template for CakePHP

NetBeans6.9ではCakePHPに対応してくれなさそうなので涙目な感じです。

さて、CakePHPでモデルやコンポーネントのメソッド名などを補完するための方法がhttp://www.tiplite.com/cakephp-support-in-netbeans/に載っていました。でも、いちいち書くのはめんどくさいですよね。
コードテンプレートで省力化できないかな、と思いました。→できました!

このコードテンプレートを使うことの効能(追記)

以下のような補完を実現するためのコードを楽に書けます。


次のようなコードテンプレートを追加します

varm

/** @var ${Model} */
    var $$${Model};

これをNetBeansの環境設定→エディタ→コードテンプレートで、PHPを選び、新規→省略名は「varm」で保存しましょう。
同じウインドウに「テンプレートを展開」するためのショートカットキーが載っていますので、Shift+tabであればコントローラで

varm[Shift+Tab]

とタイプすれば次のようにコードが生成されます。

    /** @var Model */
    var $Model;

次にモデル名の部分にフォーカスがあたっているので、これを実際のモデル名に書き換えます。

    /** @var User */
    var $User;

一つ目を書き換えたらEnterを押します。
実際のスクリーンショットなら

ここで[Shift+Tab]

モデル名を書き換えて

Enterで確定です。

同様にしてコンポーネントのためのコードテンプレートも作れます。

varcomp

/** @var ${ComponentName}Component */
var $$${ComponentName};

varh

ヘルパーは変数名をlowerCamelにする必要があるので…

/* @var $$${$helperName} ${HelperName}Helper */

これはあまりショートカットできてませんね。htmlと入力したら次のところはHtmlと補完されるとうれしいのですが。

まとめ

問題は今回生成したコードは、CakePHPアプリケーションの実行にはまったく不要だってことです。

環境変数いじらなくても日本語文字が pbcopy でコピーできてる?

まずは環境について

まだ Snow Leopard がリリースされる前にはpbcopyで日本語もコピーできるようにする - はてブロ@ama-chといった問題があったらしいです。
その問題を回避すべく .zshenv に設定してみたのですが、記事公開から時間経ってるし、設定しなかったらどうなるんだろ?って思って試してみました。

% echo $__CF_USER_TEXT_ENCODING
0x1F5:1:14
% echo 'hogeほげ' | pbcopy
% pbpaste
hogeほげ

他のところに Command+V でもペーストできました。
前にこのトラブルに遭ったことがないのでこの実証であってるかわかりません。
Snow Leopard なら pbcopy で日本語文字をコピーするために環境変数をいじらなくてもよくなったのではないか?と思ったのでエントリーを書いてみました。
詳しい人教えて!

TDD Boot Camp参加レポ

年末の話をいまさら書きます!

2009年12月19日にTDD Boot Campという、テスト駆動開発をワークショップ形式で体験するイベントに参加してきました。

まず、xUnit Test Patterns読書会でいつもお世話になっている和田さん(id:t-wada)からTDDの意味、回転、価値などについて説明がありました。
実際に聴いてみないと、わからないと思いますが、ネットで見られる資料を見るだけでも堅苦しいセミナーではない雰囲気が伝わると思います。

次にTDDのエキスパートであるLasse Koskelaさん (Test Driven: Practical TDD and Acceptance TdDD for Java Developersの著者なのだそうです。)の講演がありました。
そのなかでWorking Effectively With Legacy Codeのレガシーコードに変更を加えるプロセスを紹介したあとで、TDDを利用して変更する実演もありました。(あのコードは一応レガシーっていう話だったと思います、たぶん)
講演には翻訳の方がいらっしゃいましたが、読書会に参加していて、だいたいの内容をつかんでいたおかげで、わかった部分も多かったです。まぁ、結構な部分がWEwLCの紹介でしたね。

午後からはお待ちかね参加者全員でTDDタイム。

使用言語にPHPがなかったので、JUnitを選択しましたが、おとなりのMacBook Airユーザの方が偶然にもPHPerであることがわかりました。
僕が普段PHPJavaScriptしか使わないので、言語自体に戸惑ったり、JUnit4の使い方で立ち止まる部分も多少ありました。でも、マルチスレッド化と1,2の機能をのぞいてなんとかTDDで実装できました。

イベントの最後に、グループごとに表彰されたひとに技術評論社さんから本をプレゼントするという企画が発表され、僕はそのグループ賞に選ばれました。選ばれた理由は「準備がよかった」(→Macで発表に必要なVGA変換ケーブルを2個用意していて、たくさん貸し出したことが評価されましたw )というものでしたが。

一週間前にその本を江端さんから贈って頂きました。江端さん、技術評論社さん、ありがとうございます!

江端さん、コーチのみなさま、参加者のみなさま、おつかれさまでした!

追伸

イベント内のワークショップではTDDのパートナーと話したり考えたりで帰宅後はとても疲れました。楽しかったんですけど。
次の日はxUnit Test Patterns読書会がありましたが、そのなかの7人はTDD Boot Campの参加者か主催者みたいな感じでした。TDD Boot Camp参加者のみなさんもそうでない方も、xUnit Test Patterns読書会よろしくお願いします→第9回 xUnit Test Patterns読書会 : ATND