第1級の Ruby IDE のひとつが JetBrains 社の決断によって商品化された。バージョン 1.0 のリリースから6ヶ月を過ぎた今日,リリースされる RubyMine 2.0 がそれだ。
初回リリースの時,開発リーダの Dmitry Jemerov 氏から 将来の RubyMine リリース予定について話を聞いた。そこで氏が約束したとおり,RubyMine は Ruby 開発者のための確固たる開発環境として進化を続けている。
新機能の一覧は,RubyMine ウェブサイトの What's New のセクションで確認することができる。今回のリリースで重要な新機能は次のようなものだ。
• Ruby 1.9 と Ruby on Rails フレームワーク最新版をサポート
• Rails プロジェクトの特性に対応した,先進の Ruby コードのリファクタリング機能
• 改良された Ruby コード解析処理と新しいコード重複検出ルーチン
• コード入力アシスト機能を備えた Rails 国際化 (internationalizaion, i18n) サポート
• Cucumber テストシナリオと Shoulda テストの生成と実行に特化したアシスト機能
InfoQ では JetBrain 社のプロダクトマーケティングマネージャである Eugene Toporov 氏から,RubyMine 2.0 のリリースについて聞くことができた。
今回の 2.0 リリースにおける最大の機能は何か,という質問に対して,氏は詳しく説明してくれた。
基本的に私たちは,数多くの Rails アプリケーション開発者のニーズに応えることを目指して,RubyMine 2.0 の開発を続けてきました。今回のリリースによって私たちの IDE は,Ruby と Rails という,世界で最も使われている技術とフレームワークのための強力な統合環境になった,と考えています。
しかしここに到達するまでには,いろいろな試行錯誤がありました。JetBrains はリファクタリングツール開発におけるパイオニアです。ですから私たちは,信頼に値するコードリファクタリング機能を Ruby 開発者に提供したい,と願っていました。また開発プロセスにおいてテストは非常に重要な部分です。Cucumber と Shoulda の完全なサポートを追加したことで RubyMine は事実上,すべての Ruby/Rails プロジェクトの要求をカバーできるようになりました。同じように重要なのが IDE のパフォーマンスです。私たちはこの面でも大きな努力を払っています。
Cucumber と Shoulda は RubyMine の第1級市民になったようだ。そしてこれは JetBrains が今,非常に熱心に取り組んでいる課題のひとつでもある。
そのとおり! Cucumber にはとても感動しました。今では RubyMine チームも,コードテストに Cucumber を使っているくらいですから。私たち自身 RubyMine の Cucumber インテグレーションを使っているのですが,Cucumber のシナリオを編集実行するには最高のツールであると確信しています。スマート step 補完 (smart steps completion) 機能は step 定義の数が非常に多い場合でもすばらしい働きをします。定義の名前を正確に記憶する必要はなくなりました。そして step 定義を仕様から生成する機能,さらには example の自動生成機能のおかげで,作業時間を大幅に短縮することができます。
Shoulda が好みという方も,コードアシストやテストの個別実行,その他の結合テストフレームワークの持つ機能を利用しながら,RubyMine のテストフレームワーク上でテストを書いたり,実行したりすることができます。
実務プロジェクトで培われた i18n サポートの追加も,RubyMine の重要な新機能だ。氏はこれに関して,自身の利用経験を話してくれた。
i18n は私自身,気に入っているもののひとつです。この春 Radiant CMS のローカライズを担当したときには,IDE のアシストが何もありませんでした。そして最近になって,RubyMine 2.0 を利用した国際化 (i18n) 作業を何件か実施したのですが,その差の大きさといったら!Ruby や Rails ビュー (ERB または HAML) からの文字列の取り出しは,今となっては秒単位の作業です。エラーの割合も少なくなりました。ローカライズファイルを探すのも,コードが生成したテキスト内容の確認もたやすいものです。アプリケーションが何カ国語をサポートしていようが問題ではありません。本当に簡単になりました。
開発者の生産性は,今回のリリースの大きな課題である。この問題に対する説明は明確だ。
たくさんあります。コード重複検出ルーチンのように規模の大きなものも。コード重複検出ルーチンというのはプロジェクトコードを探索して,類似したコードブロックを検出する機能なのですが,私たちはこれをたくさんのオープンソース Ruby プロジェクトを対象にテストしています。Rails フレームワークのコードでも試しました。なかなか興味深い,役に立ちそうな結果が得られています。
開発者に喜んでもらえそうな,小さな改善もたくさんあります。"使用方法(usage)から生成" という操作などは,作業時間の短縮に必ず役立つと思っています。これは使用方法の定義からエレメントを生成する,というものです。まだ記述していないメソッドをコールするようなコードを書いて,quick-fix を使って即席に実装生成する,というように使えます。action, partial,そして JavaScrpt や CSS ファイルが新規作成できます。
新バージョンは最新の IntelliJ プラットフォーム上に構築されています。そのため RubyMine 1.x に比べると,VCS サポートや UI,ユーザビリティなどの面で IDE 由来の追加機能や改良をたくさん持っています。そのひとつの例が,ファイルとファイルセットのカスタムバックグラウンドカラーです。今回からエディットタブの show.html.erb ファイルが3つになって,どれがどれに対応するかを指定できるようになりました。
話題を Ruby 1.9.1 のサポートに代えよう。Ruby 2.0 でのサポート内容は,以前のリリースとどのように違うのだろうか。
RubyMine 1.x でターゲットSDKとして利用できるのは Ruby 1.9 のみでした。しかし新しい言語仕様に関しては,実は理解できていなかったのです。今回の RubyMine のエディタは,新しいラムダ書式やローカル変数セマンティックスなどの情報を持っていて,それらを理解します。これは単なるシンタックスのハイライト表示をはるかに越えるレベルのもので,その知識は現在,RubyMine のコード解析ルーチンの一部として使われています。
リファクタリングは以前から,JetBrain 製品の有名な機能である。2.0 でのリファクタリングのレベルはどれほどだろうか。
RubyMine 2.0 ではリファクタリングがいくつか追加されています。モジュール/スーパークラスの抽出,変数/定数/フィールドの挿入,インライン変数,メンバのプルアップ/プッシュダウン,などです。これらのリファクタリングはプロジェクト全体にわたる変更を行いますので,プロジェクトのコードを適切な形に保つにはこれで十分です。また,以前からあるメソッドのリネーム・抽出を行うリファクタリングはより賢く,使いやすく,そして Rails プロジェクトにも良好に動作するようになりました。
特に興味深く,重要な機能のひとつに TeamCity との統合がある。TeamCity は同社の継続的インテグレーション (continuous integration, CI) サーバの名称だ。Eugene氏は開発者のワークフローにおける CI サーバの位置付けについて,次のように説明している。
TeamCity Rake Runner を使えば Ruby/Rails プロジェクトの継続的インテグレーションのセットアップ,専用の環境でのプロジェクトテスト実行が可能になります。TeamCity プラグインをインストールした RubyMine では,ビルドサーバ上でのビルドの実行,ビルド結果と統計情報の確認,テスト済みコミット (pre-tested commits) の実行が IDE から行えます。さらにテスト結果や VCS ヒストリをブラウズ中の TeamCity の Web UI 上から RubyMine を起動して,ソースコードを直接オープンすることができます。
開発者は今後,RubyMine にどんなことを期待できるのだろうか。
将来の RubyMine バージョン については,すでに長期ロードマップを設定しています。2.0 のリリース後に日程の調整を行って,バージョンへの分割を行う予定です。近いうちに提供できそうな機能としては統合SQLコンソール,デプロイサポート,Rails でのデプロイ処理の改良などがあります。Rails 3.0 サポートも可能でしょう。JetBrains YouTrack などイシュートラッカとの統合も追加するつもりです。それからもちろん,既存の統合機能についての質的な向上も行っていきます。私たちは技術的に最先端であることを目指していますし,計画の実施にはトレンドやユーザの要望を反映していきたいと思っています。何かご希望のものがあれば — ぜひ 私たちに教えてください!
RubyMine の機能の全リスト,それに30日間フリーで使用できる評価版が JetBrains の Web サイト にある。また,RubyMine 1.x ユーザは 2.0 に無償でアップグレードできる。Windows,Mac OS,Linux で動作する RubyMine 2.0 は本日から入手可能だ。