ひ日誌
2004-11-12 ( ja -> en )
_ ギクッ!“本物”って?と聞かれてしまった
20041006#c01への返答:
都合で数年ぶり*1に C++ で書かれたコードと付き合うことになったのですが、Ruby などに慣れきった頭で見ると、シンプルに書けることが(「Effective-C++」などに書かれているような)テクニックを屈指したりしてややこしく書かかれてるなぁ、とちょっと欝な気分だったのですね。
そんな気分と勢いで書いてしまっただけでして、よく考えて書いたわけではないのです。実際のところ、この“本物”は単に“自分が気に入っている”くらいの意味合いになります。
ということを踏まえていただいた上でお答えしますと、基本的には、実行時にオブジェクトが受けたメッセージに応じて振る舞うモデル、メッセージ伝達モデルをイメージしてます。僕が気に入ってるのは:
- 動的束縛
- ブロック・lambda・クロージャあたり
- 変数は単なる名札、型はもたない
- 対話的にコードを試したりするのが簡単
こういった特徴のある言語です。“本物”と書いたときにこういった要素が頭の片隅にあったと思います。この条件、オブジェクト指向かどうかとあまり関係ないかもしれませんが、今の「自分が気に入る」かどうかの重要ポイントなようです。なんか話しがズレてる気もしますが。。。
その後、C++ には少し慣れてきちゃいました(苦笑)。で、その C++ で書かれてるソフトウェアの次期バージョンの設計がてら、プロトタイプというか動くモックアップみたいなものを Ruby で書いてみたりもしました。モックアップのつもりだったけどばっちり動く。サクっとすっきり書けてプロトタイピングツールとしての Ruby の良さを認識してます。
*1 Mac で PowerPlant 使ってたころ以来
2004-11-19 ( ja -> en )
_ [rubycocoa] プロジェクトの今後
僕がぜんぜんメンテしなくなってしまっているrubycocoaだが、kimurawさんが、開発やリリースなど引き受けてくれることとなった([Rubycocoa-devel 13] プロジェクトの今後)。ひとまずここに告知しておきます。なんとなく気が楽になった気がする。kimurawさんどうもありがとう。RubyCocoa の活用に興味のある人はkimurawさんの日記などもチェックするといいかもしれない。
_ [rubycocoa] RubyCocoa TestRunner
<URL:http://crtestrunner.rubyforge.org/>
A graphical TestRunner for Ruby's Test::Unit. It provides an interface in Cocoa similar to jUnit's for running ruby code on OS X.
RubyCocoa で TestRunner の GUI を作ったそうです。
2004-11-20 ( ja -> en )
_ [ruby] jar みたいに実行
tarをそのまま実行できるようにしてほしいんですよね。JavaのJARみたいな感じで。LLだからバラバラで配布しなきゃいけないなんて道理はないわけで。バラバラだと配布も展開もメンドーすぎ。
とのぼやきを読んで、もっともだと思った。気が向いたのでいいかげんなものだが書いてみた。ファイル名・コマンド名決め打ちだったりエラー処理なしだったりするが、動く環境ではちゃんと動く。
rar-header.rb:
#!/usr/bin/env ruby
require 'fileutils'
rar_path = "/tmp/raaaaaaaaaaaaaaaaaaaaaaaaaa.tgz"
File.open(rar_path, "w") {|f| f.write(DATA.read) }
main_rb = ARGV.shift || "main.rb"
save_dir = Dir.pwd
begin
Dir.chdir("/tmp")
app_path = `tar ztf #{rar_path} */#{main_rb}`
app_path = File.expand_path(File.dirname(app_path))
system("tar", "zxf", rar_path)
Dir.chdir(app_path)
begin
system("ruby", main_rb)
ensure
FileUtils.rm_rf(app_path)
end
ensure
Dir.chdir(save_dir)
end
__END__
使い方。ruby main.rb でプログラムを実行できるディレクトリがあるとする。ここでは ruby-gtk2 の gtk-demo を例とする。
$ tar zcf hoge.tgz gtk-demo $ cat rar-header.rb hoge.tgz > gtk-demo-app $ chmod +x gtk-demo-app $ ./gtk-demo-app
これは便利そうな予感。実用するならもっとちゃんと作るべきだろう。なんとなくすでに RAA にありそうな気もする。未確認。
_ sumim [早速に、痛み入ります。 なるほど“本物”を“お気に入り”に読みかえれば、違和感はまったくないです。ありがとうございま..]