«前月 最新 翌月» 追記
2002|09|
2003|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|10|11|
2008|01|

ひ日誌


2004-11-12  ( ja -> en )

_ ギクッ!“本物”って?と聞かれてしまった

20041006#c01への返答:

都合で数年ぶり*1に C++ で書かれたコードと付き合うことになったのですが、Ruby などに慣れきった頭で見ると、シンプルに書けることが(「Effective-C++」などに書かれているような)テクニックを屈指したりしてややこしく書かかれてるなぁ、とちょっと欝な気分だったのですね。

そんな気分と勢いで書いてしまっただけでして、よく考えて書いたわけではないのです。実際のところ、この“本物”は単に“自分が気に入っている”くらいの意味合いになります。

ということを踏まえていただいた上でお答えしますと、基本的には、実行時にオブジェクトが受けたメッセージに応じて振る舞うモデル、メッセージ伝達モデルをイメージしてます。僕が気に入ってるのは:

  • 動的束縛
  • ブロック・lambda・クロージャあたり
  • 変数は単なる名札、型はもたない
  • 対話的にコードを試したりするのが簡単

こういった特徴のある言語です。“本物”と書いたときにこういった要素が頭の片隅にあったと思います。この条件、オブジェクト指向かどうかとあまり関係ないかもしれませんが、今の「自分が気に入る」かどうかの重要ポイントなようです。なんか話しがズレてる気もしますが。。。

その後、C++ には少し慣れてきちゃいました(苦笑)。で、その C++ で書かれてるソフトウェアの次期バージョンの設計がてら、プロトタイプというか動くモックアップみたいなものを Ruby で書いてみたりもしました。モックアップのつもりだったけどばっちり動く。サクっとすっきり書けてプロトタイピングツールとしての Ruby の良さを認識してます。

*1  Mac で PowerPlant 使ってたころ以来

本日のツッコミ(全1件) [ツッコミを入れる]

_ sumim [早速に、痛み入ります。 なるほど“本物”を“お気に入り”に読みかえれば、違和感はまったくないです。ありがとうございま..]


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 にありそうな気もする。未確認。

本日のツッコミ(全2件) [ツッコミを入れる]

_ kimuraw [こんなん見つけました http://www.rubygarden.org/ruby?Tar2RubyScript ま..]

_ hisa [やっぱりありましたか。この発想、あえて Ruby に限ることもないし、そうすると osx の app bundle ..]


«前月 最新 翌月» 追記