Ruby 初心者スレッド Part 62

■ このスレッドは過去ログ倉庫に格納されています
2017/11/24(金) 00:35:29.31ID:rLZHdQ3Q
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 61
https://mevius.5ch.net/test/read.cgi/tech/1503644351/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
2017/11/24(金) 00:36:08.95ID:rLZHdQ3Q
たのしいRuby 第5版、2016

Effective Ruby、2015

メタプログラミング Ruby 第2版、2015

Rubyのしくみ、2014

改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015

リファクタリング:Rubyエディション、2010
2017/11/24(金) 01:29:56.00ID:rLZHdQ3Q
開発環境

RDE
Windows用IDE
https://ja.osdn.net/projects/sfnet_rubyde/
以下、RDEの使用説明
http://rubyde.sourceforge.net/hiki/ja/FrontPage.html

サクラエディタ
Windows用高機能エディタ
https://ja.osdn.net/projects/sfnet_sakura-editor/
以下、ruby用設定の説明
http://supportdoc.net/support-sakura/ruby.html

Emacs
GNUの高機能エディタ
以下、EmacsでのRuby開発について
https://qiita.com/hiconyan/items/582e27128decfe9d249e

VSCode
マルチOSに対応したマイクロソフト社製のソースコードエディタ
https://code.visualstudio.com/download
2017/11/24(金) 01:46:47.26ID:rLZHdQ3Q
RDEのデバッグ機能を使う場合、設定においてデバッグオプションを「-r debug2」から「-r debug」と書き換えて、
ruby付属のdebug.rbを使うようにすること
RDE付属のdebug2.rbはruby1.8用のスクリプトのため、現在のrubyのversionには使えません
2017/11/24(金) 08:36:20.17ID:r53+zpq0
>>1 乙
2017/11/25(土) 15:40:51.82ID:unmm6CwQ
出るφは撃たれる
2017/11/26(日) 20:55:02.73ID:zBIai8/a
前スレにも書いたけど中級者上級者向けのRuby本が必要だと思う
それもruby界隈で一般化された題材じゃなくてまだ広く知れ渡っていない専門的な題材を扱った本を
Openglとか分散VMとか大規模演算rubyとか他にもこういう題材は結構あると思う
2017/11/26(日) 21:55:29.31ID:OhY/q4lK
現段階で専門的な題材の書籍を出しても赤字になるだけで厳しいと思う
だったらまだ一般的なプログラミング雑誌で連載する方が見込みはあるんじゃないかなあ
あとは教育機関・研究機関における浸透度合いを高めるところも攻めた方がいい
それと会社のお偉いさんはRubyの案件をさらに増やして

とりあえず日本で有人月面着陸を計画してるからmrubyも載せようぜ
2017/11/26(日) 22:38:23.64ID:e8MWK5Ug
初心者向け書籍で裾野を広げまくったからニーズはあるだろ
いわば教科書を読んで基礎を学んで、それらを試せる応用分野をみんな探している所
Rubyと+αの専門性の高いものを出せば、目的はないけど何か読みたいって層にはドンピシャで来る
web系はRailsやWEBrickでこれからも出るし、科学計算や3Dとか教養シリーズみたいな感じで出せば全然いける
2017/11/26(日) 22:48:35.39ID:LT7w1DpA
データ分析系は
Pythonが流行してるから
そっちで本出すだろ

Rubyだとライブラリと
速度がネックになるから
2017/11/26(日) 23:21:25.25ID:azT4+Y0L
>>9
cadをやってるから、物理演算とかシミュレート系をだして欲しい
あと、組込み向けにソースコンパイルやらRuby-C間の解説とか
2017/11/26(日) 23:44:18.39ID:e8MWK5Ug
>>10
学んだRubyで何かする本が求められていると言っているのに、
何故Pythonが出てくるんだ?
13デフォルトの名無しさん
垢版 |
2017/11/27(月) 00:33:15.55ID:o0pIkOSz
rubyコンとかRuby勉強会とかどんな感じ?
マシンスペック的にはどんなのもっていけばいい?
2017/11/27(月) 01:59:56.02ID:x+zk8UEy
開発マシンの、CPU は i7、メモリは最低でも 8GB(16GB が望ましい)
Windows 10 pro
WSL・仮想OS で、Linux

Mac の人も多い
15デフォルトの名無しさん
垢版 |
2017/11/27(月) 07:55:32.25ID:gt4bCosJ
>>12
Rubyはrails以外に使い道無いから他の事したいなら他の言語覚えろよ
2017/11/27(月) 12:11:21.22ID:W0wAPtjw
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
2017/11/27(月) 13:14:45.58ID:o0pIkOSz
>>15
荒らし行為をやり続けてPythonスレから追い出されたの?
ここじゃ病気は治せないから病院に行ったほうがいいよ

>>14
やっぱり結構なマシンを持って行くんだね
ARMプロセッサ積んだボードにrubyをクロスコンパイルして入れた自作のマシンとか考えてたけど、
低スペックでもWinノートPCを買っておいた方が良いか
2017/11/27(月) 18:50:34.20ID:agUtcdpR
最近の荒らしはやり方が雑だよな
殆ど単発の自演しか涌かないし
出て来ても「はいはい、荒らしてますよ〜」みたいな嫌々やらされてる感しかない
2017/11/27(月) 19:23:05.97ID:x+zk8UEy
Ruby は、Linux 必須だから、WSL・仮想OS ・Docker などが必須

2つのOS を動かすから、メモリは最大限積む必要があり、
CPU はi7 にすると、16GB まで積める。
i3, i5 だと、8GBまでかな?

それと、たいていのプログラム言語の本の動作条件が、Windows Pro

一般的に、開発用PC は、高スペック。
画面も、フルHD 以上
2017/11/27(月) 21:01:16.83ID:LZyaXIN8
もうこいつどんだけ粘着するのか
2017/11/27(月) 21:44:22.84ID:agUtcdpR
自演も中途半端
もうただ単に定型文を打つだけで満足してて、
荒れたかどうかも気にしなくなってるんだよな
夏休みの宿題やらされてる子供かよ
2017/11/27(月) 22:51:47.97ID:rAG/Bhsm
「また自演した」「このスレには自演が居るから」「このスレには自演がいます!いますよ!ほら!」としか書くことがなくなったんだろうなと思う
本当に他人から貰ったレスというのは自分がいちばんよくわかってて、そしてそれは本レスにおいても自演指摘レスにおいてもおそらく極めて少ない
住人の冷めた態度が効いてると表現することはできなくもないが
2017/11/27(月) 23:02:26.98ID:SI4QCwP5
静的型マンセーの粘着がいるのは確かだが、何でもかんでも自演自演言ってるやつもちょっと病的だよな
ちょっとネガティブな発言しただけなのに荒らしの自演認定されたことあるし
2017/11/27(月) 23:32:26.87ID:W0wAPtjw
上の人は荒らしだからスルーでお願いします

>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
2017/11/27(月) 23:50:32.31ID:9RbRf1jA
>>22
>>23

即座にバレとる
アホやろお前?
2017/11/27(月) 23:53:05.49ID:rAG/Bhsm
>>23
スレ住人が過去に何度か同調したことがあるのだが、
そのせいで自分が こ れ 以 降 何 を し て も 正義で多数派で「こちら側」に居れると勘違いしてしまったらしいのだ
いつか自分が「あちら側」に追いやられていたことに気づく日がくればいいと思う
2017/11/28(火) 00:02:17.19ID:1+J/qigr
そうやって嫌々やってるからまたボロを出す
22:51:47.97
23:02:26.98
こんだけ時間くっつけて発言すればバカにさえ自演だってわかる
しっかり頭を働かせろ

ゆとり世代か何かか?
2017/11/28(火) 00:03:55.96ID:qPKDeu2+
だから、まあ、我々はふたつの荒らしを並行同時にあしらいながら進まねばならなくなっている
「やってはいけないこと」「さわってはいけないもの」は倍以上に増え、発言の困難性は以前より遥かに増した
難儀なことだ
29デフォルトの名無しさん
垢版 |
2017/11/28(火) 00:07:19.20ID:TcvLN2I4
完動する事を確認しているDLライブラリ使ったスクリプトを、思いつきでrubyに付属のdebug.rbで診たら、
dllの関数呼び出しの所で`unknown symbol "関数名"' (RuntimeError)がでてなかなかブレークポイントまで進めません
一部の止まるエラーを抑えたり、スクリプト上の一定部分だけデバッガー無効化したりすることは可能ですか?
2017/11/28(火) 00:39:00.64ID:yd/D5jJi
>>28は俺らを辟易させることが目的らしい
でもそれって俺等がいつも通りに荒らしをバカにしながら会話し続けたらどうするの?
いつまでもあの騙せそうにない自演でレスを稼いでくれる?
2017/11/28(火) 03:30:10.92ID:PkJOT8pW
そのエラーになる部分を、コメントアウトして実行すれば?
32デフォルトの名無しさん
垢版 |
2017/11/29(水) 04:08:52.30ID:zX4fkY5X
debug.rbはkernelのset_trace_funcで登録したprocを、デバッギーの行毎に呼び出してる
だから呼び出されたくない行は登録するproc内でif文を使って分岐させてやれば良い

やってることはそれ程難しくないし、debug.rbに10行程度書き加えれば出来るよ
2017/11/29(水) 18:32:32.11ID:MwOAAXQr
>>29
DEBUGGER__クラス内の一番下段の下記を、
stdout.printf "Debug.rb\n"
stdout.printf "Emacs support available.\n\n"
RubyVM::InstructionSequence.compile_option = {
trace_instruction: true
}
set_trace_func proc { |event, file, line, id, binding, klass, *rest|
DEBUGGER__.context.trace_func event, file, line, id, binding, klass
}
2017/11/29(水) 18:44:22.06ID:MwOAAXQr
下のに書き換え、
@@ignore_ = {}
def DEBUGGER__.ignore_(ignorefl = @@ignore_)
return @@ignore_ = ignorefl
end
stdout.printf "Debug.rb\n"
stdout.printf "Emacs support available.\n\n"
RubyVM::InstructionSequence.compile_option = {:trace_instruction => true} if RUBY_VERSION > "1.9.0"
set_trace_func proc { |event, file, line, id, binding, klass, *rest|
tb = caller(0);last_i = "";i_name = "";i_num = 0;
last_i = tb[-1] if tb.size > 0
last_i.dup.each_line(":"){ |i_line|
if i_line .to_i > 0 || (i_line.chop).to_i > 0
break if i_name.size < 1
i_num = (i_line[-1] == ":" ? (i_line.chop).to_i : i_line .to_i)
i_name = i_name.chop
break
else
i_name += i_line
end
}
if i_num > 0 && DEBUGGER__.ignore_.include?(i_name) && DEBUGGER__.ignore_[i_name].include?(i_num)
# debug_skip
else
DEBUGGER__.context.trace_func event, file, line, id, binding, klass
end
}
2017/11/29(水) 18:51:55.61ID:MwOAAXQr
デバッグするソースファイルの最初の方に以下を書き加え、debugをスキップしたいファイルをignorefに、行をRangeかArrayでignorelにいれる
if defined? DEBUGGER__
ignoref = __FILE__
ignorel = []# 27..48
DEBUGGER__.ignore_[ignoref] = ignorel
end

debugのスクリプトそのものを書き換えるんじゃなくて、
複製して別名をつけたものを書き換えて使ったほうが良いよ
2017/11/30(木) 01:37:59.97ID:XY2yKXS8
Rubyでopenglのシェーダーを扱った本、技術評論社辺りから出してくれないかな
こういうのこそRuby向けだよ
37デフォルトの名無しさん
垢版 |
2017/11/30(木) 13:11:26.74ID:dNsMGYhb
OpenGL自体のgemとかはそろってるから、
ミクミク互換やXファイル互換のソースを添付して出せば売れそうだけどな
2017/12/01(金) 01:22:55.57ID:UulhXT9P
# frozen_string_literal: false
ソースの最初に上のように書かれてるのを見つけたけどどいう意味?
他にもこういうのあるの?
2017/12/01(金) 04:44:53.26ID:zZy3ktkC
>>38
ruby-3以降はリテラル文字列がfrozenされることになるけど、
そうさせないためのマジックコメントでリテラル文字列の破壊的動作が許されるようにしている

ruby-2.3以降であればruby --enable frozen-string-literal <ファイル名>でrubyを起動することで、
リテラル文字列をfrozenされた状態とする挙動を試すことができる

# これまでの挙動
$ ruby -e 'p "A".downcase!'
"a"

# ruby-3以降のリテラル文字列の挙動を試す (ruby-2.3以降)
$ ruby --enable frozen-string-literal -e 'p "A".downcase!'
-e:1:in `downcase!': can't modify frozen String (RuntimeError)
from -e:1:in `<main>'
2017/12/02(土) 02:33:11.13ID:7L3qqdqd
>>39
前スレのリテラルの話でArrayが出てたけど、Arrayも何か将来的に関係あるの?
2017/12/02(土) 12:25:58.45ID:S9pj625T
二項演算子型のシンタックスシュガーって場合によっては意図したとおりに動いてくれないんだね

Math::PI %1 #=> unknown type of %string
Math::PI *1 #=> undefined method `PI' for Math:Module
Math::PI /1 #=> unterminated regexp meets end of file
Math::PI >1 #=> true

pi = Math::PI
pi %1 #=> unknown type of %string
pi *1 #=> 3.141592653589793
pi /1 #=> 3.141592653589793
pi >1 #=> true
2017/12/02(土) 12:28:39.60ID:S9pj625T
pi %1 #=> unknown type of %string
じゃなくて
pi %1 #=> 0.14159265358979312
だった
定数だとうまくいかない模様
2017/12/02(土) 12:49:07.58ID:m0rwQM4g
>>41が何を意図しているか分かるわけないだろう
2017/12/02(土) 13:43:40.72ID:0GCrzYMu
スペースを入れろってだけの話では
45デフォルトの名無しさん
垢版 |
2017/12/02(土) 13:50:50.68ID:XRYOyseR
今年もクリスマスイブに何か発表ある?
46デフォルトの名無しさん
垢版 |
2017/12/03(日) 03:01:00.42ID:IGABZHMD
>>39
さんくす
2017/12/03(日) 12:36:05.29ID:76TDWePk
Ruby2.5
48デフォルトの名無しさん
垢版 |
2017/12/05(火) 03:46:28.43ID:XHolF61u
Rubyの型システムは早ければ2020年のオリンピック頃にお目見えか
どんな物になるんだろう
2017/12/05(火) 16:37:09.15ID:tba/yJ/+
Rが楽しくて勝手にやってるんだが
rubyはどうやって勉強すればいいんだ
>>2の自分に合うのを買えばいいのかな?
2017/12/05(火) 16:48:30.13ID:lVtWIMct
他言語の経験あるなら
プロを目指す人のためのRuby入門という入門書が新しくておすすめ(出たばかり)
2017/12/05(火) 17:04:59.24ID:04pPds2q
本は買った後、
分からない事があれば、ここで環境とコード示して聞けば良いよ
誰かが答えてくれるから
2017/12/05(火) 23:05:42.39ID:bv7GN3wK
たのしいRuby 第5版、2016

R を知ってるなら、これも読む。
みんなのPython 第4版、2017

この2冊は、表裏一体。
ただし、先に「たのしい」から読むこと
2017/12/06(水) 00:16:07.55ID:Nuv0O2Zm
>>50-52
3冊チェックしてみました
webのサンプルを読んで書店で見てみます
ありがとうございました
54デフォルトの名無しさん
垢版 |
2017/12/06(水) 04:53:57.53ID:j5o9izkC
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
2017/12/06(水) 16:47:29.82ID:AVh4r46K
Effective RubyがKindleで半額セール中(1728円)
56デフォルトの名無しさん
垢版 |
2017/12/06(水) 21:44:56.35ID:sdwtDf9T
RubyでOpenGLの書籍も来い
2017/12/06(水) 21:46:49.21ID:vDrxBWCE
読者100人ぐらいしかいなさそう
2017/12/06(水) 21:48:41.70ID:Q8AsPyaZ
まずRubyが遅いから
画像処理やろうって人が少ない
2017/12/06(水) 21:57:47.76ID:j5o9izkC
3Dモデリングなら速度要らなさそう
あと可視化の分野辺り


というか、ゲームじゃなければ速度いらないだろ
60デフォルトの名無しさん
垢版 |
2017/12/06(水) 22:11:16.54ID:sdwtDf9T
3Dモデルというか、OpenGL学ぶのに最適だよRubyは
教材として出せば良いのに
商材として出すならMMDやXといった各種3Dモデル形式に対応した3DモデリングソフトをRubyで書いてCD付録として書籍につければ良い
そのRubyコード目当てに買う人は多いだろうし、Rubyで書いてるから書き換えやすく、改造もしやすい
2017/12/06(水) 23:53:59.61ID:9Cl2Q0EY
残念ながらそれはない
Rubyはまともに使うつもりないなら学習のオーバーヘッドが大きすぎる
今ならJavaScriptとWebGLでいいよ
62デフォルトの名無しさん
垢版 |
2017/12/07(木) 02:09:30.99ID:5ii6i5Is
おまえがネガキャンしても無意味だ
2017/12/07(木) 02:49:15.45ID:mIJMiEiv
openglか
確かラッパーのgemがいくつかあるんだよな
初期のでglVertexPointerやらglColorPointerやら使って三角形を描画するとかやった記憶がある
今のgemはVBOやシェーダは使えるのか?
2017/12/07(木) 03:59:25.76ID:GxHPFgmw
3Dモデラーソフトのソースが付くなら欲しい
ゼロから書くのは面倒だけど既にある程度完成しているなら、
自分で足りない所だけ追加して楽できる
2017/12/07(木) 16:46:28.15ID:al0lHo8n
>>63
gemをちょっとググってみたけどopengl4.xに対応しててそれ用の関数もある
shaderがどこまで出来るかは自己の環境次第なんじゃね?
まあ、最近はopengl4.x使える環境がデフォだけど
2017/12/07(木) 22:06:15.41ID:mIJMiEiv
みんな、Rubyのリファクタリングツール使ってる?
今まで手動でやってきたんだけど、何かお勧めツールかgemある?
2017/12/07(木) 22:18:59.22ID:h0N877cC
rubymine
2017/12/07(木) 22:35:19.73ID:p8nuhjj6
rspec
rubyは静的解析が極めて困難な言語であり、リファクタリングを機械的に安全に行うことはできない
テストをちゃんと書いておいて、実際に繰り返し動かしながら結果的に元の挙動が再現されるように慎重に行う必要がある
2017/12/07(木) 23:56:42.24ID:kyxQutt+
テストはバグが有ることを証明することはできるが
バグがないことを証明することはできない
故にいくらテストを書いても安心できない
2017/12/08(金) 00:13:02.65ID:AScviHBw
お前のツールでリファクタリングしたらバグったやないか客の業務止まっとるんやぞどないしてくれんねんボケエ!!!
こうなるのが目に見えてるんだからツール作る方もやりたくないわな
静的リファクタリングを動的型言語に求めるのは筋違い
71デフォルトの名無しさん
垢版 |
2017/12/08(金) 00:48:46.54ID:yFCS8xkj
また言ってるのかこいつ
はやく精神科に見てもらえ


ruby会議16か15でリファクタリングのgemのOHPあったけど、
ぐぐったら出てくるから見てみ
2017/12/08(金) 01:08:24.02ID:ra4CwiYK
>>2 のリファクタリング:Rubyエディションを読めばわかるけど、
ツールで自動化するのは問題なく、むしろポイントはツールの使い勝手とか連携させるとかの方
リファクタリング機能自体にはあんまり差異は無い
例の自演荒らしはそれを知らずに静的云々とか煽ってるけど
2017/12/08(金) 01:33:37.38ID:AScviHBw
>>72
さすがにリファクタリングに関して静的型と差異がないというのは贔屓目に見ても無理があるわ
例えばクラスのメソッドのリネームを安全に行うには、そのメソッドを使っている箇所を全て正確に特定しなければならない
静的型なら造作もないことだけど、ちょっと頭使えばわかることだが動的型では原理的に不可能
2017/12/08(金) 01:35:02.78ID:T1izFLQz
Ruby技術者試験受けるよ!
アドバイスとかあったらお願いします
ちなみに、今年中にsilver受験するつもり
2017/12/08(金) 01:36:07.26ID:AScviHBw
あと、Rubyに限ったことじゃないけどスクリプト言語は識別子を短くする傾向があるから、
単純にgrepで抽出するのも困難を極める
もちろん静的型では一文字メソッドだろうと全く問題ないけどね
2017/12/08(金) 02:01:33.10ID:AScviHBw
何が言いたいかというと、リファクタリングにツールの力を借りたくなるようなものを動的型で作るなら必ずテストを書けってことだ
絶対に安全というわけではないが気休めにはなる
テストのない大規模なRubyのソースは単なる糞の山であり、確実にメンテ不能に陥る
2017/12/08(金) 02:24:45.46ID:DD2Dk6IR
strArray = %w(a b c a c)
strHash = strArray.each_with_object(Hash.new(0)) { |str, h| h[str] += 1 }

p strHash #=> {"a"=>2, "b"=>1, "c"=>2}

使われている文字が、一番多いもの(複数可)と、その回数を求める。
ひとまず、Hash に使われている回数を入れたけど、

ここから最大のもの、a, c の、2回を求めるには、どうすれば良い?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況