トップページ⇒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-
0653デフォルトの名無しさん2007/12/25(火) 15:37:56
Javaとかは依存したクラスは良くないという理想のもとに、
やたらめったら複雑なアーキテクチャになって、
少なくともわかりやすいとは言いづらいシステムになる事はよくあると思うけど。
それはJavaが静的な型付け言語だから仕方ない部分がたくさんあって。

対してRubyはクラス同士が依存しまくったソースコードを書いても、
動的で、クラスの定義を後付けできたりする性質と相まって、
案外うまくいっちゃう事が多いと思う。

つか、アプリケーション作る場合とフレームワーク作る場合では、
依存するクラスをどの程度なくすかどうかの割合って違うよな。

基本クラスしかメソッドの引数に使うななんて、
ほんとにそれでプログラミングが楽になるのか?

クラス同士が依存するなときう教えは、プログラミングを楽にするための教えであって、
それがプログラミングを難しくしてたら全く意味ないぞ。
0654デフォルトの名無しさん2007/12/25(火) 15:44:10
つーかすごい極端な話、
「従業員管理クラス」と「従業員クラス」という二つのクラスがあった場合、
「従業員管理クラス」が「従業員クラス」に依存しないってどういう場合だ!
0655デフォルトの名無しさん2007/12/25(火) 15:45:58
>>652 は何か適当なデザパタ本は読んでるの?
その中では、652の言うような意味でクラスは独立してる?

あと、書き込み全体から感じるにおいからして、
Ruby を使ってダックタイピングならぬチキンタイピングを始めちゃう前に、
Java とか C♯とか静的な型の言語を使った方が欲求が満たされて、
幸せに慣れるんじゃないかな。

http://talklikeaduck.denhaven2.com/articles/2007/10/22/chicken-typing-isnt-duck-typing
0656デフォルトの名無しさん2007/12/25(火) 15:53:52
コンポジションを使う場合と使わない場合は
どう区別するのがいいの?
0657デフォルトの名無しさん2007/12/25(火) 16:34:57
ネタに困ってる訳でもないのに、お前らやさしいな・・・
0658デフォルトの名無しさん2007/12/25(火) 16:54:18
>>650
Ruby1.9.1は開発者向けでしたか。
Ruby1.9.1になれば速くなるという記事がたくさんあったので、
Ruby1.8.6に変わるものだと思っていました。
一般人は1.8.6を使い続ければいいということですか。
0659デフォルトの名無しさん2007/12/25(火) 17:48:05
1.8の消極的メンテしかされない糞ライブラリで足りるなら
0660デフォルトの名無しさん2007/12/25(火) 19:00:39
>>659
「一般人」を 1.9.1 に誘導するようなレスはやめれ。
0661デフォルトの名無しさん2007/12/25(火) 19:20:07
>>652
>新しい発想じゃないだろ。
>どんな本にでもクラスは独立すべき、依存したクラスはよくないと書いてある。
いや十分新しいよ。「独立したクラスにすべき」という考え方が「引数は基本クラスに限定すべき」という考えに変換されている点など特に。
どういう思考回路を使ったらそういう結論になるのか不思議。

>そこまで偉そうにするんだったら採点くらい出来るだろ。
評価するのは構わないけど、偉そうなのはそっちだろ。日本語間違ってるよ。

>プログラミングはバックグラウンドでは0と1で計算しているだけ。
>また、ある時に1と入れたら(乱数を使わない限り)、必ず0か1のどちらが出るようになっている。
>だから、必ず最善の手法が存在するはずである。
前提と結論が100万光年離れてる。京大生の頭では補完できるかもしれないが、そこまで賢くない一般人には無理。
0662デフォルトの名無しさん2007/12/25(火) 19:20:22
意図としては1.9.1は1.10であり
偶数の安定バージョンって位置付けじゃないの?
0663デフォルトの名無しさん2007/12/25(火) 19:37:38
>>652
> プログラミングはバックグラウンドでは0と1で計算しているだけ。
> また、ある時に1と入れたら(乱数を使わない限り)、必ず0か1のどちらが出るようになっている。
> だから、必ず最善の手法が存在するはずである。

まったく意味はわからんが、これが本当ならプログラマとして夢を持てるw
0664デフォルトの名無しさん2007/12/25(火) 19:40:59
最善つったって、色々あるのにな
0665デフォルトの名無しさん2007/12/25(火) 19:46:03
>>632
def [](index)
return @array[index]
end

と定義すれば
obj[i][j] = value
の形で代入できる

>>652
>どんな本にでもクラスは独立すべき、依存したクラスはよくないと書いてある。
それは場合によりけりだ
自分でもコンポジションって言葉を使ってるだろ?

依存は「できるだけ少ない方がいい(不要な依存はいらない)」のであって
適切な依存関係はプログラムを分かりやすくする
0666デフォルトの名無しさん2007/12/25(火) 19:48:03
あとは細かいアルゴリズムを書いておしまいだ。
クラスは作った。
どう悩んでも今のおれでは依存だらけになったら
オブジェクトコンポジションは極力避けた。
ニコニコにFeel the Rubyとかいうドガがうpされているので
見て基本概念を勉強しようと思う。
0667デフォルトの名無しさん2007/12/25(火) 19:50:05
>>665
それで出来るわけがないwww

代入演算子が定義されてないじゃないか。
それじゃreturnして終了だ。メモリが書き換わらない。

それにi, jの2値必要なのにどうしてその形で出来るんだ?
子供だましすぎる。
06686652007/12/25(火) 20:20:27
>>667
……さすがに絶句した

とりあえず何も言わずに次のプログラムを実行しなさい
結果を見て納得したらもう来ないでね、おしまいみたいだし

class Foo
def initialize(data)
@data = data
end

def [](index)
@data[index]
end
end

foo = Foo.new([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
p foo[0]
foo[0][1] = 200
p foo[0]
0669デフォルトの名無しさん2007/12/25(火) 20:20:59
つうか初心者スレでやれと
0670デフォルトの名無しさん2007/12/25(火) 21:34:48
1.9.1は出ない、出るのは1.9.0。

1.9.0が安定版だとか言ってる人はここ数日のChangeLog見直してくるといい。
数日で数百revisionが上がってるものが安定版なわけないだろw
0671デフォルトの名無しさん2007/12/25(火) 21:43:21
どこの京大何だいったい
0672デフォルトの名無しさん2007/12/25(火) 21:44:20
>1.9.0が安定版だとか言ってる人
?
0673デフォルトの名無しさん2007/12/25(火) 22:25:08
1.9.x、のtypoなのかなぁ。
「出るのは1.9.0」からの繋がりが自己矛盾してる気が

さて23:00が楽しみになってまいりましたので
いまから一蘭のラーメン食って来る
0674デフォルトの名無しさん2007/12/25(火) 22:55:44
>>668
確認しました。
どうして出来るのか教えてくれませんか?
例えば標準ライブラリのmatrixでも
2次元のindexには[i, j]という形を採用しています。
[i][j]の方がずっと自然だと思うし、
大体ここでは2つの引数があるのに
その形ではひとつの引数しかもらっていません。
どういう理屈ですか?

それを教えてもらったら初心者スレに戻ります。
次に質問したいことは初心者スレ向けなので
0675デフォルトの名無しさん2007/12/25(火) 22:59:59
>>667みたいな書き方しといてよく質問できるなあ。
謝罪するってことを知らない引きこもりなのかなあ。
0676デフォルトの名無しさん2007/12/25(火) 23:05:18
引きこもりではありません。
正しい原理を教えてもらったら謝罪します。
0677デフォルトの名無しさん2007/12/25(火) 23:06:24
MLに行った方が的確な答えが貰えると思うよ。作者もいるし。
0678デフォルトの名無しさん2007/12/25(火) 23:06:46
Rubyの入門書一冊くらい読んでから来いよ、ばかばかしい
0679デフォルトの名無しさん2007/12/25(火) 23:07:13
そうやって他所に厄介払いしようとするのはやめたまへ
0680デフォルトの名無しさん2007/12/25(火) 23:16:32
m=[[1,2,3], [2,3,4], [5,6,7]]として
m[0]の時点で一次元配列である[1,2,3]への参照がもどってくるから、
それにたいして[2]とか介せば当然変更は出来る。原理という
ほどではなくて、Cの配列の配列とかと一緒。
0681デフォルトの名無しさん2007/12/25(火) 23:27:45
それはわかりました。
しかし
m[i][j]=
の形が定義してないのに使えるのはなぜですか?
0682デフォルトの名無しさん2007/12/25(火) 23:32:29
どうしようもないな
こんなのがソフトウェア工学とか方法論とか言ってたわけだ
0683デフォルトの名無しさん2007/12/25(火) 23:32:48
?
インスタンス、とういか、レシーバが別だからだろ。
それともあれか、a.b.c()とチェインしてたら、aのクラスには
def b.c() という定義が書いてあるとでも思ってたか?
0684デフォルトの名無しさん2007/12/25(火) 23:33:33
そもそも、m[1]= が使えるのは納得できるのか?
06856652007/12/25(火) 23:37:41
お前らそんなことより新リファレンス来てるぞ
ttp://www.ruby-lang.org/ja/news/2007/12/25/rurima-1_9_0/

重いからまだ落としている最中で、中身見てないけど
0686デフォルトの名無しさん2007/12/25(火) 23:41:49
と思ったら、ライブラリのマニュアルしか入ってなかった
0687デフォルトの名無しさん2007/12/26(水) 00:00:36
なんというオチ
0688デフォルトの名無しさん2007/12/26(水) 00:04:13
アンチスレに書くべきだが、マニュアルのweb版を開いた所で
さっそく言葉遣いが統一されていないのが萎える。
こっちもリリースが早すぎるんじゃね?
0689デフォルトの名無しさん2007/12/26(水) 00:13:07
ぶっちゃけ日本語ドキュメントには期待してない。
文章は英語で書いてないと意味ないし。
0690デフォルトの名無しさん2007/12/26(水) 00:17:56
とりあえずリリースおめ
でいいのかしら
0691デフォルトの名無しさん2007/12/26(水) 01:34:59
おめでとう。さて寝るか。
0692デフォルトの名無しさん2007/12/26(水) 01:54:38
見守ったならせめてインストールとなんか動かしてから寝てやれw

しかしなんか触った感じ普通に動く(OSX Leopard)
運用状態でどうなるかが問題だけどね。
一応手前味噌なテストユニットも片っ端試してから寝るか。
0693デフォルトの名無しさん2007/12/26(水) 02:23:29
1.9死んでる。糞杉。

rubyつまんね。
0694デフォルトの名無しさん2007/12/26(水) 03:43:23
ブラックサンタからのプレゼントだな
0695デフォルトの名無しさん2007/12/26(水) 08:48:42
ruby1.9.0の方はまだ触ってないから分からないけど
リファレンスはどう考えても見切り発車
chm版の目次も杜撰だし、これではまだ実用には……
0696デフォルトの名無しさん2007/12/26(水) 09:37:55
バグも大量にあって仕様も不安定なのにリリースか。しかもpreview版はナシなんてありえん。

それも12月25日がモルモン教の記念日だからという理由で。

なんという無茶……。唖然とするしかないな。
0697デフォルトの名無しさん2007/12/26(水) 10:38:37
キーワード引数便利そう。でもこれ、シンボルを値に取りたいときは厄介だな
わざわざ {a: 'sym'.to_sym} と書かなくてはならないみたいだし

ところで、結局ブロックローカル変数の代入(:=)は無くなったんだろうか
手元でやってみるとsyntax errorだった
0698デフォルトの名無しさん2007/12/26(水) 10:46:42
>>696
一番ありえないのは変更点に関するドキュメントのなさだと思う

いずれにせよ、25日のリリースはなかったものとして考えた方が良さそうだ
大人しく1.9.1を待とう
0699デフォルトの名無しさん2007/12/26(水) 11:00:33
「日本製」で信頼できるのはやっぱりハードウェア・製造業だけ

というアピールにはなったね
0700デフォルトの名無しさん2007/12/26(水) 11:23:38
>>699
お前の「日本」はどんだけ Ruby で占められてるんだよ?
0701デフォルトの名無しさん2007/12/26(水) 11:52:09
>大人しく1.9.1を待とう

予定はいつなの?
0702デフォルトの名無しさん2007/12/26(水) 11:55:02
>>697
キーワード引数って入ったの?仕様が決まらなくて見送ったと聞いてたけど。
0703デフォルトの名無しさん2007/12/26(水) 12:12:57
>>701
まだ。検討を始めたところ。何か言いたいことがあるなら今のうちに ruby-dev へ。
0704デフォルトの名無しさん2007/12/26(水) 12:28:35
>>700
誰の日本が、ソフトウェアの分野でも海外にその力を知らしめているんだ?
0705デフォルトの名無しさん2007/12/26(水) 12:31:07
Rubyについて(アンチ専用) Part001
http://pc11.2ch.net/test/read.cgi/tech/1190559748/
0706デフォルトの名無しさん2007/12/26(水) 12:53:01
>>702
一応、今の1.9.0ではキーワード引数使えるようになってる
仕様は確定ではないみたいだけど
0707デフォルトの名無しさん2007/12/26(水) 13:03:25
goruby 1.0は機能が貧弱なのでgolfscriptを標準で取り込んじゃってください!
0708デフォルトの名無しさん2007/12/26(水) 13:05:31
>>700
バベル案内に絡めてるんだろ
0709デフォルトの名無しさん2007/12/26(水) 13:09:20
Matz is nice, so ruby1.9 is nice.
0710デフォルトの名無しさん2007/12/26(水) 13:39:24
つかmake testすらパスしないのかよ!前代未聞だな…。
0711デフォルトの名無しさん2007/12/26(水) 13:48:00
変更点
http://eigenclass.org/hiki/Changes+in+Ruby+1.9
0712デフォルトの名無しさん2007/12/26(水) 13:54:10
>>710
釣りか?普通にPASSするが
0713デフォルトの名無しさん2007/12/26(水) 14:12:03
で、50倍速くなったの?
0714デフォルトの名無しさん2007/12/26(水) 16:07:10
なんかテストが1個失敗する(涙)
0715デフォルトの名無しさん2007/12/26(水) 18:50:55
>>714
まずはプラットフォームを晒さないと。
0716デフォルトの名無しさん2007/12/26(水) 20:35:42
BTSかあ。
Redmineはちょっと起動してみたけどかなりよく出来てるよね。日本語化も完全に
できてるし、あんなのがあっという間につくれるRailsはすごいよ。
ただ、メンテナンスを考えたらRailsはなんとなく信用できないなあ。バッドノウハウが多すぎるし。
Tracはいろんなサイトで採用されてるし、信頼性も高いけどPythonだから却下か。残念。
影舞は素朴でいいんだけどメンテナンスが全然されてないからなあ。ruby公式で引き取って
開発したらどうだろう。しかし、影舞にすると外人はさらに入りづらくなるだろうなあ。

ついでにRWikiも落ちまくってるので変えてほしい。MediaWikiになんねーかなあ。
あのシステム最高なんだけど。信頼のPHPだしさ。まあ、BitChannelでもいいけど。
0717デフォルトの名無しさん2007/12/26(水) 20:55:33
PHPなwebアプリ、信頼性はともかく良く動くよな。ユーザーベースと指向性の差か。
負荷面も良いし(これも信頼性の一因か
rubyスレ的には言語設計とか突っ込む所なのかもしらんけどね

ruby本家としてはrubyアプリで動かしたい所なんだろうね。
MSがwebにlinuxサーバ使ってて笑われた時期もあったし。企業と比較してもしゃーないけど
0718デフォルトの名無しさん2007/12/26(水) 21:54:21
>ruby本家としてはrubyアプリで動かしたい所なんだろうね。

気に入らない時にいじりやすい、ってことじゃないの?
0719デフォルトの名無しさん2007/12/26(水) 22:01:44
>気に入らない時にいじりやすい、ってことじゃないの?

いや、違うと思う。
0720デフォルトの名無しさん2007/12/26(水) 22:58:35
1.9.0ってブランチも切られないの?
開発陣のとってもいらない子なの?
0721デフォルトの名無しさん2007/12/26(水) 22:59:35
>>720
ブランチ切るのが面倒くさいらしいwww
07227212007/12/26(水) 23:00:22
ブランチじゃなくてマージだった
0723デフォルトの名無しさん2007/12/26(水) 23:27:57
1.9.1出たら起こしてくれ
0724デフォルトの名無しさん2007/12/27(木) 02:24:59
そして>>723は永遠の眠りについたのでした
めでたし めでたし
0725デフォルトの名無しさん2007/12/27(木) 07:28:20
>>720
snapshot にいちいちブランチきらないだろ
0726デフォルトの名無しさん2007/12/27(木) 16:18:08
これはひどい

> 何も知らずに1.9.0でRubyデビューしていらん苦労をする人が続出しそう
ちょっと前まではRuby公式から「ダウンロード」でたどれるWindows版Rubyバイナリのページ [ruby-lang.org]が

* ruby1.6.4のzip
* ruby1.6.8のzip
* ruby1.8.6のzip
* ruby1.9.0のzip

という素敵でフラットな一覧になってて「よくわかんないけどとりあえず一番番号が大きくて新しそうな1.9.0をダウンロードしました」という惨事が少なからず起きてました
現在はunstableというディレクトリが掘られてるので今後は少なくなるような気がします
0727デフォルトの名無しさん2007/12/27(木) 17:33:01
1.9 で文字列の扱いは速くなったの?
0728デフォルトの名無しさん2007/12/27(木) 17:33:48
爆速です!!
0729デフォルトの名無しさん2007/12/27(木) 18:40:40
Cygwinだと2つテストが失敗する。Cygwinはいらない子か…。
0730デフォルトの名無しさん2007/12/27(木) 18:49:49
同じく 2 つテストが失敗する FreeBSD 6.2 。
0731デフォルトの名無しさん2007/12/27(木) 19:36:50
>>726
ひどいも何もここの初心者スレが発端だろ
実際に適当に1.9.0をダウンロードして詰まって「不安定版だなんて知らなかった」という話になって
「1.9.0が普通に置いてあるのはちと酷い、unstableとかディレクトリ切っとけよ」
というツッコミがあった

それを見た人が連絡したか提案したか実際に自力でディレクトリ切ったかしたんじゃね
どちらにしても現在はわかりやすくなってるんだし笑い話でいいんでは
0732デフォルトの名無しさん2007/12/27(木) 20:16:01
自意識過剰おつ
0733デフォルトの名無しさん2007/12/28(金) 04:39:29
いやでも、見やすくなったと思う

初心者は、そこからは落とさないが
0734デフォルトの名無しさん2007/12/28(金) 23:54:23
Windows版、CRLFなファイルが変だ

File.open('x', 'w') {|f|
 f.print "0\n1\n2\n3\n"
}
File.open('x') {|f|
 while line = f.gets do p [line, f.pos] end
}
{"0\n", 6]
{"2\n", 10]
{"0\n", 12]

なんだこれ(;´Д`)
0735デフォルトの名無しさん2007/12/29(土) 00:14:21
>>734
えーと、とりあえずf.posするなということでひとつ。
0736デフォルトの名無しさん2007/12/29(土) 00:28:12
>734
1.9系?
手元のruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]でやったら
["0\n", 3]
["1\n", 6]
["2\n", 9]
["3\n", 12]
となったけど。
07377342007/12/29(土) 00:47:52
>>735
(´Д`;)エ−

>>736
そ。1.9.0 の mingw32 も mswin32 も同じ。
f.pos しなければずれないし、LF のみでもずれない。なんでー?

これのせいで移行できん。。。
0738デフォルトの名無しさん2007/12/29(土) 01:06:35
>>737
IO#posはbinmodeでしかちゃんと動かず、動かないだけならいいが破壊的副作用がある。
理由を聞かれても困るが、とりあえず今はそういう副作用がある。
0739デフォルトの名無しさん2007/12/29(土) 01:08:13
1.9.0に移行ってギャグかなんかですか?
0740デフォルトの名無しさん2007/12/29(土) 01:11:28
いや、おれはフィボナッチの計算で食ってるから、
早く1.9に移行したいんだが・・
0741デフォルトの名無しさん2007/12/29(土) 01:12:53
i = 0
# snip
42.times do |i|
foo_bar_baz(i)
end

puts i
これがまともになっただけでも1.9に移行する価値がある。
>>740
UNIXに移行しなよ
0742デフォルトの名無しさん2007/12/29(土) 01:17:16
1.9ってstdio使ってる?
0743デフォルトの名無しさん2007/12/29(土) 01:17:56
フィボナッチ最強王者はHaskellだろ
07447342007/12/29(土) 02:24:24
>>738
THX、既知の仕様じゃ仕方ない、あきらめる。

困らせるつもりはないけど理由ってそんなに複雑なん?
ftell と fseek だけじゃ済まないってことは M17N とかその辺りなんかな。

>>739
赤いモビルスーツに乗りたいんだよぅヽ(`Д´)ノ
0745デフォルトの名無しさん2007/12/29(土) 02:36:55
速度要求するようなところに、Rubyって・・・
適材適所だと思うけど

さっくり、Rubyで、プロトタイプ→C/C++に移行とか
0746デフォルトの名無しさん2007/12/29(土) 02:41:10
また適材適所厨かw
0747デフォルトの名無しさん2007/12/29(土) 02:56:32
>>744
いや、1.9でstdio捨てたからftellが使えなくてもっと難しいことしてるんだよ。
大変難しい問題だ。
0748デフォルトの名無しさん2007/12/29(土) 03:41:58
>>746
購入厨並みに嫌な言い回しだなおいw
0749デフォルトの名無しさん2007/12/29(土) 03:42:37
>>745
別に C++ は普通に使ってるし、要求とかそんなんじゃねえよ
以前からあるデータ整形のスクリプトとか、ちょっとでも速くなるならうれしいじゃん
0750デフォルトの名無しさん2007/12/29(土) 05:34:45
>>746
すげぇ厨だな、おいw
0751デフォルトの名無しさん2007/12/29(土) 06:35:30
そろそろハッカー厨出てきてくれないかな
0752デフォルトの名無しさん2007/12/29(土) 07:31:46
このさいコミット厨とかマージ厨とか流行らして開発者のやる気減退させたら面白

んなわきゃねえな
悪かったよ消えるよ
■ このスレッドは過去ログ倉庫に格納されています