Ruby 初心者スレッド Part 64

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:25:16.66ID:wk35+pf/
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

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

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

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

逆引きRuby
http://www.namaraii.com/rubytips/

Ruby コミュニティ公式
https://www.ruby-lang.org/
2018/09/22(土) 18:20:01.02ID:+6RodBLW
>>191
なんで使われていない言語のスレを覗いてるんですかねぇ…
2018/09/22(土) 18:32:25.36ID:zH/ripxa
>>182←コイツが色んなスレで荒らし回ってるから興味ない人までここに注目してしまう説
194デフォルトの名無しさん
垢版 |
2018/09/22(土) 18:48:25.78ID:WtoSSyfo
また自演か
195デフォルトの名無しさん
垢版 |
2018/09/23(日) 14:38:34.96ID:Y708Yb9G
Ruby Mineいいぞ
196デフォルトの名無しさん
垢版 |
2018/09/23(日) 19:21:52.04ID:L7++9Slk
vagrantfileってruby?

node.vm.box = "CentOS-7"
node.vm.network :public_network, ip: "192.168.111.11", bridge: "wifi"


↑node.vm.networkって変数?関数?イコールかカッコ省略してるの?
:public_network, ip: "192.168.111.11", bridge: "wifi"って引数なの?
つかこれ糖衣構文なの?愚直に書くとどうなるの?
2018/09/23(日) 19:29:26.00ID:yBlaBAG2
node.vm.network(:public_network, :ip => "192.168.111.11", :bridge => "wifi")
2018/09/23(日) 19:46:10.50ID:L7++9Slk
>>197
理解したサンキュー
2018/09/23(日) 22:57:33.61ID:35kDNkPs
シンボルとかキーワード引数とか、かっこなしメソッド呼び出しとか、イカれた文法が多いよな。
だからDSLが定義しやすいとか、もうバカかと。
2018/09/23(日) 23:45:19.78ID:5bCa4IEe
Rubyの文法は自然で分かりやすいと感じる
201デフォルトの名無しさん
垢版 |
2018/09/24(月) 04:16:50.16ID:SQOWCm/x
199が長年このスレに粘着している所からみて
Rybuが便利って事の証明だな
202デフォルトの名無しさん
垢版 |
2018/09/24(月) 04:18:46.93ID:SQOWCm/x
ああ
タイプミスったか
2018/09/24(月) 04:36:13.17ID:cIWp1XlU
HTML でよく使う、でたらめの単語を並べる、Lorem Ipsum を使おうと、Faker gem を入れたけど、
出力に、5秒もかかる

なんで、こんなに遅い?

CPU-i3, Windows10, VSCode
2018/09/24(月) 05:25:27.23ID:WFD5m+H5
ライブラリにあるプロファイラーを使えよ
これでどこが遅いかすぐわかるだろ
205デフォルトの名無しさん
垢版 |
2018/09/24(月) 13:18:27.96ID:bHt3pXzR
Rubyのカッコ省略は可読性低すぎる
2018/09/24(月) 13:42:34.41ID:+ob6DU4m
DSLはカッコ省略で可読性上がるだろ
2018/09/24(月) 13:53:49.73ID:8mxLASGw
rubocopでは引数無しかDSLかputsとかよく使うの以外の()の省略を禁じてたね
208デフォルトの名無しさん
垢版 |
2018/09/24(月) 14:20:17.33ID:jnbiRGGY
別にカッコ省略は強制じゃないからね
状況に応じてカッコをつけたり外したり、
そんな可読性というか美的センスが求められる

たとえば >>196 であれば、記述が一行に収まらなくなるほど
長くなれば、カッコをつけたほうがカッコいい

node.vm.network(
  :public_network,
  ip: "192.168.111.11",
  bridge: "wifi"
)

こうしておけば、保守性の向上を目的として各行にコメントを付けられる
2018/09/24(月) 14:25:56.87ID:j4wJNE6l
>>206
言語をそのままDSLとして流用しようというのがちょっとイカれてると思うな。
2018/09/24(月) 14:31:02.56ID:j4wJNE6l
>>208
それは括弧が必須だろ。
文法における改行の扱いがいいかげんなのはダメなところ。
211デフォルトの名無しさん
垢版 |
2018/09/24(月) 14:57:57.46ID:jnbiRGGY
>>209
イカれてるってのは、Rubyに対する最高の賛辞だ
なにせRubyは関数型(Lisp)をベースとして
手続き型(Perl)とオブジェクト指向(Smalltalk)を融合するという、
イカれた設計思想で誕生したんだから

http://peace.2ch.net/test/read.cgi/tech/1409526637/857/

で、その当時、XML設定ファイル地獄にあえいでいた
Java Webアプリ開発者が、内部DSLを多用するイカした
Rails フレームワークに流れ込んで、Rubyは全世界で知られるようになった
2018/09/24(月) 15:05:10.14ID:LuTKsX0g
>>210
セミコロン書けっての?
213デフォルトの名無しさん
垢版 |
2018/09/24(月) 15:48:51.67ID:gaTHdjrg
>>211
さすが ruby はイカレてやがる
https://next.rikunabi.com/journal/20160129_t21_iq/
2018/09/24(月) 15:49:37.96ID:KIKNiOiJ
rubyはじめようとして本屋いったらrubyが数冊あったはずのがpythonに
変わってたのでpython買ってきた
215デフォルトの名無しさん
垢版 |
2018/09/24(月) 15:54:03.89ID:kBpC5qFw
>>214
今すぐ返品するんだ
人工知能でも作る気がないならRubyを勧める
2018/09/24(月) 16:01:50.11ID:hrySGkvz
どこでもそうだけどスレタイと別の言語の話してるヤツはスルーするに限る
2018/09/24(月) 16:10:06.43ID:j4wJNE6l
>>212
文の区切りが書き方やバージョンによって変わるくらいなら、セミコロンくらい喜んで書く。
2018/09/24(月) 16:19:51.13ID:LuTKsX0g
>>217
どのバージョンでどういう風に変わったの?
2018/09/24(月) 16:25:49.93ID:+ob6DU4m
>>209
内部DSLだとコストが低いから何かと便利だぞ
2018/09/24(月) 16:55:45.09ID:tbtIQWiZ
>>219
そうか?
内部DSLなんかやりだしたら開発者がマスターベーションを始めて無駄に工数を浪費するだけだよ
外部DSLだと「面倒臭い」という意識が働くから結果的に安くつく
221デフォルトの名無しさん
垢版 |
2018/09/24(月) 17:23:57.28ID:jnbiRGGY
>>217
>>218と同じく、どう変わったのかな?

自分は1.6系がリリースされた直後の1999年から使っているけど、
Rubyで「文の区切りや書き方がバージョンによって変わる」なんて
経験が無いから、それが事実なら驚天動地の新発見になる

すごく興味があるから、ホラやデマカセでなければ、ぜひ教えてください
222デフォルトの名無しさん
垢版 |
2018/09/24(月) 17:29:24.21ID:jnbiRGGY
>>220
Rubyの内部DSLを設定ファイルとして採用する著名な構成管理ツールには、
>>196 の Vagrant だけでなく、Chef や Puppet もあるんだけど、
こうしたツール作者に正面から喧嘩を売れる男の子ってカッコいいですね(棒
223デフォルトの名無しさん
垢版 |
2018/09/24(月) 17:49:32.98ID:qkXKwQlD
またパイキチが他のスレあげまくってくるのか
224デフォルトの名無しさん
垢版 |
2018/09/24(月) 18:29:49.60ID:qkXKwQlD
やっぱりか
225デフォルトの名無しさん
垢版 |
2018/09/24(月) 20:39:20.68ID:mZ7GRZ4Z
railsチュートリアル進まない
2018/09/24(月) 20:41:52.37ID:vr3+WUA5
脳のスペックは人それぞれ
諦める勇気も必要
227デフォルトの名無しさん
垢版 |
2018/09/24(月) 20:49:18.67ID:mZ7GRZ4Z
>>226
俺に言ってんの?
2018/09/24(月) 21:15:02.89ID:63DR0NZS
>>227
そのとおり
2018/09/24(月) 21:25:53.56ID:8Eg6qm1l
実際プログラミングの能力って個人差があるから、あまりにも他人より努力しなきゃいけないようなら
そこを乗り越えても最終的には不幸な人生になる可能性が高いよ
本当に辛いなら我慢しないほうがいい
2018/09/24(月) 21:33:35.11ID:cIWp1XlU
改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018/9/7

改訂版が出たよ。
こちらの方が、Rails チュートリアルよりも簡単かも
2018/09/24(月) 21:41:34.02ID:cIWp1XlU
カッコは、VSCode の、Bracket Pair Colorizer で、

対応するカッコをカラフルに表示できるし、
開始・終了カッコを示す、ガイドラインも付く

f ( )

ただ、関数名とカッコの間に、空白を入れると、文法エラーになる。
昔はエラーの理由がわからず、これでかなり苦しんだ
2018/09/24(月) 21:59:41.25ID:j4wJNE6l
>>218
>>221
ま、細かいとこだよ。
以前はエラーになってたのがいけるようになったんだっけかな。
233デフォルトの名無しさん
垢版 |
2018/09/24(月) 22:12:16.59ID:jnbiRGGY
>>232
いやいや、そんな遠慮なさらずに、変わったところを教えてくださいよ
だって >>217 じゃ天下取ったみたいな口調で変わったと断言したのですから、
まさか今頃になって忘れちゃったなんて言わないですよね?

すごく興味があるから、ホラやデマカセでなければ、ぜひ教えてください
234デフォルトの名無しさん
垢版 |
2018/09/24(月) 22:17:47.16ID:jnbiRGGY
>>231
>ただ、関数名とカッコの間に、空白を入れると、文法エラーになる。
>昔はエラーの理由がわからず、これでかなり苦しんだ

それ、Bracket Pair Colorizer のバグですね
2018/09/24(月) 22:39:27.18ID:j4wJNE6l
>>233
いちいち覚えてるわけないだろ。
目的が煽りでないならちょっと調べてもいいけど、人にものをたずねる態度じゃないな。w
236デフォルトの名無しさん
垢版 |
2018/09/24(月) 22:56:50.65ID:jnbiRGGY
>>235
え、わざわざ調べなければならないほど記憶が曖昧なのに、>>217じゃ:

>> 文の区切りが書き方やバージョンによって変わるくらいなら、セミコロンくらい喜んで書く。

とカキコしちゃたのですか?

どうやら、ID:j4wJNE6l にとって議論に勝ちさえすれば真実はどうでもいいらしい
>>217のようなホラやデマカセの類を吐いても平然としていられる
日本人の私には、とうてい信じられない行動ですね
237231
垢版 |
2018/09/24(月) 23:15:22.67ID:cIWp1XlU
def foo ( x ) puts x; end
foo ( 1 )

あれれ? 関数名の後ろに、空白が入っていても、正常に動く

解釈があいまいになる場合に、エラーになるのかな?
2018/09/24(月) 23:19:18.60ID:+bhBUiYM
ここまで全部pyキチの自演かよ
2018/09/24(月) 23:41:33.14ID:8mxLASGw
>>237
それは括弧が引数の括弧として解釈されてないだけだから
puts  (1+2)

puts((1+2))と解釈されている
次の例からも明らか
puts (1+2).succ #=> 4
puts(1+2).succ #=> NoMethodError: undefined method `succ' for nil:NilClass
# putsの戻り値nilにsuccを呼び出そうとしているので
2018/09/25(火) 00:30:03.44ID:9DB6mA1y
>>235
お前バカか?
目的が煽りでないならとかじゃなくて、「ありもしないバージョンによる改行の扱いの変更をでっちあげて
Rubyを貶めたいだけなんだろ?」って堂々と疑われてることにも気づかないのかよ
そこで「いちいち覚えてるわけないだろ」なんて疑いを確信に変えるだけじゃん
2018/09/25(火) 01:22:25.40ID:nLBKEPPV
バカはおまえらだ。
そういうことなら、説得する義理なんかないから、どうでもすきに思え。
とにかく事実として存在したんで。

Rubyはいいかげんなところが多いが、改行の扱いもそうだった。
ま、それでもいいとも思う。
それで問題ないところで使うし。
2018/09/25(火) 01:34:54.50ID:9DB6mA1y
> そういうことなら、説得する義理なんかないから、どうでもすきに思え。
ここに及んでまだ具体例を出せないってことは、嘘八百ってことをついに認めるに至る、ってことね
2018/09/25(火) 02:10:16.33ID:JXqOIinx
1.9辺りで改行の扱い変更されてなかったっけ?
http://www.rubyist.net/~matz/slides/rc2003/mgp00021.html
2018/09/25(火) 16:54:01.90ID:7/llvlyM
>>243
2.0のような気がしてたけど、1.9だったか。
そういえば、オレは1.9はスキップしたんだった。
245デフォルトの名無しさん
垢版 |
2018/09/25(火) 17:12:49.07ID:zjb6lVBe
>>231
"ただ、関数名とカッコの間に、空白を入れると、文法エラーになる。"
これマジ?気付かなかったな
文法チェック入れてないからか?
2018/09/25(火) 18:12:40.14ID:tnNRyqPf
そりゃ当たり前でしょ
hoge  (1, 2)
ってあったら(1, 2)の結果をhogeに与えようとするからsyntaxerror
引数無しのメソッドでも
hoge  ()
ってすればまず()の結果であるnilをhogeに与えてhoge(nil)になるからargumenterror
247デフォルトの名無しさん
垢版 |
2018/09/25(火) 18:31:24.09ID:EqDfiqim
なるほどね
VB/VBAもそんなのあったな
やっぱりrubyは糞
2018/09/25(火) 18:40:43.81ID:8itXfwJX
文法の一貫性が損なわれるのは括弧省略の大きな欠点だよね
言語の驚きを最大化するには良い方法
2018/09/25(火) 20:13:19.11ID:nLBKEPPV
たしか、Perl5もそう。
スクリプト系言語はしかたないね。
250デフォルトの名無しさん
垢版 |
2018/09/25(火) 21:31:47.09ID:BRabQ1iT
Rubyの文法を理解できなかったって素直に言えよ
自演してないで
2018/09/25(火) 21:33:26.27ID:Jw6NGqaL
空白の個数で意味が変わるような文法は糞だが、空白の有無ならまぁ許容できる。
2018/09/25(火) 22:01:45.11ID:BMMTvniR
>>248
文法の一貫性を保ったまま、括弧が省略できる言語がある。
括弧が省略と言うか、そもそも括弧がない。
その言語とはシェルスクリプトだ
This is a pen がそのまま実行可能にできる言語はシェルスクリプトだけ
2018/09/25(火) 22:16:35.41ID:JXqOIinx
>>252
> This is a pen がそのまま実行可能にできる言語

その式はSmalltalkでもリーガルだし
しかるべくクラスやメソッドを定義すれば実行可能にできるよねw

https://ideone.com/61xGq2
2018/09/25(火) 22:29:36.06ID:GnoTTlW7
>This is a pen がそのまま実行可能にできる言語
パーサ組んで新言語作ればいいだけ
なお実用性があるかどうかは別問題
2018/09/25(火) 23:39:40.93ID:tnNRyqPf
そういや任天堂のruby謎解きパズルみたいなので
what is the answer
みたいな感じで実行すると答えになるってのが昔あったな
2018/09/25(火) 23:46:10.39ID:i2UBaUuH
文の途中で改行するときも、あいまいに解釈されない場所で、改行しないといけない。
カンマ前置スタイルで、改行できるかな?

a,
b,
c

a
,b
,c
257デフォルトの名無しさん
垢版 |
2018/09/26(水) 00:17:36.60ID:mFRVToqB
言語の文法を理解できなかった

文法に一貫性が無いのが原因だ


自演してまでこんな酷い言い訳を言いたいのか?
2018/09/26(水) 01:07:44.46ID:Mj1AdT7l
最近はKotlinとかも改行に意味を持たせるようになってきてるのにね
セミコロン主義者の主張はわからん
2018/09/26(水) 02:30:50.92ID:iEie35x1
>>258
厳密に正確な記述ができるべきというだけのことが理解できんとは。
2018/09/26(水) 11:37:59.49ID:Mj1AdT7l
>>259
だったらそういう言語を使えばいいじゃん
C++でもJavaでもお好きにどうぞ
スクリプト系ならJavaScriptがあるし
2018/09/26(水) 11:58:04.96ID:YjHjqGJ6
javascriptはセミコロンを省略できるが、一部罠があるので省略する人はまだ少数な印象
goは省略に関してのルールが単純で独特
rustはセミコロンを省略するすることに意味があったりして難しそう
262デフォルトの名無しさん
垢版 |
2018/09/26(水) 13:01:41.89ID:Vd59yVYC
Railsの本買ったぜ★
263デフォルトの名無しさん
垢版 |
2018/09/26(水) 15:00:02.04ID:TFKXU6Vz
>>262
オメ
頑張れよ
2018/09/26(水) 17:40:54.87ID:a+dyEdoa
今勉強中なんだけど
attr_accessor これなんて読むの?
2018/09/26(水) 17:46:07.92ID:IrSE7b3G
>>264
attribute(属性)の略
読み方は知らん。心の中ではあとりびゅーとあくせっさーて読んでるわ
266デフォルトの名無しさん
垢版 |
2018/09/26(水) 18:26:25.05ID:TFKXU6Vz
アクセサ意味わからんよな
2018/09/26(水) 23:47:09.97ID:P+3GV8ah
漏れはフレームワーク本を、たくさん買ったから、読む本には困らないw

改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018/9/7
改訂2版 Ruby逆引きハンドブック、2018/8/28

Python Django 超入門、掌田津耶乃、2018
Node.js超入門、掌田津耶乃、2017

基礎から学ぶ Vue.js、mio、2018/5/29

Electronではじめるアプリ開発
~JavaScript/HTML/CSSでデスクトップアプリを作ろう
野口 将人・倉見 洋輔、2017

入門 React ――コンポーネントベースのWebフロントエンド開発、2015
268デフォルトの名無しさん
垢版 |
2018/09/27(木) 08:32:52.75ID:ae81EACT
rubyは書きやすくて読みにくい言語
pythonは描きにくくて読みやすい言語
2018/09/27(木) 08:38:33.99ID:emgF57xx
RubyでもPythonでも
自分が書いたものなら読みやすい
他人が書いたものは読みにくい
2018/09/27(木) 09:56:28.96ID:tfG3JwKB
他人が書いたソースって観点だと
他人が書いた関数群→よっぽどのスーパーアルゴリズムさえなきゃ改修できる
他人が書いたクラス群→影響範囲に確証が持てないから勘弁
ってなるよね
2018/09/27(木) 10:47:55.23ID:Xb2xbcVq
素人で自分用にしかスクリプトを書かないから、
基本的なメソッドの使い方とか、
コメントでソース内にベタベタ貼っちゃってる

# ↓三項演算子(条件 ? trueの時 : falseの時)

とか書いとかないと、数年たってスクリプト修正したりする時に
意味がわからなくなる
2018/09/27(木) 10:51:43.48ID:rZRe7wqK
さすがに頭悪すぎだろ
2018/09/27(木) 11:38:07.41ID:emgF57xx
>>271
コメントを書くこと自体は良い習慣だと思うが
さすがに三項演算子とかは書かない方がマシ
274デフォルトの名無しさん
垢版 |
2018/09/27(木) 11:41:26.19ID:+X2PETpr
うむ
2018/09/27(木) 12:11:00.96ID:m9ch006S
自分用ならいいんじゃね?
そのうち当たり前のコメントは書かなくなるだろうし
2018/09/27(木) 12:33:56.85ID:3GYxnPn5
アルゴリズムの説明が必要なときくらいしかコメントは書かないわ
コメントが随所に必要なコードは悪いコード、とまで言い切ったら言い過ぎだろうか
2018/09/27(木) 13:44:06.71ID:MMVikjbK
どうせ半年後には自分が書いていても忘れてるんだが・・・
2018/09/27(木) 14:24:39.99ID:M9UbUXxK
メソッドの説明は書く
2018/09/27(木) 18:58:06.27ID:6fCJVBDU
コメントは最小限にしたほうがいい
なぜならコメントを正しく保守するコストは思ったより高く確実にメンテされる可能性は低いから
コメントを書くくらいならSOLIDを守り、命名を正しくし、テストを書くべきだ
テストは資産に計上される上に、メンテしないとレッドシグナルが出るので保守される確率が高い
2018/09/27(木) 19:23:43.31ID:vjM+AyEC
Railsのスクリプトは決まりきった単純作業だからコメントなんて要らん
281デフォルトの名無しさん
垢版 |
2018/09/27(木) 19:51:04.49ID:kvkKm3j+
SOLIDってなんですか?
2018/09/27(木) 20:09:43.07ID:m9ch006S
https://en.wikipedia.org/wiki/SOLID
これかな
2018/09/28(金) 00:04:52.37ID:eIGlDHes
GitHubって今でもRoRで作られているの?
2018/09/28(金) 07:38:31.13ID:WNdPusBb
長く使うコードはコメント書くなぁ・・・適当に書いていて数年後に改修の必要性が生じたときに泣ける
一発屋は書かないけど
2018/09/28(金) 08:37:08.79ID:0suyvlHG
楽しいRubyより初心者にお勧めの本ありますか?
Rubyとこの本を他スレで進められたんですがAmazonの評価が第5版にもかかわらず
粗悪なものが多く二の足を踏んでしまいました…
286デフォルトの名無しさん
垢版 |
2018/09/28(金) 08:39:37.21ID:Afgf72Ce
>>285
3step本
2018/09/28(金) 08:51:34.57ID:0suyvlHG
>>286
ありがとうございます!
そちらにしてみようと思います(/・ω・)/
2018/09/28(金) 08:51:56.07ID:WNdPusBb
個人的には本で勉強しようという姿勢そのものが不適当だと思う
すでに枯れている物ならともかく現在進行形で変わっていく技術はなおさらだ
2018/09/28(金) 09:49:33.93ID:klTi8g9c
気持ちいいRubyなら買うかも
2018/09/28(金) 09:56:22.39ID:gCOipXQi
5版まで出ているベストセラーで、ユーザー会会長の本なのにw
これ以上の本があるわけないだろ

他の本は売れていないから、コメントが書かれないだけ
2018/09/28(金) 10:18:17.56ID:/n3LqHMA
そもそも「どう良くなかったのか」を書いていない時点でお察し
単に叩きたいだけの人かもしれない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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