2010年1月28日

The Art of Unit Testing

[ ソフトウェア開発 ]

最近読んだ"The Art of Unit Testing: With Examples in .net"という本がとっても良かった。Unit Testをはじめようとしているひと、運用で悩んでいる人は今すぐ読め! ってくらい良かった。

この本は、ユニットテストの基本的な考え方と基本的な書き方から始まります(Part 1)。

そして、ユニットテストで必須のテクニックである依存性の取り除きかたについて語られます(Part 2)。

その上で、ユニットテストをどう配置し走らせるか、どうやってリファクタするか、どんなふうに自動ビルドで運用するか、など実際に運用するときの考え方や方法論を解説します。そしてユニットテストのコードで陥りがちな罠(ひとつのテストにAssertion多すぎ、テストの名前が分からん、Setupに詰め込みすぎ、実行順序に依存、などなど)とその回避基準も明示します(Part 3)。

さらに、組織へのユニットテストを導入するにはどうするか(新しいことには抵抗がつきものです)を説明し、「タフ」な質問( 「これはどのくらい時間をとるの?」「これでほんとに効果がでるの?」など)にどう応えるか、回答例のカタログとともに説明します。最後の章では所謂"レガシーコード"に、どのようにユニットテストを適用していくのか、という話題に切り込みます(Part 4)。

上記で要約したとおり、「ユニットテスト」の話題に関する1から10までをカバーしてる本です。これだけ盛りだくさんで、厚さは300ページ程度と薄いのもよいです。でも内容は決して薄くないですよ。これからユニットテストを学ぶひとが最初から通読するのにはとても向いていますし、ある程度実践してるけど、いろいろうまくいっていない人(それは私)にも読み応えあります。

テスト駆動開発ベースの本や、JUnitの使い方の本はいままでもいろいろありましたが、ユニットテストの話題を網羅した、適切なサイズの本はこれまでなかったのではないかと思います。

"xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series)"や、"レガシーコード改善ガイド (Object Oriented SELECTION)"を読む前に読むのもよいのではないかと推測します(推測なのは、どっちも未だ読んでいないので...)

翻訳されていないのが惜しいです。もし誰も版権とっていないのならば、翻訳したいなー、と本気で思っています。アンオフィシャルに蠢き中ですが、既に翻訳はじまってるよ、などの情報ご存じの方いらっしゃったら教えてください。

そして、ひろってくださる出版社募集中。

2009年2月 4日

VirtualMachine本のひとり勉強会

[ LowLevel ]

VM本読書記録がいくら自分用メモとはいえ、粒度がむちゃくちゃで読みにくいので、いったんVM本の全体構成をおさらいしてみましょう。(そういうことは先にやれ>おれ)

現時点(2009.2.4)では、Chapter 3の途中です。読み進むにつれ、このエントリはかきかえていきます。

Chapter 1: Introduction to Virtual Machines

Chapter1のメモ

タイトル通り、仮想マシンへのイントロダクション。コンピュータのアーキテクチャ、「仮想」とはなんであるか、仮想マシンのいろいろ、そして本書の構成について。

Chapter 2: Emulation: Interpretation and Binary Translation

Chapter2のメモ

命令セットのエミュレーション全般。直観的なインタープリットから始まり、threaded, predecode, binary translationなどの方式や、命令セットのエミュレーションにおけるさまざまな問題について概観します。

Chapter 3: Process Virtual Machines

Chapter3のメモ

プロセスVMを構成するはなし。まずは全体の構成からはじまります。それから互換性・状態のマッピング・エミュレーションいろいろ(メモリアーキテクチャ・命令・例外・OS)・コードキャッシュの管理・そしてシステム環境への埋め込み。FX!32の実例をとりあげてから、まとめです。

Chapter 4: Dynamic Binary Optimization

ダイナミックバイナリ最適化の話。ここでは主に複数のbasic blockをまたがる最適化について。

まずは最適化の前提としてプロファイルで「どこがよく実行されているのか」を知る。そしてsuperblockをはじめとするブロック最適化。それをベースにした最適化フレームワーク。フレームワークの上でのテクニックとしてのコード再配置。そしてコードの最適化いろいろ(余分なブランチ削除、定数展開、コピー展開等々)。さらに、同一ISAでの最適化についての話題。

以下、じわじわ更新していきます。

Chapter 5: High-Level Language Virtual Machine Architecture

Chapter 6: High-Level Language Virtual Machine Implementation

Chapter 7: Codesigned Virtual Machines

Chapter 8: System Virtual Machines

Chapter 9: Multiprocessor Virtualization

Chapter 10: Emerging Applications

Appendix A: Real Machines

実マシンの復習。

Virtual Machines: Versatile Platforms For Systems And Processes (The Morgan Kaufmann Series in Computer Architecture and Design)Virtual Machines: Versatile Platforms For Systems And Processes

2008年12月29日

LLひとり勉強会

[ LowLevel ]

LLといってもLightweight Languageではなく。

めったに更新されないブログなので見ているかたも少ないとおもいますが、数少ない読者のみなさまこんにちは。このブログをはじめてから、うすうすは知っていた自分の企画倒れっぷりをまざまざと見せ付けられたわけですが、懲りずにまたあたらしい宣言をします。

今わたしが読みかけている本を列挙。

Virtual Machines: Versatile Platforms For Systems And Processes (The Morgan Kaufmann Series in Computer Architecture and Design) Essential .NET ― 共通言語ランタイムの本質 インサイド Microsoft Windows 第4版〈上〉 (マイクロソフト公式解説書) ビジュアライジング・データ ―Processingによる情報視覚化手法

最後の「ビジュアライジング・データ」を除くと、比較的ローレベルについての本なんですよね。読み始めて、私はローレベルの話はそれなりに知っているつもりだったけれども、細部はぜんぜん知らなくて、それでは知っていることにならないんだなあ、ということがわかりつつあります。実践的な知識があるCPUってZ80だけだし、モダンなOSの中身なんてほとんど知らないし。

そもそもはVMの仕組みって細かいこと知らないな、と思って、"Virtual Machines"を読み始めたんですが、いっしょにローレベル本を読むと効果的ではないか。とおもって、読みさしで放置していた.NET本とかWindows本をひっぱりだしてきたのでした。

この勢いで、ローレベル向けの積読本をつづけてやっつけて、何かモノを作れるネタがあればやろうかと、今思っています。いままで「...しようと思っています」とこのブログで宣言したものは例外なく企画倒れになっていますが(情けないな)、さてこれはどうなるでしょう。

ちなみに、"Virtual Machines"は平易な英語でかかれた、たいへん読みやすい洋書です。

関連するかもしれない積読本

CPUの創りかた 30日でできる! OS自作入門 デバッガの理論と実装 (ASCII SOFTWARE SCIENCE Language) モダン オペレーティング システム 原書 第2版

他にもあった気がするので本棚をあさってみます。

2006年4月 9日

バベル-17とユメキとそのほかの言語的SF

[ ]

YAPCでこういう発表があったそうでスライドだけみました。発表者はあの高橋さん。

The First Postmodern Computer Language vs The First Babel-17 Computer Language

スライドみるだけでもむちゃくちゃ面白いので、ぜひどうぞ。

でバベル-17はディレイニーの言語SFです。その昔、うひゃー、と興奮しながら読んだ覚えがあります。

言語が重要な役割を果たすSFには他に『夢の樹が接げたなら』(森岡浩之)があります。 森岡浩之はすっかり『星界の紋章』のひとですが(え、古い?)、こういうハードSF短編も上手なんですよ。

飛浩隆の『象られた力』もちょっと言語SFチックです。この小説はすごいので未読のSFファンはすぐに読んでください。すばらしいSF的体験ができます。何の説明にもなっていなくてすみません。

ええと、あとは牧野修『MOUSE』も言葉が重要な役割を果たしますが、言語がテーマのSFかというとちょっと違うかな。

言語的なものが重要な役割を果たすSFが他にあったらどなたか教えてください。

夢の樹が接げたなら 象られた力 MOUSE(マウス)

2006年3月16日

オブジェクト指向入門: 練習問題2.1

[ ]

『オブジェクト指向入門』の読書記録です。

まずはP.35の練習問題2.1をやってみます。

問題

2.1 プログラミング言語のモジュール性

よく知っていてその機能を評価できるプログラミング言語のモジュール構造を調べてみよ。この章で説明した基準と原則を満たしているだろうか。

わたしにとってはいきなりハードな問題です。

続きを読む "オブジェクト指向入門: 練習問題2.1" »