トップページ⇒tech
1001コメント279KB

Rubyについて Part 29

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/10/29(月) 23:27:18
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
http://www.ruby-lang.org/ja/

= 前スレ
Rubyについて Part 28
http://pc11.2ch.net/test/read.cgi/tech/1187298711/

過去スレ・関連スレは >>2-
0446デフォルトの名無しさん2007/12/16(日) 10:02:21
>>445
RangeもIOもStringも、#eachでto_aはしないぞ。
0447デフォルトの名無しさん2007/12/16(日) 10:26:50
ちょっと関係無いけど、array に to_a があっても良いんではと
思うんだけどどうなんだろう?要素に to_a が無い場合はエラー
で良いけど、常にエラーの必要は直観に反する気がする。

これって馬鹿な発想かしらん。
0448デフォルトの名無しさん2007/12/16(日) 10:39:47
Array#to_aならもうあると思うけど、何か違う挙動を求めてる?

 class Array
  def to_a; self.map{|n| n.to_a }; end
 end

になって欲しいってこと?
0449デフォルトの名無しさん2007/12/16(日) 12:12:03
舌足らずですみません。to_a ならば例えば

[3,5,"foo"].to_a => "3,5,foo"

default の区切りがあって ("," でも " " でも)、to_a(" ")
とか指定できるとか。こんなのあると便利かなと思うんだけど。


0450デフォルトの名無しさん2007/12/16(日) 12:58:15
すまん。joinとかsplitとどう違うのかわからない。
0451デフォルトの名無しさん2007/12/16(日) 13:02:00
区切った文字列を得たいのならjoinでいいし
そもそもto_aは「レシーバーを配列にして返す」メソッドなので
to_aにそれを求めるのは間違いだ
0452デフォルトの名無しさん2007/12/16(日) 13:16:17
to_aをなんか勘違いしてるんだろうな
「配列に変換する」以上の意味はないと思うぞ
0453デフォルトの名無しさん2007/12/16(日) 13:30:19
to_sと混同しているわけでもなさそうだな。
0454デフォルトの名無しさん2007/12/16(日) 13:33:45
begin
old_sep, $, = $,, ','
[1,2,3].to_s
ensure
$, = old_sep
end
めんどいな。

[1,2,3].join(',')でいいや。
0455デフォルトの名無しさん2007/12/17(月) 00:33:12
>>446
String#to_a は無いから Enumerable#to_a が呼ばれて
結果的に String#each が呼ばれるハズでは?
0456デフォルトの名無しさん2007/12/17(月) 02:05:15
そんないつ変わるかわからない内部実装を知らなきゃRubyって使えないんですか?
Stringのto_a (これが toArray の意味だとして)は、独自で実装されて不思議は内容に思うんですが。
その場合は、おそらく文字のエンコードを見て、「一文字」ずつの配列になるんだろうなっていうのが
俺にとっては驚きが最小ですが。
0457デフォルトの名無しさん2007/12/17(月) 02:44:38
俺にとって、と言うなら、
自分としてはStringのto_a自体が不自然に見えるなあ
多分split使っちゃう

とりあえず、言ってることがふわふわしずぎてるから
もっと考えてまとめてきてね
04584442007/12/17(月) 13:54:06
>>456
String は to_a を独自実装してないんだよ。
だから String#to_a を独自実装しないとその動きにはならない。
まぁそもそも String#each が行単位で回るのがどうなのかって話もあるんだが。

ちなみに俺が to_a を出したのは >>442 が
reverse_each_line と書いたから。
そりゃ split が一番直感的なのは解るが、それだと改行取られるからね。
0459デフォルトの名無しさん2007/12/17(月) 14:25:45
>>458
splitでも改行とられないお。

irb(main):001:0> "a\nb\nc\n".split(/(?<=\n)/)
=> ["a\n", "b\n", "c\n"]
0460デフォルトの名無しさん2007/12/17(月) 16:06:06
>>459
屁理屈ぅ〜!

irb(main):001:0> "a\nb\nc\n".split
["a", "b", "c"]


ちなみに、ふつーこうじゃね?

irb(main):001:0> "a\nb\nc\n".split(/^/)
["a\n", "b\n", "c\n"]
0461デフォルトの名無しさん2007/12/17(月) 19:20:26
>>460
屁理屈っつうか、改行の後で分割するわけだから、459のほうが自然に感じるけど。

>>irb(main):001:0> "a\nb\nc\n".split(/^/)
なんてのをみると、正規表現がわかってないなと思う。

あ、言われる前に言っておくけど、おれ459じゃないからね。
0462デフォルトの名無しさん2007/12/17(月) 19:22:24
>>461
自演乙
0463デフォルトの名無しさん2007/12/17(月) 19:41:44
そういやEnumerableにreverse_each(のようなもの)が無いのはなぜ?
reverseメソッドがあって意味が違ってくる場合はややこしいけど、
なんか意味的におかしい?
0464デフォルトの名無しさん2007/12/17(月) 19:59:39
reverse_eachをeach使って実装するのは間違ってるからじゃね?
0465デフォルトの名無しさん2007/12/17(月) 20:09:36
まーじーでー
0466デフォルトの名無しさん2007/12/17(月) 20:12:53
なるほど
実装にもeach呼んだ後にもっかいループがいるわけか
0467デフォルトの名無しさん2007/12/17(月) 20:35:54
>>459
?>って何だ
0468デフォルトの名無しさん2007/12/17(月) 20:40:41
>>462
見苦しいよ460
0469デフォルトの名無しさん2007/12/18(火) 02:51:52
>>455
to_aはイテレータじゃない。

>>445の「配列をメモリに完全に展開」というのがto_aを呼ぶというつもりなの
かと思うんだが。
04704552007/12/18(火) 05:31:35
>469
うん。判りにくい書き方してスマソ。
イテレータじゃないが、Enumerable#to_a は返す配列を作るために
内部で #each を呼ぶんじゃないっけ? そういう意味で書いたつもり。
04714602007/12/18(火) 09:56:18
>>461
「屁理屈」って言ったのは漏れの勘違いだた。
>>457 の「多分split使っちゃう」が >>459 なのね。スマソ。

ただ、「正規表現がわかってないなと思う」はちょっと心外だなあ。
/^/ は、らくだ本の split の例にも出てくるくらい基本だし、
/(?<=\n)/ より多分速いよ。
0472デフォルトの名無しさん2007/12/18(火) 11:36:49
shuffle ネタは盛り上がるねえ。
0473デフォルトの名無しさん2007/12/18(火) 17:28:37
module WEBrick
  module HTTPUtils
    def mime_type(filename, mime_tab=DefaultMimeTypes)
      suffix1 = (/\.(\w+)$/ =~ filename && $1.downcase)
      suffix2 = (/\.(\w+)\.[\w\-]+$/ =~ filename && $1.downcase)
      mime_tab[suffix1] || mime_tab[suffix2] || "application/octet-stream"
    end
    module_function :mime_type
  end
end
0474デフォルトの名無しさん2007/12/18(火) 22:41:20
Urabeさん怒ってるなw
0475デフォルトの名無しさん2007/12/19(水) 02:09:45
Larry Wallにふさわしい死に方:
真珠を採ろうと海に潜って溺死

Guido van Rossumにふさわしい死に方:
全長10mのPythonに飲まれて死ぬ

まつもとゆきひろにふさわしい死に方:
Rubyで頭をかち割られて地獄に落ちる
0476デフォルトの名無しさん2007/12/19(水) 02:17:32
Guido(ホイドって読むらしいね)の場合、
SPAMの食い過ぎで死ぬとかのほーがいーよーな。

0477デフォルトの名無しさん2007/12/19(水) 09:02:38
Larryは冬コミで圧死とかのほうがいいな
0478デフォルトの名無しさん2007/12/19(水) 10:08:50
パールのようなもので殴り殺されたとかのほうがいいな
0479デフォルトの名無しさん2007/12/19(水) 10:09:44
つまんないね
0480デフォルトの名無しさん2007/12/19(水) 11:11:34
>>474
どっちの気持ちもわかるなあ。
ツールで確実に処理したいってのと、出来るんだから手元でちゃっちゃとやりたいってのと。

とりあえずUrabeさんは喧嘩腰なのをやめたほうが絶対いい。バザールモデルで
あの態度はまずすぎる。Matzみたいなタイプを説得するには上げ膳据え膳で懐柔して
いかないと絶対受け入れられないよ。なんせLarryゆずりのプログラマーの美徳を兼ね備えた人物だからな。

個人的にはTrac (powered by Python) を使ってくれるのが一番いいんだけどね。あれはわかりやすいし。
0481デフォルトの名無しさん2007/12/19(水) 11:33:02
ラムちゃんの同人誌で圧死は難しいだろ
最近なんか別の作品にハマった?
0482デフォルトの名無しさん2007/12/19(水) 13:16:29
今年の頭でこんな感じ
ttp://gihyo.jp/dev/serial/01/alpha-geek/0000

Matzもこのくらいはっちゃけてるといいんだが
0483デフォルトの名無しさん2007/12/19(水) 22:14:07
>476
東北弁で「ほいど」というとえらい意味になるのだが狙ってる?
0484デフォルトの名無しさん2007/12/19(水) 23:20:09
>>480
tracはちょっといまいち。
あれなら影舞にでもWiki組みこんだ方が・・・
0485デフォルトの名無しさん2007/12/19(水) 23:34:08
るびま 22
http://jp.rubyist.net/magazine/?0022
0486デフォルトの名無しさん2007/12/19(水) 23:36:08
自演乙

って誰の自演?
0487デフォルトの名無しさん2007/12/19(水) 23:41:33
>>484
影舞だれか開発再開しないかな。
非常にいいと思ってるんだが、開発が止まっている事(とデザイン)を理由に
敬遠されるのはなんかもったいない。

というか、本当にみんなBugzillaとかMantisとか(Excelとか)使いやすいと思ってる
のかな。
tracは・・・wikiが有効に利用できるノウハウがあってmod_pythonが普通に使える
のならありかもとは思う。
0488デフォルトの名無しさん2007/12/20(木) 09:28:49
せっかくなんで、かげまいと他のBTSを比較して、いい点悪い点をあげてみないか。
BTSスレのほうがいいかもしれんけど。

いい点:
・DBなしでの運用が可能
0489デフォルトの名無しさん2007/12/20(木) 11:21:17
>>487
使う側じゃなくて、BTSがあると外部から状況がわかりやすいんだよね。
どのバグが潰されたり残ったりして、どういう議論が進んでるかってのが
一発で参照できるじゃん。MLと違って関係のないメール全部チェックしなくても済むし。
urabeさんは1.8の保守やってるからそういうのに敏感になる気持ちはよくわかる。

でも作る側としては面倒だろうなあ。残ったバグも、「あの件直った?」ってメールで
してくれりゃ済むわけだし。
0490デフォルトの名無しさん2007/12/20(木) 11:27:09
RubyでTracなら今はやりのredmineってどうなの?railsで作ったTracクローン
0491デフォルトの名無しさん2007/12/20(木) 15:07:45
omoroi
http://satoshi.blogs.com/life/rubyrails/index.html
0492デフォルトの名無しさん2007/12/20(木) 15:10:10
http://www.rubyist.net/~matz/slides/kobe07/
0493デフォルトの名無しさん2007/12/20(木) 16:27:58
>>485
これって、いまだにバグだらけなのに
松本氏が強引に1.9.1をリリースしてしまうが、
ロクな品質にはならないから、みんな使うなよ。
ということを遠まわしに言ってるんだろうか?
0494デフォルトの名無しさん2007/12/20(木) 17:05:53
読めない
http://www.rubyist.net/~matz/slides/kobe07/mgp00023.html
http://www.rubyist.net/~matz/slides/kobe07/mgp00024.html
0495デフォルトの名無しさん2007/12/20(木) 17:08:26
エンコーディング対応のスライドがダブってて、「なくなったもの」のスライドがない
0496デフォルトの名無しさん2007/12/20(木) 17:38:13
>>493 は巻頭言へのコメントか?
0497デフォルトの名無しさん2007/12/20(木) 17:54:10
1.9の安定バージョンは1.10になるの?
0498デフォルトの名無しさん2007/12/20(木) 17:57:24
バージョン番号の各要素は全て 1 桁で構成される決まりらしいよ。
0499デフォルトの名無しさん2007/12/20(木) 17:59:31
確か次は、変則的に1.9.1が安定版になるって話のはず
で、その次が2.0……だったっけか
0500デフォルトの名無しさん2007/12/20(木) 19:44:45
遊べる程度に完成してるかな
0501デフォルトの名無しさん2007/12/20(木) 22:54:31
Rubyでひらがなをローマ字に変換するライブラリありますか?
ぐぐったけど、なぜか全部使えない・・・
環境はXPでRubyは1.8.6です。できれば使い方も教えてほしいです。
すいません・・・
0502デフォルトの名無しさん2007/12/20(木) 23:30:20
ruby-kakasiくらいしかしらんけど10年以上前のシロモノなんだな。
テーブル自分で作って引いた方が早く片付くかもしれんな。

0503デフォルトの名無しさん2007/12/20(木) 23:36:08
で、作ったら晒してくれると他の誰かがうれしいかも
もちろん不備の指摘も来るかも
と、幸せパターンを提示してみる
0504デフォルトの名無しさん2007/12/20(木) 23:42:45
>>501
http://www.math.kobe-u.ac.jp/~kodama/tips-ruby-kana-rom.html
http://0xcc.net/ruby-romkan/


ググッたけど使えないってどういう意味?
見つかったけどインターフェイスがお気に召さない?
使い方が分からない?
0505デフォルトの名無しさん2007/12/20(木) 23:59:51
できればSJISでやりたいんですよ〜↓↓
Rom2kanaはなぜかインストールしたんですけど、使用例通りに(もちろんmをnに変えました)使ったんですが、ローマ字変換できなくて・・・
0506デフォルトの名無しさん2007/12/21(金) 00:03:41
kakasiもいいんですが、Kana2romみたく使えるほうが理想です。。。
なぜか使えないんですよ・・・
Kana2romはオープンなので、こっからテーブルとか作ればいけるかもですが、、、いかんせん僕はためしたけど無理でした。
0507デフォルトの名無しさん2007/12/21(金) 00:26:46
情報を全部出せ話はそれからだ

どのようなことを最終的にしたいのか?

インストールしたファイル
インストールしたファイルをどこに置いたのか
自分が書いたコード
自分が望んだ結果
実際に出力された結果

Rubyのバージョン
OSのバージョン

あと、今回は日本語文字列だから

Rubyの起動オプション
扱いたい文字列の文字コード

ちょっと要らない項目もあるかなと思ったけど
これらの情報を整理して書き込んでみて

整理する過程で自己解決できるかもしれないし(自己解決した場合も一言教えてね)
整理してくれたら住人も質問に答えられると思う

現状は住人があなたの分からないの内容を分からないという状況だから

あと、質問するときは最初に全部情報を出してしまうのが早期解決の鍵だよ
05085062007/12/21(金) 00:44:13
ご指摘、どうもありがとうございます。
テンプレ(?)に従って記入してみます

◎インストールしたファイル http://ime.nu/www.math.kobe-u.ac.jp/~kodama/tips-ruby-kana-rom.htmlです。
◎インストールしたファイルをどこに置いたのか Ruby関連のソースが全部入ってるフォルダに入れました。
エクリプスとかじゃなく、テラパッド使ってるんで、フォルダいちいち開いたりして編集してます。
◎自分が書いたコード
require "kana2rom"
str="ひらがな/カタカナ"
printf("ローマ字: %s\n", Kana2Rom::kana2rom(str))
printf("平仮名 : %s\n", Kana2Rom::kata2hira(str))
printf("片仮名 : %s\n", Kana2Rom::hira2kata(str))
だいたいこんな感じです。
◎自分が望んだ結果

ローマ字:hiragana/katakana

こいつが出力されればそれでいいです。

◎実際に出力された結果
ローマ字:ひらがな/カタカナ
平仮名:ひらがな/カタカナ
片仮名:ひらがな/カタカナ

なんでやねん!って感じです。

◎Rubyのバージョン 1.8.6
◎OSのバージョン  winXP

◎Rubyの起動オプション コマンドプロンプトです。
◎扱いたい文字列の文字コード SJIS
すいませんが、よろしくお願いします。
05095062007/12/21(金) 00:45:34
http://ime.nu/ime.nu/www.math.kobe-u.ac.jp/~kodama/tips-ruby-kana-rom.html
のKana2RomはEUCで書かれてるんですが、それが原因かもです。
でも、、、わかってても解決できないシマツ・・・
0510デフォルトの名無しさん2007/12/21(金) 00:47:16
そもそも宿題スレか初心者スレ向きの質問だと思うんだよ
05115082007/12/21(金) 00:58:31
すいません・・・
Kana2Rom自体はちゃんと動くんですけど、◎自分が書いたコード(henkan.rb)でうあるとなぜかやってくれないんです。。。
0512デフォルトの名無しさん2007/12/21(金) 00:58:34
エディタにコードを変えて保存する機能はないの?
0513デフォルトの名無しさん2007/12/21(金) 01:01:59
NKFやらkconvでeucに変換するとか
05145082007/12/21(金) 11:30:56
>>512,513TeraPad使ってますが、変更すると使えなくなります・・・
0515デフォルトの名無しさん2007/12/21(金) 12:19:22
あのね、こういう技術的な話をする場で
「使えない」「できない」「無理」「やってくれない」
みたいな表現はやめなさい。

「○○をしたら」「こういう結果になって欲しいのに」
「○○になってしまった (出力結果やエラーメッセージなど)」
を具体的に書くように。

あと、 >>513 の言ってる「変換」は、こういうことでは。

printf("ローマ字: %s\n", Kana2Rom::kana2rom(Kconv::toeuc(str)))
printf("平仮名 : %s\n", Kconv::tosjis(Kana2Rom::kata2hira(Kconv::toeuc(str))))
printf("片仮名 : %s\n", Kconv::tosjis(Kana2Rom::hira2kata(Kconv::toeuc(str))))
05165082007/12/21(金) 12:29:39
>>515さん
>>513さん

ご指摘ありがとうございます。表現上わかりにくい部分があったことをお詫びします。
ところで、
printf("ローマ字: %s\n", Kana2Rom::kana2rom(Kconv::toeuc(str)))
にすることで、無事動きました!
このスレのみなさん、大変ご迷惑をかけました。
無事に動いて良かったです。本当にありがとうございました。
0517デフォルトの名無しさん2007/12/21(金) 13:47:54
文字コード対応させてみたけどもう遅いか。。。

http://www.momo-lab.net/junk/kana2rom_kconv.rb
05185082007/12/21(金) 14:14:02
>>517遅くないです。助かります。
ありがとうございました。さっそく使ってみます。
他言語と比べても親切な方ばかりで、本当に感謝してます。
0519デフォルトの名無しさん2007/12/22(土) 08:59:50
そういや、もうクリスマスだな。
0520デフォルトの名無しさん2007/12/22(土) 11:04:46
mod_rubyは1.9系列にならないの?
0521デフォルトの名無しさん2007/12/22(土) 15:51:21
>>520
ruby側の問題で現状実現不能状態
0522デフォルトの名無しさん2007/12/22(土) 18:35:22
>>519
ruby側の問題で現状実現不能状態
0523デフォルトの名無しさん2007/12/22(土) 19:49:25
ぶは
0524デフォルトの名無しさん2007/12/22(土) 20:50:41
>>522
クリスマス延期のお知らせ
rubistのクリスマスは半永久的に延期されることが閣議決定されました。
0525デフォルトの名無しさん2007/12/22(土) 23:15:54
>>210-238
今ごろ謝罪して来ましたな。

0526デフォルトの名無しさん2007/12/23(日) 05:38:37
るびまの中身がドンドン薄くなるな
そろそろ終焉の時間を迎えつつある印象を受けてしまう
0527デフォルトの名無しさん2007/12/23(日) 11:36:37
>>526
それはむしろいいことなのかな。 ruby も定着してきてるびまの果たす役割
も減ってきたということかも。初めの頃は俺たちが Ruby を広める、
みたいなものを背負ってただろうからね。
0528デフォルトの名無しさん2007/12/23(日) 12:24:05
デフォルトだとmake installの段階でrdocを作るのはやめてほしいなあ

sudoしてmake installするもんだから、.extが消せなくなる。
rdocが欲しい人は普通にmake rdocでいいじゃん。
0529デフォルトの名無しさん2007/12/23(日) 13:16:03
BTSの話題が出てたから、一応、RubyのBTSを
TracはPythonだから、いやなんだよね?

Trac風のん
retrospectiva
http://retrospectiva.org/

redmine
http://www.redmine.org/

どっちも、Rails製のはずで、日本語化はいけるよう
0530デフォルトの名無しさん2007/12/23(日) 15:13:11
俺がRubyを使ううちで一番好きなメソッド、
Object#methodsが[Symbol]を返すように変更されてるね。
0531デフォルトの名無しさん2007/12/23(日) 18:12:20
結局このまま出るのかよ。
阿鼻叫喚の渦が見えるぜ・・・
0532デフォルトの名無しさん2007/12/23(日) 18:16:27
1.9.1までに安定させれば無問題
0533デフォルトの名無しさん2007/12/23(日) 18:27:27
Rails2.0はすぐ導入したけど、流石に本体は怖くてまだ使えんな
0534デフォルトの名無しさん2007/12/23(日) 18:33:23
>>526
今回インタビュー無かったしな
他言語探索がジョーク言語取り上げてたので深みがなかったな
リリース後のバグフィックスが落ち着いたあたりのるびまの内容が薄かったら危険かも
0535デフォルトの名無しさん2007/12/23(日) 18:58:58
rubyをやってて思うんだが...

railsはまだいいけど、
ruby自体ってありきたりな言語で全然楽しくない。

0536デフォルトの名無しさん2007/12/23(日) 19:37:10
ありきたり最高
ありきたりじゃない使いかたもやれば出来るの最高
0537デフォルトの名無しさん2007/12/23(日) 19:37:19
ありきたりじゃない言語が良ければLISP系やHaskellとか楽しいのいろいろあるやん

楽しくない程度ならまだいいよ、苦痛でなけりゃ。
俺も楽しいから使うって感覚はないな。手軽に使えるので十分嬉しいが。
0538デフォルトの名無しさん2007/12/23(日) 19:54:18
スクリプト言語ってそんなもんじゃないかな。
便利をライブラリを利用して書いてるだけで、
ホントにコンピュータを操ってる感覚ってないじゃん。
05395352007/12/23(日) 20:00:32
いや、やる前から"楽しい"って宣伝してたのに、
やってみると他のと同じだったから、
どこが楽しいのかと。。。
普通に期待を裏切って、""
05405352007/12/23(日) 20:04:36
"楽しくない"と思う。

>>536
>ありきたりじゃない使いかたもできる。

「ありきたりじゃない」を探したけど、ほとんど場合、
他の言語で似たような事ができると思った。

0541デフォルトの名無しさん2007/12/23(日) 20:06:08
「rubyは好きだけどrailsが嫌い」っていうのはよく聞くけど
逆は珍しいな

まー合わないのなら別に無理して使わなくてもいいと思うよ
rubyじゃないとできないって事はほとんどないから
0542デフォルトの名無しさん2007/12/23(日) 20:14:43
似たようなことっての「ような」の部分がいちいち癪に障る人もいるわけだよ
rubyと分野がかぶるのは、Perl, Pythonがあるけどそれぞれ
いろんな長短があるからなあ。
0543デフォルトの名無しさん2007/12/23(日) 20:15:17
ありきたりじゃないものといえば……有名だけどIntercalとか?
ある程度実用的なとこでAPL(J)とか。
0544デフォルトの名無しさん2007/12/23(日) 20:21:28
HaskellとかPrologみたいなルール指向言語や
SQLとかGLSLとか特定分野に使われるDSLなんかは辺なのがあって面白いよね。

ただ、>>535のいい方をみてるとどういう使いかたをしてるのか・・・
Rubyのいいところは動的になんでもいじれるところだと思うけど
1.megabyteとかは楽しいとは思わないのかな
0545デフォルトの名無しさん2007/12/23(日) 20:32:56
Rubyは意外な所が変態であることが「見えてくる」言語という気がする
■ このスレッドは過去ログ倉庫に格納されています