Cucumberのfeatureファイルを編集支援するCoda2プラグインを作ってみました



 DLをお急ぎの方は →記事の末尾へどうぞ

愛用エディタ Coda2

viとEmacsが血で血を洗うバトルを繰り広げる中、へたれな自分はメモ帳やTextMateを使うことも多かったのですが、最近のお気に入りはCodaというエディタです。最近バージョン2がでました。

単にテキストを編集するエディタ機能に加えて、ファイラ・ターミナル・ファイル転送(FTPWebDAV等)・VCS(Subversionやgit等)・MySQLテーブル操作UIなどが組み込まれていて、どちらかというと統合開発環境(IDE)に近いと思います。

有料ではありますが、Eclipseのような重武装ではなく、サクサクっとwebページやrailsアプリを開発するときに重宝しています。

Cucumberのfeatureファイル

ところで、今月開発していたRailsアプリのテストを補充したく、Cucumberでフィーチャを記述しはじめました。Given-When-Thenでも構わないのですが、テストコードはわかりやすさが命かなと思うので日本語で書きはじめたものの...

 「ん〜〜イマイチわかりやすくない。」

理由を考えたのですが、普段シンタックスハイライトされたコードなどを見慣れている自分にとって、強調表示がないfeatureファイルは、構造を直感的に把握しにくかったようです。

加えて、私たち日本人はソースコードを書くときに「アルファベットや記号が並んでいる部分は制御用コード、日本語文字が並んでいるあたりはリテラル」と無意識に区別できる分、欧米の開発者より普段から「文字種による暗黙のシンタックスハイライト」の恩恵に浴しているように思います。

だからCucumberのfeatureファイルを日本語でかくと、制御用の記述と情報としての記述が混在してしまいわかりにくく感じたのかなと思いました。

Cucumber用のCoda2プラグインを作ってみる

ちょこっと探したところ、i18n対応のCoda2用のプラグイン(正式にはプラグインではなくモードというらしい)はまだないようでした。せっかく先日TDDBC大阪2.0にもいってきたことですし、見よう見まねで作ってみました。名前を「gherkin.mode」といいます。

ページ冒頭の写真は英語版のfeatureファイルを表示したシーンですが、次の写真のように日本語のほか、40の自然言語でかかれたfeatureファイルに対応しています。

シンタックスハイライトの他にも、入力補完や一発コメントアウトなどもつけておきました。
よろしければ使ってやってください。

なお、gherkinというのは、Cucumberのfeatureファイルで使われているDSLの名前です。Cucumber.modeという名前でもよかったのですが、せっかく作者の人がDSL自体に別の名前を付けているのですから、それを尊重しました。

gherkin.modeプラグインのダウンロードと導入

githubから、Coda2の所定のディレクトリにチェックアウトするだけです。

cd ~/Library/Application Support/Coda 2/Modes
git clone git://github.com/takaxi/gherkin.mode.git

さらなる詳細は、以下をどうぞ。

https://github.com/takaxi/gherkin.mode

正規表現まわりを少しやっつけ仕事してしまったので、もし変な挙動をしてたらpull requestを送って戴けると嬉しいです。

2012/06/25 ちょっぴり改訂

他のモード表記にあわせ、モード名をgherkinではなくGherkinのようにしました。