メイン

Ruby アーカイブ

2007年08月08日

[Ruby] IronRuby 動かしてみた

Ruby for .NETな、IronRuby来てますね

RubyのプロジェクトサイトRubyForge(言わば、Ruby版sourceforge)に、登録されるらしい。
(8月終りに登録するんだってさ)

とりあえず、こちらのサイトを参考にしながら、試してみました。
『【レビュー】Microsoft版Ruby実装「IronRuby」を試す (1) 環境の準備 - ソースコードの入手とビルド | エンタープライズ | マイコミジャーナル』

ダウンロード

作者サイトのソース入りのzipをダウンロード。

まずは、コンパイル

Build.cmd がそのまま動かなかったので、以下のように、書き換え。
>c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe /p:Configuration=Release /t:Rebuild IronRuby.sln

コンパイルできた\(^o^)/
21秒って早!!

WinFormsのテスト

を保存して、コマンドラインで、

>..\IronRuby-Pre-Alpha1\Bin\Release\rbx.exe test.rb

おお、動いた。

IronRuby WinFormsのテスト

よもや、.NETのWinFormsを、Rubyで書ける日がこようとは。

WPFのテスト

First Look at IronRuby - ScottGu's Blog
で、紹介されている、次期GUIライブラリ、WPFのコードも動かしてみる。
.NET Framework 3.0がインストールされている必要があります。

実際に、サイトで配布されている、zip内の WPF.rb もいります。

>..\IronRuby-Pre-Alpha1\Bin\Release\rbx.exe HelloWPF.tb

IronRuby WPFのテスト

ワーイ!こちらも動いた。

たらいまわしベンチ

いわゆる、たらいまわしベンチをしてみようと思います。

コードは、こちらのサイトのを

あら?動かなかった。

以下、エラー。

>..\IronRuby-Pre-Alpha1\Bin\Release\rbx.exe tarai.rb
System.InvalidProgramException: 共通言語ランタイムが無効なプログラムを検出しました。

場所 tarai$mod_1.Initialize(CodeContext ) 場所 Microsoft.Scripting.ScriptCode.Run(CodeContext codeContext) 場所 (ディレクトリ)\IronRuby\IronRuby-Pre-Alpha1\Src\Microsoft.Scripting\Hosting\ScriptCode.cs:行 104 場所 Microsoft.Scripting.ScriptModule.Execute() 場所 (ディレクトリ)\Iro nRuby\IronRuby-Pre-Alpha1\Src\Microsoft.Scripting\ScriptModule.cs:行 106
場所 Ruby.Hosting.RubyCommandLine.RunFile(String fileName) 場所 (ディレクトリ)\ruby\IronRuby\IronRuby-Pre-Alpha1\Src\Ruby\Hosting\RubyCommandLine.cs:行 64

わからんちん。

まとめ

まだ、アルファリリースということで、不完全なところもあるようです。

また、ライブラリ等は、まだないとのことで、今後に期待したいところです。
しかし、.NET Frameworkがそのまま使えるとなると、これだけでも、すごい話かと思う。

C#の組み込み言語にも使えるといいですねえ。

今後の動向に注目したい言語ですなあ。

参考リンク

[ Ruby ]

2006年09月06日

[Ruby] ruby >>>>(超えられない壁)>>>> perl

ruby >>(壁)>> perl

ちょいと都合で、perlをいじってたけど、
この言語、なんてウンコなんだぁぁーーーー!!!

なんで、これが、Webのデファクト言語なんだろって思う。
最初に広まったもん勝ちという奴ですか?

オブジェクト指向に慣れているもんだから、
頭の中で考えたように、そのままコードを書こうとして、
あまりの書きずらさに、切れそうになってしまった。

以下、ちょこちょこ調べ物しながらコード書いてて思ったこと。

perlの何が、マズイって、古い言語仕様を引きずっていて、
その古い書き方で書かれたコードが残り続けていること。
Webで検索しても、古い書き方しか出てこなくて、ゲンナリする。

perlを使うなら、
Hasta Pronto::Hatena::Diary - 最低限覚えること』とか、
[Perl][work]新人教育』に書いてあるようなことを抑えておかないといけない。

しかし、Webの記事とか、googleで上の方に出てくるのとか、
その辺、全然考慮してなかったりするんだよヽ(`Д´)ノ ウワァァン!!
10年前のコードがそのまま、生き残っているわけですよ。

そう考えると、今から、perl覚えようってい人は不幸というか、大変だなー、って思う。

Rubyは、その点、Webで参照できるコードや、記事が
かなりまとも。

最近のRailsもそうだけど、流行りのものを参考にするだけで、
比較的最近のパラダイム(DRY原則やらメタプログラミングやら)についていける。

使っている人もgeekな人が多いせいか、
(というか、わざわざ perl や python 蹴ってrubyやる人ですから)
あーなるほど、こういう書き方あるんだなー、とかすごく勉強になる。

まあ、自分が流行りをおっかけているのもあるんですが。
↑これが全てかもしれんけど

それにしても、perl書くなら、

use strict;
use warnings;
use diagnostics;

は必須ですね……いまさらですが。
もう標準にしろよ!って思う。
(これで、perlのあいまいな文法も少しはましに)

最低限、use strict; 書いてないネットのCGIのソースとかは、捨てていいです。
↑昔の自分のソースのことだけどw
今は、動いていても、将来の動作は信用しなくてよい(ヒデェ

関係ないけど、
図は、Inkscapeでサクッと描いてみた。
大分慣れてきたわー。

*参考リンク

[ Ruby ]

2006年05月24日

[Ruby] Ruby界隈が騒がしい

Ruby界隈が、一部でだけ騒がしい。
概略をまとめるとこうだ。

  • Rubyの生みの親Matz氏が、自分の娘が断食していたことを日記に書いた
  • このことから、Matz氏がモルモン教徒だということがわかった
    (とは言え、5年前から周知の事実ではあった)
  • 2chのRubyスレが、モルモン教の話題で荒れる
  • 悪徳商法マニアックスのBeyond氏が、Matz氏の日記にコメントする
  • Mat氏が、日記のコメントを消す
  • RubyのMLで、Beyond氏が今回の問題について投稿する
  • 2chのスレが、Beyond氏の話題で荒れる
    ↑いまここ

モルモン教のことや、
Beyond氏や2chの住民が過剰反応していることは、
便利なRubyが使い続けられれば、正直どうでもいい。

逆に考えるんだ

なにBeyond?Rubyの作者が
モルモン教徒なのが気に喰わないだって?
Beyond それは、カルト教だと思うからだよ

逆に考えるんだ
「モルモン教はIT業界に貢献したのさ」と
考えるんだ

↑オチ

[ Ruby ]

2006年04月14日

[Ruby] Rubyのブロックのスコープ問題

Rubyのブロックのスコープがヤバイ。

i = "moge"
p i
[0, 1, 2].each do |i|
  p i
end
p i

実行結果

 "moge"
0
1
2
2 # ←"moge"じゃない!

ちょwwwwww
なんで、ブロック抜けたiがそのままなのよん。
i = "moge" になってくれよ!
これ簡単にハマりますよ!?

Rubyのマニュアルに書いてありました。
制御構造のブロックによっても、スコープが違うのね。
気をつけないと……。

[ Ruby ]

2006年04月11日

[Ruby] Rubyの不満点

ずばり、関数内関数の外側のスコープの変数にアクセスできない点。
ブロックなら、外側の変数にアクセスできるけど、関数内関数はできない!
これはちょいと痛い……。
Delphiだとできるだけに、意外にキツイ点。

それと、クラス内クラスって定義できなくないすか?
Delphiでできるだけに(以下略

あとは、何でもオブジェクトな点。
他の言語で、手続きっぽい関数みると
逆にイライラしてくるとか。

例えば、改行とりのぞいて、コンマ区切りの文字列を分割する例
Rubyだと、

hoge, moge = str.chomp.split(",")

とかけるのが、
他の言語(Perlもどき)だと、

chomp(str);
(hoge, moge) = split(",", str);

と書かなくてはいけない。(Delphiだともっと面倒。)
イライラ……。
オブジェクト脳か、はたまた末期症状か。

[ Ruby ]

2006年04月10日

[Ruby] Rubyのよい点

最近、Rubyばかりさわってます。
とりあえず、良い点を。

スコープで変数名がプレフィックス(前置詞)が変わる点が、
けっこう気にいっています。

C++では、クラスのメンバ変数は、m_hoge(メンバのmか?)や、_hogeなどとすることがあります。
また、Delphiなどでは、FHoge などと先頭にF(フィールドの略)を使ったりします。
これは、コーディング規約レベルの話なのだが、
Rubyは、言語仕様レベルで決まってまして。
Rubyの場合は、@Hoge となる。
パッと見てわかるというのは、コーディング規約レベルでも一緒のことだけど
別にそうしなくてもいいじゃん?みたいなことがなくてよい。
強制の美学?

ブロック構文もよいですな。
こんなものを使っていたら、
Delphiが物足りなくなってくるわけだ……。

あとは、ライブラリが豊富な点が大きいです。
Ruby標準で、あれもこれもついてくる。
blog APIとかで使う XML-RPC のライブラリまでついてたのには、ビビリました。
標準でやりたいことがすぐできる!これって素晴らしいことではないですか?

決定的なGUIライブラリがないとか、
さすがに、DirectXのライブラリはない(SDLはあるけど)とかは、
まだまだDelphiを使う理由にはなりますが、
どーも、かなり Ruby にぞっこんな感じです。

[ Ruby ]

2006年03月09日

[Ruby] ruby+鬼車コンパイルできた

rubyに鬼車を搭載できました。
もともと、鬼車は搭載目的で作られているらしく別に難もなく。
これで、GPLの呪縛から逃れられます。

成果物は、この辺に置いときマス
# スクリプト言語の ruby そのまんまなんで、
# 普通の人は落としても特に面白くありませんが
一応コンパイル方法とかも書いときました。

あとは、DLL(msvcrt71.dll)非依存にする方法なんですが、
VC++で、-MDではなくて、-MT使うと、コンパイルは通るのですが、
動作が変。なんじゃろ。
ちょっと様子見かも。

[ Ruby ]

2006年03月08日

[Ruby] rubyなんとかコンパイルできた('A`)

なんとかコンパイルできました。

最初は、VisualStudio2005(VC8)でコンパイルしようとしたのですが、
昨日書いたように、途中、miniruby が Segmentation fault で落ちて進まず。

で、仕方ないので、VC++Toolkit 2003(VC7) を Microsoft から落としてきて、コンパイル。
コンパイル手順はこちらを参照。
上のサイトにあるように、VC++Toolkit の他に、Platform SDK(Windows Server 2003 SP1用)も必要。
ただ、上のサイトで書いてあるのとは違いCoreSDKには、
コンパイルに必要な dumpbin.exe や lib.exe が含まれていない。
そんなわけで、これらは、VS2005からコピーして利用した。
今なら、無料の VC++2005 Express から入手できるかも。

で、ちゃんとコンパイルできました。
ただし、msvcr71.dll 依存になっちゃうけど。

成果物を配布したいところだけれど、
このままだとGPLを回避できないから、意味ないよね。

とりあえずは、GPL回避用に、正規表現ライブラリの regex を
ライセンフリーな鬼車に置き換えないと……。

あと、msvcr71.dll 依存がなんかいやんなので、
bcc32(BorlandC++)か、mingw(gcc)でコンパイルしてみたいなあ。

[ Ruby ]

2006年03月07日

[Delphi, Ruby] rubyを組み込みたい!

便利で便利なスクリプト言語ruby。
アプリに組み込んだらハッピーじゃない?
ネット関連とか、文字列処理もそうだし、あとライブラリが豊富。
# webからrssとってきて、パースとか一瞬でできる
GUIは苦手だから、Delphiで補う。
というわけで、ruby + Delphi = 最強じゃまいか!計画進行中。

しかし、ちょっとした弊害が……。
ruby-mswin32 に付属のDLLを使えばすぐにでも使えそうなんだけれども、
実はライセンスがGPLだということ。
# ruby は GPL とアーティスティックラインセンスのディアルライセンスなのだが、
# ruby-mswin32 に限っては、配布者の考えで GPL になっている。
オーマイガー。
GPL感染だけは勘弁な。

指針としては、怪しいLGPLな正規表現周りのコードを、
ライセンスクリーンな鬼車に置き換えて、
クリーンにしればおk?

ということで、自前でソースからコンパイルしておりまする!ずずずいと!
ああ!でもコンパイル作業がエラーで止まるぞ!minirubyが落ちるぞ!
前途多難!どうしたもんじゃ!

# 眠剤x2飲んで書いた文章につき、このようになっております

[ Delphi , Ruby ]

Twitter(今何してる?)

プロフィール

あわせて読みたい

あわせて読みたいブログパーツ

人気エントリー

About Ruby

ブログ「第一種臨界不測日記」のカテゴリ「Ruby」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはGuNMeNです。

次のカテゴリはメモ取り環境です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。