Eclipseは、Eclipse Monkeyプラグインを使って退屈なタスクを自動化出来るようになった。ところでEclipse Monkeyという名前だが、これはFirefoxのプラグインであるGreaseMonkeyに因んでつけられた。Eclipse Monkeyの最初のバージョンは、スクリプト言語としてJavaベースのJavaScriptであるRhinoを使っていたが、 Christopher Williams氏は、JavaScript同様にRuby(JRuby)もサポートしたことを最近アナウンスした(source)。
もしあなたがEclipseMonkeyのことをよく知らないのであれば、それは、Eclipse用のプラグインのセットであり、これを使うとユーザは IDEと相互に情報をやりとりできたり、Java以外の言語を使用して、IDEのスクリプトを書く事が出来ます。(初期設定はJavaScriptです)そして、もっと詳しい情報を求めて、Eclipse Monkeyのデザインはシンプルである。理由は、このプロジェクトのクリエータとデザイナーの一人が、Ward Cunningham氏だからである。 Ward Cunningham氏は、幾つも業績があるが、なかでも1990年代にWikiを考えだした人として有名である。スクリプトは、プロジェクトのテキストファイルです。どんなメタデータでも、ファイルそのものに含まれます。メタデータは、スクリプトを実行する依存状態又はショートカットの宣言になりえます。これは、Eclipseでどんなイベントにでもスクリプトを接続するところまでは辿り着きます。例えばファイル変更、ファイル保存又はプログラムの起動などです。
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に関するより多くの情報が掲載されています。またこの機能の使い方を示したスクリプトも掲載しました。
以下はエディタでStringをSymbolに変換するEclipse Monkeyのサンプルスクリプトである (source)。
=beginEclipse Monkeyの他の概念はDOMである。DOMと書くとHTMLやXMLのDOMと混同するかもしれないが、ここでのDOMはDomain Object Modelを表す。DOMは特定ドメイン向けの機能に対して、よりシンプルなインターフェースを提供するオブジェクトである。
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)
例えば上のサンプルコードでは、$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