トップ «前の日記(2008-12-20) 最新 次の日記(2008-12-22)» 編集

日々の破片

著作一覧

2008-12-21

_ NETのRoot

荒井さんのThe Root of .NET Frameworkを献本していただいた。というか、レビューをさせていただいたので、内容は知っているわけだが、やはり本になっていると読みやすさも格別。

The Root of .NET Framework(荒井 省三)

この本は、微妙な立ち位置にあって、それがこの本の読み方に通じる。

荒井さんはマイクロソフトの中の人なわけだが、ところが.NET Framework自体は逆アセンブリが禁止されているから、中の人だけにそれは守る必要がある。

そこでJISの規格書と、デバッガとその他の(普通にVisual Studioを使っているだけでは存在にすら気付かない)SDKツールと、C#で自作プログラムを作ってそれを解析して……という方法で内部へ潜っていく。SOSデバッグって知っている? Appendixにコマンド体系もついてくるよ。

つまり、潜り方の指南を潜りながら書いているという本だ。

しかも、この本、ILがたくさん、ダンプがたくさん。こういう本は先日も読んだような。

Windowsダンプの極意 エラーが発生したら、まずダンプ解析!(上原 祥市)

これか。というか、ISBNを取るのでアマゾンへ行くと、あわせて買いたいでプッシュしてくるが、確かに近いものがあるかも。

内容は、JISをベースにしたCLRの解説が36ページまで。ここは良いまとめ。続いて.NET Frameworkアプリケーションのブートシーケンスというか起動手続きについて60ページ。ここは最初の山場。特にクラスローダのあたり。

この本のスタンスを示す文章がP.103にあるので引用してみる。

本書はできるだけ大勢の方がCLRの内部動作を確認できるように、SOSデバッガとVisual Studioのメモリウィンドウを使ってメモリ内を調べた結果から筆者が類推した情報をもとに記載しました。このため、本書で説明した情報を単純に使用するのではなく、紹介した調査手法を使い、読者ご自身の環境で調べていただくことをお勧めします。SOSデバッガ拡張が役に立つことでしょう。

あ、でもバグを見つけた。5章は『.NET Framework固有のテクノロジー』なのに、なぜかページ右上のヘッダが『.NET Frameworkの起動プロセス』という3章(上で書いた、最初の山場)になっている。

で、メモリとプロセスで、アプリケーションドメインの潜り方とか。

おもしろいのは、地の文では「Win32ネイティブのCLRホストを自分で作るのは無理だからやめておけ」と何度も強調しながら、それを作るための情報をガンガン書いているところ。

つまり、CLRホストを作ることを考えているのなら、これを読めば早いし、Windows用ツールボックスに最終兵器としてCLRホストの自作という奥の手を用意するための準備もできる。

それから現在のGCの仕組みで、大きなメモリブロックが世代別GCの対象としないという実装とか。ってことは、ファイル読みまくりアプリケーションであれば、byte[]なユーザーバッファを大きめに取ったら、むしろインスタンス変数に覚えておいて、それを使いまわすほうが得かな? というような実装戦略のためのヒントもたくさん。

最後30ページ弱だけど、コードアクセスセキュリティについての詳解があって、これも必要な人には良い情報。

あと、この本はレビュアーが3人出ているのだが、全員変な名前でそこが興味深い。つまり、NyaRuRu、Yugui、artonだ。

最後になるが、この本は売れてほしいな、と思う。RHGと同じような系列の本だからだ。上っ面をサーフィンするようなものも良いのだが、やはりこういうシャコガイに足を挟まれそうになりながら潜っていって、そこで真珠をとるのか、宝箱を探すのかはわからないが、そういう縦方向の技術書というのは、やはりなくなって欲しくないからだ。

本日のツッコミ(全4件) [ツッコミを入れる]
_ ささだ (2008-12-21 06:14)

なんといか,大変濃くて驚きました.いい本.

_ arton (2008-12-21 09:57)

僕は実物が意外と薄いので驚きました。ロジカルに濃くてフィジカルに薄い本。

_ ARAI (2008-12-21 13:26)

うーむ。<br>バグが残ったか....まあ、濃いというのは一番の褒め言葉です。

_ ARAI (2008-12-25 16:23)

http://www.microsoft.com/japan/msdn/vstudio/express/book/でGCの節だけ読めるようになりました。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え