« 2007年05月11日 | メイン | 2007年05月13日 »

2007年05月12日

Joel on Software

Joel on Software

ひげぽん氏の奥様が変わられたという、魔法の書物。もっと早く読めばよかったと思う。

マネジメントの世界へようこそ!ソフトウェアプロジェクトのマネジメントというのは、プログラミングとはまったく関係がない。あなたは人類というものがありふれた Intel の CPU に比べてずっと予測不可能だということを、だんだんと知るようになるだろう。

プログラミングの作法ではなく、プロジェクトマネジメントの作法が書かれた書籍です。45章に分けて書かれていますが、各章がエッセイのようなものなので、どこから読んでも大丈夫だと思います。時間のあるときに斜め読みするのも良いと思う。

記憶に残っている章をば。

第6章 やさしい機能仕様 パート2: 仕様書とはどんなものか?

仕様書には「機能仕様書」と「技術仕様書」の2通りがあるというお話。

プログラマが話題にする仕様書は、プログラムの内部の実装について書かれた「技術仕様書」が主かと思います。しかし、どのような製品を開発するのかを明示するのが先だから、「機能仕様書」が大事と言うお話。

サンプルも載っているので、イメージしやすかったです。

第19章 ユーザからクラッシュレポートを自動的に取得する方法

サーバサイドアプリケーションの場合、クラッシュレポートを取得するのは、結構容易です。もちろん、クラッシュ手順を再現するには、サーバのアクセスログを解析するなどの工夫が必要ですが。

クライアントサイドアプリケーションの場合、クラッシュレポートを取得するのが難しいような気がします。そんな疑問を本章が解決してくれました。早い話、クラッシュしたらプログラムを終了させる代わりに、クラッシュレポートダイアログを表示させて、バグトラッキングシステムに直接送信するということ。名寄せのアイデアも載っています。

第21章 報奨金有害論

インセンティブ(給与)に関するお話。報奨金制度は、有害であるので止めたほうが良いとかなんとか。

第22章 テスタを雇わない(間違った)理由、ベスト5

テスタの必要性を説いた章です。プログラマ2人に対し1人のテスタが必要と書いています。

テスタがプログラムよりも低コストである前提があるのですが、プログラマのタスクの切り替えることを考えると、テスタが居るほうが良いに決まってる。この辺、機能論と領域論の話に似ていて面白い。

かなり前向きに考える必要があるな…。

ということで、非常に面白く、ためになる書籍でした。ソフトウェア開発にかかわっているのであれば、誰にでもお勧めできます。ぜひ読んでみて下さい。

ページ数: 387
読書時間: 5:56 (1.09 p/min)

【関連記事】
書籍を大量注文しました (2006年07月29日)

【関連商品】
Joel on Software (Joel Spolsky)

20:06 | コメント (0) | トラックバック | Books

スパイダーマン3

GW の最終日に観て来ました。

もう一人の敵、それは「自分」。

本作品単独では、ストーリー性を感じることが出来ませんでした。シリーズ物の運命ですかね…。そもそも、スパイダーマン1だけ観た記憶があるのだけど、内容を良く覚えていませんでしたし。

スパイダーマンのファンであれば楽しめるかもです。

とりあえず、ハリーがイケメンでで良い奴だということは分かりました :)

【関連情報】
・スパイダーマン3
 http://www.sonypictures.jp/movies/spider-man3/index.html

19:44 | コメント (0) | トラックバック | Movies

TF-IDF を改めて調査中

ナイーブベイズ分類器のソースコードを整理しているときに、単語データベースを作成しているのだから TF-IDF に基づいて重要単語の抽出も出来るのではないかと思ったわけです。

TF-IDF は情報検索の考え方なので、重要単語の抽出元となる文書は、既に学習済みの文書集合に含まれているという前提から計算されます(たぶん)。ということで、学習されていない場合は DF が 0 になる可能性があるわけで、演算が不可能(ゼロ頻度問題?)。ナイーブベイズを調べたときに知った加算スムージングに似た手法を用いることにしたけど、良いのだろうか…。

TF-IDF の基になっている、索引語の重み付け(term weighting)に関しても調べてみた。

・局所的重み (local weight)
・大域的重み (global weight)
・文書正規化係数 (document normalization factor)

の3要素から成り立っており、

索引語の重み = 局所的重み * 大域的重み / 文書正規化係数

という式で表せるらしい。

それぞれには、さまざまな手法が提案されており、その一部が TF-IDF になります(* で示すもの)。

局所的重み付け
・2進重み (binary weight)
・索引語頻度 (term frequency, TF) *
・対数化索引語頻度 (logarithmic TF)
・拡大正規化索引語頻度 (augmented normalized TF)

大域的重み付け
・重み付けなし
・文書頻度の逆数 (inverse document frequency, IDF) *
・確率的 IDF (probabilistic IDF)
・大域的頻度 IDF (global frequency IDF)
・エントロピー (entropy)

文書正規化
・正規化なし *
・コサイン正規化 (cosine normalization)
・ピボット正規化 (pivoted normalization)

検索結果のスコア付けに関する技術でもあるので、単語抽出だけなら、そんなに難しく考える必要もないはずだけど、知っていて損することは無いと思うので。詳しい式や概念は Google や書籍でどうぞ。

単語の抽出手法も検討しないと。形態素解析器 MeCab を用いますか。

【関連情報】
Text Classification with CEEK.JP NEWS (2005年09月08日)

【関連商品】
情報検索アルゴリズム (北 研二)
言語と計算 (4) 確率的言語モデル (北 研二)

【関連情報】
・形態素解析と検索APIとTF-IDFでキーワード抽出 - たつをの ChangeLog
 http://chalow.net/2005-10-12-1.html
・TF・IDF - 長岡技科大 自然言語処理研究室
 http://nlp.nagaokaut.ac.jp/wiki/wiki.cgi/term?page=TF%A1%A6IDF

13:01 | コメント (2) | トラックバック | Technology

早寝しました

早起きにはならず。ということで、昨日(11日)の食事内容です。

昼は、コンビニで買ったパンを食べました。

夜は、久しぶりに RanRan に行って来ました。東京から来客がありましたので。風邪気味なので全部食べられず。バグが発生して少し得しましたけど。

自宅 (昼)
 パン
RanRan (夜)
 ミニ BIG 丼

12:53 | コメント (0) | トラックバック | Meal