JSON $B%i%$%V%i%j$N<h$j9~$_(B

narusee$B$G$9!#e(B

Ruby e$B$Oe(B CGI e$B;~Be$K$be(B Rails e$B;~Be$G$be(B Web
e$B<~JU$GIQHK$KMQ$$$i$l!"e(B
e$B$^$?e(B JSON e$B$b:G6a$h$/e(B Web
e$B$GMQ$$$i$l$k$h$&$K$J$j$^$7$?$,!"e(B
e$B8=:_e(B Ruby e$B$K$Oe(B JSON
e$B%i%$%V%i%j$,I8=`E:IU$5$l$F$$$^$;$s!#e(B

e$B$3$l$G$OITJX$J$N$G!“e(BJSON e$B%i%$%V%i%j$rI8=`E:IU$7$^$;$s$+!)e(B
e$B$H$j$”$($:e(B 1.9 e$B$+$i$G$I$&$G$7$g$&!#e(B

e$B8=:_$=$l$J$j$K%a%s%F%J%s%9$5$l$F$$$k%i%$%V%i%j$O0J2<$,$"$k$h$&$G$9!#e(B

http://webos-goodies.jp/archives/51071565.html
http://groups.google.com/group/webos-goodies
e$BFCD’e(B

  • Pure Ruby
  • e$B%Q%V%j%C%/%I%a%$%se(B

http://json.rubyforge.org/
http://rubyforge.org/projects/json
e$BFCD’e(B

  • Ce$BHG$He(BPure Rubye$BHG$,$"$ke(B
  • GPL2

Ruby e$B$Oe(B Ruby License/GPL
e$B$@$+$i8e<T$G$O%@%a$H$$$&2r<a$G$$$$$N$G$9$C$1!)e(B

e$BB>$K$bE,$7$?%i%$%V%i%j$,$"$l$P65$($F$/$@$5$$!#e(B

e$B$I$l$+$K7h$^$l$Pe(B 1.9
e$B$X$N<h$j9~$_:n6H$dO"Mm$O$o$?$7$,$d$j$^$9!#e(B

At Sat, 21 Apr 2007 12:27:47 +0900,
NARUSE, Yui wrote:

Ruby は CGI 時代にも Rails 時代でも Web å‘¨è¾ºã§é »ç¹ã«ç”¨ã„ã‚‰ã‚Œã€
また JSON も最近よく Web で用いられるようになりましたが、
現在 Ruby には JSON ライブラリが標準添付されていません。

これでは不便なので、JSON ライブラリを標準添付しませんか?
とりあえず 1.9 からでどうでしょう。

 賛成です。これまでも REXML, YAML4R/Syck と入れてきましたし、
ポピュラーなデータ形式を標準でサポートするメリットは大きいと
思います。

 いずれ、 1.8 にもバックポートしたいです。

特徴

  • C版とPure Ruby版がある
  • GPL2

 ライブラリの機能としては相互の変換だけですが、 JSON は主に
ネットワーク上のデータ交換に使われるものなので、エラー耐性や
例外処理も重視したいところです。

Ruby は Ruby License/GPL だから後者ではダメという解釈でいいのですっけ?

 ライセンス非互換即却下、というわけではありませんが、利用時に
特別扱いしないといけないものが増えるので、あまりうれしくはない
ですね。まずは著作権者にライセンスの変更を打診するのがいつもの
æ‰‹é †ã§ã™ã€‚

 なお、ライセンスが Ruby æœ¬ä½“ã¨ç•°ãªã‚‹ã‚‚ã®ã‚’å…¥ã‚Œã‚‹å ´åˆã¯ LEGAL
ãƒ•ã‚¡ã‚¤ãƒ«ã«è¨˜è¿°ã‚’è¿½åŠ ã—ã¾ã™ã€‚

他にも適したライブラリがあれば教えてください。

 パフォーマンスを考えるのなら、せっかく ext/syck が標準添付
なので、 Perl の JSON::Syck のような実装がいいと思います。

 _why に聞いてみるといいかな。

どれかに決まれば 1.9 への取り込み作業や連絡はわたしがやります。

 今まさに需要があるものなので、スピーディに決めたいですね。
意見のある人は早めに表明をお願いします。


/
/__ __ Akinori.org / MUSHA.org
/ ) ) ) ) / FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp

“Different eyes see different things,
Different hearts beat on different strings –
But there are times for you and me when all such things agree”

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Akinori MUSHA e$B$5$s$O=q$-$^$7$?e(B:

e$B$3$l$G$OITJX$J$N$G!“e(BJSON e$B%i%$%V%i%j$rI8=`E:IU$7$^$;$s$+!)e(B
e$B$H$j$”$($:e(B 1.9 e$B$+$i$G$I$&$G$7$g$&!#e(B

e$B!!;?@.$G$9!#$3$l$^$G$be(B REXML, YAML4R/Syck e$B$HF~$l$F$-$^$7$?$7!"e(B
e$B%]%T%e%i!<$J%G!<%?7A<0$rI8=`$G%5%]!<%H$9$k%a%j%C%H$OBg$-$$$He(B
e$B;W$$$^$9!#e(B

JSONe$B%i%$%V%i%jI8=`E:IU$K$D$$$F$O0U8+$O$"$j$^$;$s!#e(B

e$B4XO"$7$F$^$D$b$H$5$s$K<ALd!#e(B1.9e$B!J$H$$$&$+8=>u$Ne(Btrunke$B!K$G$NI8=E:IU%i%$%Ve(B e$B%i%j$N:NMQH=CG4p=$C$F!"$I$&$5$l$^$9e(B?
1.8e$B$+$iI8=`E:IU%i%$%V%i%j3HBgO)e(B
e$B@~!"$H$$$&$N$,$"$j$^$7$?$,!"8=>u$R$HCJMn$7$F$^$9$h$M!#:#8e$O$I$&$7$^$7$g$&!#e(B

rubygemse$B$C$FF~$k$s$G$7$?$C$1e(B?
e$B$$$/$D$+$N%i%$%V%i%j$OI8=E:IU$+$i30$7$?$[e(B e$B$&$,$h$/$J$$$G$9$+$M!#$"$He(Bcsve$B$de(Bloggere$B$O!"JL$N<BAu$K:9$7BX$(0W$$$h$&$K$7e(B e$B$?$$!#I8=e(BAPIe$B$r7h$a$k$H$$$&:n6H$,MW$j$^$9$,!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRinGqB9L2jg5EEGlAQI1/Qf+JlZ2DrJ1ICB7bEm0ivT6qq1XnuTQ46Dm
XDkXBZ7am7xqQdUrNVqVeTV0Gq6+nOa9LSciR6m8Fjtrf6T71ZyDJswVmJ3AlVK/
oNUu8wJG8Mx9XVK9a0OznZ7RFxZFe9pxZn2XIYDX0l8M864aJhkLwqV+fNwdVWe0
3hgUo7EM4ydgN//3kuQExlu55jigGjEh7kLEeZF7bZGKfrR/rOfxuOc1Q6OMCMZ1
DxSNi9psW3v/yOO4itwPFW6Objb/mv6zCF2LYdIZiqSjQ0aiNEv1a3v+XhfRfE9I
DPbQg9Ivc5WCfTFL2ikAzMjmaYm4TWYD18mL0ZWaE7nfqTn7QPZpxg==
=XmGM
-----END PGP SIGNATURE-----

narusee$B$G$9!#e(B

Akinori MUSHA e$B$5$s$O=q$-$^$7$?e(B:

e$B!!%i%$%V%i%j$N5!G=$H$7$F$OAj8_$NJQ49$@$1$G$9$,!“e(B JSON e$B$O<g$Ke(B
e$B%M%C%H%o!<%/>e$N%G!<%?8r49$K;H$o$l$k$b$N$J$N$G!”%(%i!<BQ@-$de(B
e$BNc30=hM}$b=E;k$7$?$$$H$3$m$G$9!#e(B
e$B$J$k$[$I!#e(B

Ruby e$B$Oe(B Ruby License/GPL e$B$@$+$i8e<T$G$O%@%a$H$$$&2r<a$G$$$$$N$G$9$C$1!)e(B
e$B!!%i%$%;%s%9Hs8_49B(5Q2<!"$H$$$&$o$1$G$O$"$j$^$;$s$,!“MxMQ;~$Ke(B
e$BFCJL07$$$7$J$$$H$$$1$J$$$b$N$,A}$($k$N$G!”$"$^$j$&$l$7$/$O$J$$e(B
e$B$G$9$M!#$^$:$OCx:n8"<T$K%i%$%;%s%9$NJQ99$rBG?G$9$k$N$,$$$D$b$Ne(B
e$B<j=g$G$9!#e(B

e$B!!$J$*!"%i%$%;%s%9$,e(B Ruby e$BK\BN$H0[$J$k$b$N$rF~$l$k>l9g$Oe(B LEGAL
e$B%U%!%$%k$K5-=R$rDI2C$7$^$9!#e(B
e$B$=$N>l9g$OJ9$$$F$_$k$3$H$K$7$^$9!#e(B

e$BB>$K$bE,$7$?%i%$%V%i%j$,$"$l$P65$($F$/$@$5$$!#e(B

e$B!!%Q%U%)!<%^%s%9$r9M$($k$N$J$i!"$;$C$+$/e(B ext/syck e$B$,I8=`E:IUe(B
e$B$J$N$G!"e(B Perl e$B$Ne(B JSON::Syck e$B$N$h$&$J<BAu$,$$$$$H;W$$$^$9!#e(B

e$B!!e(B_why e$B$KJ9$$$F$_$k$H$$$$$+$J!#e(B

Perl e$B$G$Oe(B JSON::Syck
e$B$J$s$F$"$k$N$G$9$M!"%3!<%I8+$F$_$^$7$?!#e(B
e$B3N$+$KFI$9~$$O6&DLE@$,B?$/!"N.MQ$,$+$J$j$G$-$k$h$&$G$9$,=$@5$OI,MW!#e(B
e$B=q$-=P$7$O$=$l$J$j$K=$@5$,I,MW$=$&!#e(B

e$B$H$j$"$($:e(B why e$B$Ke(B JSON::Syck/Perl [email protected]$re(B
e$B<h$j9~$a$J$$$+J9$$$F$
$k$3$H$K$7$^$9!#e(B

moriqe$B$G$9!#e(B

NARUSE, Yui wrote:

why e$B$+$iJV;v$,Mh$J$$$N$G!"!V%(%i!<BQ@-$dNc30=hM}!W$,=<<B$7$F$$$?e(B
json.rubyforge.org e$B$N%i%$%V%i%j$NJ}8~$G:n6H$7$F$
$^$7$?!#e(B

e$B:#$O<h$j9~$`$J$i$3$l$,$$$$$+$J$H;W$C$F$$$k$N$G$9$,!“e(B
e$BB>$K0F$d$3$l$X$N0U8+Ey$O$”$j$^$9$G$7$g$&$+!#e(B

Rails e$B$N?M$OIaDLe(B gem json e$B$D$^$j$3$Ne(B json.rubyforge.org
e$B$NHG$re(B
e$B;H$C$F$$$k$H;W$$$^$9!#$N$G$3$l$r<h$j9~$`$N$K;[email protected](B+1e$B$G$9!#e(B

narusee$B$G$9!#e(B

NARUSE, Yui e$B$5$s$O=q$-$^$7$?e(B:

json.rubyforge.org e$B$N%i%$%V%i%j$NJ}8~$G:n6H$7$F$_$^$7$?!#e(B
e$B@hF|e(B Ruby 1.9
e$B$GF0$+$9$?$a$N%Q%C%A$rAw$C$F<h$j9~$s$G$$$?$@$$$?$N$G!"e(B
e$B8=CJ3,$G$be(B gem e$B7PM3$Ge(B trunk e$B$KF~$l$l$P;n$;$k$O$:$G$9!#e(B

e$BFC$K0U8+$,$J$1$l$P?tF|BT$C$F:n<T$NJ}$K%i%$%;%s%9$rLd$$9g$o$;!"e(B
OK e$B$,$G$?$ie(B trunk e$B$KF~$l$h$&$H;W$C$F$$$^$9!#e(B
e$B$3$NJ}8~$G$h$5$=$&$J$N$G!"e(BRuby
e$B%i%$%;%s%9$GG[I[2DG=$+Ld$$9g$o$;$^$7$?!#e(B

narusee$B$G$9!#e(B

why e$B$+$iJV;v$,Mh$J$$$N$G!"!V%(%i!<BQ@-$dNc30=hM}!W$,=<<B$7$F$$$?e(B
json.rubyforge.org e$B$N%i%$%V%i%j$NJ}8~$G:n6H$7$F$
$^$7$?!#e(B

JSON e$B$GJ8K!%(%i!<$,5/$-$?>l9g$O0J2<$N$h$&$J46$8$K$J$j$^$9!#e(B
% ruby -rjson/ext -e’p JSON.parse(“[123”)’
/usr/local/lib/ruby/1.9/json/common.rb:96:in parse': unexpected token at '123' (JSON::ParserError) from /usr/local/lib/ruby/1.9/json/common.rb:96:in parse’
from -e:1:in <main>' % ruby -rjson/pure -e'p JSON.parse("[123")' /usr/local/lib/ruby/1.9/json/pure/parser.rb:152:in raise’: expected ‘,’
or ‘]’ in array at ‘’! (JSON::ParserError)
from /usr/local/lib/ruby/1.9/json/pure/parser.rb:152:in
parse_array' from /usr/local/lib/ruby/1.9/json/pure/parser.rb:67:in parse’
from /usr/local/lib/ruby/1.9/json/common.rb:96:in parse' from -e:1:in

e$B:#$O<h$j9~$`$J$i$3$l$,$$$$$+$J$H;W$C$F$$$k$N$G$9$,!“e(B
e$BB>$K0F$d$3$l$X$N0U8+Ey$O$”$j$^$9$G$7$g$&$+!#e(B

e$BFC$K0U8+$,$J$1$l$P?tF|BT$C$F:n<T$NJ}$K%i%$%;%s%9$rLd$$9g$o$;!"e(B
OK e$B$,$G$?$ie(B trunk e$B$KF~$l$h$&$H;W$C$F$$$^$9!#e(B

e$B$3$NJ}8~$G$$$$$G$9$+!)<c43@[B.$J5$$O$7$F$$$k$N$G$9$,!d$^$D$b$H$5$se(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:30869] JSON e$B%i%$%V%i%j$r<h$j9~$_$^$9!*e(B”
on Fri, 1 Jun 2007 17:12:59 +0900, “NARUSE, Yui”
[email protected] writes:

|e$B$^$D$b$H$5$s$+$i$OF|5-$N%3%a%s%H$GBg6Z$G$N5v2D$O$b$i$C$?$H2r<a$7$F$$$^$9e(B
|e$B$,!“$3$l$G$$$$$G$9$+!”<h$j9~$s$8$c$$$^$9$h!)e(B

e$B$$$$$G$9$h!#!V$"$s$^$jA}$d$9$J!W$H$$$&0U8+$bD0$$$?$h$&$J5$$,e(B
e$B$7$^$9$,!“e(BJSONe$B$/$i$$$O$”$C$F$b$$$$$G$7$g$&!#e(B

naruse e$B$G$9!#e(B

e$B$H$$$&$o$1$G!“e(Bv1.1.0 e$B$,=P$?$N$G<h$j9~$_$^$7$?!#e(B
e$B$46(NO$/$@$5$C$?J}$O$”$j$,$H$&$4$6$$$^$7$?!#e(B

naruse e$B$G$9!#e(B

http://json.rubyforge.org/
e$B$N%i%$%V%i%j$,%Y%9%H$G$“$m$&$H9M$($F:n6H$7$Fe(B
e$B$-$?$o$1$G$9$,!”:n<T$Ne(B Frorian Frank e$B$5$s$,%i%$%;%s%9$re(B Ruby
License/GPL
e$B$KJQ99$7$F$/$@$5$C$?$N$G!“=5Kv:”$K=P$kM=Dj$Ne(B ver 1.1 e$B$re(B Ruby
1.9 e$B$K<h$je(B
e$B9~$_$^$9!#e(B

e$B$^$D$b$H$5$s$+$i$OF|5-$N%3%a%s%H$GBg6Z$G$N5v2D$O$b$i$C$?$H2r<a$7$F$$$^$9e(B
e$B$,!“$3$l$G$$$$$G$9$+!”<h$j9~$s$8$c$$$^$9$h!)e(B

e$BFC$KH?BP$,$J$$$+$.$j!"e(B1.1
e$B$,%j%j!<%9$5$l<!Bh%3%%C%H$7$^$9!#e(BRuby 1.8 e$B$Xe(B
e$B$N<h$j9~$
$K$D$$$F$O$^$?;~4|$r2~$a$F!#e(B

Hi,

SASADA Koichi wrote:

<"{\n “a”: 2,\n “h”: 1000.0,\n “g”: “\”\u0000\u001f",\n “b”: 3.141,\n “d”: [\n 1,\n “b”,\n 3.14\n ],\n “c”: “c”,\n “i”: 0.001,\n “e”: {\n “foo”: “bar”\n }\n}">.

22 tests, 327 assertions, 2 failures, 0 errors
make: *** [test-all] Error 1

Sorry, not much in Japanese from me, but can you try this patch?

Index: tests/test_json_generate.rb

— tests/test_json_generate.rb (…/tags/v1_1_0) (revision 133)
+++ tests/test_json_generate.rb (…/trunk) (revision 133)
@@ -40,7 +40,7 @@

def test_unparse
json = unparse(@hash)

  • assert_equal(@json2, json)
  • assert_equal(JSON.parse(@json2), JSON.parse(json))
    parsed_json = parse(json)
    assert_equal(@hash, parsed_json)
    json = generate({1=>2})
    @@ -51,7 +51,7 @@

def test_unparse_pretty
json = pretty_unparse(@hash)

  • assert_equal(@json3, json)
  • assert_equal(JSON.parse(@json3), JSON.parse(json))
    parsed_json = parse(json)
    assert_equal(@hash, parsed_json)
    json = pretty_generate({1=>2})

naruse e$B$G$9!#e(B

SASADA Koichi wrote:

<"{\n “a”: 2,\n “h”: 1000.0,\n “g”: “\”\u0000\u001f",\n “b”: 3.141,\n “d”: [\n 1,\n “b”,\n 3.14\n ],\n “c”: “c”,\n “i”: 0.001,\n “e”: {\n “foo”: “bar”\n }\n}">.
Ruby 1.8 e$B$He(B 1.9 e$B$Ge(B inspect
e$B$N=q<0$,JQ$o$C$?$+$i$@$H;W$$$^$9!#e(B
e$B%Q%C%A$NDL$je(B JSON
e$B$GHf3S$9$l$P$$$$$N$G!"$=$l$r<h$j9~$_$^$7$?!#e(B

Thanks, I applied the patch.

e$B$J$+$@$G$9!#e(B

At Thu, 7 Jun 2007 08:00:31 +0900,
NARUSE, Yui wrote in [ruby-dev:30908]:

Ruby 1.8 e$B$He(B 1.9 e$B$Ge(B inspect e$B$N=q<0$,JQ$o$C$?$+$i$@$H;W$$$^$9!#e(B

e$BC1$Ke(BHashe$B$N=g=x$K0MB8$7$F$k$+$i$8$c$J$$$G$9$+e(B?

e$B!!$5$5$@$G$9!#e(B

NARUSE, Yui e$B$5$s$O=q$-$^$7$?e(B:

e$B$H$$$&$o$1$G!“e(Bv1.1.0 e$B$,=P$?$N$G<h$j9~$_$^$7$?!#e(B
e$B$46(NO$/$@$5$C$?J}$O$”$j$,$H$&$4$6$$$^$7$?!#e(B

e$B!!<j85$G%F%9%H$9$k$He(B 2 failures
e$B$J$N$G$9$,!"2?$+?4Ev$?$j$C$F$"e(B
e$B$j$^$9!)e(B

naruse e$B$G$9!#e(B

[email protected] wrote:

NARUSE, Yui wrote in [ruby-dev:30908]:

Ruby 1.8 e$B$He(B 1.9 e$B$Ge(B inspect e$B$N=q<0$,JQ$o$C$?$+$i$@$H;W$$$^$9!#e(B

e$BC1$Ke(BHashe$B$N=g=x$K0MB8$7$F$k$+$i$8$c$J$$$G$9$+e(B?

e$B$($’!":,K\E*$K$O$=$3$G$9$M!#e(B

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

NAKAMURA, Hiroshi wrote:

Date: Sat, 21 Apr 2007 17:09:45 +0900

e$B4XO"$7$F$^$D$b$H$5$s$K<ALd!#e(B1.9e$B!J$H$$$&$+8=>u$Ne(Btrunke$B!K$G$NI8=E:IU%i%$%Ve(B e$B%i%j$N:NMQH=CG4p=$C$F!"$I$&$5$l$^$9e(B? 1.8e$B$+$iI8=`E:IU%i%$%V%i%j3HBgO)e(B
e$B@~!"$H$$$&$N$,$"$j$^$7$?$,!"8=>u$R$HCJMn$7$F$^$9$h$M!#:#8e$O$I$&$7$^$7$g$&!#e(B

rubygemse$B$C$FF~$k$s$G$7$?$C$1e(B? e$B$$$/$D$+$N%i%$%V%i%j$OI8=`E:IU$+$i30$7$?$[e(B
e$B$&$,$h$/$J$$$G$9$+$M!#e(B

e$BB>$N%3%_%C%?$5$s!"$I$&$G$9$+!#e(Brubygemse$B$OF~$kJ}8~$H$$$&$3$H$N$h$&$G$9e(B
e$B!Je(B[ruby-core:11611]e$B!K!#e(B

rubygemse$B$,F~$k$J$i!“e(Bsoap4re$B$OI8=E:IU$+$i$O30$7$^$7$g$&!#L@8eF|%j%j!<%9M=e(B e$BDj$Ne(Bsoap4r/1.5.7e$B$O!"e(Bhttpclient/2.1.0e$B!J5le(Bhttp-access2e$B!K$NB8:_$rA0Ds$H$9$ke(B e$BM=Dj$G$9!#HsI8=E:IU%b%N$K0MB8$7$F$k$N$O$$+$7$$!#$^$?!"e(Bsoap4re$B$N5!G=DI2Ce(B
e$B$OEvLL$
$5$^$j$^$;$s!#e(Bruby/1.9e$B$N%j%j!<%9%5%$%/%k$,8+$($J$$$N$G!”@Z$jN%$7e(B
e$B$H$$$?$[$&$,0BA4!#e(B

e$BI8=`E:IU$r6X;$H$$$&0U?^$O$J$$$N$G$9$,!";d$O!Ve(Bruby/1.9e$B$N!We(Bsoap4re$B%a%s%F%Je(B
e$B$+$i$O9
$j$^$9!#e(Bsoap4re$BK\BN$N3+H/$O$b$A$m$s7QB3$9$k$N$G!"$I$J$?$+B>$K!"e(B
e$B!Ve(Bruby/1.9e$B>e$Ne(Bsoap4re$B%a%s%F%J$r$d$j$^$9!W$H$$$&?M$,5o$l$P!"0z$-7Q$$$G$$$?e(B
e$B$@$$$F$b9=$$$^$;$s!#$?$V$s5o$J$$$G$7$g$&$1$I!#e(B

e$BH?BP$,$J$1$l$P!"5$$,8~$$$?$H$-$Ke(Btrunke$B$+$ie(Bsoap4re$B$r>C$7$^$9!#0l1~!"0l=54Ve(B
e$B$/$i$$$OBT$A$^$9!#e(B

/ / /

e$B$G!"$D$$$G$J$N$G!“B>$K30$9%i%$%V%i%j$O$”$j$^$;$s$+!#:#$K$J$C$F$_$k$H!"e(B
JSONe$B$Oe(Bgeme$B$G$h$+$C$?$J!#e(Btke$B!"e(Bwin32olee$B!"e(Bwebricke$B$be(Bgeme$B$G$$$$!#e(B
e$B8D?ME*$K!VI8=%i%$%V%i%j$G$O$J$$!"I8=E:IU$5$l$F$$$k$@$1!W$H;W$C$F$$$?%ie(B
e$B%$%V%i%j$Oe(Bgeme$B$H$7$F30$X=P$7!“7k2L$H$7$Fe(B
e$B!VI8=E:IU$5$l$F$$$k$b$Ne(B == e$BI8=%i%$%V%i%j!W$K$9$k!”$H$$$&0U?^$G$9!#e(B

/ / /

e$B$H$+$$$&!"e(Brubye$BK\BN$K4X$9$kOC$O!"e(Bruby-coree$B$N$[$&$,$$$$$Ne(B?

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (Cygwin)

iQEVAwUBRpjlYh9L2jg5EEGlAQJeeQf/cQpE3SCWJFiHAm66r6Lu56nZu4Ng3H2K
XYqZfjGuWeq7FFt53llh1z3ylXiPPr/140sh0GD4JdVgnS5mAFcyL+PUvbKRJccq
zF63VfPn/AwSOtQsEOoMzGfrmR7psWPMcjHMNQkWayZKHovJt2jHsvSTM+8LN3Gr
Jx7NBKsZNQ9z8yG1Iiwb/hImbTyWCSlrunYGAJUENeo2dgncyEleyR2WpqTjyK+t
MfOLAjCw1UaHtKWZ2DbTC774x/R0hXyFf4HM3g+MQMOx/lAT9wpfLMnkAX/30Zgr
irzM3QAjCNaeMDM4G2ryaucnsGJQbAkKQAXwHt4rgqLElYsbv9S6cw==
=eEw6
-----END PGP SIGNATURE-----

NAKAMURA, Hiroshi wrote:

e$BB>$N%3%_%C%?$5$s!"$I$&$G$9$+!#e(Brubygemse$B$OF~$kJ}8~$H$$$&$3$H$N$h$&$G$9e(B
e$B!Je(B[ruby-core:11611]e$B!K!#e(B

[1]e$B$rFI$`8B$j$J$s$H$J$/:#$OF~$s$J$$5$$,$7$^$7$?!#e(B

e$B$=$l$O$=$&$H$7$F$3$l$^$G$NBg$-$JN.$l$H$7$F!"e(B1.8e$B$G$OI8=E:IU%i%$%V%i%je(B e$B$N3HBgO)@~$H$$$&$N$,4pK\E*$K$O8@$o$l$F$$$Fe(B[2]e$B!"<B:]$KB?$/$N%i%$%V%i%je(B e$B$,I8=$KE:IU$5$l$k$h$&$K$J$C$?$b$N$N!"5sF0$,HyL/$@$C$?$jC/$b%a%s%F%Je(B
e$B%s%9$7$F$J$$$h$&$K8+$($k%i%$%V%i%je(B(e$BL>;X$7$7$F0-$$$,e(Byamle$B$H$+e(B)e$B$b=P$F$-e(B
e$B$F!“H?>J$H$$$&$+H?F0$H$7$F8=:_e(B1.9e$B$OI8=`E:IU%i%$%V%i%j$N:o8:$H$+e(Bgeme$B$Ge(B
e$B$$$$$8$c$s$H$+$NN.$l$K$J$j$D$D$”$k$N$@$HM}2r$7$F$$$^$9!#e(B

e$B>!<j$Ke(B1.8e$B$K$D$$$F26Am3g$9$k$He(B
pros:
(1) e$B$$$m$s$J%i%$%V%i%j$,A}$($F$?$7$+$KJXMx$K$J$C$?!#e(B
(2) e$BFC$Ke(Bwebe$B%[%9%F%#%s%0$NMxMQ<T$J$I$K$G>!<j$Ke(Bgem
installe$B$7$?$j$O8=<Be(B
e$BE*$8$c$J$$e(B
(3)
geme$B$He(BOSe$BI8=$N%Q%C%1!<%8%7%9%F%$H$NAj@-$,HyL/$JE@e(B[3]e$B$,L$2r7he(B

cons:
(1) e$B%a%s%F%JIT:_$N%i%$%V%i%j$,$]$D$]$D8=$l$@$7$?!#e(B
(1-1) e$B>-MhE*$J%a%s%F%J%s%9$,$I$&$J$k$N$+IT0B!#e(B
(2) e$B@5D>!“E:IU%i%$%V%i%j$O%l%S%e!<$,B-$j$F$J$$$b$N$,$”$k5$$,$9$k!#e(B
(2-1) e$B$?$H$($PEDCf$5$s$,E:IU%i%$%V%i%j$Ge(Bcore
dumpe$B$r;XE&$9$k$3$H$O5)e(B
(3)
e$B7k6Ie(BRailse$B$r;H$&$K$Oe(Bgeme$BIT2DHr$J$?$ae(BWebe$B20$KBP$9$kAJ5aNO$ODc2<5$L#e(B

e$B$H$$$C$?$H$3$m$+$i$b7k6I!"%i%$%V%i%j$,A}$($?$3$H$GEv=iM=A[$7$F$$$?4re(B
e$B$7$5$O5}<u$G$-$?$1$I$b!"$=$N$?$a$N%3%9%H$,<c43Bg$+$C$?$+$b$H$$$&5$$,e(B
e$B$7$F$$$^$9!#e(B

e$B$8$c$"$I$&$9$k$N$,$$$$$+$H$$$&OC$K$J$k$H!"$=$3$=$3G:$^$7$$$G$9$,!#e(B

e$B$?$H$($Pe(BWebe$B20$,NI$/;H$&%W%i%C%H%U%)!<%$H$7$Fe(BPHPe$B$rD/$a$F$_$?$j$9$k$He(B e$B$1$C$3$&L5@aA$K$$$m$s$J%i%$%V%i%j$,E:IU$5$l$F$k$b$N$Ne(BPEAR/PECLe$B$J$s$+e(B
e$B$b%G%U%)%k%H$GF1:-$5$l$F$?$j$H$+$7$F!"6lO+$N:/@W$$?$$$J$b$N$O^z$=Pe(B
e$B$F$$$k$+$J$H;W$$$^$9$M!#e(B

e$BKNItE*$K$ODs0F$G$-$k$N$Oe(B

(A)
e$BE:IU%i%$%V%i%j$O8:$i$5$J$$!#e(BRubyGemse$B$bF~$l$J$$e(B(e$B8=>u0];}e(B)
(B)
e$BE:IU%i%$%V%i%j$O8:$i$5$J$$!#e(BRubyGemse$B$OF~$l$ke(B(PHPe$BN`;w$N>u67e(B)
©
RubyGemse$B$O$H$j$"$($:F~$l$F!"E:IU%i%$%V%i%j$O8e$[$I@’!9Hs!9$GB8B3e(B
e$B$9$Y$-$+9M$($ke(B(e$B@hAw$je(B)
(D)
e$BE:IU%i%$%V%i%j$Oe(BRubyGemse$B$H$=$l$,e(Brequiree$B$9$k$b$N$K8BDje(B(geme$BI,?\2=e(B)
(E)
e$BE:IU%i%$%V%i%j$GITMW$J$b$N$O:o$k$,e(BRubyGemse$B$bF~$l$J$$e(B(e$B%9%H%$%C%/e(B)

e$B$/$i$$$+$J$"!#$I$&$;$d$k$J$ie(B(D)e$B$/$i$$$N$[$&$,$5$C$Q$j$7$F$Fe(B(e$B%a%s%F%Je(B
e$B%s%9$r$9$k?H$H$7$F$Oe(B)e$B$-$l$$$GNI$5$=$&$H$O;W$$$^$9$,e(B…e$B$G$be(B[1]e$B$rFI$`e(B
e$B$He(Bdrbraine$B$,$"$s$^$j>h$j5$$8$c$J$5$=$&$@$7$J$"!#e(B(A)e$B$+$J$"!#e(B

References:

  1. [ruby-core:11625]
  2. [ruby-dev:16283]
  3. [ruby-dev:27321]

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:31223]
1.9e$B$G$NI8=E:IU%i%$%V%i%j$N:NMQH=CG4p=e(B”
on Sun, 15 Jul 2007 00:02:23 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|e$BB>$N%3%_%C%?$5$s!"$I$&$G$9$+!#e(Brubygemse$B$OF~$kJ}8~$H$$$&$3$H$N$h$&$G$9e(B
|e$B!Je(B[ruby-core:11611]e$B!K!#e(B

e$B$=$l$O$=$l$G$b$a$F$$$k$h$&$G$9$,!#e(B

|e$B$H$+$$$&!"e(Brubye$BK\BN$K4X$9$kOC$O!"e(Bruby-coree$B$N$[$&$,$$$$$Ne(B?

ruby-coree$B$G$7$F$$$?$@$$$?J}$,F|1Q%V%j%C%8$N<j4V$,8:$k$N$G;de(B
e$B$O$"$j$,$?$$$N$G$9$,!"L5M}6/$$$O$G$-$^$;$s$M!#e(B

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yukihiro M. wrote:

|e$BB>$N%3%_%C%?$5$s!"$I$&$G$9$+!#e(Brubygemse$B$OF~$kJ}8~$H$$$&$3$H$N$h$&$G$9e(B
|e$B!Je(B[ruby-core:11611]e$B!K!#e(B

e$B$=$l$O$=$l$G$b$a$F$$$k$h$&$G$9$,!#e(B

e$B$"$l!"$b$a$F$^$9e(B?
e$BC/$bH?BP$7$F$J$$$h$&$J!#$$$D$bDL$j!"!V$s$8$c$3$l$b!We(B
e$B!V;W$$$D$-$@$1$I$3$l$O!W$H$+OC$rYxMp$5$;$k$d$D$,$G$F$-$FJ|CV>uBV$J$N$G!“e(B
e$BN.$l$r@0M}$9$k?M$,$$$J$$!”$H$$$&LdBj$O$"$j$=$&$G$9$,!#e(B

|e$B$H$+$$$&!"e(Brubye$BK\BN$K4X$9$kOC$O!"e(Bruby-coree$B$N$[$&$,$$$$$Ne(B?

ruby-coree$B$G$7$F$$$?$@$$$?J}$,F|1Q%V%j%C%8$N<j4V$,8:$k$N$G;de(B
e$B$O$"$j$,$?$$$N$G$9$,!"L5M}6/$$$O$G$-$^$;$s$M!#e(B

e$B8=:_$b%W%i%$%^%j$Oe(Bruby-coree$B!"$H$$$&$3$H$GN;2r!J2?EY$+3NG’$7$F$^$9$,!K!#e(B
e$B:#8e$O$G$-$k$@$1!"e(Bruby-coree$B$K$U$k$h$&$K$7$^$9!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (Cygwin)

iQEVAwUBRplSzx9L2jg5EEGlAQLyswf/SbL7rxGcrT0Y/Cx6j9BbP2yH5KwPLEtV
tzNGezfFSLaHtCmXl8tn1E/Qf5pJPdUGQFOwX55YY8ht8z5oI702+AfcPlUPLMcC
EZ84z4iFPKhMbSeU56Pmz4UnsvjJ53w/CT2Axosg3slkLwdO1OgW6Fjs9bcn8J/Q
apnOiI9Xp4AxAL6DUwDqLtlgckKPMGXtVF23Iye33CE+MOu5pCE8DRnsf5EqQ4vp
KjHABPonCaS+nXMF677Ix7QMmVHHhytRarfflX39AvyurAxIbHjUXV7sYlDtW0iH
JKzHOy8fLVQkFfEqADRrHYX7PsYUyFFEFkTmAcXS9NAZElJW7Nh6pQ==
=MeoR
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Urabe S. wrote:

e$BB>$N%3%_%C%?$5$s!"$I$&$G$9$+!#e(Brubygemse$B$OF~$kJ}8~$H$$$&$3$H$N$h$&$G$9e(B
e$B!Je(B[ruby-core:11611]e$B!K!#e(B

[1]e$B$rFI$`8B$j$J$s$H$J$/:#$OF~$s$J$$5$$,$7$^$7$?!#e(B

e$BJL%a!<%k$K$b=q$-$^$7$?$,!"$"$s$^$j$=$s$J0u>]$O<u$1$F$^$;$s$G$7$?!#$^!"e(B
e$BD>@\J9$$$F$_$^$9$+!#!V$3$N$^$^$@$HF~$i$J$$N.$l$@$1$I$$$$$Ne(B?e$B!W$C$F=qe(B
e$B$-$c!"H?1~$bA}$($k$+$b!#e(B

e$BKNIt$5$s$^$H$a$N$&$A!"e(B

(1) e$B%a%s%F%JIT:_$N%i%$%V%i%j$,$]$D$]$D8=$l$@$7$?!#e(B
(1-1) e$B>-MhE*$J%a%s%F%J%s%9$,$I$&$J$k$N$+IT0B!#e(B

e$B$C$F$N$O7k9=Bg$-$$$H;W$$$^$9!#JQ99e(B/e$B=$@5$K@UG$$r<h$l$k%a%s%F%J$,IT:_$N$be(B
e$B$N$K$D$$$F$O!":o$i$6$k$rF@$J$$$s$8$c$J$$$+$J!#KNIt$5$sIp<T$5$s$G$b%a%s%Fe(B
e$B$G$-$J$$$h$M!"e(Bsoap4re$B$H$+e(Byamle$B$J$s$F!#e(Bruby_1_8e$B$O%V%i%s%A%a%s%F%JG$$;$H$7e(B
e$B$F!"e(B1.9e$B$K;D$7$?$iBLL$@$H;W$&!#e(B

rubygemse$BE:IU$K$D$$$F$O!"e(B-coree$B$X0\F0$7$F$D$D$$$F$_$^$9!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRpw+Lx9L2jg5EEGlAQKlpQgAlJARIv3ybFUZUSu/hFWTDcDESEEsY20A
t+LZ0hA2MoSk1M5FAxg6QPwxlIjxt/6SgcIJGg+soG5cF3dVvCLSmoYsPf2zSIWB
yD5bmeHBEJDYkp90SF40riaKta0V26lw7Ub1drpTzQstzlRFUkNwcR8tcHkl2wBZ
ZUin2CiYPNml0oSFwdRDEcS29T7smrBMd1HdgtH3xalCZJ6HBQNf/z/RrcWYgNGz
VjkMBn/sFxJH3JE3TRJWLSU26GdtCbcwW4T3N/Q9JHsrrm3RUbn8OPnDkiubOjzZ
QtLBsnv7873rd0Wc0ZfEj6Ms2ZgoZ0zLp+ud5EVNeq9ZfCol1p3h8A==
=k1UK
-----END PGP SIGNATURE-----