山田祥寛 : 独習 Ruby 新版

作成日 : 2023-03-27
最終更新日 :

本書の特徴

Ruby 3.0 に対応している初級本である。また、下記についても 高度なプログラミングという章で解説されている。

以下、通読した結果を述べる。

第 1 章 イントロダクション

本書では、Windows 10 で RubyInstaller により Ruby をインストールする例を述べている。 私もこの本を読む前、すでに RubyInstaller で Ruby をインストールしている(ただし OS は Windows 11 Home Edition)。 また、Visual Source Code (VSCode)についても記載されているが、こちらも済ませている。 ただし、VSCode 関係の拡張機能のうち、Ruby Solargraph と Code Runner はインストールしていなかったので、 これを本書に従ってインストールした。

第 2 章 Ruby の基本

2.2.7 項「少し特殊な型」の p.066 でシンボル型が登場する。次の p.067 で現時点ではイメージのわきにくい型かもしれませんが、 この後、具体的な登場シーンの中で徐々に慣れていきましょう。 としめくくっている。具体的な登場シーンとはどこなのだろう、と思ってしまう。読み進めていくと、 2.4.2 項「キーとしてのシンボル」で、そのような登場シーンが出てくる。ということなので、2.2.7 項で「 2.4.2 項参照」などとすると親切だったのにと思う。

第 3 章 演算子

3.5 項「ビット演算子」では、初学者は利用する機会もそれほど多くないので、まず先に進みたいという型は、この節をよみとばしてもかまいません。 と説明されている。それならば説明をあとに回すか、いっそのこと説明を省けばいいのに、と私は思ってしまう。

第 4 章 制御構文

4.3.1 項「配列を順に処理する」の pp.153-154 では、番号指定パラメーターについて説明されている。この番号指定パラメーターについては可読性に欠けるとし、 p.154 で使い捨てのコードなどでの利用に限定し、まずは、これまで通りの引数表記を優先することをお勧めします (本書でも、以降では番号指定パラメーターは利用しません) と説明されている。それならばいっそのこと番号指定パラメーターについての説明を省けばいいのに、と私は思ってしまう。

Windows で実行するとコマンドラインに入力した文字が文字化けして表示される現象

p.163 では、p.161 にあるリスト 4.57 を実行するとコマンドラインに入力した文字が文字化けして表示される現象があること、 これを解消するためには、name = gets.rstrip という行を、 name = gets.encode('UTF-8', 'Windows-31J', invalid: :replace, replace: '').rstrip と書き換えれば解消することが解説されている。では実際はどうだろうか。

PS C:> ruby .\redo.rb
名前を教えてください:まるやま
./redo.rb:12:in `gets': "\\xFF" on Windows-31J (Encoding::InvalidByteSequenceError)
        from ./redo.rb:12:in `gets'
        from ./redo.rb:12:in `block in 
' from ./redo.rb:8:in `loop' from ./redo.rb:8:in `
'

次に指定したとおり書き換えた場合である。

PS C:> ruby .\redo.rb 名前を教えてください:まるやま こんにちは、縺セ繧九d縺セさん!

うまくいかない。そこで、別の WEB 情報をもとにして、上記書き換えに加え冒頭に次の 1 行を加えてみた。

STDIN.set_encoding "Windows-31J"

どうだろうか。

PS C:> ruby .\redo.rb
名前を教えてください:まるやま

こんにちは、ワまるやまさん!

空行があるのは、「まるやま」を入力して Enter を押しても反応がなく、さらに Enter を押さねばならなかったからだ。

書誌情報

書名 独習 Ruby 新版
著者 山田祥寛
発行日 2021 年 9 月 13 日(初版第 1 刷)
発行元 翔泳社
定価 3200 円(本体)
サイズ A5 版 変形
ISBN 978-4-7981-6884-5
その他 草加市立図書館で借りて読む

まりんきょ学問所>> Rubyの浮き輪>> 独習 Ruby 新版


MARUYAMA Satosi