BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース RubyとEclipse Monkeyを使用したIDEのスクリプト

RubyとEclipse Monkeyを使用したIDEのスクリプト

EclipseのようなIDEは、Smalltalk用のIDEから例えばインクリメンタル・コンパイルやローカルのバージョン管理等のアイデアを取り入れることによって、これまでに多くのユーザを獲得してきた。しかし、SmalltalkのIDEやEmacsのようなエディタが依然として勝る点が一つある。それはIDEそのものを自動化することである。言い換えるとIDEを使っている時に生じる退屈なタスクをスクリプトを使って自動化してしまうことである。SmalltalkユーザーがちょうどIDEオブジェクトにアクセスするためにSmalltalkを使用する所で、Emacsユーザーは同じことを行う為にLISPを使う。 そして、それらはインタラクティブ且つ実行時に行うことが出来る。

Eclipseは、Eclipse Monkeyプラグインを使って退屈なタスクを自動化出来るようになった。ところでEclipse Monkeyという名前だが、これはFirefoxのプラグインであるGreaseMonkeyに因んでつけられた。Eclipse Monkeyの最初のバージョンは、スクリプト言語としてJavaベースのJavaScriptであるRhinoを使っていたが、 Christopher Williams氏は、JavaScript同様にRuby(JRuby)もサポートしたことを最近アナウンスした(source)
もしあなたがEclipseMonkeyのことをよく知らないのであれば、それは、Eclipse用のプラグインのセットであり、これを使うとユーザは IDEと相互に情報をやりとりできたり、Java以外の言語を使用して、IDEのスクリプトを書く事が出来ます。(初期設定はJavaScriptです)そして、もっと詳しい情報を求めて、
http://www.eclipse.org/dash/monkey-help.php?key=writing
を覗き見したくなってしまうかもしれません。
EclipseMonkeyのRubyエクステンションを使用すると、RubyでIDEのスクリプトを書くことが出来るようになります。

EclipseMonkeyの最初のバージョンは、Editor DOMを公開しています。Editor DOMを使うと、エディタをスクリプトで操作出来るようになります。既にwikiにヘルプページを設けました。ヘルプページには、Eclipse Monkeyの詳細とEditor DOM APIに関するより多くの情報が掲載されています。またこの機能の使い方を示したスクリプトも掲載しました。
Eclipse Monkeyのデザインはシンプルである。理由は、このプロジェクトのクリエータとデザイナーの一人が、Ward Cunningham氏だからである。 Ward Cunningham氏は、幾つも業績があるが、なかでも1990年代にWikiを考えだした人として有名である。スクリプトは、プロジェクトのテキストファイルです。どんなメタデータでも、ファイルそのものに含まれます。メタデータは、スクリプトを実行する依存状態又はショートカットの宣言になりえます。これは、Eclipseでどんなイベントにでもスクリプトを接続するところまでは辿り着きます。例えばファイル変更、ファイル保存又はプログラムの起動などです。

以下はエディタでStringをSymbolに変換するEclipse Monkeyのサンプルスクリプトである (source)
=begin
 Menu: Ruby > String to Symbol
 Kudos: Christopher Williams
 Key: M1+Shift+;
 License: EPL 1.0
 DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.ruby
=end
 # もし現在のトークンが、alnumsを含んでいるstringなら、
 # stringをsymbolに変更して下さい。
 editor = $editors.get_active_editor
 selection = editor.selection_range
 selected_src = editor.source[selection]
 # 全ての選択が動的な内容を持たないstringであるならば、
 # stringをsymbolに変えてください。
 match = selected_src.match(/(['"])([_a-zA-Z][_\w]*)\1/)
 return if match.nil? || match.size != 3
 symbol = ":" + match[2]
 editor.apply_edit(selection.first, selection.size - 1, symbol)
Eclipse Monkeyの他の概念はDOMである。DOMと書くとHTMLやXMLのDOMと混同するかもしれないが、ここでのDOMはDomain Object Modelを表す。DOMは特定ドメイン向けの機能に対して、よりシンプルなインターフェースを提供するオブジェクトである。

例えば上のサンプルコードでは、$editors 変数はEditorsで行う全てを扱うDOMを指し示している。DOMは、EclipseのようなIDEのスクリプトを書くのを容易にするのに必要である。DOMを使わず直接Eclipseのオブジェクト、システムやAPIにアクセスすることは可能だが、スクリプトはより複雑になってしまうことが多い。このことは、Eclipseのデザインが非常に柔軟で、また、自身を拡張可能にしている複数の概念を持っている事実から生じている。しかし、このことは$editors.get_active_editorのようなコールが、単純な一回の呼び出し表現の代わりに2、3行のコードになってしまうことを意味している。

DOMsは普通のEclipseのプラグインである。それは拡張点のorg.eclipse.eclipsemonkey.domに貢献する。従って機能に簡略化されたインターフェースを書くことは非常に簡単である。理由はEclipseのPlugin Development Environment(PDE)が与えられているからである。Eclipse Monkeyのメタデータも、DOMs用のコンフィギュレーションマネージメントに役立つ。スクリプトのメタデータ部は必須のDOM(s)の最新版の場所を指定することができる。そして、スクリプトが実行されたら、それはシステムによって取得される。

Eclipse MonkeyスクリプトがEclipseのJVM上で動作するので、JavaのAPI全てとJRubyの標準的なライブラリの全てを利用するスクリプトを書くことも可能である。多くのEclipse Monkey DOMsは利用出来る。そしてEclipseやEclipseプラグインのエコシステムが提供する豊富なコードと機能へのアクセスを与える。

例えば、JMXを通してJVMの制御はJMX DOMで行われる(source)。これによって全てのJMXオペレーションをコールしたり、シンプルなスクリプトを持ったJMX属性への問い合わせが可能となる。これに対するアイデアは、Eclipseからアプリケーションを起動することになっていて、例えばログレベルや、ガベージコレクションを起動するなどの起動操作などの属性をセットする。他のDOMsは、CVS/SVN、Workspace、JDTより多くのEclipseプラグインへのアクセスを提供する。

更に多くのリソースが、AptanaのEclipse Monkey(サイト・英語)サイトまたはEclipse Monkeyサイトの公式ページ(サイト・英語)にある。

原文はこちらです:http://www.infoq.com/news/2007/10/ruby-eclipse-monkey

この記事に星をつける

おすすめ度
スタイル

BT