第31回 西日暮里.rb オブジェクト指向設計実践ガイド読書会

第31回 西日暮里.rb オブジェクト指向設計実践ガイド読書会に参加した。今回は訳者の高山さん登場の回だった。

nishinipporirb.doorkeeper.jp

今回は、第5章のダックタイピングと第6章の継承を対象に行なわれた。

第5章でメインの題材となっていたい「ダックタイピング」は動的型付け言語のオブジェクト指向スクリプト言語 Ruby ならではのトピックで興味深い章だった。

このトピックへのいくつかの感想のひとつとして、動的型付けと静的型付けのいち側面について以下の図で一面を示したりしていた。

f:id:koic:20161128221437j:plain

静的型付けの場合はタイプセーフであることを処理系に任せられる一方で、コンパイルを通すこととそのビルド時間が掛かるトレードオフがある。動的型付けの場合はコンパイルを通すことやそのビルド時間がスキップできる一方で、インタフェースの保証についてプログラマーに委ねられるトレードオフがある。いずれの場合も、テストコードがインタフェースを抽出する設計の道具であり、実行時エラーは静的型付け言語でも処理系にすべてお任せという訳にはいかないというプログラミング言語による特質と TDD っぽい話をした。そうそう、TDD は品質保証ではなく設計手法ですよ。

また、この章では参加者の声で「コンパイルは処理系に任せられるテストの一部」という考え方や「コンパイルが遅いというのはどの時代や処理系の話?」といった観点は面白かった。

第6章では「継承」がメインのトピックとなっており、章の頭に書かれていた "継承は根本的に「メッセージの自動委譲」の仕組み" というのは言語処理系が持つ継承の仕組みについて簡潔にまとめられた良い言葉だなと思った。

今回取り上げられた内容のディスカッション元のホワイトボードは西日暮里.rb で使われている Slack に画像添付しておいたので、そちらを参照されたし。https://ninirb.github.io の "Join the community chat" から参加できます。

今後の読書会の流れとして、2週間後の次回に第7章と第8章を取り扱い、来年に残りの第9章を取り扱ってフィナーレの予定。