RDT にリファクタリング機能

使えるかどうか確認していないけど、
RDTにリファクタリング機能がくっついた。
おそらく、GoogleのSummerCodeの成果をマージしたものとはっし〜〜は推測しているのだよ。

□ Welcome to the Ruby Refactoring Wiki
http://r2.ifsoftware.ch/trac

      • -

リファクタリングの機能一覧

  • ローカル変数からフィールドへの変更
  • フィールドのカプセル化
  • メソッドの抽出(コードのある部分をメソッドとして切り出す)
  • ローカル変数のインライン化
  • ファイルのクラスの断片をマージ
  • 外部クラスの断片をマージ
  • フィールドの移動
  • メソッドの移動
  • 子クラスへのメソッドの移動
  • 名前変更
  • ローカル変数の分割(?)



□ ソースの機能一覧

  • アクセサの生成
  • フィールドを使ったコンストラクタの生成
  • メソッドのオーバーライド
    • -

まだ使えるかどうか試していないけど、多分今のところ限定的使用に留まりそう。


RDTは、参加メンバーが少ないのになぜか複数のプロジェクトが走っている。


Ruby lint RDT Integration
http://cwilliams.textdriven.com/articles/2006/05/19/ruby-lint-functionality-in-rdt


いろいろ機能が付いてくれるのは嬉しいんだけど、
一つ一つの完成度がいまいちなのはどうかとも思う。


機能を絞って順次統合していかないと、現在の勢いだと明らかにNetbeansRuby環境に負けそうな感じ。いや、本当に。

                                • -

■ 追記
InteliJ IDEAにもRubyプラグインが出た。
http://www.oreillynet.com/ruby/blog/2007/02/intelllij_idea_demo_of_ruby_pl.html

簡単に下記にはっし〜〜流ビルドのやり方を書いておくのでご参考までに。


■注意

  • TorタンのBlogを見ながらやる場合は、CVSチェックアウトで必ず -P オプションをつける
  • Eclipse上でビルドする場合は、必ずEclipseの実行させているJVMとAntを実行させるJVMを同一のものにする(はっし〜〜は、JDK 6(Windows版) を使った )


cvs.netbeans.org から下記のたくさ〜んなプロジェクトをチェックアウトすると大吉!


CVS

  • Host : cvs.netbeans.org
  • Repository Path : /cvs
  • User : anoncvs
  • Password : なし


② チェックnbbuildプロジェクトのbuild.xmlを実行するのだけど、


■ Targetsタブ

  • build-nozip
  • merge

を選択。


■ Mainタブ ー Arguments

  • Dmoduleconfig=ruby

を記載


■ チェックアウトするプロジェクト

apisupport 
applet 
autoupdate 
beans 
classclosure 
classfile 
clazz 
core 
db 
debuggercore 
debuggerjpda 
diff 
editor 
extbrowser 
form 
graph 
html 
httpserver 
i18n 
ide 
image 
j2ee 
j2eeserver 
jarpackager 
java 
javacvs 
javadoc 
jellytools 
jemmy 
junit 
languages 
lexer 
libs 
logger 
mdr 
mobility 
monitor 
nbbuild 
objectbrowser 
openide 
openidex 
profiler 
projects 
properties 
refactoring 
schema2beans 
scripting 
serverplugins 
subversion 
tasklist 
text 
tomcatint 
usersguide 
utilities 
vcscore 
vcscvs 
vcsgeneric 
versioncontrol 
web 
websvc 
xml 
xtest

今週のNetBeansのRuby環境


Tor Nobeyが今週のNetBeansRuby環境の様子を書いていたりするんだけど、
2/2にNetBeansCVSにあげたようです。

Ruby Screenshot of the Week #3
http://blogs.sun.com/tor/date/20070202

ビルドのやり方も書いてくれているのでさっそくビルドしてみることにした。

・・・・というわけで、

「はっし〜〜が夜なべをしてNetBeansビルドしたよ♪〜」

・・・ああ、昨日は木枯らしが吹いていたなぁ。


チェックアウトからビルドまでを4回失敗して、結局5時間以上かかっちゃったよ(遠い目)。
最後はEclipse環境上でビルドしてやっと成功。


試してみると、おいおい、RDT(EclipseRuby環境)って何だよ!くらいにすでに完成度が高い。

特にスゴイのが、

  • Syntax Coloring(コードの色づけね)
  • コードジャンプ


コードジャンプはRubyの組み込みクラスにまでジャンプしてくれる(もちろん、組み込みクラスはCかJavaなのでダミークラスにだが・・・)。
RDTの場合、同じファイル内のメソッド形式呼び出しならジャンプしてくれんだけどね。


その他、Windowとして以下のものがある。

  1. Navigator (Eclipseのアウトラインみたいなやつ)
  2. Lucene Index Browser
  3. AST View (RubyのAbstaract Syntax Tree をJRubyを利用して表示する)
  4. Token Spy Window


多分、1は説明の必要もないアウトライン表示。


2は(おそらく)コード補完候補を出すための仕組みの制御。
NetBeansRuby環境ではコード補完候補を出すために、LuceneというJava製の全文検索エンジンを使っているもよう。
全文検索エンジンのインデックス作成範囲を指定するツールが2というわけだ。
*1


3は、これは説明難しいな・・・。
簡単に言うと、コンパイラのlexer(字句解析)なり、Parser(構文解析)で解析した結果はAbstarace Syntax Tree(抽象構文木)(以下、AST)という形式で保存しておくわけだよ
プログラムの実行時はこのASTをたどりながら実行するというのが、インタプリタ型言語の仕組みだったりする。
*2



ということはだ、プログラムからコードの文字列を触るよりも、このASTをいじくった方がいろいろとプログラミングしやすかったりする。
したがって、ASTを見られる環境があるとまぁ、いろいろとツールを作ったりしやすいというわけだ。
おそらく、このASTツールはTorタンが自分自身のために使っていると見た。
ちなみに、4のToken Windowはlexerの字句解析結果を見るためのツールだね。これもTorタンが使っていると見た。
(だって、僕らパンピーには必要ないもの。)


あと、書き忘れたけどRailsのプロジェクトも作れる。Webrickも自動的にあがる。


それにしても、すごいぞ! Torタン。 この短期間でよくぞここまで・・・。ぐっじょぶ。

*1:ちなみに、世の中にはプログラミング言語用の全文(全コード)検索エンジンのgonzui[http://gonzui.sourceforge.net/index.html.ja:title]というプロダクトも存在する

*2:ちなみに、JavaはASTにした後、バイトコードを吐くわけだな。その他のコンパイラ型言語はもちろんネイティブ・コードを吐く

Ruby Screenshot of the Week #2


http://blogs.sun.com/tor/date/20070122


今週のNetBeansRubyエディターの様子。
以下、上記の Blog 訳。

  1. あるクラスのメソッドを定義することをNetBeansは検知します。スーパークラスから継承されたメソッドとマッチするときだけ補完候補を出力します。
  2. この場合、Integer クラスを継承していて、メソッド名が”ab”ではじまる2つのメソッド(一つは、Numericクラス、もう一つはオブジェクトクラス)とマッチします。
  3. rdoc(JavaDocRuby版みたいなものです)をベースにメソッドの説明を表示します。
  4. 各々メソッドがどこにあるか(どこからやってきたか)を表示します。
  5. ほどほどに壊れたソースも扱えます。


メソッド補完はスーパークラスのメソッド限定みたい。
Rubyは動的言語だからなかなか Type Inference(型推論)は難しい。

この辺をRDT(Rubyの開発環境の一つ。Eclipse Pluginとして実装している。)は、
On Demand Type Inference という方法で型推論エンジンを実装して実現しようとしている。


詳細は下記のURLを参照。

■ mputさんのRubyConf2006の報告( の最下段にあります)
http://mput.dip.jp/mput/?date=20061023


■ RubyConf2006での発表内容の話(スライドも見られます)
http://soc.jayunit.net/articles/2006/10/22/talk-at-rubyconf2006



実は、Rubyの開発環境で一番重い部分がこの型推論の部分でmputさんの言うとおり、
型推論が一番の鬼門(特にevalが鬼門か?)。
だから、NetBeansの場合はまずはスーパークラスのメソッドの補完だけに限定している。


この部分を Tor Nobey(NetBeansRuby開発環境の実装者) がどのように解決するかは
非常に興味があるところ。

GlassFish 上で JRuby on Rails を動かす

前からあったネタなのだが、GlassFishJRubyのバージョンアップに伴いころころやり方が変わっている。


以下、URLは 1/19版のやり方。


・・・試すか。オレ。


http://blogs.sun.com/whacko/entry/grizzilicious_ror_on_glassfish

Ziya かっちょいい。早速使ってみよう〜〜。

Rails用 Flashを利用したチャートライブラリ


http://ziya.liquidrail.com/


Sample見ると分かるけど、まさにDSLな感じ。
かっちょいい!!。


こういう見た目重視なのって好きだな。

今週の Ruby on NetBeans の様子

今週のNetBeansRuby環境の様子。

Ruby Screenshot of the Week
http://blogs.sun.com/tor/date/20070111


どうしたら、使えるかしら。
もしかしたら、CVSから最新版とってくれば使えるか?(← 試せよオレ)