「人が書いたソース・コードを読む」ということは、プログラマにとって最も重要な訓練だということは常々言われてきました(他の人か書いた文章を読まずに、良い小説が書けるでしょうか?)。しかし、プログラムを書くためのの教科書がこれだけ多く発刊されていながらも、他の人の書いたコードを読むための教科書は今まで書かれてきませんでした。この "Code Reading" は、その「人が書いたコードを読むための本」です。
オープン・ソース・ソフトウェアを題材としているため、(OSS で最も人気のある) C言語、C++、Java が解説の中心になっています。しかし、各言語に特化したいくつかの章を除けば高級言語からアセンブラまでの全ての言語、全ての規模のプロジェクトに適用可能な内容です。一方、C 言語に特化した章では C 言語のイディオムや注意点が幅広く紹介されているため、中級レベルを目指す C プログラマが入門書の次に読むテキストとしても適切でしょう。
著者は「コードを読むには目的(技術の向上、構造の解析など)が大切」と解く一方で、「小説のようにコードを読む楽しみ」を訴えています。なかなかその域には達っせそうにありませんが、数ある OSS の中から厳選されて CD-ROM に収められた 1700万行のソース・コードは、当面の欲求を満たすのには充分すぎる量だと言えるでしょう。翻訳も日本を代表する大ハッカーの監訳で非の打ち所がありません。全てのプログラマにお勧めできる一冊です。
無料のKindleアプリをダウンロードして、スマートフォン、タブレット、またはコンピューターで今すぐKindle本を読むことができます。Kindleデバイスは必要ありません。
ウェブ版Kindleなら、お使いのブラウザですぐにお読みいただけます。
携帯電話のカメラを使用する - 以下のコードをスキャンし、Kindleアプリをダウンロードしてください。
Code Reading―オープンソースから学ぶソフトウェア開発技法 単行本 – 2004/6/1
このページの読み込み中に問題が発生しました。もう一度試してください。
付属資料:CD-ROM(1枚)
- 本の長さ523ページ
- 言語日本語
- 出版社毎日コミュニケーションズ
- 発売日2004/6/1
- ISBN-104839912653
- ISBN-13978-4839912659
この商品をチェックした人はこんな商品もチェックしています
ページ: 1 / 1 最初に戻るページ: 1 / 1
商品の説明
メディア掲載レビューほか
コード・リーディング
プログラムのソース・コードの読解に必要な基本事項や手法を解説する。プログラミング技術向上には,ソース・コードを「読む」ことが欠かせないとし,効率的にソース・コードを分析するためのポイントを多面的に説明する。NetBSDやX Window Systemなどのソース・コードを実際に例示しながら,データ構造や制御フローといったプログラミングの基礎知識はもちろん,さまざまな型式のドキュメントの読み方,効果的なツールの利用法などを述べてある。付属CD-ROMには,サンプルをはじめ,Ruby,WideStudioなどのソース・コードを多数収録する。
プログラムのソース・コードの読解に必要な基本事項や手法を解説する。プログラミング技術向上には,ソース・コードを「読む」ことが欠かせないとし,効率的にソース・コードを分析するためのポイントを多面的に説明する。NetBSDやX Window Systemなどのソース・コードを実際に例示しながら,データ構造や制御フローといったプログラミングの基礎知識はもちろん,さまざまな型式のドキュメントの読み方,効果的なツールの利用法などを述べてある。付属CD-ROMには,サンプルをはじめ,Ruby,WideStudioなどのソース・コードを多数収録する。
(日経Linux 2004/09/01 Copyright©2001 日経BP企画..All rights reserved.)
-- 日経BP企画
内容(「MARC」データベースより)
600を超える実用的なサンプルコードを使用して、優れたコード(とそうでないコード)の見分け方を解説。コードの読み方や注目すべきポイントから、自らのコードにそれらの知識を活かす方法までとりあげる。
著者について
●Diomidis Spinellis
1985年以来、革新的ソフトウェア、賞を受けた商用製品、オープンソースプロダクトなど、25万行以上のコードを書いたりメンテナンスすることで、この本で取り上げた技術を身に付けた。ロンドン大学で、ソフトウェアエンジニアリングで工学修士を、コンピュータサイエンスで博士号を受けている。現在、アテネ経済ビジネス大学でシステム運用工学の助教授を務める。(原著プロフィールより)
■監修者について:
●まつもとゆきひろ
オブジェクト指向スクリプト言語Rubyの開発者。emacs上のメールリーダcmailの作者でもある。「コンユータ言語オタク」を自認する。
●平林俊一
オープンソースで開発されているマルチプラットフォームのC/C++/Ruby/Perl/Python統合開発環境WideStudioの開発者。
●鵜飼文敏
Debian GNU/Linuxの日本コミュニティであるDebian JP Project会長。平成15年度の未踏ソフトウェア創造事業のプロジェクトマネージャー。
1985年以来、革新的ソフトウェア、賞を受けた商用製品、オープンソースプロダクトなど、25万行以上のコードを書いたりメンテナンスすることで、この本で取り上げた技術を身に付けた。ロンドン大学で、ソフトウェアエンジニアリングで工学修士を、コンピュータサイエンスで博士号を受けている。現在、アテネ経済ビジネス大学でシステム運用工学の助教授を務める。(原著プロフィールより)
■監修者について:
●まつもとゆきひろ
オブジェクト指向スクリプト言語Rubyの開発者。emacs上のメールリーダcmailの作者でもある。「コンユータ言語オタク」を自認する。
●平林俊一
オープンソースで開発されているマルチプラットフォームのC/C++/Ruby/Perl/Python統合開発環境WideStudioの開発者。
●鵜飼文敏
Debian GNU/Linuxの日本コミュニティであるDebian JP Project会長。平成15年度の未踏ソフトウェア創造事業のプロジェクトマネージャー。
登録情報
- 出版社 : 毎日コミュニケーションズ (2004/6/1)
- 発売日 : 2004/6/1
- 言語 : 日本語
- 単行本 : 523ページ
- ISBN-10 : 4839912653
- ISBN-13 : 978-4839912659
- Amazon 売れ筋ランキング: - 456,668位本 (本の売れ筋ランキングを見る)
- - 10,219位電気・通信 (本)
- カスタマーレビュー:
著者について
著者をフォローして、新作のアップデートや改善されたおすすめを入手してください。
著者の本をもっと見つけたり、似たような著者を調べたり、おすすめの本を読んだりできます。
カスタマーレビュー
星5つ中4.3つ
5つのうち4.3つ
17グローバルレーティング
- 星5つ星4つ星3つ星2つ星1つ星5つ46%35%19%0%0%46%
- 星5つ星4つ星3つ星2つ星1つ星4つ46%35%19%0%0%35%
- 星5つ星4つ星3つ星2つ星1つ星3つ46%35%19%0%0%19%
- 星5つ星4つ星3つ星2つ星1つ星2つ46%35%19%0%0%0%
- 星5つ星4つ星3つ星2つ星1つ星1つ46%35%19%0%0%0%
評価はどのように計算されますか?
全体的な星の評価と星ごとの割合の内訳を計算するために、単純な平均は使用されません。その代わり、レビューの日時がどれだけ新しいかや、レビューアーがAmazonで商品を購入したかどうかなどが考慮されます。また、レビューを分析して信頼性が検証されます。
上位レビュー、対象国: 日本
レビューのフィルタリング中にエラーが発生しました。ページを再読み込みしてください。
- 2004年6月13日に日本でレビュー済みAmazonで購入
- 2024年10月21日に日本でレビュー済みAmazonで購入発刊から20年以上の時を経たこともあり、この書籍から学べることは限定的ではあります。(C言語の現場とか、今どれくらいあるんだろう。。。組込系なら多いのかな。)
が、複雑かつ難解で読む気も失せるようなコードと向き合わなければならない時、この書籍にある『コーディング規約の提言』や『grep や 正規表現の有効活用』は、今の時代でも役立つのではないでしょうか。
あと、ドキュメント大事。
え、現場にドキュメントなんてない?
それは、、、まぁ、がんばるしかない笑
ともかく、
時代は変われど根本は変わらない。
読み進めて同意できる箇所は多いんじゃないでしょうか。
- 2012年12月17日に日本でレビュー済みAmazonで購入CDに収録されているソースコード、レビジョン管理の手段(RCS, CVS等)やGUIを持ったツール類は確実に進化しているため、"今"とは乖離する部分があり、その点を理解した上で読む事が必要だと思います。
ですが、この本に書いてある事のほとんどは今でも確実に役に立つ知識であり、古くて役に立たないと思う部分は少ないと感じます。
序盤(1〜3章)はC言語について理解を既に持っている方にとっては、改めて読む必要は感じない内容と考えます。
中盤(4〜9章)はデータ構造やコーディングルールのお手本を求めているという方にとっては役に立つ内容です。ドキュメントのあり方についての解説も上手い妥協点を見つける手がかりになるのではないでしょうか。
最後(10, 11章)は実践編です。CUIのみしか使えない制限された環境や、効率よくコードを読んでいかなければならない場面においては、grepを使った検索手段が最も有効だと感じます。
今改めて読むと、時代とともに変わって行くもの、変わらずに残り続けるものが何なのかと言う事も見えてきて面白いかもしれません。
特に知識の少ない方は、ソースコードをひたすら読む前のちょっとした近道として、この本は悪くないと思います。
- 2004年6月12日に日本でレビュー済みAmazonで購入私はプログラマではありません。コンピュータの運用保守の仕事をしています。でも、自分たちの使用しているオープンソースのソフトウェアがどんなコードで書かれ、それがどのような仕組みで動作しているのかを知っておくことは決して無駄なことではないと思います。業務でオープンソースのソフトウェアを使用した運用保守をしている時、コードのレベルで動作を知っていればと痛感する場面は多くあります(セキュリティホールが発見されたとき、修正パッチが出るのを待って、それを適用することだけが保守の仕事ではありません)。運用保守の技術者がデベロッパの視点を持つことができれば、受身がちだと思われがちなこの保守サービスをもっと能動的なサービスとして提供できるようになるのではないかと思っています。私はずっとこのような本が出るのを待っていました。C言語等の熟達者(あるいはデベロッパ)向けの本かと思いますが、是非、そうでない方も手にとって読んでみてください。
- 2012年1月26日に日本でレビュー済みAmazonで購入コードを読むということが趣旨なので、様々言語のサンプルが
記載されていることを考えると初心者には敷居が高いように思える。
しかし、コードを斜めに読むコツが記載されていることを考えると
ありがたい本ではないかと思う。
ちなみにソースのコメントに関しては一切記述がない。
- 2008年1月5日に日本でレビュー済みCodeCompleteとCodeReadingを併せて読むとよいと、
組込み系のSESSAMEプロジェクトのメーリングリストと、
OS系のTOPPERSプロジェクトのメーリングリストで推薦を受けました。
CodeCompleteは読んだことがあったので、CodeReadingを読んでいます。
オープンソースを仕事にしているので、たいへん役立っています。
MISRA-Cは研修で取り上げてきたので、本書も研修の資料としても取り上げるように準備中です。
- 2013年4月1日に日本でレビュー済みAmazonで購入買う前は、ソースコードの読み方を手取り足取りレクチャーされていると思っていたが、読んでみると結構基本的な事が説明されている。プログラミング言語の文法をちょっとだけ説明してあったり、アルゴリズムについての説明があったり、自分が分かる範囲でレビューすればこれらの事が載っていた。大学である程度学習していたので新鮮な感じはしなかったが、この内容でソースコードが読めるようになるかと言われるとちょっと難しいかなと思った。付属のCD-ROMに収められているソースコードが売りらしいが、これをまだ見ていないので出来ると思えなかったのだろうか。何にせよ、一つの読み物として良いと言える程度だと思った。
- 2020年2月22日に日本でレビュー済み## 概要
- 書名: Code Reading
- 副題: オープンソースから学ぶソフトウェア開発技法
- 著者: トップスタジオ and まつもと ゆきひろ and 平林 俊一 and 鵜飼 文敏
- 出版日: 2004-06-10
- 読了日: 2019-11-05 Tue
- 評価: ☆3
## 評価
新しい仕事に取り掛かる際に,既存ソフトのソースコードを眺めて作りを理解する必要に迫られた。今までも似たような作業があり,コードリーディングの能力を高める必要があると思い,本書を読んだ。
内容としては,既存のOSS (Open Source Software) のソースコードを使って,実際にどのような手法が使われているかを解説したものだった。
既存OSSがC言語のものが多かったということで,C言語をベースとしたコーディング技法を解説していた。
流れとしては,目次通り以下の流れで解説されていた。
1. 序論
2. ループやifなどの制御構造
3. Cのデータ型
4. Cのデータ構造
5. 制御フロー (上級編): 再帰,例外,並列,シグナル,マクロ
6. プロジェクト
7. コーディング規約
8. ドキュメント
9. アーキテクチャ
10. コードリーディングのツール
11. 総合的な例
個人的には,1-4章と10章が特に有益だった。Cのデータ型やデータ構造が実コードでどのように使われているのか解説されていた。
用途が不明だった,unionも多態の実現にstruct内で使われていることを知れた。また,コードリーディングでは,変数や関数 (シンボル) の定義元,関数の呼び出し元を探すことがよくある。ここの作業に時間がかかっていて,どうにかしたいなと日頃から感じていた。今まで知らなかったソフトを多数を知れてよかった。
ただ,その他の6-9章は内容がやや高度であったので,自分ではあまり理解できなかった。
本書の最大の特徴は,大量のOSSで実際に使われているコーディング技法を大量に引用しているところだろう。ここまで細かくコード片を引用し,その出所も行数まで掲載されているのには驚いた。かなり労力のかかっている本だと思った。
## 引用
> ### p. 13: 1.2.2 ダイアグラム
> デザインダイアグラムには、事実上の業界標準となっているUML (Unified Modeling Language) を採用しました。本書を準備する段階で、UMLダイアグラムを生成するオープンソースの宣言型言語 を開発すると都合が良いことがわかり、それに伴いGraphVizツールのコードベースにも少し改良を加えました。
UMLの生成言語としてはPlantUMLを知っていたが,この他にもUMLGraphというものを知れた。
> ### p. 66: 3.1 ポインタ
> Cプログラムのポインタには次の用法があります。
> - リンクデータ構造を作る
> - 動的に割り当てられたデータ構造を参照する
> - 参照呼び出しを実装する
> - 一連のデータ要素にアクセスする
> - 配列を引数として渡す
> - 関数を参照する
> - 別名で参照する
> - 文字列を表現する
> - システムメモリに直接アクセスする
C言語のポインタの用法がまとまっていた。
> ### p. 69: 3.1.4 データ要素へのアクセス
> 表3.1 T型の要素を持つ配列をインデックスまたはポインタで操作する
> - 配列インデックスによるコード | ポインタによるコード
> - int i; | T *p;
> - i = 0 | p = aまたはp = &a[0]
> - a[i] | *p
> - a[i].f | p->f
> - i++ | p++
> - i += K | p += K
> - i == N | p == &a[N]またはp == a + N
Cのポインタと配列は混同しやすいので対応が整理されていてよかった。
> ### p. 102: 4.1 ベクタ
> 配列の要素は、Cライブラリ関数のfwriteでファイルに保存されることがよくあります。
>
> ```
> if (fwrite(buf, sizeof(char), n, fp) != n) {
> message("write() failed, don't know how", 0);
> }
> ```
>
> ファイルに保存された要素をメインメモリに読み込むときは、fread関数を使用します。
>
> ```
> if (fread(buf, sizeof(char), n, fp) != n) {
> clean_up("read() failed, don't know why");
> }
> ```
変数内のデータを簡易的に出力・入力する方法が書かれていた。内部表現をファイルに出力する都合,同一アーキテクチャのマシンでしか機能しないが,手っ取り早い方法として悪くない。
> ### p. 389: 10.7 コードブラウザと美化ツール
> 次に、よく知られているオープンソースブラウザをいくつか取り上げ、簡単に紹介しておきます。
> - cscope。Unixベースで、テキストインターフェイスを持つソースコードブラウザ。Cの解析用に設計されているが、パーサの柔軟性が高く、C++やJavaでも有用である。cscopeは、Emacs、nvi、vimなどのエディタと統合できる
> - cbrowser 。C/C++ソースコードの検索と閲覧のためのグラフィカルツールで、関数呼び出しの階層表示もできる。cscopeを土台とし、その上に組み立てられている
> - Source-Navigator。C、C++、Tcl、FORTRAN、COBOLを始め、その他いくつかの言語を扱えるブラウザ
> - LXRブラウザ 。Webベースのブラウザで、大量のコードコレクションの相互参照ができる。
コードリーディングのためのツールをいろいろ紹介していた。ctagsやcscopeは知っていて,特にcscopeはたいへん便利で重宝していた。ここでさらに,cbrowserというツールやその他のコードブラウザの存在を知れてとても良かった。
cscopeは関数ツリーをたどることはできないのが惜しいなと思っていたのだが,cbrowserでは関数ツリーをたどることができるとのことで,これは是非試したいと思った。
## 結論
学術的な要素があり,やや難易度の高い部分があり,中級者向け以上の本となっている。また,C言語のコードをベースにしているので,最低限のC言語の知識を前提としていることに注意が必要だ。
学術的な要素があり,2004年とやや古い出版であるが,多数のOSSのベースとなっているC言語をベースに,データ型や制御構造など実際のコード片を引用しながらコードリーディングの技術を解説していて,よかった。
個人的には,コードリーディングのツールをいろいろ知れたのがとても良かった。このあたりのツールは作業効率に影響出るのだが,あまりネット上にも情報が出ていない。cscopeは知っていたが,cbrowserは知らなかった。
ただし,労力がかかっているのは分かるが,プレミアムブックスは値段が高すぎる。図書館でどうにか借りて済ませるのがよいだろう。