プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ
質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 64
https://mevius.5ch.net/test/read.cgi/tech/1535797516/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
Ruby 初心者スレッド Part 65
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f80-JI52)
2018/12/22(土) 04:43:34.03ID:84E3pYZa02デフォルトの名無しさん (ワッチョイ cb80-JI52)
2018/12/22(土) 04:46:34.41ID:84E3pYZa0 Rubyの絵本、2008
たのしいRuby 第5版、2016
3ステップでしっかり学ぶ Ruby入門、2018
かんたん Ruby (プログラミングの教科書)、2018
プロを目指す人のためのRuby入門、2017
改訂2版 パーフェクトRuby、2017
改訂2版 Ruby逆引きハンドブック、2018 (中級者向け)
Effective Ruby、2015 (中級者向け)
メタプログラミング Ruby 第2版、2015 (中級者向け)
リファクタリング:Rubyエディション、2010 (中級者向け)
RubyでつくるRuby ゼロから学びなおすプログラミング言語入門、2017 (中級者向け)
Rubyのしくみ、2014 (中級者向け)
改訂4版 基礎 Ruby on Rails、2018
パーフェクト Ruby on Rails、2014
Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例、2014
オブジェクト指向設計実践ガイド Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方、2016
Seleniumデザインパターン&ベストプラクティス、2015
たのしいRuby 第5版、2016
3ステップでしっかり学ぶ Ruby入門、2018
かんたん Ruby (プログラミングの教科書)、2018
プロを目指す人のためのRuby入門、2017
改訂2版 パーフェクトRuby、2017
改訂2版 Ruby逆引きハンドブック、2018 (中級者向け)
Effective Ruby、2015 (中級者向け)
メタプログラミング Ruby 第2版、2015 (中級者向け)
リファクタリング:Rubyエディション、2010 (中級者向け)
RubyでつくるRuby ゼロから学びなおすプログラミング言語入門、2017 (中級者向け)
Rubyのしくみ、2014 (中級者向け)
改訂4版 基礎 Ruby on Rails、2018
パーフェクト Ruby on Rails、2014
Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例、2014
オブジェクト指向設計実践ガイド Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方、2016
Seleniumデザインパターン&ベストプラクティス、2015
3デフォルトの名無しさん (ワッチョイ cb80-JI52)
2018/12/22(土) 04:47:41.34ID:84E3pYZa0 開発環境
RDE
Windows用IDE
https://ja.osdn.net/projects/sfnet_rubyde/
以下、RDEの使用説明
http://rubyde.sourceforge.net/hiki/ja/FrontPage.html
RDEのデバッグ機能を使う場合、設定においてデバッグオプションを「-r debug2」から「-r debug」と書き換えて、
ruby付属のdebug.rbを使うようにすること。
RDE付属のdebug2.rbは、ruby1.8用のスクリプトのため、現在のrubyのversionには使えません
サクラエディタ
Windows用高機能エディタ
https://ja.osdn.net/projects/sfnet_sakura-editor/
以下、ruby用設定の説明
http://supportdoc.net/support-sakura/ruby.html
Emacs
GNUの高機能エディタ
Vim
Emacsと同じぐらい有名なCUIベースのエディタ
VSCode
マルチOSに対応したマイクロソフト社製のソースコードエディタ
https://code.visualstudio.com/download
RDE
Windows用IDE
https://ja.osdn.net/projects/sfnet_rubyde/
以下、RDEの使用説明
http://rubyde.sourceforge.net/hiki/ja/FrontPage.html
RDEのデバッグ機能を使う場合、設定においてデバッグオプションを「-r debug2」から「-r debug」と書き換えて、
ruby付属のdebug.rbを使うようにすること。
RDE付属のdebug2.rbは、ruby1.8用のスクリプトのため、現在のrubyのversionには使えません
サクラエディタ
Windows用高機能エディタ
https://ja.osdn.net/projects/sfnet_sakura-editor/
以下、ruby用設定の説明
http://supportdoc.net/support-sakura/ruby.html
Emacs
GNUの高機能エディタ
Vim
Emacsと同じぐらい有名なCUIベースのエディタ
VSCode
マルチOSに対応したマイクロソフト社製のソースコードエディタ
https://code.visualstudio.com/download
4デフォルトの名無しさん (ワキゲー MM2b-WCtl)
2018/12/22(土) 14:30:22.80ID:uFQ/hnLUM >>1乙
5デフォルトの名無しさん (ワッチョイ cb80-JI52)
2018/12/23(日) 02:23:36.39ID:lfndw29D0 前スレの、>995
>rubyでサイトにアクセスさせてたんだけど、そのrubyが急に動かなくなってしまいまして、どうしたもんかと
selenium-webdriver(SW) を使っているなら、ブラウザが新しくなってエラーが出るとか?
SW, chromedriver を最新にすれば?
最新のchromedriver をダウンロードする
http://chromedriver.chromium.org/home
レポジトリの情報を見る。
gem search -r selenium-webdriver
#=> version 3.141 が最新
グローバルにインストールする。
gem install selenium-webdriver
インストール済みGemを確認する。
gem list selenium-webdriver
>rubyでサイトにアクセスさせてたんだけど、そのrubyが急に動かなくなってしまいまして、どうしたもんかと
selenium-webdriver(SW) を使っているなら、ブラウザが新しくなってエラーが出るとか?
SW, chromedriver を最新にすれば?
最新のchromedriver をダウンロードする
http://chromedriver.chromium.org/home
レポジトリの情報を見る。
gem search -r selenium-webdriver
#=> version 3.141 が最新
グローバルにインストールする。
gem install selenium-webdriver
インストール済みGemを確認する。
gem list selenium-webdriver
6デフォルトの名無しさん (ワキゲー MM2b-WCtl)
2018/12/25(火) 09:31:38.95ID:w87C2v/dM 今年のクリスマスは新しいバージョンないのか
7デフォルトの名無しさん (ワキゲー MM2b-WCtl)
2018/12/25(火) 19:08:55.81ID:+tXPBaqnM Ruby 2.6.0 キターーーー
8デフォルトの名無しさん (アメ MM59-wUZI)
2018/12/26(水) 20:00:19.74ID:v8erlN15M > なお、「Ruby」で採用されているJITコンパイラーは、他の言語で採用されている一般的なものとは異なり、
> C言語のソースコードをファイルとしてディスクに書き、通常のCコンパイラーを用いてネイティブコードに変換することでJITコンパイルを行うという手法(MJIT)を採用しているという。
> そのため、「Ruby 2.6」でJITコンパイラーを利用するには「GCC」、「Clang」、あるいは「Microsoft VC++」によってビルドされた「Ruby」実装と、それをビルドしたコンパイラーを実行時に利用できる必要がある。
トッポいなぁwww
> C言語のソースコードをファイルとしてディスクに書き、通常のCコンパイラーを用いてネイティブコードに変換することでJITコンパイルを行うという手法(MJIT)を採用しているという。
> そのため、「Ruby 2.6」でJITコンパイラーを利用するには「GCC」、「Clang」、あるいは「Microsoft VC++」によってビルドされた「Ruby」実装と、それをビルドしたコンパイラーを実行時に利用できる必要がある。
トッポいなぁwww
9デフォルトの名無しさん (ワッチョイ aded-rM0A)
2018/12/26(水) 21:07:57.20ID:8V4rShRI0 それは、JITではないな。
10デフォルトの名無しさん (ワッチョイ 237c-ESEE)
2018/12/26(水) 23:00:34.51ID:lC66I3j80 Cみたいに、構造体CPersonを要素とする配列を作りたいんだけど、どうやればいい?
CPerson Struct.new(:name, :age);
persons = [
CPeson.new("Taro Yamda", 25),
CPeson.new("Yuko Suzuki", 20),
CPeson.new("Erika Toda", 30)
];
で定義して、参照は、
k = 要素番号;
name = persons[k].name;
age = persons[k].age;
みたいにするのが標準?
CPerson Struct.new(:name, :age);
persons = [
CPeson.new("Taro Yamda", 25),
CPeson.new("Yuko Suzuki", 20),
CPeson.new("Erika Toda", 30)
];
で定義して、参照は、
k = 要素番号;
name = persons[k].name;
age = persons[k].age;
みたいにするのが標準?
11デフォルトの名無しさん (ワッチョイ 237c-ESEE)
2018/12/26(水) 23:01:21.88ID:lC66I3j80 誤: CPerson Struct.new(:name, :age);
正: CPerson=Struct.new(:name, :age);
orz
正: CPerson=Struct.new(:name, :age);
orz
12デフォルトの名無しさん (ワッチョイ 7680-v93B)
2018/12/27(木) 00:05:55.93ID:zcYaa59I0 Effective Ruby の著者のサイトに、本のソースコードが載っている
項目10 : 構造化データの表現には、Hash ではなく、Struct を使おう
https://github.com/pjones/effrb/blob/master/oop/struct_test.rb
ハッシュキーは内部実装の詳細情報なので、
これがユーザーに公開されているのは、良くないから
一方、Struct は、Class Generator。
簡易クラス
項目10 : 構造化データの表現には、Hash ではなく、Struct を使おう
https://github.com/pjones/effrb/blob/master/oop/struct_test.rb
ハッシュキーは内部実装の詳細情報なので、
これがユーザーに公開されているのは、良くないから
一方、Struct は、Class Generator。
簡易クラス
13デフォルトの名無しさん (アメ MMa1-aqDf)
2018/12/27(木) 01:03:54.71ID:KLGborwtM 簡単にクラスが作れる!軽い気持ちでじゃんじゃんクラスにしてね!な言語かと思ってたのに簡易クラスとは…
1412 (ワッチョイ 7680-N9Dm)
2018/12/27(木) 02:41:44.91ID:zcYaa59I0 Struct は入門書にも書いていないのに、これを使うのは物好きな人だろう。
書き捨てのツール作りとかに使うのかも
でも、Rails のような大規模プログラムでも使っているけど
書き捨てのツール作りとかに使うのかも
でも、Rails のような大規模プログラムでも使っているけど
15デフォルトの名無しさん (アウアウエー Sa02-n9eg)
2018/12/27(木) 07:26:53.72ID:4d8pe2yNa >>8
お前さんが考えてる「遥かにスマートな方法」って何?
お前さんが考えてる「遥かにスマートな方法」って何?
16デフォルトの名無しさん (ワッチョイ 718a-5EXd)
2018/12/27(木) 07:31:41.61ID:+XOHKY4Q0 面倒くさいからコンパイラも内蔵してくれ
17デフォルトの名無しさん (オッペケ Sr75-ledV)
2018/12/27(木) 11:44:26.94ID:gNvYWHErr お前ら詳しすぎ
18デフォルトの名無しさん (ワッチョイ 5ae3-h5Ay)
2018/12/27(木) 11:52:39.98ID:lYmcIHJL0 >>10
CPerson.new(・・・)
の代わりに、Syntax Suger として
CPerson[・・・]
を使えるらしいので、やってみたところ上手くいった:
CPerson = Struct.new(:name, :age); # CPerson型の型定義
$g_persons = [
CPerson["Taro Yamda", 25],
CPerson["Yuko Suzuki", 20],
CPerson["Erika Toda", 30]
];
for k in 0..2
name = $g_persons[k].name;
age = $g_persons[k].age;
print name, ", ", age, "\n";
end
CPerson.new(・・・)
の代わりに、Syntax Suger として
CPerson[・・・]
を使えるらしいので、やってみたところ上手くいった:
CPerson = Struct.new(:name, :age); # CPerson型の型定義
$g_persons = [
CPerson["Taro Yamda", 25],
CPerson["Yuko Suzuki", 20],
CPerson["Erika Toda", 30]
];
for k in 0..2
name = $g_persons[k].name;
age = $g_persons[k].age;
print name, ", ", age, "\n";
end
19デフォルトの名無しさん (ワッチョイ 7dc7-NHNr)
2018/12/27(木) 12:38:00.49ID:M6yD45RN0 何がしたいのかよくわからんがRubyでfor文は殆ど使わない
$g_persons.each{|p|puts 'name = %s, age = %s' % p.to_a}
$g_persons.each{|p|puts 'name = %s, age = %s' % p.to_a}
20デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 12:47:26.89ID:xdSwIlO30 forを使わないのは良いが
そこでeachとか使われると萎える
そこでeachとか使われると萎える
21デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 12:57:10.36ID:xdSwIlO30 これのどちらかだな(%よりはformatの方が推奨される)
puts $g_persons.map { |p| 'name = %s, age = %s' % p.to_a }
puts $g_persons.map { |p| "name = #{p.name}, age = #{p.age}" }
puts $g_persons.map { |p| 'name = %s, age = %s' % p.to_a }
puts $g_persons.map { |p| "name = #{p.name}, age = #{p.age}" }
22デフォルトの名無しさん (ワッチョイ 6e8a-ZwQs)
2018/12/27(木) 12:59:00.75ID:fJVcpN3h0 print name, ", ", age, "\n";
ってのはただの例だろうからこの場合eachよりふさわしい方法はないでしょ
代替案も言えない屑は勝手に萎えてろ
ってのはただの例だろうからこの場合eachよりふさわしい方法はないでしょ
代替案も言えない屑は勝手に萎えてろ
23デフォルトの名無しさん (ワッチョイ 91ed-MF8/)
2018/12/27(木) 13:01:20.74ID:aB5zW/KI0 >>21
なんでわざわざmap?w
なんでわざわざmap?w
24デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 13:05:11.39ID:xdSwIlO30 >>23
関数型とか副作用とか勉強すると良いよ
関数型とか副作用とか勉強すると良いよ
25デフォルトの名無しさん (ワッチョイ 769a-n9eg)
2018/12/27(木) 13:10:47.55ID:uAUh4s+A0 初心者スレなんだから、そこを解説すべき。
26デフォルトの名無しさん (ワッチョイ 7dc7-NHNr)
2018/12/27(木) 13:44:32.30ID:M6yD45RN0 煽り抜きで>>20はアスペっぽい
文脈が理解できてない
文脈が理解できてない
27デフォルトの名無しさん (ワッチョイ 958a-5EXd)
2018/12/27(木) 13:48:54.48ID:T8r+bbof0 Ruby鉄の掟
map <-偉そう
each <- 普通
for <- 素人そう
ヲタ同士のマウンティングによく使われるのでこの格付は覚えておいて損はない
map <-偉そう
each <- 普通
for <- 素人そう
ヲタ同士のマウンティングによく使われるのでこの格付は覚えておいて損はない
28デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 13:53:41.85ID:xdSwIlO3029デフォルトの名無しさん (ワッチョイ 7dc7-NHNr)
2018/12/27(木) 14:21:51.98ID:M6yD45RN0 >>28
いやだからさ、初めから配列arrの要素に対してこういうことをした結果を出力したいっていうのであれば
puts arr.map{|e| hoge}.join(s)
て書くのは当たり前だけど、この元の発言の人はそんなこと言ってなくてむしろ配列の参照の仕方について言ってるんだから上の説明じゃ全然駄目だってことくらいわかるだろ
ドヤ顔で他人見下して見当はずれの発言しているあんたが痛いって話だよ
いやだからさ、初めから配列arrの要素に対してこういうことをした結果を出力したいっていうのであれば
puts arr.map{|e| hoge}.join(s)
て書くのは当たり前だけど、この元の発言の人はそんなこと言ってなくてむしろ配列の参照の仕方について言ってるんだから上の説明じゃ全然駄目だってことくらいわかるだろ
ドヤ顔で他人見下して見当はずれの発言しているあんたが痛いって話だよ
30デフォルトの名無しさん (ワッチョイ 91ed-MF8/)
2018/12/27(木) 14:47:49.02ID:aB5zW/KI031デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 17:27:15.49ID:xdSwIlO3032デフォルトの名無しさん (ワッチョイ 95b3-ZwQs)
2018/12/27(木) 18:34:27.49ID:PMl9P7n20 質問者の意図を無視して勝手に副作用だの言ってる奴いて草
アスペはほんと言うことがめちゃくちゃだな
アスペはほんと言うことがめちゃくちゃだな
33デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 18:43:10.17ID:xdSwIlO30 元の質問者になんかレスしてねーのに
文脈わかってないんだな。
文脈わかってないんだな。
34デフォルトの名無しさん (ワッチョイ 256c-ZwQs)
2018/12/27(木) 19:12:45.53ID:lMOgiRq50 ID:xdSwIlO30
こいつ本気でアスペだろ
質問者への回答へのレスに質問者の意図を無視して上から目線で見当違いないちゃもんつけてんだから
本当に意味不明だわ
初めから属性を出力することが目的だってなってたら誰だってmapしてjoinなりするだろ
当たり前のことでマウントとって最高に気持ち悪い
こいつ本気でアスペだろ
質問者への回答へのレスに質問者の意図を無視して上から目線で見当違いないちゃもんつけてんだから
本当に意味不明だわ
初めから属性を出力することが目的だってなってたら誰だってmapしてjoinなりするだろ
当たり前のことでマウントとって最高に気持ち悪い
35デフォルトの名無しさん (アメ MMa1-aqDf)
2018/12/27(木) 19:15:44.30ID:dG7CRoznM 副作用うんたらかんたら君は一切画面出力せずにプログラミングしろよwww
ファイルの読み書きも禁止。全部メモリ上だけでやれやwwwww
ファイルの読み書きも禁止。全部メモリ上だけでやれやwwwww
36デフォルトの名無しさん (アークセー Sx75-5/pO)
2018/12/27(木) 19:19:47.51ID:142Xb6wkx37デフォルトの名無しさん (ワッチョイ 5ae3-h5Ay)
2018/12/27(木) 19:45:12.62ID:lYmcIHJL0 試してないけど、C/C++ ばっかりの自分には、
$g_persons.each { |p| printf( "name = %s, age = %s\n", p.name, p.age) }
なら分かるけど、
$g_persons.each{|p|puts 'name = %s, age = %s' % p.to_a}
は、% p.to_a の部分がまったく分からないといっても過言ではない。
' の後ろの % って何? p.to_a も分からない。
$g_persons.each { |p| printf( "name = %s, age = %s\n", p.name, p.age) }
なら分かるけど、
$g_persons.each{|p|puts 'name = %s, age = %s' % p.to_a}
は、% p.to_a の部分がまったく分からないといっても過言ではない。
' の後ろの % って何? p.to_a も分からない。
38デフォルトの名無しさん (ワッチョイ 5ae3-h5Ay)
2018/12/27(木) 19:52:19.85ID:lYmcIHJL0 ああ、分かった。% は、sprintf の syntax suger みたいなものらしいね。
でも、この場合、p.to_a は、本当は良くないと思うよ。
なぜなら、そもそも構造体自体が、「並び方」に依存しないプログラムを
作るために用いるものなのに、その目的に逆行してしまうから。
to_a だと、構造体を定義したときにメンバが並んでいる順に配列のように
取り出してしまう。ところが、構造体は、そういう順序に依存するプログラム
に問題がおきやすいから導入するもんなんだよ、これが。
でも、この場合、p.to_a は、本当は良くないと思うよ。
なぜなら、そもそも構造体自体が、「並び方」に依存しないプログラムを
作るために用いるものなのに、その目的に逆行してしまうから。
to_a だと、構造体を定義したときにメンバが並んでいる順に配列のように
取り出してしまう。ところが、構造体は、そういう順序に依存するプログラム
に問題がおきやすいから導入するもんなんだよ、これが。
39デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 21:07:24.43ID:xdSwIlO3040デフォルトの名無しさん (ワキゲー MM7e-NHNr)
2018/12/27(木) 21:32:46.10ID:QDWFXisuM お前もしつこいぞ
41デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 22:22:45.06ID:xdSwIlO30 はい。しつこいつもりですが?
42デフォルトの名無しさん (ワッチョイ 555d-ZwQs)
2018/12/27(木) 22:55:34.21ID:oOio5T5+043デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 22:56:12.17ID:xdSwIlO30 アスペはたとえ話が苦手なんだからやめとけw
44デフォルトの名無しさん (ワッチョイ 76e8-5/pO)
2018/12/27(木) 23:01:03.71ID:pGG7UwBL045デフォルトの名無しさん (ワキゲー MM7e-NHNr)
2018/12/27(木) 23:02:55.51ID:QDWFXisuM よくみたらこいつ単芝君じゃん
この板に粘着してる荒らしだからスルーしとけ
この板に粘着してる荒らしだからスルーしとけ
46デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 23:08:52.97ID:xdSwIlO3047デフォルトの名無しさん (ワッチョイ 7680-N9Dm)
2018/12/27(木) 23:21:36.69ID:zcYaa59I0 >>37
メタプログラミングで、すべての属性名と値を、表示できないの?
メタプログラミングで、すべての属性名と値を、表示できないの?
48デフォルトの名無しさん (ワッチョイ 7d98-4fyn)
2018/12/27(木) 23:26:16.89ID:xdSwIlO30 メタプログラミングじゃなくて、普通にto_hとかでわかるがそういう問題じゃないw
49デフォルトの名無しさん (ワキゲー MM7e-NHNr)
2018/12/27(木) 23:32:04.17ID:BM9tGIl2M >>47
Struct#membersでメンバの名前を取得できるよ
Struct#membersでメンバの名前を取得できるよ
50デフォルトの名無しさん (ワキゲー MM7e-NHNr)
2018/12/27(木) 23:34:00.73ID:BM9tGIl2M■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- 🏡
- 今季最強寒気襲来!!!!
- 【高市早苗】習近平激怒か [115996789]
- 今猛烈に食べたいもの挙げてけwwwwwwww
- 橋下徹「口だけ番長の日本が中国に喧嘩負け。なんとカッコ悪い日本か!」高市にバチーン!✴ [153490809]
