新しい仕事に取り掛かる際に,既存ソフトのソースコードを眺めて作りを理解する必要に迫られた。今までも似たような作業があり,コードリーディングの能力を高める必要があると思い,本書を読んだ。ソースコードを使って,実際にどのような手法が使われているかを解説したものだった。既存OSSがC言語のものが多かったということで,C言語をベースとしたコーディング技法を解説していた。流れとしては,目次通り以下の流れで解説されていた。個人的には,1-4章と10章が特に有益だった。Cのデータ型やデータ構造が実コードでどのように使われているのか解説されていた。用途が不明だった,unionも多態の実現にstruct内で使われていることを知れた。定義元,関数の呼び出し元を探すことがよくある。ここの作業に時間がかかっていて,どうにかしたいなと日頃から感じていた。今まで知らなかったソフトを多数を知れてよかった。その他の6-9章は内容がやや高度であったので,自分ではあまり理解できなかった。本書の最大の特徴は,大量のOSSで実際に使われているコーディング技法を大量に引用しているところだろう。ここまで細かくコード片を引用し,その出所も行数まで掲載されているのには驚いた。労力のかかっている本だと思った。開発すると都合が良いことがわかり、それに伴いGraphVizツールのコードベースにも少し改良を加えました。UMLの生成言語としてはPlantUMLを知っていたが,この他にもUMLGraphというものを知れた。ポインタCプログラムのポインタには次の用法があります。リンクデータ構造を作る動的に割り当てられたデータ構造を参照する参照呼び出しを実装する一連のデータ要素にアクセスする配列を引数として渡す関数を参照する別名で参照する文字列を表現するシステムメモリに直接アクセスするC言語のポインタの用法がまとまっていた。NCのポインタと配列は混同しやすいので対応が整理されていてよかった。ベクタ配列の要素は、Cライブラリ関数のfwriteでファイルに保存されることがよくあります。0);}ファイルに保存された要素をメインメモリに読み込むときは、fread関数を使用します。why");}変数内のデータを簡易的に出力・入力する方法が書かれていた。内部表現をファイルに出力する都合,同一アーキテクチャのマシンでしか機能しないが,手っ取り早い方法として悪くない。コードブラウザと美化ツール次に、よく知られているオープンソースブラウザをいくつか取り上げ、簡単に紹介しておきます。Unixベースで、テキストインターフェイスを持つソースコードブラウザ。Cの解析用に設計されているが、パーサの柔軟性が高く、C++やJavaでも有用である。C/C++ソースコードの検索と閲覧のためのグラフィカルツールで、関数呼び出しの階層表示もできる。