スクリプトをサクッと書きたいので、こんな本を読みました。

Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術 - Brian Marick

https://amzn.to/3CL5Vj1

サンプルコードは以下に置いてある。これをダウンロードして読み進めていくのだが・・・途中からサンプルコードが動かない。

しかたがないよ、昔の本だから。 The Pragmatic Bookshelf | Source Code

プログラムとスクリプトは違う!

この書籍では、コードを書くことをプログラミングという言葉を使わずに「スクリプティング」という言葉を利用している。本書におけるスクリプティングの定義は以下だ。

軽妙なニュアンスを含み、また日常の雑用をこなすのにより適した用語

ターゲットはテストエンジニア

また、この本のターゲットはテストエンジニアだ。もともと、Scripting for Testersという題名を考えていたらしい。テストにたいする言及も文章の端々にある。

しかし、結果と期待値の比較のようなテストの自動化は扱っていない。自動化は本当の効率化にならない、また必要以上にコストをかけてスクリプトを書くべきではないと忠告している。スクリプトは問題を解決する手段。

内容

Rubyの文法をまったく知らない初心者でもわかるようにかかれている。

exampleを元に実際に手を動かして進めていく章と、文法の解説の章が交互に現れる。正規表現の重要性も強調されていて、よく説明されている。演習問題の解説がとても丁寧に書いてあり、演習も込みで読み進めていくのがいい。gemやツールのフォルダ構造にについてもかかれていて、ツールとしてどういうふうに共有するかが解説されている irbやUnitTestで小さく結果を確かめながらすすめていく。

テスト駆動開発と名をうっているが、そこまでTDDを熱く語っているわけではない。(TDDを期待するのは別の本がよいと思う)リファクタリングについてもたくさん説明が割かれている。テストでスクリプトを整備してクリーンな状態を保ちつつ、スクリプトの保守をしていこうという趣旨。 おわりに書いてあるまとめのことばが胸に刺さるので、引用する。

多くのスクリプタは自分が書いた個々のスクリプトからなにも得られないままでいます。

廃棄すべきスクリプトの作成にすべての時間を費やしていると、あなたの道具箱の中身が増えないばかりか、自分自身の成長も止めてしまうことになるのです。

スクリプティングで大事なことは、自分自身を駆り立てながら、その一方で自分の給与に見合った結果を安定して生み出していくことです。そのためには、コードを常にクリーンに保ちながら、スクリプティングの技術に少しずつ磨きをかけ、あらゆるニーズに対応するようにすることです

だから、スクリプト言語としてRubyがこの本で紹介されたのだと思う。TDDとリファクタリング、オブジェクト指向によるモジュール分割、フレームワークの継承による再利用、豊富な再利用可能ライブラリ群。

プログラマはスクリプト言語が必須スキル

私はプログラミングは知っているが、スクリプティングはあまり知らない。しかし、なんらかのスクリプト言語はプログラマの必須スキルだと信じていて必ず学ぶ必要があると思っている。

なぜなら、プログラマはより効率的にプログラミングするために日々改善が必要で、そのためには簡単にツールをつくるスキルが必要だからだ。Rubyを勉強しようとするモチベーションもスクリプト言語に対する義務的な知識欲があるからだ。