[過去ログ] Ruby 初心者スレッド Part 66 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1: (ワッチョイ 2a2c-RM0q) 2020/01/04(土)01:15 ID:X7t3Qsuc0(1/4) AAS
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 65
2chスレ:tech

るりまサーチ (リファレンス検索)
省7
2
(3): (ワッチョイ 422c-RM0q) 2020/01/04(土)01:17 ID:X7t3Qsuc0(2/4) AAS
Rubyの絵本、2008
たのしいRuby 第5版、2016

3ステップでしっかり学ぶ Ruby入門、2018

かんたん Ruby (プログラミングの教科書)、2018

プロを目指す人のためのRuby入門、2017

改訂2版 パーフェクトRuby、2017
省11
3: (ワッチョイ 422c-RM0q) 2020/01/04(土)01:17 ID:X7t3Qsuc0(3/4) AAS
開発環境

RDE
Windows用IDE
外部リンク:ja.osdn.net
以下、RDEの使用説明
外部リンク[html]:rubyde.sourceforge.net

RDEのデバッグ機能を使う場合、設定においてデバッグオプションを「-r debug2」から「-r debug」と書き換えて、
省14
4: (ワッチョイ 2ed3-9wJp) 2020/01/04(土)01:58 ID:HyaapUw60(1) AAS
乙です

前スレの「メソッドはオブジェクトか?」に関連してなんですが
RubyのUnboundMethodやMethodのインスタンスたるメソッドオブジェクトって
既存のメソッドと等価な複製が作れるってだけで
元のメソッドをオブジェクトにしたものってわけじゃないですよね?

たとえば、特異クラスなんかだと普段はオブジェクトじゃないけれど
class << self; self end みたいなイディオムや Object#singleton_class メソッドでオブジェクトとして取り出せるし
省4
5: (アウウィフ FFa5-p4uH) 2020/01/04(土)12:04 ID:trUJS7QSF(1) AAS
今北だが
前スレの終わり方が酷過ぎてワロス
もう新スレなんだしそれ以上言うな
6: (アウアウカー Sa69-9wJp) 2020/01/04(土)12:53 ID:I8dHRpysa(1/2) AAS
これか

996 デフォルトの名無しさん (ワッチョイ 6265-oRfB) sage 2020/01/03(金) 21:03:06.07 ID:e4Snrs1J0
>>993
間違っているという指摘、そのものが誤りだということ

モダンな関数型言語において、すべての値(object)は第一級市民であるが
値と値との関係である適用は値ではない
したがって、そもそも値ではない適用を第一級市民ではないと否定する主張が誤りである
省9
7
(1): (アウアウカー Sa69-9wJp) 2020/01/04(土)15:14 ID:I8dHRpysa(2/2) AAS
これはメッセージとメソッドの区別が付いていない
よくあるパターン?
8: (ワッチョイ 422c-RM0q) 2020/01/04(土)23:46 ID:X7t3Qsuc0(4/4) AAS
Ruby には関数スコープ内に、ブロックスコープがある

関数は、外側の変数を通さない。
一方、ブロックは通す。つまり、クロージャ

C と同じの、強固な2段階スコープ!

一方、JavaScript はクロージャしかない。
関数もクロージャだから、第一級関数

その欠点は、外側の変数を通してしまうから、バグが増える。
省2
9
(1): (ワッチョイ 2ed3-9wJp) 2020/01/05(日)01:29 ID:+qhlN9cW0(1) AAS
つまりRubyではメソッドそれ自体はオブジェクトではない
ということでしょうか?
10: (ワッチョイ 9233-YCNF) 2020/01/05(日)01:51 ID:CSAIgDGG0(1) AAS
>>9
メソッド自体を、独立したオブジェクトのように扱えるか?
扱えないならそういうこと。

ただ、ちょっと工夫すれば、似たようなことはだいたい実現できるから、その区別にはそれほど意味がない。
11: (ワッチョイ 8201-TJkF) 2020/01/05(日)15:36 ID:NzdiaSgk0(1) AAS
「The Ruby Programming Language」David Flanagan and Yukihiro Matsumoto

6.7 Method Objects
Ruby’s methods and blocks are executable language constructs, but they are not objects.
Procs and lambdas are object versions of blocks; they can be executed and also manipulated as data.
Ruby has powerful metaprogramming (or reflection) capabilities, and methods can actually be represented as instances of the Method class.
12: (ワッチョイ 422c-RM0q) 2020/01/05(日)22:47 ID:BPHXVrhY0(1) AAS
JavaScript 第6版、2012、David Flanagan

彼は、JS のバイブル、表紙がサイの絵の、いわゆるサイ本も書いてる!
Google などのエンジニアの机に、必ず置いてある
13: (ワッチョイ e514-DsOW) 2020/01/05(日)22:55 ID:UM8RYdV+0(1) AAS
サイフォン?
14
(1): (アウアウカー Sa69-JS+6) 2020/01/05(日)23:56 ID:DQgvXjWRa(1) AAS
同じ純粋オブジェクト指向言語のSmalltalkと比べてみた
Rubyのメソッドオブジェクトは要求される度に作っているみたいで持ち出し専用
Smalltalkのメソッドオブジェクトはそのものでその気になれば中身も弄れる

class Object; def foo; "bar" end end
um1 = Object.instance_method(:foo)
um2 = Object.instance_method(:foo)
um3 = um1.clone
省19
15: (ワッチョイ 9233-YCNF) 2020/01/06(月)00:28 ID:bN5NBzFy0(1) AAS
C#も、メソッドをランタイムにビルドできるんやで!
16: (アウアウカー Sa69-9wJp) 2020/01/06(月)01:11 ID:Bux8XPhea(1) AAS
いやここでのポイントはメソッドがオブジェクトなのかどうかであって
ランライムにメソッドをビルドできるかは関係ないしむしろ出来て当前
17: (ワッチョイ e514-DsOW) 2020/01/06(月)09:04 ID:0zhzHQ2W0(1/7) AAS
>>14
> その気になれば中身も弄れる
それが良いことだと思わないんだけどなw

そんなことやるか?やらない。できる必要あるか?ない
アセンブラであれば、中身だろうがなんでもできる
言語というのは成長するにつれてより制限されるもの
制限といえば聞こえは悪いが、ある機能に特化することで
省1
18: (ワッチョイ e514-DsOW) 2020/01/06(月)09:05 ID:0zhzHQ2W0(2/7) AAS
、コードを書いた人の意図をより正確に表すことができる
19: (アウアウカー Sa69-9wJp) 2020/01/06(月)09:24 ID:9LVBkQo0a(1) AAS
Rubyは自分の足を撃とうと思えばそれが出来る(自由がある)のがLisp譲りの
言語持つのパワーでありある種のウリなんだけど初心者だから知らないのかな…
20
(1): (ワッチョイ e514-DsOW) 2020/01/06(月)09:35 ID:0zhzHQ2W0(3/7) AAS
> Rubyは自分の足を撃とうと思えばそれが出来る

それがいいことだと思い込んでるのがおかしい
常識に囚われ思考を放棄してる
21: (アウアウエー Sa4a-9wJp) 2020/01/06(月)09:35 ID:N9H2b+k8a(1) AAS
Smalltalkの最後の例はメソッドオブジェクトがRubyのモドキと違って
現物だと端的に示すための例であって流石に普段はやらないと思うぞ!
22
(1): (アウアウカー Sa69-9wJp) 2020/01/06(月)09:40 ID:x7xAEFKOa(1/6) AAS
>>20
おやおやそんなナイーブな考えじゃRailsみたいなのは永久に作れないよ?
23: (ワッチョイ e514-DsOW) 2020/01/06(月)09:48 ID:0zhzHQ2W0(4/7) AAS
>>22
何も根拠がないねw
24
(1): (ワッチョイ e514-DsOW) 2020/01/06(月)09:49 ID:0zhzHQ2W0(5/7) AAS
Railsみたいなフレームワークはたくさんあるね
Rubyの機能なんて不要だったってことさ
25
(1): (アウアウカー Sa69-9wJp) 2020/01/06(月)10:00 ID:x7xAEFKOa(2/6) AAS
んRailsがなければRubyが今の地位はないし
Railsの実装はRubyの黒魔術が効果的に活用されているというのは
説明不要の有名な話だと思っていたが?
やっぱり初心者だから知らないのか…
26: (アウアウカー Sa69-9wJp) 2020/01/06(月)10:01 ID:x7xAEFKOa(3/6) AAS
>>24
語るに落ちているよ…(´・ω・`)
27: (ワッチョイ c2d2-hZl1) 2020/01/06(月)10:03 ID:ymuirMBT0(1) AAS
初心者だから「メソッドはオブジェクトじゃない」という発言に対して見当はずれな頭の悪い反論をしてたんだな
28: (アウアウカー Sa69-9wJp) 2020/01/06(月)10:16 ID:x7xAEFKOa(4/6) AAS
どうやら>>7のセンも濃厚っぽいな…
29
(1): (ワッチョイ e514-DsOW) 2020/01/06(月)10:21 ID:0zhzHQ2W0(6/7) AAS
>>25
Railsの実装はRubyの黒魔術が使われてる・・・事実
同等のものはRubyの黒魔術を使わなくても作れる・・・事実
30: (アウアウカー Sa69-9wJp) 2020/01/06(月)10:27 ID:x7xAEFKOa(5/6) AAS
>>29
他言語のRailsモドキはRailsと同等な機能もあるがすべてが等価ではない・・・事実
Railsの覇権はRailsモドキとの差異によってもたらされている・・・事実
31: (オッペケ Srf1-1wr4) 2020/01/06(月)10:30 ID:MCXR7U+mr(1) AAS
どうやらガチで頭の残念な子みたいだねw
作れるかどうかなんて、入出力さえ十分にできればほぼすべての言語で作れるっつーのw
32
(1): (ワッチョイ e514-DsOW) 2020/01/06(月)10:52 ID:0zhzHQ2W0(7/7) AAS
作れるかどうかの話はしてないよ。
どれだけ簡単に作れるか

Railsの開発速度が際立って高いわけではない
むしろ後から追いつかれてる
33: (アウアウカー Sa69-9wJp) 2020/01/06(月)11:12 ID:x7xAEFKOa(6/6) AAS
>>32
アンチ隔離スレに行け!
34
(1): (ワッチョイ c2ad-oe9l) 2020/01/06(月)14:44 ID:DmV1IuhC0(1/2) AAS
現在使用してる教材でテストツールとしてminitest、test-unit、RSpecが紹介されてたんですが
実際のところどれを使えばいいんでしょうか?
35: (ワッチョイ 8201-TJkF) 2020/01/06(月)16:19 ID:78RinjQr0(1) AAS
>>34
Spec形式が好みならRSpec
xUnit形式が好みならminitest

よく分からないなら標準ライブラリに入ってるminitestから
36: (ワッチョイ c2ad-oe9l) 2020/01/06(月)18:44 ID:DmV1IuhC0(2/2) AAS
ご回答ありがとうございます
とりあえずminitestでやってみて何か不都合があれば他も試してみる方針でやってみます
37: (ワッチョイ 4914-DsOW) 2020/01/06(月)19:25 ID:6twfZFtd0(1) AAS
で、最終的にはrspecになるんやろ?
もしくはrspecを横目にminitestはminitestで
これもありなんだって言い訳しながら使うw
38: (ワッチョイ 422c-RM0q) 2020/01/07(火)00:37 ID:ueOqy5pf0(1/2) AAS
BDD(behavior driven development) では、RSpec が標準!

宮下剛輔が作った、サーバー構築テストのServerspec も、RSpec。
JavaScript(JS) のMocha も、RSpecのコピー

基本的に、Rubyで流行ったものは、すぐに、JS, Kotlin へ移植される
39
(1): (ワッチョイ c214-DsOW) 2020/01/07(火)03:12 ID:tLIimsUP0(1) AAS
RSpecのJS, Kotlin移植版ってどれのこと?
BDDってそんなに流行ってるの?
まああるかもしれないけどxUnitの方が主流だと思うな。JUnitとか
40: (ワッチョイ 422c-RM0q) 2020/01/07(火)07:26 ID:ueOqy5pf0(2/2) AAS
Windows で、Ruby 2.4 から、2.5へ変えたら、
selenium webdriver を使うのに、ffi が必要になった!

でも、コードはそのまま動く
41: (ワッチョイ 9233-YCNF) 2020/01/07(火)20:57 ID:9/TsdlFE0(1) AAS
必須でないモジュールが分離されていってんのやろ。
42: (ワッチョイ 7fad-n+mb) 2020/01/09(木)16:02 ID:sfRV4jRV0(1/3) AAS
irbで(整数).object_id と入力すると(整数)*2 - 1 が帰ってくるんですが、そういう仕様なんですか?
43
(1): (ワッチョイ 7fad-n+mb) 2020/01/09(木)16:08 ID:sfRV4jRV0(2/3) AAS
訂正
× (整数)*2 - 1
○ (整数)*2 + 1
44
(2): (ドコグロ MM7f-JyDu) 2020/01/09(木)17:47 ID:H5szYUtEM(1) AAS
>>39
BDDというかテストコードを自然言語に似せようとする系は、Goの台頭に伴ってすっかり廃れちゃったね
自動テストの最大の意義は入出力のスナップショットとして予期せぬ挙動の変化を検出できることにあるので、
細かい仕様をテストコードで表現しようとするよりも単純に入出力を並べた方が手っ取り早いし効果も高いんだよな
一方BDDは、網羅性や変化検出性能が不十分でも最低限大半のコードを通ってれば無いよりは遥かにマシだ、
それだけでもスペルミスのような初歩的なバグの大半は潰せるだろう、という手抜き欲求が根底にある
ところが最近は静的型が主流になっちゃってスペルミスみたいなのは起きなくなったから、BDDのようなとりあえず通すだけのテスト手法にはあまり意味がなくなってしまった
45: (ワッチョイ 5f14-WchB) 2020/01/09(木)17:51 ID:Mk2U0HaP0(1/2) AAS
>>44
goでテストって何使ってるの?
46: (ワッチョイ 5f14-WchB) 2020/01/09(木)17:53 ID:Mk2U0HaP0(2/2) AAS
これ?

Ginkgo is a BDD-style Go testing framework
外部リンク:onsi.github.io
47
(1): (ワッチョイ 7f2c-JQ6m) 2020/01/09(木)17:59 ID:zp680iXY0(1) AAS
1234567890123456789.object_id
#=> 2469135780246913579

12345678901234567890.object_id
#=> 21368380

大きい整数は、無関係なID になる

たしか、整数は最適化して、オブジェクトを作っていないのじゃなかった?
どこかに、値だけを収めているのじゃ?
48: (ワッチョイ 7f01-KDxU) 2020/01/09(木)18:13 ID:VxfXfT1S0(1/2) AAS
>>44
書き方が違うだけでSpec形式でもxUnit形式でもテストする内容は同じだぞ
RSpecじゃなくCucumberみたいなのを使ってたテストはレイヤーが違う

んでもってGoの台頭とか関係ないし
JSで一番使われてるJEST、Mocha、Jasmineの3つともSpec形式が基本

それぞれメリット・デメリットあるからそれを理解して
言語の特性や文化も考慮してから選択すればいい
49
(1): (ワッチョイ df14-WchB) 2020/01/09(木)18:17 ID:sNMr72pi0(1) AAS
JavaにもRSpecみたいなのってあるんだっけ?
言語的に無理がありそうなんだけど
50
(1): (ワッチョイ 7fa5-sEAu) 2020/01/09(木)19:54 ID:nuQhSBU10(1) AAS
コンパイラがスペルチェックまでしてくれるからじゃないの
未来のことはわかりません、っていう宗教観でしょ
作った時点で未来に何が起こるか全て分かるのが静的
51
(1): (ワッチョイ 7fad-n+mb) 2020/01/09(木)20:26 ID:sfRV4jRV0(3/3) AAS
>>47
そうなんですか
まだRubyをどう使うか勉強中の身ですが、Rubyそのものの仕組みも面白そうですね
1-
あと 951 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.025s