RubyとEclipse MonkeyでIDEスクリプトを記述する

3366 ワード

EclipseなどのIDEは、Smalltalk IDEsから養分を吸収することで多くのユーザーを獲得しています.増分コンパイル、ローカルバージョン管理はその2つです.しかし、Smalltalk IDEs(またはEmacsなどのエディタ)が依然として優位に立っている分野の一つは、IDE自体の自動化です.IDEで重複した作業をスクリプトに変えることです.SmalltalkユーザーはIDEのオブジェクトに直接Smalltalkでアクセスでき、EmacsユーザーはLISPで同じ作業を完了できます.インタラクティブに完了するだけでなく、実行時にも実行できます.
Eclipse Monkeyは、有名なFirefoxプラグインGreaseMonkeyから名前を付けたEclipse Monkeyのスキームを提供します.その第1版はJavaScript(JavaベースのRhino)をスクリプト言語として使用していますが、Christopher Williamsは最近、Ruby(JRuby)を使ってスクリプトを書くこともできると発表しました.
EclipseMonkeyに詳しくない場合は、Eclipseプラグインのセットであり、ユーザーと対話し、Java以外の他の言語(最初はJavaScriptのみサポート)でIDEにスクリプトを書くことができます.より詳細な情報はhttp://www.eclipse.org/dash/monkey-help.php?key=writing.
EclipseMonkeyのRuby拡張は、RubyコードでIDEスクリプトを記述する能力を開きます.
最初のバージョンでは、エディタをスクリプトで操作できるようにするEditor DOMが暴露されました.Wikiには、多くの詳細とEditor DOMのAPI情報が記載されているいくつかのヘルプが用意されています.この機能の使用方法を示すスクリプトの例もいくつか用意されています.
Eclipse Monkeyの設計が「簡単」の原則を実践したのは理由がある:このプロジェクトの発起人と設計者の一人はWard Cunninghamで、彼は他の人と一緒に1990年代にWikiを発明した.スクリプトはプロジェクトのテキストファイルです.どのメタデータもファイル自体に保存されます.メタデータには、依存性、またはスクリプトを実行するショートカットの宣言が含まれます.ファイルの変更、ファイルの保存、プログラムの起動など、スクリプトをEclipse内の任意のイベントに関連付けることができます.
次に、エディタのStringをSymbolに変換するためのRubyで書かれたEclipse Monkeyスクリプトを示します.
=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
# If the current token is a string containing alnums, change it to
# a symbol
editor = $editors.get_active_editor
selection = editor.selection_range
selected_src = editor.source[selection]
# if entire selection is a string with no dynamic content, then
# convert the string to a 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で、HTMLやXML DOMと混同しないでください.Domain Object Modelを表しています.特定の分野のいくつかの機能に簡略化されたインタフェースを提供するオブジェクトです.
上記のコードを例にとると、$editors変数は、Editorsに関連するすべてのことを処理するDOMを指す.EclipseのようなIDEのスクリプトを作成するには、DOMが必要です.Eclipseオブジェクト、システム、APIに直接アクセスすることで同じことをすることもできますが、書かれたスクリプトはさらに複雑になる可能性があります.これは、Eclipseの設計が非常に柔軟であるため、いくつかの概念が拡張能力を生み出しています.しかし、$editors.get_active_editorのような簡単な式が2-3行のコードになることを意味しています.
これらのDOMはいずれも通常のEclipseプラグインであり,org.eclipse.eclipsemonkey.dom拡張点に寄与するため,Eclipseのプラグイン開発環境(PDE)において簡略化された機能インタフェースを記述することは容易である.Eclipse MonkeyのメタデータはDOMの構成管理にも役立ちます.スクリプトのメタデータセグメントは、必要なDOMのupdate siteを指定することができ、スクリプトが実行されると、システムは自動的に必要なDOMを取得します.
Eclipse MonkeyスクリプトはEclipseのJVMで実行されるため、すべてのJava APIとすべてのJRuby標準ライブラリをスクリプトで使用できます.現在、開発者がEclipseとEclipseプラグインメタシステムが提供する豊富なコードと機能にアクセスできるように、多くのEclipse Monkey DOMが存在しています.
例えばJMX DOMでJMXでJVMを制御することができる.簡単なスクリプトですべてのJMX操作を呼び出し、すべてのJMX属性をクエリーできます.実用的には、Eclipseからプログラムを起動し、ログ・レベルなどのプログラムのプロパティを設定し、ゴミ収集の実行などのプログラムの操作を呼び出すことができます.簡単なステップだけです.他のDOMは、CVS/SVNプラグイン、ワークスペース、JDTなどにもアクセスできます.
詳細については、AptanaのEclipse Monkeyサイト、またはEclipse Monkeyサイトの公式ページを参照してください.
IDE scripting with Ruby and Eclipse Monkey