torutkのブログ

ソフトウェア・エンジニアのブログ

昨日(6/9)はJava読書会の日でした

Java言語仕様はさすがに難物でした。

メモ

  • 名前:プログラム中で宣言された実体を参照するために使われるもの
    • 単純名
    • 限定名
  • 名前と識別子は別物、宣言中で記述するのは識別子
  • シャドーイングと隠蔽とオブスキュアは使い分けよう
  • コンストラクタと型変数はメンバではない
  • ラベルは変数名などにシャドーイングされない

2次会にて

Ruby on Railsを使った開発とJavaによる開発との比較で熱い議論が繰り広げられました。なんとなく意見をまとめると

  • Perlで開発していたのに比べるとRubyの方がプログラムの保守性よい
  • Perlでプログラムが肥えていくと(サイズが大きくなると)破綻しがちだが、Rubyなら(オブジェクト指向の恩恵で)破綻しにくい
  • Javaで開発しているようなシステムをRuby(on Rails)で作るのは無理(クラスタリング、各種システムとの連携)。
  • 「大規模」を定量的にいおうよ。Ruby数千行〜1万行あたりが開発の限界では?
  • Ruby on Rails騒がれているけど実績少ないよね。そんなに凄いならなぜみんな使わないの
  • JRubyなんでわざわざJavaの上でRuby使うの?
  • Ruby(on Rails)安定して提供されるか不安だよね。(3年後に今のバージョンが保守されている?)
  • Rubyの数十行ですごい機能が書ける。1000行なら相当な機能だ。

端っこに座って向かいのE氏とSwing、MVP(Mode-View-Presenter)モデルの話しで盛り上がっていたので、Ruby議論にあまり加われなかったので、メモまで。

MVPモデルの話のメモ

MVPの凄いところは画面だけ先に作って動かす(表示させる)ことができるので、プログラム作っていてとてもモチベーションが高い。一方、Viewをインタフェース化しようとするとメソッドが大量になり、またちょっとViewをいじるとすぐインタフェースが変更になってしまう問題もある。JGoodiesの資料のように、インタフェースにせず、PresenterがViewのフィールドを直接(Getter/Setterなしに)いじってしまうのも有りだよね、どうせViewとPresenterは結合が強いんだから。ただ、PresenterをViewのインナークラスにしてしまうのは、サイズが肥大化してしまうから分けるべし。

JRubyをつかってみよう

話題だけは耳にしていたJRubyJava読書会の2次会での熱い議論もあってちょっと使ってみようと思いました。

JRubyのセットアップ(Windows編)

まず、JRubyを入手するところから。
http://jruby.codehaus.org/
上記URLからDownloadのリンクをたどると、ディレクトリのリストが出ます。見るとjruby-bin-1.0.tar.gzが最新です(2007/06/07付)。これをダウンロードして、マイマシンのJava関係ディレクトリに展開します。

Java関係は、JDKを含めD:\Program Files\Java\の下に置いてますが、Windows VistaのmklinkでD:\java\に見えるようにしています。ディレクトリのリンクはNTFSのJunction機能で実現されているので、Windows XPでもJunction作成ツールを持ってくれば使えます。

よくよく見るとD:\Java\jruby-0.9.8なるディレクトリがあり、過去になぜかインストールしていた形跡があります・・・。「記憶にございません」

環境変数JRUBY_HOMEをインストールしたディレクトリに設定します。

set JRUBY_HOME=D:\Java\jruby-1.0

環境変数PATHを設定します。

PATH=%PATH%;%JRUBY_HOME%\bin

JRubyJavaで動くので、環境変数JAVA_HOMEをJDKをインストールしたディレクトリに設定します。

set JAVA_HOME=D:\Java\jdk1.6.0

対話型環境はjirbコマンド、スクリプトファイルの実行はjrubyコマンドです。

D:\Users\torutk> jirb
irb(main):001:0> puts "Hello, World!"
Hello, World!
=> nil
irb(main):002:0> quit

D:\Users\torutk>

ワンライナーを実行してみましょう。

D:\Users\torutk> jruby -e "puts 'Hello, World!'"
Hello, World!

D:\Users\torutk>