NetBeansは人気が高く、高機能なJava IDEとして知られています。2000年に、Sun Microsystemsによってオープンソース化されました。ユーザコミュニティは着々と成長し、現在では、IDEの分野ではメジャーなものの一つだと考えられます。2007年NetBeansは、Rubyを含むJava以外の言語をサポートする機能の追加に着手しました。
このシリーズでは、NetBeansがRuby開発者の人生を楽にする様々な方法、そして他のIDEでは利用できないいくつかの機能を目にすることができるでしょう。また、Ruby tooling プロジェクトの背景もお話し、細かいけど気の利いた機能の利用法、IDEの設定方法、そしてプロジェクトへの貢献を行うにはどうしたらよいか、と言った情報を提供します。
なぜSunはRubyに投資するのか?
Sun MicrosystemsがRubyのツールに莫大な投資を行うのは驚きではないでしょうか。結局のところ、Rubyは言語としてはJavaと競合するのですから。Sunの動機を理解するためには、Javaをプラットフォームだと見なす必要があります。Javaは単なるプログラミング言語というだけではなく、仮想マシンとAPIのセットでもあるのです。現在では過去とは異なり、Java仮想マシン (JVM) は多くの異なる言語をサポートしています。JVMはもはやJavaだけのものではないというのは、SunがJDK 6にRhino JavaScriptインタープリタを同梱したと言う事実からもはっきりしています。
Sun は、動的言語の価値を理解しています - Java言語は依然として、大規模なエンタープライズアプリケーションにとっては最適ですが、Rubyのような動的言語は、たとえばプロトタイピングや Web開発、様々なアプリケーションを結合する、といった特定の分野においては非常に生産的です。2006年Sunは、Javaプラットフォームに Rubyを統合するための更なる手段を検討するため、JRubyプロジェクトのメイン開発者であるThomas EneboとCharles Oliver Nutterを雇用しました (JRubyはJavaのみで書かれたRubyの実装です)。JRubyプロジェクトは、2007年6月にバージョン1.0がリリースされたことで重要なマイルストーンに到達しました。
JRuby を使用すると、Java APIへのアクセスやデプロイメントの容易さなど、開発者はJavaプラットフォームが持つ多くの利点を得ることができます。Javaプラットフォームは現在非常に多くのライブラリを提供しています (そのほとんどはオープンソースです)。そのためRuby開発者は、JRubyの上でRubyコードを走らせることにより、こうしたライブラリにアクセスして役立てることができます。JRubyは以前はRubyが使われることはなかったであろう場所に、Ruby言語を持ち込むことができます。今まで、 Rubyがメインフレーム上で動くなんて考えたことがありますか?JRubyなら、それを可能にします。Javaプラットフォームは、エンタープライズアプリケーションにおけるスケーラビリティ、セキュリティ、メンテナンス、デプロイメント、その他の問題に対する数多くのソリューションを持ち、もう一度言いますが、Ruby開発者はJRubyによってこうした利点を享受することができるのです。
Sun は常に、そのテクノロジーに関するツールをNetBeansを通じて提供してきました。JRubyも例外ではありません。しかし、もしあなたがRubyや Railsの開発者で、JRubyに対して全く興味を持っていなかったとしても、それでもNetBeansを使うことができます。NetBeansの Ruby IDEは、JRubyをデフォルトのランタイムとして搭載していますが、OptionsダイアログでJRubyをネイティブRubyに変更することができます - NetBeansに、Rubyをインストールした場所を指定する必要があるだけです。従ってNetBeansは、動的言語の分野を模索中のJava開発者と、Javaに全く興味がないRuby/Rails開発者の双方にとって興味深いものとなっています。
NetBeansのRubyサポートにおける3つの機能を紹介
NetBeansでRubyを開発する際、私が非常に便利だと思う3つの機能を見ていきましょう。
1. どこでもコード補完が行える
コード補完は文脈に依存したポップアップで、メソッド、クラス、モジュールのもっとも有力な候補を選択し、ユーザに提供します。これはエディタ上でCtrl- Spaceを押すことによって呼び出すことができます。コード補完はJava開発者にはよく知られ、愛されています - 近代的なJava IDEは全てこの機能を提供しています。しかしRuby言語は型の宣言を持たないので、Rubyにおけるすぐれたコード補完機能を作成するのは非常に難しいことなのです。従って、IDEは何がタイプされるかを経験則から推測し、その推測に基づいた選択肢をコード補完機能として提供しています。
コード補完は、あなたがタイプする毎に選択候補の数を減らし、あなたは単にEnterをたたくだけで、選択された候補を入力することができます。:
![](articles/netbeans-rubyide1/ja/resources/image1.jpg)
あなたは、各メソッドが属するモジュールと、メソッドが受け付けるパラメータを見ることができます。メソッド/クラス/モジュールの名前とパラメータを素早く入力できるというのは、コード補完機能があなたを助ける、数ある手段の中の一つでしかありません。またも非常に便利なのは、コード補完機能はクラス/メソッド/モジュール/キーワードなどのそれぞれに対し、ドキュメント (RubyDoc) を表示してくれると言うものです。
![](articles/netbeans-rubyide1/ja/resources/image2.jpg)
ドキュメントに簡単にアクセスできると言うのは、初心者や、他の言語からRubyに移行しようとしている開発者にとって特に便利です。あなたは、コード補完機能を使って、開発しながらAPIを学ぶと言うことができます。これは言語とそのAPIを学習する上で、前もって詳細を学習するよりも、より親しみやすい方法です。さらに、多くの開発者は学習する際に実際に経験してみることを好みますし、Rubyのクリーンな言語仕様とAPIはそれを易しく、楽しくしてくれることでしょう。
![](articles/netbeans-rubyide1/ja/resources/image3.jpg)
コード補完機能はまた、Require文をタイプするときにも役に立ちます。
![](articles/netbeans-rubyide1/ja/resources/image4.jpg)
NetBeansにおけるコード補完機能で、便利な機能の一つが、正規表現をサポートしていることです。あなたが、正規表現の構文的なオプションをすべて覚えている、という稀有な人間でなくとも、非常に手軽にそれを見つけることができます。:
![](articles/netbeans-rubyide1/ja/resources/image5.jpg)
同様に、$変数の意味や名前、%記号に続くエスケープコードを覚えきれないと言う場合でも、NetBeansはあなたの助けになります
![](articles/netbeans-rubyide1/ja/resources/image6.jpg)
![](articles/netbeans-rubyide1/ja/resources/image7.jpg)
基本的な機能のうちいくつかに絞って触れてきましたが、コード補完機能はあなたの人生を楽にする方法を他にもたくさん持っています。Ruby開発に NetBeansを使ったなら、Ctrl-Spaceがあなたにとってお気に入りのショートカットになる、と保証する理由を必ず理解できることでしょう。
2. グラフィカルなRubyデバッガ
ほとんどのJava開発者は、良いデバッガなしの人生など想像もできません。しかし、Rubyのデバッグは最近まで非常に難しいものでした。 NetBeansは、Javaのものに非常によく似た、Rubyに対するグラフィカルなデバッガを提供します。あなたはコードにブレークポイントを追加することができ、アプリケーションをデバッグモードで走らせれば、期待どおりに最初のブレークポイントで停止します。そしてあなたはローカル変数やグローバル変数と言った便利なビューを見ることができ、監視式を追加でき、コールスタックを見たりスレッドを切り替えたり、などもできます。コード中のどんな要素にマウスカーソルを当てても、その式が持つ現在の値が評価され、その結果をすぐに見ることができます。
上のスクリーンショットを見てもわかるとおり、RHTMLのデバッグもきちんとサポートされており、RHTMLページを簡単にステップ実行することができます。
3. Rubyのリファクタリングとクイックフィックス
現在まで、Rubyコードのリファクタリングはどちらかというと痛みを伴うものでした。もしメソッド名を変更したら、それを参照する全ての箇所でリネームを行う必要がありました。NetBeansではこのプロセスは自動化されているため、どんなメソッド/クラス/変数でもあなたのコード内で使われている個所を検索でき、要素名を変更するために「名前の変更」リファクタリングを呼び出す、と言ったことが可能です。これは、使用されている個所の検索を行うコマンドが出力した結果の例です。:
名称変更のリファクタリングでは、別のビュー内で参照箇所の全てを変更することができます。:
NetBeansにおけるRubyサポートの将来的なバージョンでは、メソッドの抽出やローカル変数の抽出などを含む、他のリファクタリングも利用できるようになるでしょう。
NetBeansは、コード内で変数が衝突しており、ユーザが意図したとおりにコードが動作しないかもしれない、という箇所を示すこともできます。NetBeansはコードを簡単に修正する方法として"クイックフィックス"を提供することができます。:
上のスクリーンショットでは、ブロック変数の名前がローカル変数の名前と同じであり、コード内で副作用を引き起こします。IDEは、この問題を解決するために変数名を変更するための選択肢を表示します。
もう一度言います。これらは、NetBeansがRuby開発者の人生をいかにしてより楽にするか、についての例をいくつか挙げたにすぎません。このシリーズの次回記事で、私はさらなる編集機能に焦点を当てるつもりです。
NetBeans Ruby IDEはどこで手に入るの?
NetBeansのRubyサポートを入手するにはいくつかの方法があります。一つの方法は、NetBeans 6.0のダウンロードページにアクセスして、Rubyサポートを含んだフルインストーラを入手する、というものです: http://dlc.sun.com/netbeans/download/6.0/milestones/latest
しかし、もしあなたがRuby IDEの最小バージョンをインストールしたいとお望みなら、デイリービルドをここから入手することができます。 http://deadlock.netbeans.org/hudson/job/ruby
Rubyモジュールを得る他の選択肢としては、基本のJava IDEをインストールして、IDEのプラグインマネージャを起動し (Tools | PluginManager)、ネットワーク越しにそのモジュールをダウンロードし、インストールします。
現在、NetBeansのRubyサポートはプレビュー版として利用できます。我々は多くの開発者が商用アプリケーションにおいて既に使用しているのを知っていますし、最終バージョンでフィックスされる予定のバグが存在していることも知っています。もしあなたがバグに遭遇したら、NetBeansの Issuezillaにファイルを送ってください: http://www.netbeans.org/kb/articles/issuezilla.html
さらなる情報
NetBeansのRubyサポートについては、そのWikiページ(サイト・英語)で、更なる情報を見つけることができます。
我々はまた、さまざまな新しい機能にハイライトしたいくつかのスクリーンキャストも撮っています。 http://www.netbeans.org/download/flash/jruby_on_rails/jruby_on_rails.html と http://www.netbeans.org/download/flash/jruby_editing/jruby_editing.html です。
その他のデモとチュートリアルは、メインのRubyドキュメントページ(サイト・英語)から利用できます。
このシリーズにおける以降の記事では、Rubyサポートのさらなる機能とその他のトピック、たとえばプロジェクトで使い始めるにはどうしたらいいか、将来的な計画などについて議論していきます。まずはNetBeansのRubyサポートを試して、確かめてください。もしあなたがRubyで多くの開発を行っているなら、NetBeansこそがあなたが探していたIDEだとお解りになるでしょう!
原文はこちらです:http://www.infoq.com/articles/netbeans-rubyide1
(このArticleは2007年10月17日に原文が掲載されました)