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/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
そもそも「どう良くなかったのか」を書いていない時点でお察し
単に叩きたいだけの人かもしれない
292デフォルトの名無しさん
垢版 |
2018/09/28(金) 11:17:29.21ID:Afgf72Ce
3step本はよく分からなくてもとりあえず読み切ったら楽しいRubyとかに書いてあることが分かりやすくなるよ
2018/09/28(金) 13:14:10.19ID:gCOipXQi
Progate みたいな学習サイトで、勉強すれば?
2018/09/28(金) 13:43:03.71ID:EiOshXgh
>>285
『たのしいRuby』が初心者には一番オススメ

一番最初の学習は本なしじゃどうしようもないけど
本だけでもどうしようもないのが実態だと思う

どの言語でもどの本でも同じ
自分で組む練習をしないと身につかない
2018/09/28(金) 13:47:00.47ID:apJqM64m
rubyの学習なんか苦痛だろ
2018/09/28(金) 14:01:09.36ID:ERiXKI2G
Rubyが苦痛なら他の言語も基本苦痛
ということでプログラマに向いてない
297デフォルトの名無しさん
垢版 |
2018/09/28(金) 14:04:33.79ID:Afgf72Ce
穴埋め系サイトなんかいくらやっても身に付かんよ
本に書いてあるコードを写経して覚えるのが一番
2018/09/28(金) 14:09:45.11ID:apJqM64m
いや、こんなに世界中で使われなくなってきているものを今から学習とか意味ない
たくさん言語あるんだからトレンドに乗るべき
そしてなによりrubyストはエンジニア業界でかなり嫌われている
現実から目をそむけるな
2018/09/28(金) 14:17:25.47ID:ERiXKI2G
>>298
そんな言語のスレをわざわざ覗いてアンチレスをしてるお前の方が数百倍嫌われてるから安心しろ
2018/09/28(金) 14:27:20.45ID:apJqM64m
>>299
まだ何も知らない若者を救うために来てるんだよ

https://pbs.twimg.com/media/DjCWzQYU4AAng_H.jpg
301デフォルトの名無しさん
垢版 |
2018/09/28(金) 14:48:10.94ID:Afgf72Ce
>>300
相手してもらいたかったらアンチスレでも行ってろ
2018/09/28(金) 14:51:16.87ID:bPXaydqo
>>300
何がダメかじゃなくて、
何が良いかで語れよ
2018/09/28(金) 15:44:14.79ID:WNdPusBb
プログラミング言語の本って買ったことないや
リファレンスマニュアルがあれば事足りる
2018/09/28(金) 16:10:29.02ID:Trt/L8Tp
>>303
同じく
大抵はそれで事足りるしな
305デフォルトの名無しさん
垢版 |
2018/09/28(金) 16:12:22.39ID:O5kQkBkV
>>300
そろそろ新しい言語に対応したの作れ
2018/09/28(金) 17:30:04.16ID:WNdPusBb
プログラミングの勉強をしたいならまずは基礎的なところから手をつけた方が良いと思う
関数やオブジェクト指向。代入と参照、演算子類など。今時の言語であればこれらの理解はほぼ必須

もっとも自分はN88-BASICから入ったせいか必要に迫られるまでオブジェクト指向を理解できなかった
RubyでGUIアプリケーションを作っていてカオス化してようやく理解できた
でも未だにどの程度の粒度で抽象化するのが適当なのかは理解できていない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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