プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ
質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 65
https://mevius.5ch.net/test/read.cgi/tech/1545421414/
るりまサーチ (リファレンス検索)
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 66
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 2a2c-RM0q)
2020/01/04(土) 01:15:34.30ID:X7t3Qsuc02デフォルトの名無しさん (ワッチョイ 422c-RM0q)
2020/01/04(土) 01:17:09.19ID:X7t3Qsuc0 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デフォルトの名無しさん (ワッチョイ 422c-RM0q)
2020/01/04(土) 01:17:57.47ID:X7t3Qsuc0 開発環境
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デフォルトの名無しさん (ワッチョイ 2ed3-9wJp)
2020/01/04(土) 01:58:51.41ID:HyaapUw60 乙です
前スレの「メソッドはオブジェクトか?」に関連してなんですが
RubyのUnboundMethodやMethodのインスタンスたるメソッドオブジェクトって
既存のメソッドと等価な複製が作れるってだけで
元のメソッドをオブジェクトにしたものってわけじゃないですよね?
たとえば、特異クラスなんかだと普段はオブジェクトじゃないけれど
class << self; self end みたいなイディオムや Object#singleton_class メソッドでオブジェクトとして取り出せるし
ブロックも &b のような仮引数を付すことでやはりオブジェクトとして取り出せるわけですが
これらとはメソッドとは話が違う
つまり「Rubyのメソッドはオブジェクトではない(〜としては扱えない)」と考えるのが妥当だと思うのですが
この理解で合っていますか?
前スレの「メソッドはオブジェクトか?」に関連してなんですが
RubyのUnboundMethodやMethodのインスタンスたるメソッドオブジェクトって
既存のメソッドと等価な複製が作れるってだけで
元のメソッドをオブジェクトにしたものってわけじゃないですよね?
たとえば、特異クラスなんかだと普段はオブジェクトじゃないけれど
class << self; self end みたいなイディオムや Object#singleton_class メソッドでオブジェクトとして取り出せるし
ブロックも &b のような仮引数を付すことでやはりオブジェクトとして取り出せるわけですが
これらとはメソッドとは話が違う
つまり「Rubyのメソッドはオブジェクトではない(〜としては扱えない)」と考えるのが妥当だと思うのですが
この理解で合っていますか?
5デフォルトの名無しさん (アウウィフ FFa5-p4uH)
2020/01/04(土) 12:04:30.94ID:trUJS7QSF 今北だが
前スレの終わり方が酷過ぎてワロス
もう新スレなんだしそれ以上言うな
前スレの終わり方が酷過ぎてワロス
もう新スレなんだしそれ以上言うな
6デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/04(土) 12:53:40.81ID:I8dHRpysa これか
996 デフォルトの名無しさん (ワッチョイ 6265-oRfB) sage 2020/01/03(金) 21:03:06.07 ID:e4Snrs1J0
>>993
間違っているという指摘、そのものが誤りだということ
モダンな関数型言語において、すべての値(object)は第一級市民であるが
値と値との関係である適用は値ではない
したがって、そもそも値ではない適用を第一級市民ではないと否定する主張が誤りである
そんなの当たり前だよね
同様に、純粋オブジェクト指向言語において、すべてはオブジェクトであるが、
オブジェクトとオブジェクトとの間の関係であるメソッドはオブジェクトではない
したがって、そもそもオブジェクトではないメソッドを、あえて否定する>>991が誤りではないかと
たとえば、>>986 とそれにに対する反論である>>987 を改ざんして:
986 rubyって全てがオブジェクトなところがいいですよね
(ただしメソッドがオブジェクトなのは常識ですから、あえて言及しませんけど)
987 コメントはオブジェクトじゃないぞ
だったとして、それでもなお>>987を擁護する?
996 デフォルトの名無しさん (ワッチョイ 6265-oRfB) sage 2020/01/03(金) 21:03:06.07 ID:e4Snrs1J0
>>993
間違っているという指摘、そのものが誤りだということ
モダンな関数型言語において、すべての値(object)は第一級市民であるが
値と値との関係である適用は値ではない
したがって、そもそも値ではない適用を第一級市民ではないと否定する主張が誤りである
そんなの当たり前だよね
同様に、純粋オブジェクト指向言語において、すべてはオブジェクトであるが、
オブジェクトとオブジェクトとの間の関係であるメソッドはオブジェクトではない
したがって、そもそもオブジェクトではないメソッドを、あえて否定する>>991が誤りではないかと
たとえば、>>986 とそれにに対する反論である>>987 を改ざんして:
986 rubyって全てがオブジェクトなところがいいですよね
(ただしメソッドがオブジェクトなのは常識ですから、あえて言及しませんけど)
987 コメントはオブジェクトじゃないぞ
だったとして、それでもなお>>987を擁護する?
7デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/04(土) 15:14:00.74ID:I8dHRpysa これはメッセージとメソッドの区別が付いていない
よくあるパターン?
よくあるパターン?
8デフォルトの名無しさん (ワッチョイ 422c-RM0q)
2020/01/04(土) 23:46:45.39ID:X7t3Qsuc0 Ruby には関数スコープ内に、ブロックスコープがある
関数は、外側の変数を通さない。
一方、ブロックは通す。つまり、クロージャ
C と同じの、強固な2段階スコープ!
一方、JavaScript はクロージャしかない。
関数もクロージャだから、第一級関数
その欠点は、外側の変数を通してしまうから、バグが増える。
だから、Ruby は、2段階スコープを採用したのだろう
処理を持ち運ぶ場合だけ、オブジェクトに変換すればよい
関数は、外側の変数を通さない。
一方、ブロックは通す。つまり、クロージャ
C と同じの、強固な2段階スコープ!
一方、JavaScript はクロージャしかない。
関数もクロージャだから、第一級関数
その欠点は、外側の変数を通してしまうから、バグが増える。
だから、Ruby は、2段階スコープを採用したのだろう
処理を持ち運ぶ場合だけ、オブジェクトに変換すればよい
9デフォルトの名無しさん (ワッチョイ 2ed3-9wJp)
2020/01/05(日) 01:29:02.13ID:+qhlN9cW0 つまりRubyではメソッドそれ自体はオブジェクトではない
ということでしょうか?
ということでしょうか?
10デフォルトの名無しさん (ワッチョイ 9233-YCNF)
2020/01/05(日) 01:51:26.84ID:CSAIgDGG011デフォルトの名無しさん (ワッチョイ 8201-TJkF)
2020/01/05(日) 15:36:12.39ID:NzdiaSgk0 「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.
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:41.92ID:BPHXVrhY0 JavaScript 第6版、2012、David Flanagan
彼は、JS のバイブル、表紙がサイの絵の、いわゆるサイ本も書いてる!
Google などのエンジニアの机に、必ず置いてある
彼は、JS のバイブル、表紙がサイの絵の、いわゆるサイ本も書いてる!
Google などのエンジニアの机に、必ず置いてある
13デフォルトの名無しさん (ワッチョイ e514-DsOW)
2020/01/05(日) 22:55:53.02ID:UM8RYdV+0 サイフォン?
14デフォルトの名無しさん (アウアウカー Sa69-JS+6)
2020/01/05(日) 23:56:52.37ID:DQgvXjWRa 同じ純粋オブジェクト指向言語のSmalltalkと比べてみた
Rubyのメソッドオブジェクトは要求される度に作っているみたいで持ち出し専用
Smalltalkのメソッドオブジェクトはそのものでその気になれば中身も弄れる
class Object; def foo; "bar" end end
um1 = Object.instance_method(:foo)
um2 = Object.instance_method(:foo)
um3 = um1.clone
p [um1, um2, um3].map{ |m| m.object_id }
#=> [60, 80, 100]
obj = Object.new
bm1 = obj.method(:foo)
bm2 = obj.method(:foo)
bm3 = bm1.clone
p [bm1, bm2, bm3].map{ |m| m.object_id }
#=> [120, 140, 160]
--
"Pharo Smalltalk"
Object compile: 'foo ^''bar'''.
cm1 := Object compiledMethodAt: #foo.
cm2 := Object compiledMethodAt: #foo.
cm3 := cm1 copy.
{cm1. cm2. cm3} collect: [:cm | cm identityHash].
"=>#(832658944 832658944 425444352) "
self foo. "=> 'bar' "
(cm1 literalAt: 1) at: 3 put: $z.
self foo. "=> 'baz' "
Rubyのメソッドオブジェクトは要求される度に作っているみたいで持ち出し専用
Smalltalkのメソッドオブジェクトはそのものでその気になれば中身も弄れる
class Object; def foo; "bar" end end
um1 = Object.instance_method(:foo)
um2 = Object.instance_method(:foo)
um3 = um1.clone
p [um1, um2, um3].map{ |m| m.object_id }
#=> [60, 80, 100]
obj = Object.new
bm1 = obj.method(:foo)
bm2 = obj.method(:foo)
bm3 = bm1.clone
p [bm1, bm2, bm3].map{ |m| m.object_id }
#=> [120, 140, 160]
--
"Pharo Smalltalk"
Object compile: 'foo ^''bar'''.
cm1 := Object compiledMethodAt: #foo.
cm2 := Object compiledMethodAt: #foo.
cm3 := cm1 copy.
{cm1. cm2. cm3} collect: [:cm | cm identityHash].
"=>#(832658944 832658944 425444352) "
self foo. "=> 'bar' "
(cm1 literalAt: 1) at: 3 put: $z.
self foo. "=> 'baz' "
15デフォルトの名無しさん (ワッチョイ 9233-YCNF)
2020/01/06(月) 00:28:28.35ID:bN5NBzFy0 C#も、メソッドをランタイムにビルドできるんやで!
16デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/06(月) 01:11:00.75ID:Bux8XPhea いやここでのポイントはメソッドがオブジェクトなのかどうかであって
ランライムにメソッドをビルドできるかは関係ないしむしろ出来て当前
ランライムにメソッドをビルドできるかは関係ないしむしろ出来て当前
17デフォルトの名無しさん (ワッチョイ e514-DsOW)
2020/01/06(月) 09:04:50.20ID:0zhzHQ2W0 >>14
> その気になれば中身も弄れる
それが良いことだと思わないんだけどなw
そんなことやるか?やらない。できる必要あるか?ない
アセンブラであれば、中身だろうがなんでもできる
言語というのは成長するにつれてより制限されるもの
制限といえば聞こえは悪いが、ある機能に特化することで
ミスを防ぎ、コードを書いた人のより正確に表すことができる
> その気になれば中身も弄れる
それが良いことだと思わないんだけどなw
そんなことやるか?やらない。できる必要あるか?ない
アセンブラであれば、中身だろうがなんでもできる
言語というのは成長するにつれてより制限されるもの
制限といえば聞こえは悪いが、ある機能に特化することで
ミスを防ぎ、コードを書いた人のより正確に表すことができる
18デフォルトの名無しさん (ワッチョイ e514-DsOW)
2020/01/06(月) 09:05:20.36ID:0zhzHQ2W0 、コードを書いた人の意図をより正確に表すことができる
19デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/06(月) 09:24:31.96ID:9LVBkQo0a Rubyは自分の足を撃とうと思えばそれが出来る(自由がある)のがLisp譲りの
言語持つのパワーでありある種のウリなんだけど初心者だから知らないのかな…
言語持つのパワーでありある種のウリなんだけど初心者だから知らないのかな…
20デフォルトの名無しさん (ワッチョイ e514-DsOW)
2020/01/06(月) 09:35:32.06ID:0zhzHQ2W0 > Rubyは自分の足を撃とうと思えばそれが出来る
それがいいことだと思い込んでるのがおかしい
常識に囚われ思考を放棄してる
それがいいことだと思い込んでるのがおかしい
常識に囚われ思考を放棄してる
21デフォルトの名無しさん (アウアウエー Sa4a-9wJp)
2020/01/06(月) 09:35:53.64ID:N9H2b+k8a Smalltalkの最後の例はメソッドオブジェクトがRubyのモドキと違って
現物だと端的に示すための例であって流石に普段はやらないと思うぞ!
現物だと端的に示すための例であって流石に普段はやらないと思うぞ!
22デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/06(月) 09:40:05.07ID:x7xAEFKOa >>20
おやおやそんなナイーブな考えじゃRailsみたいなのは永久に作れないよ?
おやおやそんなナイーブな考えじゃRailsみたいなのは永久に作れないよ?
23デフォルトの名無しさん (ワッチョイ e514-DsOW)
2020/01/06(月) 09:48:15.44ID:0zhzHQ2W0 >>22
何も根拠がないねw
何も根拠がないねw
24デフォルトの名無しさん (ワッチョイ e514-DsOW)
2020/01/06(月) 09:49:47.24ID:0zhzHQ2W0 Railsみたいなフレームワークはたくさんあるね
Rubyの機能なんて不要だったってことさ
Rubyの機能なんて不要だったってことさ
25デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/06(月) 10:00:05.37ID:x7xAEFKOa んRailsがなければRubyが今の地位はないし
Railsの実装はRubyの黒魔術が効果的に活用されているというのは
説明不要の有名な話だと思っていたが?
やっぱり初心者だから知らないのか…
Railsの実装はRubyの黒魔術が効果的に活用されているというのは
説明不要の有名な話だと思っていたが?
やっぱり初心者だから知らないのか…
26デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/06(月) 10:01:33.21ID:x7xAEFKOa >>24
語るに落ちているよ…(´・ω・`)
語るに落ちているよ…(´・ω・`)
27デフォルトの名無しさん (ワッチョイ c2d2-hZl1)
2020/01/06(月) 10:03:22.46ID:ymuirMBT0 初心者だから「メソッドはオブジェクトじゃない」という発言に対して見当はずれな頭の悪い反論をしてたんだな
28デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/06(月) 10:16:33.06ID:x7xAEFKOa どうやら>>7のセンも濃厚っぽいな…
29デフォルトの名無しさん (ワッチョイ e514-DsOW)
2020/01/06(月) 10:21:29.07ID:0zhzHQ2W030デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/06(月) 10:27:39.91ID:x7xAEFKOa31デフォルトの名無しさん (オッペケ Srf1-1wr4)
2020/01/06(月) 10:30:38.61ID:MCXR7U+mr どうやらガチで頭の残念な子みたいだねw
作れるかどうかなんて、入出力さえ十分にできればほぼすべての言語で作れるっつーのw
作れるかどうかなんて、入出力さえ十分にできればほぼすべての言語で作れるっつーのw
32デフォルトの名無しさん (ワッチョイ e514-DsOW)
2020/01/06(月) 10:52:42.23ID:0zhzHQ2W0 作れるかどうかの話はしてないよ。
どれだけ簡単に作れるか
Railsの開発速度が際立って高いわけではない
むしろ後から追いつかれてる
どれだけ簡単に作れるか
Railsの開発速度が際立って高いわけではない
むしろ後から追いつかれてる
33デフォルトの名無しさん (アウアウカー Sa69-9wJp)
2020/01/06(月) 11:12:38.64ID:x7xAEFKOa >>32
アンチ隔離スレに行け!
アンチ隔離スレに行け!
34デフォルトの名無しさん (ワッチョイ c2ad-oe9l)
2020/01/06(月) 14:44:11.25ID:DmV1IuhC0 現在使用してる教材でテストツールとしてminitest、test-unit、RSpecが紹介されてたんですが
実際のところどれを使えばいいんでしょうか?
実際のところどれを使えばいいんでしょうか?
35デフォルトの名無しさん (ワッチョイ 8201-TJkF)
2020/01/06(月) 16:19:52.25ID:78RinjQr036デフォルトの名無しさん (ワッチョイ c2ad-oe9l)
2020/01/06(月) 18:44:57.86ID:DmV1IuhC0 ご回答ありがとうございます
とりあえずminitestでやってみて何か不都合があれば他も試してみる方針でやってみます
とりあえずminitestでやってみて何か不都合があれば他も試してみる方針でやってみます
37デフォルトの名無しさん (ワッチョイ 4914-DsOW)
2020/01/06(月) 19:25:48.00ID:6twfZFtd0 で、最終的にはrspecになるんやろ?
もしくはrspecを横目にminitestはminitestで
これもありなんだって言い訳しながら使うw
もしくはrspecを横目にminitestはminitestで
これもありなんだって言い訳しながら使うw
38デフォルトの名無しさん (ワッチョイ 422c-RM0q)
2020/01/07(火) 00:37:14.85ID:ueOqy5pf0 BDD(behavior driven development) では、RSpec が標準!
宮下剛輔が作った、サーバー構築テストのServerspec も、RSpec。
JavaScript(JS) のMocha も、RSpecのコピー
基本的に、Rubyで流行ったものは、すぐに、JS, Kotlin へ移植される
宮下剛輔が作った、サーバー構築テストのServerspec も、RSpec。
JavaScript(JS) のMocha も、RSpecのコピー
基本的に、Rubyで流行ったものは、すぐに、JS, Kotlin へ移植される
39デフォルトの名無しさん (ワッチョイ c214-DsOW)
2020/01/07(火) 03:12:30.76ID:tLIimsUP0 RSpecのJS, Kotlin移植版ってどれのこと?
BDDってそんなに流行ってるの?
まああるかもしれないけどxUnitの方が主流だと思うな。JUnitとか
BDDってそんなに流行ってるの?
まああるかもしれないけどxUnitの方が主流だと思うな。JUnitとか
40デフォルトの名無しさん (ワッチョイ 422c-RM0q)
2020/01/07(火) 07:26:57.50ID:ueOqy5pf0 Windows で、Ruby 2.4 から、2.5へ変えたら、
selenium webdriver を使うのに、ffi が必要になった!
でも、コードはそのまま動く
selenium webdriver を使うのに、ffi が必要になった!
でも、コードはそのまま動く
41デフォルトの名無しさん (ワッチョイ 9233-YCNF)
2020/01/07(火) 20:57:12.48ID:9/TsdlFE0 必須でないモジュールが分離されていってんのやろ。
42デフォルトの名無しさん (ワッチョイ 7fad-n+mb)
2020/01/09(木) 16:02:09.08ID:sfRV4jRV0 irbで(整数).object_id と入力すると(整数)*2 - 1 が帰ってくるんですが、そういう仕様なんですか?
43デフォルトの名無しさん (ワッチョイ 7fad-n+mb)
2020/01/09(木) 16:08:04.37ID:sfRV4jRV0 訂正
× (整数)*2 - 1
○ (整数)*2 + 1
× (整数)*2 - 1
○ (整数)*2 + 1
44デフォルトの名無しさん (ドコグロ MM7f-JyDu)
2020/01/09(木) 17:47:10.30ID:H5szYUtEM >>39
BDDというかテストコードを自然言語に似せようとする系は、Goの台頭に伴ってすっかり廃れちゃったね
自動テストの最大の意義は入出力のスナップショットとして予期せぬ挙動の変化を検出できることにあるので、
細かい仕様をテストコードで表現しようとするよりも単純に入出力を並べた方が手っ取り早いし効果も高いんだよな
一方BDDは、網羅性や変化検出性能が不十分でも最低限大半のコードを通ってれば無いよりは遥かにマシだ、
それだけでもスペルミスのような初歩的なバグの大半は潰せるだろう、という手抜き欲求が根底にある
ところが最近は静的型が主流になっちゃってスペルミスみたいなのは起きなくなったから、BDDのようなとりあえず通すだけのテスト手法にはあまり意味がなくなってしまった
BDDというかテストコードを自然言語に似せようとする系は、Goの台頭に伴ってすっかり廃れちゃったね
自動テストの最大の意義は入出力のスナップショットとして予期せぬ挙動の変化を検出できることにあるので、
細かい仕様をテストコードで表現しようとするよりも単純に入出力を並べた方が手っ取り早いし効果も高いんだよな
一方BDDは、網羅性や変化検出性能が不十分でも最低限大半のコードを通ってれば無いよりは遥かにマシだ、
それだけでもスペルミスのような初歩的なバグの大半は潰せるだろう、という手抜き欲求が根底にある
ところが最近は静的型が主流になっちゃってスペルミスみたいなのは起きなくなったから、BDDのようなとりあえず通すだけのテスト手法にはあまり意味がなくなってしまった
45デフォルトの名無しさん (ワッチョイ 5f14-WchB)
2020/01/09(木) 17:51:07.91ID:Mk2U0HaP0 >>44
goでテストって何使ってるの?
goでテストって何使ってるの?
46デフォルトの名無しさん (ワッチョイ 5f14-WchB)
2020/01/09(木) 17:53:19.45ID:Mk2U0HaP047デフォルトの名無しさん (ワッチョイ 7f2c-JQ6m)
2020/01/09(木) 17:59:47.69ID:zp680iXY0 1234567890123456789.object_id
#=> 2469135780246913579
12345678901234567890.object_id
#=> 21368380
大きい整数は、無関係なID になる
たしか、整数は最適化して、オブジェクトを作っていないのじゃなかった?
どこかに、値だけを収めているのじゃ?
#=> 2469135780246913579
12345678901234567890.object_id
#=> 21368380
大きい整数は、無関係なID になる
たしか、整数は最適化して、オブジェクトを作っていないのじゃなかった?
どこかに、値だけを収めているのじゃ?
48デフォルトの名無しさん (ワッチョイ 7f01-KDxU)
2020/01/09(木) 18:13:24.04ID:VxfXfT1S0 >>44
書き方が違うだけでSpec形式でもxUnit形式でもテストする内容は同じだぞ
RSpecじゃなくCucumberみたいなのを使ってたテストはレイヤーが違う
んでもってGoの台頭とか関係ないし
JSで一番使われてるJEST、Mocha、Jasmineの3つともSpec形式が基本
それぞれメリット・デメリットあるからそれを理解して
言語の特性や文化も考慮してから選択すればいい
書き方が違うだけでSpec形式でもxUnit形式でもテストする内容は同じだぞ
RSpecじゃなくCucumberみたいなのを使ってたテストはレイヤーが違う
んでもってGoの台頭とか関係ないし
JSで一番使われてるJEST、Mocha、Jasmineの3つともSpec形式が基本
それぞれメリット・デメリットあるからそれを理解して
言語の特性や文化も考慮してから選択すればいい
49デフォルトの名無しさん (ワッチョイ df14-WchB)
2020/01/09(木) 18:17:48.65ID:sNMr72pi0 JavaにもRSpecみたいなのってあるんだっけ?
言語的に無理がありそうなんだけど
言語的に無理がありそうなんだけど
50デフォルトの名無しさん (ワッチョイ 7fa5-sEAu)
2020/01/09(木) 19:54:43.22ID:nuQhSBU10 コンパイラがスペルチェックまでしてくれるからじゃないの
未来のことはわかりません、っていう宗教観でしょ
作った時点で未来に何が起こるか全て分かるのが静的
未来のことはわかりません、っていう宗教観でしょ
作った時点で未来に何が起こるか全て分かるのが静的
51デフォルトの名無しさん (ワッチョイ 7fad-n+mb)
2020/01/09(木) 20:26:41.00ID:sfRV4jRV052デフォルトの名無しさん (ワッチョイ 7f01-KDxU)
2020/01/09(木) 21:53:54.80ID:VxfXfT1S053デフォルトの名無しさん (ワッチョイ 5f14-Qm2w)
2020/01/09(木) 22:05:09.38ID:edJ5p5Tx054デフォルトの名無しさん (ワッチョイ 7f33-b7GS)
2020/01/09(木) 22:54:54.76ID:C+kuIm3o0 >>53
スクリプト系言語では意味があるんだよなあ。
スクリプト系言語では意味があるんだよなあ。
55デフォルトの名無しさん (ワッチョイ 5f14-t8Ak)
2020/01/10(金) 00:36:36.31ID:hCTYsry705647 (ワッチョイ 7f2c-JQ6m)
2020/01/10(金) 17:27:12.96ID:PkgwRlbI0 >>51
こんなに多くの内部実装の解説本が出てる言語は、Ruby以外にない!
まつもとゆきひろ 言語のしくみ、2016
コマンドA | コマンドB
のような、パイプに似た表記で並列処理できる、新言語「Streem」のデザイン・実装
Rubyのしくみ、2014
外人が書いた本。
Cookpad の笹田耕一が作った、Rubyの実装系、Ruby1.9のRuby仮想マシンの説明
笹田耕一は今、RubyVM の仕組みを雑誌、WEB+DB PRESS で連載中
Rubyのなかを覗いてみよう!池澤あやかが「Cookpad Ruby Hack Challenge」に参加してみた
https://next.rikunabi.com/journal/20180601_c11/
NHK Eテレでお馴染みの、Ruby の女神、池澤あやかによるリポート。
たしか、彼女は学生時代に、Rails 合宿に参加して学んだらしい
こんなに多くの内部実装の解説本が出てる言語は、Ruby以外にない!
まつもとゆきひろ 言語のしくみ、2016
コマンドA | コマンドB
のような、パイプに似た表記で並列処理できる、新言語「Streem」のデザイン・実装
Rubyのしくみ、2014
外人が書いた本。
Cookpad の笹田耕一が作った、Rubyの実装系、Ruby1.9のRuby仮想マシンの説明
笹田耕一は今、RubyVM の仕組みを雑誌、WEB+DB PRESS で連載中
Rubyのなかを覗いてみよう!池澤あやかが「Cookpad Ruby Hack Challenge」に参加してみた
https://next.rikunabi.com/journal/20180601_c11/
NHK Eテレでお馴染みの、Ruby の女神、池澤あやかによるリポート。
たしか、彼女は学生時代に、Rails 合宿に参加して学んだらしい
57デフォルトの名無しさん (ドコグロ MM7f-JyDu)
2020/01/10(金) 17:29:32.05ID:915LIh+yM 一般論として、内部実装を知らないと使えないのは作り手としては恥
58デフォルトの名無しさん (ワッチョイ 7fa5-sEAu)
2020/01/10(金) 17:31:43.84ID:YP/p9xdd0 真顔で「わたくしはC言語を極めました」と言える人物向け
59デフォルトの名無しさん (ワイーワ2 FF7f-Eg5K)
2020/01/10(金) 18:18:32.14ID:puBSVXWRF 池澤あやかωωω
60デフォルトの名無しさん (ワッチョイ ffd3-7q2y)
2020/01/10(金) 22:32:36.44ID:VhdPbdF+0 しゅき…
61デフォルトの名無しさん (ワッチョイ 7f44-Y/Zm)
2020/01/11(土) 13:04:33.98ID:e4hNIYBE0 rubyイスポーラー
62デフォルトの名無しさん (ワッチョイ 7fad-n+mb)
2020/01/11(土) 15:44:52.50ID:cvQKeu200 n.object_id == (2 * n + 1) が成立しなくなる条件を調べて試行錯誤した結果
2進数の区切りの良い数ではないかと当たりをつけたところビンゴ
n = 0
loop do
if (2 ** n - 1).object_id == (2 ** n - 1) * 2 + 1
n += 1
else
p n
break
end
end
#=> 63
2進数の区切りの良い数ではないかと当たりをつけたところビンゴ
n = 0
loop do
if (2 ** n - 1).object_id == (2 ** n - 1) * 2 + 1
n += 1
else
p n
break
end
end
#=> 63
63デフォルトの名無しさん (ワッチョイ 7fad-n+mb)
2020/01/11(土) 15:48:51.00ID:cvQKeu200 (2 ** 62 - 1).object_id == (2 ** 62 - 1) * 2 + 1
#=> true
(2 ** 62 - 1).class
#=> Fixnum
(2 ** 62 ).object_id == (2 ** 62 ) * 2 + 1
#=> false
(2 ** 62 ).class
#=> Bignum
Integerに統合される前のFixnumだと n.object_id = 2 * n + 1 #=> true
Bignumだと n.object_id = 2 * n + 1 #=> false
#=> true
(2 ** 62 - 1).class
#=> Fixnum
(2 ** 62 ).object_id == (2 ** 62 ) * 2 + 1
#=> false
(2 ** 62 ).class
#=> Bignum
Integerに統合される前のFixnumだと n.object_id = 2 * n + 1 #=> true
Bignumだと n.object_id = 2 * n + 1 #=> false
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
