トップページ⇒tech
984コメント268KB

Rubyについて Part47

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/01/16(月) 13:15:31.00
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお

前スレ
Ruby 初心者スレッド Part 46
http://hibari.2ch.net/test/read.cgi/tech/1317790320/


るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
0304デフォルトの名無しさん2012/05/18(金) 02:50:18.50
#[key]でnilが返るのも#keysで[]が返るのもダメだったなんて意味じゃないんだが…
入ってると思ってたのに入ってなかったのは単に使い手が仕込んだバグだろjk
0305デフォルトの名無しさん2012/05/18(金) 03:30:11.67
>>302
RPGツクールはRubyで書けるぞ
0306uy2012/05/18(金) 03:40:43.63
でもそれ、ぷろぐらまーが使うものではないだろ
0307uy2012/05/18(金) 05:16:14.93
完成したゲームをライブラリ製作者に見せたら
ゴミを投げ込むなと怒られた f^_^;)
0308デフォルトの名無しさん2012/05/18(金) 08:32:36.09
つまりRPGツクールみたいにプログラムの上で動作するプログラムを書くのがスクリプトであるから
それそのものでゲームを作るのはDVDプレーヤーで動くゲームを作るみたいな事になるんじゃないか
0309デフォルトの名無しさん2012/05/18(金) 08:44:56.46
頓珍漢なこと言う前にSDLラッパーでも眺めてきたらどうか
0310デフォルトの名無しさん2012/05/18(金) 15:36:46.36
>>304
ダメ、の意味するところにもよるが、通常の返却値に使うデータがない状態は fault と言えるから間違ってはいまい
{ }.keys のときには Hash::Error::NoKey で止まってもよかったし、warn: xxx.rb(12) Hash has no keys と出力してもよかった
でも、それだと不便だから(という理由だけで)敢えて空の配列を返すことにしてるだけだろ
0311デフォルトの名無しさん2012/05/18(金) 21:57:25.37
>>310
keysとかいてたら普通は配列が返ってくると思わない?
なのにnilが返ってきたらイラッとこない?
おめー配列返す振りしてなにnilかえしてんだぶちまわすぞコルァってならない?
0312デフォルトの名無しさん2012/05/18(金) 22:20:47.35
null値返すよりnull object返せってオブジェクト指向の教科書にもよく書いてあるもんな。
0313デフォルトの名無しさん2012/05/18(金) 22:28:21.85
期待される機能は「キーの入った配列」が返ってくることだ
そのキー自体がなかったという”異常事態”の場合、返ってくるモノは配列でなくてもいい、という設計でもそれ自体は一向に構わない

実際問題として、ほとんどの場合、どこかで条件分岐はしなくてはならない
処理のどっかで空っぽになったんだから最終出力も無言で空っぽでいいじゃんという男前プログラムが必要とされる機会はそうそうあるもんではない
0314デフォルトの名無しさん2012/05/18(金) 22:33:26.17
>>313
ん。で?
0315デフォルトの名無しさん2012/05/18(金) 22:38:15.86
そもそも>>303の文脈がなさすぎる
コピペ厨はこれだから本気で困る
0316デフォルトの名無しさん2012/05/18(金) 22:44:19.70

サイトで証明書の警告がでるけど、リンク先怪しいサイト?
http://www.ruby-lang.org/en/downloads/
上のページの、
「For the latest instructions on installing rvm, check out the RVM installation page.」
のリンク先は、下のURLになっている。
https://rvm.beginrescueend.com/rvm/install/
ここにアクセスすると、httpsの証明書のエラーが出る。

Firefoxでは下記のエラー(警告)がでる。

This Connection is Untrusted
You have asked Firefox to connect
securely to rvm.beginrescueend.com, but we can't confirm that your connection is secure.
Normally, when you try to connect securely,
sites will present trusted identification to prove that you are
going to the right place. However, this site's identity can't be verified.

証明書まともに管理してないサイトってなんかアレだなぁ
0317デフォルトの名無しさん2012/05/18(金) 23:33:23.67
Ruby初めて勉強する場合ってRailsからやるほうがいいの?それともRails使わずに基本からやるほうがいいの?多言語の経験はある
0318デフォルトの名無しさん2012/05/18(金) 23:38:16.28
>>316
rvmのwayeのとこだが、自己書名証明書なんだね。
httpsにしただけでセキュアなつもりになっていると思われる。

まぁrvmなんてオワコンだし、スルーでよいよ。
0319デフォルトの名無しさん2012/05/18(金) 23:40:10.96
というか、いまはこっちだ。
こっちは検証可能な証明書になってる。

https://rvm.io/rvm/install

Comodoだけど…
0320デフォルトの名無しさん2012/05/19(土) 00:27:48.10
nilより空の配列返してくれた方がありがたい
0321デフォルトの名無しさん2012/05/19(土) 00:54:35.16
空の配列は真と評価されるから一律で空配列返されると困るお
0322デフォルトの名無しさん2012/05/19(土) 04:14:03.14
おごちゃんクソワロタw
0323デフォルトの名無しさん2012/05/19(土) 04:33:45.44
>>318
RVMってのは入れる必要ないってことね

Rubyはドキュメント関係がいろいろ貧弱と聞いてはいたけど
公式サイトでいきなり思い知らされた。
英語と日本語だけみても公式サイトの内容がぜんぜん違うし・・・
0324デフォルトの名無しさん2012/05/19(土) 08:01:34.76
ていうかrvmなんてcrubyのインタプリタ開発陣はほとんど関知してないプロダクト。
3rdパーティーって書いてある通り、一応リンク書いておくけどそれ以上は知らんよ、
ということなんだろう。
0325デフォルトの名無しさん2012/05/19(土) 08:08:19.83
自分たちのサイトの情報くらい更新せえよ、という話だろう
リンクが古いから変なことになってる
現在のRVMの公式サイトは結構前から>>316ではなく>>319の https://rvm.io/ だ
追従できないならそもそも載せるなと
0326デフォルトの名無しさん2012/05/19(土) 09:08:08.82
>>317
RubyとRailsは別の言語として覚えたほうが早いかと
Railsをやりたいのか、Rubyをやりたいのかで考えれ
0327デフォルトの名無しさん2012/05/20(日) 04:23:35.98
railsで知名度上がった所が有るだけに、あんなのrubyじゃねえよって迫害出来ないのが致命的だな。

rubyの案件欲しいなと思ってrailsの案件受けると酷い目に遭うw
phpの案件をrubyで処理スクリプト生成して済ませたほうが気持ち的に楽。
0328デフォルトの名無しさん2012/05/20(日) 05:43:59.19
Rubyに限らず、もうスクリプト言語ブームが終わる。
ブラウザの時代から、アプリの時代に移ったからね

アプリ時代は、高速に動作する言語が求められている。

コンパイルできるRubyはよ来い
実行時にエラーが見つかるスクリプト言語は開発効率悪いしウンコすぎる
0329デフォルトの名無しさん2012/05/20(日) 06:09:04.72
iOSアプリがRubyで書けるらしいね
0330デフォルトの名無しさん2012/05/20(日) 06:30:20.53
MacRuby、Titanium、RubyMotion、なんかいっぱいあるよね
どの時点でコンパイルしてどの程度エラーチェックしてくれるのか知らないけど
0331デフォルトの名無しさん2012/05/20(日) 06:40:23.41
Rubyぐらい動的性が強いと、静的な型検査はそれで一つの研究になるぐらい極めて困難
静的に分からない事が多いと最適化も難しいのでパフォーマンスも上げづらい
だから実行時にJITで頑張るしかないって話になるんだろうけど
0332デフォルトの名無しさん2012/05/20(日) 06:42:50.31
>>330
Rubyはインタープリタだから事前にコンパイルはできないんじゃないの?
0333デフォルトの名無しさん2012/05/20(日) 06:52:57.04
>>332
コンパイルしたものをインターぷりっとする。
0334デフォルトの名無しさん2012/05/20(日) 08:47:14.28
ほとんどの呼び出しが動的束縛だからコンパイルは難しい。
過去にコンパイラを研究した人がいたけど、動的束縛で呼び出すコードを生成するもので、
作るのもメンテするのも大変で、性能は(当時のインタプリタと比べても)たいして上がらなかった。
0335デフォルトの名無しさん2012/05/20(日) 08:49:21.41
実行可能なバイナリファイルとして取り出すとしたら、VMのスナップショットみたいなものになるのかね
0336デフォルトの名無しさん2012/05/20(日) 08:52:17.90
馬鹿には無理
0337デフォルトの名無しさん2012/05/20(日) 08:55:34.52
スレの生産性が一向に上がらないな
0338デフォルトの名無しさん2012/05/20(日) 09:00:03.26
じゃあ妹の話でもする?
0339デフォルトの名無しさん2012/05/20(日) 09:06:50.23
生産性あげるってことならお気にいりgemの話でもしようよ

漏れはいちごが好き
0340デフォルトの名無しさん2012/05/20(日) 09:06:54.61
>>338
妹と生産するのは倫理的に問題が…
0341uy2012/05/20(日) 09:28:29.47
動的言語での大規模開発って結構レベル要求されるのかもな
コンパイラにあって当然の「エラーチェック」が今の動的言語には存在しないので
鞘のない諸刃の剣というか、
何かが足りない状態でプログラミングしてる気しかしない
ほんとに煽り抜きで、その足りない何かを補えるレベルの奴で集まらないと、
動的言語で大規模開発って無理だなと思った

まぁ逆に考えて、大規模なプログラムとか書かなきゃいいんだよ^^^^^^^
0342デフォルトの名無しさん2012/05/20(日) 09:31:05.60
大規模なプログラムってどんなの?
0343デフォルトの名無しさん2012/05/20(日) 10:43:39.98
妄言に構うな
0344デフォルトの名無しさん2012/05/20(日) 11:51:20.93
http://dotinstall.com/lessons/search#!/filter/Ruby
0345uy2012/05/20(日) 12:49:42.33
>>342
動的言語でかいたソースコードの量が多いプログラム
そういうのなら何でも当てはまる事を言ったつもり

開発出来なくはない、でもこの感覚はなんというか
出来る奴と出来ない奴で分かれるような、そんな感覚が迸る
動的言語使ってると周りにもそれ使える奴しかいなくなるのかもしれないけど
これは凄い事なのだと、思い返してみた
0346デフォルトの名無しさん2012/05/20(日) 14:41:58.36
Rubyはメソッド呼び出す時の引数、戻り値の詳細な知識を
オンメモリで覚えておく必要があるから脳が活性化されるんだよな。
型付き+手厚いIDEサポートのある言語を使うと脳が退化する一方だよ。
0347デフォルトの名無しさん2012/05/20(日) 15:44:54.71
>>345
ソースコードの量って行数のこと?何行くらいから大規模なの?
0348デフォルトの名無しさん2012/05/20(日) 16:25:43.19
うわぁ………
0349デフォルトの名無しさん2012/05/20(日) 18:13:05.93
>型付き+手厚いIDEサポートのある言語を使うと脳が退化する一方だよ。

同意
0350デフォルトの名無しさん2012/05/20(日) 18:32:54.53
皮肉にマジレスわろた
0351デフォルトの名無しさん2012/05/20(日) 18:33:55.31
IDEの支援が要らない、なんてのは「酸っぱい葡萄」だな

効率よく開発しようと思ったらIDEの強力な支援があったほうがいいに決まってる。
動的言語の致命的欠点を認めずに、「脳が活性化する」などと
自分を納得させている
0352デフォルトの名無しさん2012/05/20(日) 18:37:40.79
いやだから皮肉にマジレスすんなや
0353デフォルトの名無しさん2012/05/20(日) 20:38:17.16
>>350 >>352
Rubyの世界は熱狂的な信者が多いから、皮肉と判別しにくいんだな
0354デフォルトの名無しさん2012/05/20(日) 23:17:25.64
Javaには無理
0355デフォルトの名無しさん2012/05/20(日) 23:55:50.23
Javaに出来ることRubyはほとんどできないな
0356デフォルトの名無しさん2012/05/21(月) 00:22:49.68
え、たとえば?今時どの言語も出来ないことなんてそうそうないような気がするんだけど
0357デフォルトの名無しさん2012/05/21(月) 06:01:46.58
まともなVMとか
0358デフォルトの名無しさん2012/05/21(月) 08:45:39.64
VMって出来ることっていうのかね
それをいうなら動作するプラットフォームの数とかだろうに
0359デフォルトの名無しさん2012/05/21(月) 10:06:39.29
JMXみたいな管理監視の仕掛けは
「仕事で使うなら」欲しいかな
趣味なら別段どうでもいいところだけど
0360デフォルトの名無しさん2012/05/21(月) 10:31:00.08
まともな並列処理
0361デフォルトの名無しさん2012/05/21(月) 10:46:24.68
並列処理って手段であって目的じゃなくね?
0362デフォルトの名無しさん2012/05/21(月) 11:29:51.83
Rubyって手段であって目的じゃなくね?
0363デフォルトの名無しさん2012/05/21(月) 17:37:17.08
何を当たり前なことを。
0364デフォルトの名無しさん2012/05/22(火) 07:29:20.40
rorみたいなアプリ鯖前提だと、前回の実行で動的コンパイルしながら使った分だけでもrubyインタプリタから取り出してネィティブコードを残しといて
次回は、インタプリタすっ飛ばしてネィティブコードを再利用したほうが、毎回実行時にコンパイルしながら実行するより処理速度上げられそうだけどね。
単純化すると、インテルのプリフェッチ多段パイプラインと同じだから、先手読んでキャッシュしとけば単純に処理上がるダロウしなあ。
実行時に前回と違う分岐に入ってしまうと、前回の実行ネィティブコードの再利用が出来なくてガッツリ落ちるのはキャッシュミスと同じ理屈で。

それってcpuで言えばパイプラインをありったけ作って、ほとんどの分岐に対応すればいいよねって理屈と同じで、rubyでアプリ作るなら分岐を単純化して普遍的なクラス内の処理に専念すれば、再利用もしやすいし実行速度も上がるよと。
じつはrubyristならちょっとしたスクリプトやクラスをいくらでも抱えてると思うけど、遣ってる事はクラスレベルでは同じかもしれないなとか思った。
0365デフォルトの名無しさん2012/05/22(火) 07:44:26.84
毎回クラス読み直してるとでも思ってるのか?このオバカさんは・・・
0366デフォルトの名無しさん2012/05/22(火) 08:14:55.64
にわか臭が凄い
0367デフォルトの名無しさん2012/05/22(火) 08:22:45.23
では天才さんには、クラスよ見直してないソースを提示して欲しいのですよw
0368デフォルトの名無しさん2012/05/22(火) 08:35:44.83
ネタレス以外は初心者スレに行きなさい!
0369デフォルトの名無しさん2012/05/22(火) 08:50:17.88
まず読み直してると思った根拠をしめせよ
0370デフォルトの名無しさん2012/05/22(火) 08:51:46.81
そのうちrubyは糞とか捨て台詞吐いて去るんだろうなw
0371デフォルトの名無しさん2012/05/22(火) 08:57:29.27
RoRのdevelopment環境ではクラスを未定義に直して再読みなおしの処理を*わざわざ*入れている。
開発中はソースが頻繁に書き換わるからね。
product環境に変更すると普通はアプリケーションサーバを再起動しないとクラスの修正は読み込まれない。

インタプリタの実装方法をもうちょっと勉強した方がいいんじゃない?
毎回ソースからコンパイルしてるとでも思ってるんだろうか。
0372デフォルトの名無しさん2012/05/22(火) 09:00:55.84
tureta-
0373デフォルトの名無しさん2012/05/22(火) 09:16:40.59
rubyは糞だわ
シネ
0374デフォルトの名無しさん2012/05/22(火) 09:32:31.95
完全に無知な状態からその考えに至ったなら
自力で登れたというセンスはあるが、
やっと10年前くらいの技術にたどり着いただけの話
0375デフォルトの名無しさん2012/05/22(火) 10:05:09.62
まあせっかく出た話題なので……実行履歴を元に型を特化したコードを生成する手法は
JavaScriptの高速化で話題になっていたような記憶がある
↓っぽいな。Trace Monkeyっていうんだっけ?

Trace-based just-in-time type specialization for dynamic languages
http://dl.acm.org/citation.cfm?id=1542476.1542528
0376デフォルトの名無しさん2012/05/22(火) 11:28:11.17
すごいなそれ
その発想はなかった
0377デフォルトの名無しさん2012/05/22(火) 12:51:24.83
パイプラインをいっぱいったって、
IA系のアーキテクチャじゃ
演算機が少ないから意味ないよな。

いまさらナイアガラ系のアーキテクチャもないだろうし。
0378デフォルトの名無しさん2012/05/22(火) 13:23:20.77
>>364みたいなのがいる辺り、やっぱRubyのレベルの低さは否めないなあ。
Java勉強してればこんな馬鹿は発生しない。
0379デフォルトの名無しさん2012/05/22(火) 14:00:13.26
>>375
どんだけ釣り師が多いんだよ
Gitコンパイラだろ
0380デフォルトの名無しさん2012/05/22(火) 14:15:45.46
Cvsインタプリタ
0381デフォルトの名無しさん2012/05/23(水) 00:43:13.66
池澤あやかの仕掛人って誰なんだ?
ISOのタイミングで出てきた気がするが…やっぱあっち畑の方々なんですかね?
0382デフォルトの名無しさん2012/05/23(水) 00:49:58.75
>>379
なあ、まさかGitをジットと読んでるのか?釣りだよな。
0383デフォルトの名無しさん2012/05/23(水) 03:49:53.13
まあrubyやるよりjavaやっとくほうが現実的なのはそうだしなあ。
0384デフォルトの名無しさん2012/05/23(水) 15:09:37.50
JavaScriptすげーな
HTML内で動きまくりHTML書き換えまくり
RubyでもさもさなCGIとかやってる場合じゃない
0385デフォルトの名無しさん2012/05/23(水) 15:25:31.73
10年前から来たんですか・・・?
0386デフォルトの名無しさん2012/05/24(木) 08:07:14.79
クライアントサイドとサーバサイドの話を一緒くたにするバカを演じてるんだろう
0387デフォルトの名無しさん2012/05/24(木) 08:10:31.22
DHTMLの話だろうけどもしかしたらMeteorの話かもしれない
0388デフォルトの名無しさん2012/05/25(金) 09:41:22.67
activexだと動画も再生出来るのは驚くケドな。しカもヌルヌルだし。
0389デフォルトの名無しさん2012/05/25(金) 13:07:54.17
ウィンドウズメディアプレイヤーで再生する為の
タグを仕込んでた時代からは進化したな
0390デフォルトの名無しさん2012/05/26(土) 12:00:11.19
2.0ってどんな感じ?
新機能とか時期とか
0391デフォルトの名無しさん2012/05/26(土) 18:53:53.61
Rubyの二十の誕生日に出るって言われてるんじゃなかったかな
0392デフォルトの名無しさん2012/05/26(土) 18:56:01.56
今年は出ないだろうから比較的どうでもいい
0393デフォルトの名無しさん2012/05/26(土) 19:17:53.00
仕様追加の要望の締切りとかは年内じゃなかったっけ?
0394デフォルトの名無しさん2012/05/26(土) 19:56:34.65
2.0 の現状についての、最新のまとめはこれかいな。
ttp://d.hatena.ne.jp/ku-ma-me/20120521/p1
0395デフォルトの名無しさん2012/05/27(日) 18:47:40.04
今のところ 2.0 に入ることが発表されている大きめの新機能は、

Module#prepend
キーワード引数

の 2 点です。

あんまりおもろい機能じゃないな
引数と戻り値の型指定+overloadのが嬉しい
0396デフォルトの名無しさん2012/05/28(月) 16:40:32.15
JavaScriptと比べる人も居るみたいだがブラウザーという安全性の面で動作が限られるスクリプトと比べたらブラウザー上の奴の方が早くなる事があるのはおかしい事じゃ無い
比べるとしたらPythonやPerl等だろう
日本語対応に優れているという点でまあ処理する文字量が増えるわけだし、単純には比べられないよ
0397デフォルトの名無しさん2012/05/28(月) 16:57:58.93
いきなり何いってんだこいつ
0398デフォルトの名無しさん2012/05/28(月) 17:16:58.84
察してやれ
0399デフォルトの名無しさん2012/05/28(月) 21:26:58.46
RubyのJavaScript実装はまだかね?
だれもつかわないけどw
0400uy 2012/05/29(火) 04:16:59.15
ブログとかで使える
0401デフォルトの名無しさん2012/06/01(金) 09:15:54.39
Rubyオワタ・・・

高速なJavaScriptコードを生成できるWebアプリケーション向け言語「JSX」が公開される - SourceForge.JP Magazine : オープンソースの話題満載
http://sourceforge.jp/magazine/12/05/31/0748237

 DeNAは5月31日、Webアプリケーション向けの言語「JSX」を公開した。
静的型付けやオブジェクト指向といった特徴を持つWebアプリケーション向け言語で、
JavaScriptコードへの変換を行うコンパイラが用意されている。ライセンスはMITライセンス。

 JSXは「生産性が低い」、「低速」、「メモリ消費が多い」といったJavaScriptの問題点を解決するために開発されたプログラミング言語。
厳密な型付け機構を持つオブジェクト指向言語で、
JSXコードはJavaScriptコードへと変換して実行できる。
JSXコードから変換されたJavaScriptコードは最適化が施されており、「現代的な」Webブラウザ上で高速に動作するという。
0402デフォルトの名無しさん2012/06/01(金) 09:23:54.84
別にWebアプリの分野ならとっくに終わってるじゃん
0403デフォルトの名無しさん2012/06/01(金) 09:58:08.79
○○→JavaScriptな言語は総じて気持ち悪くて覚える気がしないぜ
CoffeeScriptとかな。Rails のデフォになってるのもさらに気持ち悪い
0404デフォルトの名無しさん2012/06/01(金) 10:00:28.94
Ruby++マダー
■ このスレッドは過去ログ倉庫に格納されています