2010-01-04

Communications of ACM

年始は食べものの調達が億劫で, 大鍋にカレーを作り三日三晩食べ続けた. 量が多過ぎたので最後の夜は友人 M に助けを求めた. 鍋を空にすべくたらふく食べたあと土産にもらったチャイをすすりふと見ると, やはり腹ごなしに本棚を物色していた M が CACM の山に目をとめていた.

CACM: Communications of ACM は, 米国のコンピュータ学会(ACM)が発行する月刊の会誌. 昔々はこれに論文を載せるのが計算機科学者のステータスだった, らしい. たとえば "Goto statement considered harmful" に 続く一連の論争は CACM の投稿欄で行なわれた. ダイクストラがジャンプ放送局に出てくる雑誌を想像してほしい. もうちょっとマシな例だと Quicksort なんかも CACM が初出のよう. 最近は分野の細分化が進み, CACM で最先端の研究が発表されることはなくなった. 今は ACM 界隈の研究を概観できる総合誌になっている.

情報系の大学にいた人ならなんとなく知っている話だろう. 教員の部屋の片隅に転がっている雑誌. M も見覚えがあったらしく, なんでお前はこんなもんを読んでるんだという顔をしていた. "実は結構面白いんだぜ" という話が頭をよぎったものの そのときは満腹の眠気で朦朧としており, そんなのより ベリーダイナマイト を読めと冷たくあしらってしまったごめん. 改めて(ベリーダイナマイトではなく) CACM の宣伝してみたい.

... と思っていたら Amazon で分散システムを作ってる計算機科学者 James Hamilton が Blog で CACM を勧めていた. まず虎の威を借りよう: あの James Hamilton も推薦する CACM を読まないなんて!

いまどきの CACM

私が大学の頃に読んだ CACM は, 基本的にそれほど面白い雑誌ではなかった記憶がある. インフォメーションエンタープライズ云々という話があったと思えば, 何の役に立つんだかわからないしょぼい UI とごっつい数式と謎のグラフをちりばめた論文があり, コラムも何がいいたいんだかわからなかった. そんなイメージ.

ところが在学中に見栄で ACM に加入したまま惰性で購読を続けていたら数年前から段々と改善のきざしがあり, 特に去年は紙面を刷新してバズワード寄りの野次馬や実際のソフトウェアで使われている話, 各分野での新しい話題の抜粋などを扱うようになった. ACM Queue とも結託し, だいぶ読むところが増えてきた. かつてはベローチェの壁紙みたいで興醒めだった表紙も格好よくなった.

というわけで個人的に興味をもった記事や興味のあるプログラマがいそうな記事を 2009 年の発行分から紹介してみる. はじめに ACM ぽくない記事から入って, そのあといかにもなやつをいくつか.

プログラミング

CACM はいかにもな論文だけでなく, ACM Queue の転載などプログラミングの話も "Practice" セクションで扱っている.

たとえば 3 月号は "Erlang の紹介" が載っていた. 書いているのはもともと Amazon S3 の開発者でいまは Google にいる Jim Larson. これは Google が Er(略). 内容はまあふつう. 直接プログラミングの役には立たないけれど, 同じ 3 月号では "ゲームにはゲーム用の言語処理系が必要なんだよ" と熱く語る記事も. たしかに文法はともかくランタイムはもっと工夫の余地があるかもね.

4 月号には DTrace 開発者による "オレオレ言語のススメ" が. カーネルデバッガのマクロの歴史を振り返りながら, オレオレ言語はいいものだと主張する. なぜか D の話はナシ. 同号には "動的言語の ORM" と題した Groovy の ORM (Grails ORM) の紹介記事も. なぜ ActiveRecord じゃなくての GORM なの? という気はする. 若干今更感を感じるのは ACM Queue からの転載だから.

5 月号の "API Design Matters" も ACM Queue から. (むかし紹介していた.) 同じ 5 月号には "Ajax なアプリのデバッグ方法" なんて記事もあり, 非同期のデバッグはろくでもないとぼやいたり arguments.caller を使った疑似スタックトレースの復元方法を紹介したり, ほんとに地味な話をしている.

プログラマ読みもの

プログラミングからは少しはずれたプログラマ向けの読み物も割と多い. 1 月号掲載 "64 ビットへの長い道程" では, CPU のビット数の変遷を概観する. LP64 と LLP64 というのがあってだな, なんて最近の話は後半のちょっとだけ. IBM には 24bit のアドレッシングモードを今でもサポートしてる CPU があってだな, なんて話と同列に扱われている. CPU 歴史は長いのですね...

9 月号, "わかるバージョン管理システム" は, Mercurial 開発者の Bryan O'Sullivan による DSCM 入門. ツールの使い方ではなく DSCM の有難味に 重点を置いているのがそこらへんの入門記事と違うところ. cherrypick, bisect, rebase といった DSCM 固有のアイデアを駆け足で紹介(cherrypick では Darcs の特徴的な依存モデルにも言及)しつつ, DSCM がもつコードレビューとの親和性の高さにきちんと言及するあたり, さすがにわかってるなあ. (なお Bryan O'Sullivan の熱い SCM 語りは Mercurial: The Definitive Guide の一章でも楽しむことができます.)

6 月号では "オープンソースじゃダメなんだ" と題し Stallman が吠えている.

こうした御意見頂戴的記事が多いのも (専門学会誌と比べた) CACM の特徴かもしれない. 4 月号 "社会科学としてのコンピューティング" では, 計算幾何学の教科書に溢れるまったく実社会を motivate しない例や説明文を盾に情報科学と現実世界の乖離を嘆き, 教育ではもうちっと社会の役に立つところを見せろと説く.

"管制よりアーキテクトのトムへ" は, 表題から想像できるようにアーキテクチャ宇宙飛行士の批判. どっかで読んだような... 参考文献ではちゃんと元ネタ も cite されている. 参考文献に漏れがないところは普通の雑誌に比べた学会誌の大きな利点だとおもう. この話自体は割としょーもないけどね.

ご意見系だけでなくジャーナリズムっぽい記事もある. 6 月号 "OLPC の理想と現実" は, セミインサイダーによる OLPC の近況報告とポストモーテムじみた lesson learned. 冷静な分析は一読の価値あり.

ビジネス読みもの

学生の頃はまったくどうでもよかったこの手の読みものも, 年をとるとそれなりに楽しめる. 書籍 "ソフトウエア企業の競争戦略" などの著者である 経営学者の クスマノ は, CACM にも多く原稿を寄せている.

クスマノによる "ビルゲイツの伝説" はタイトルだけで目頭があつくなる. (でも後半で微妙に悪口をいってるのは気にいらない. みんな Gates が好きなのに!) 今年の1月号, 同じくクスマノの "プラットホーム指向の進化" では, プラットホーム大好き論が炸裂する. 私はプラットホームをモノポリーのおまけだと思っているので, 最初からプラットホームを目指せという人間を全面的に信用していない. だからクスマノの言うことも気に入らないけれど, プラットホーム愛好家の語彙を知っておくのは(罵倒の材料として)悪くない. クスマノの考え方がよくわかるのは, 08 年 9 月号の "Apple の不思議" という記事. この中でクスマノは "Apple が製品だけじゃなくプラットホームにも力を注いだらもっとシェアをとれたのにね" という主張をしている. まったくろくでもない. (いちおう最後は "Apple の経営陣は両者のバランスをとろうとしている" とか言ってるけれどあからさまに修辞.) こういう腹立ちは明日への活力なので読むといいです.

Apple 関係ではむしろ "グローバルなイノベーションで価値を掴むのは誰か? Apple iPod のケーススタディ" が面白かった. iPod を構成する要素技術の原価や利益率を推測し, iPod が売れたときに誰(+どの国)が実際の資金を獲得しているのかを分析する. 要するに "実は中国が儲かっちゃってるんじゃないの?" という米国人の心配を調べてみているわけ. 結論としては Apple や小売店はきっちり儲かってるから イノベーションを頑張るのは報われるんだよ, というところに落ち着く. 個人的には HDD を通じて日本が Apple の 1/3 程度の取り分をゲットしているのが興味深かった. これはでかい iPod の話だけれど, iPhone なんかはどうなんだろうね?

ビジネス読み物では他に "CTO Roundtable" といういかにも退屈なかんじの連載がある. ところが Cloud computing を扱った 8 月号では Amazon の CTO である Werner Vogels がしれっと混じっておりびびった. そりゃあなた CTO だけど...記事自体はエクセクチブな方々向け.

このようにエクセクチブ/マネジメント向けの記事も多い. "Virtual Extension" と題されたセクションはその方向に焦点を置いているらしい. (クスマノもここ.) Virtual Extension では先のようなコラムの他, マネジメントが興味を持ちそうな調査を紹介している. 2 月号 "ノート PC のマルチタスクとミーティング" では, 表題から想像できるとおりの行動について disturb の度合いを調査している. まあダメだよね, という結論. ミーティング中にカチャカチャやってる若者をとっちめたい管理職は読むとよいです. でも実際カチャチャやってるのは年寄の方が多いという気もするので, 若者こそ CACM を盾に上司をいじめるとよいです.

同程度にファニーな調査として 4 月号の "オブジェクト言語と印象管理" も紹介したい. この調査では, オブジェクト言語=モノを介したコミュニケーションですと最初に言い訳し(つまりタイトルは釣り), "IT 関係者" がまわり(=社内)のユーザにとって接しやすい人間であるためにはどうべきかを調査に基いて説く. たとえば机のまわりは綺麗な方がいいとか, 植物がある方がいいとか, 家族の写真が効くとか, デスクトップ PC よりノート PC の方が外交的に見えるとか(ほんとかよ). その上で管理職は部下にオフィスのカスタマイズを許してはどうかと提案する. うかつなカスタマイズはフラットランド住人の写真など逆に敷居を上げてしまう危惧を感じるのは私だけですか.

そのほか 7 月号 "卓袱台返しのエライ人がプロジェクトに与える影響", 9 月号 "アジャイル改で挑むアウトソース", 12 月号 "なぜあなたのプロジェクトは失敗するのか" など. 卓袱台...は ソフトウエア・クリエイティビティ の L.Glass らによる.

ハイテク

と, ここまでは若干ナナメな記事を紹介してきたけれど, ACM の本気はなんといってもハイテク話. "Research Hilight" セクションでは, 大学の研究者に混じり独占的ハイテク企業からの書き手が最近の成果などを割と詳しく紹介している.

1 月号では Amazon の CTO が "Eventually Consistent" の記事を寄稿している. (要はこれ.)

2 月号 "インターネットの性能改善" では, Akamai のエース科学者が CDN について解説する. 規模に応じた複数の CDN アーキテクチャを概観したあと, Akamai がそのどこに位置しているのか, どこに向かっているのかを示し, その困難とプラクティスを紹介する.

同号 "トランザクションメモリによる並列化" では, Redhat の Ulrich Drepper が TM の話を書いている. TM の話は他にも色々あるけれど, glibc メンテナである Ulrich Drepper 視点なのがちょっと面白い. 紹介している実装も gcc のパッチだったりする.

6 月号 "ブラウザにおけるフレーム間通信のセキュリティ確保" は, フラグメントを使った方法などフレーム間通信の手法を概観したあと, そのセキュリティ上の欠陥を指摘, 修正方法を提案する. (大半のブラウザやライブラリに報告の上修正済.) 競合条件をつく手口は見事というかなんというか...こんにちはの怖い人は読むとよいです.

著者のひとり Adam Barth は現在 Google Chrome のチームでセキュリティまわりを見ているらしい. WebKit のレビュア もやっている. Adam Barth はこのほかに "Chrome 開発で学んだブラウザセキュリティ" なんてのも書いている. 8 月号. Chrome 関係だと 他に今年 1 月号 "可搬で未信頼な x86 サンドボックスのための Native Client" なんて記事もあった. Google も CACM 好きだね.

12 月号 "ThinSight: 薄型で対話的な Surface 技術" では, MS Research の研究者が安価にマルチタッチの "Surface" 型ディスプレイを作る方法を紹介している. 光学センサを LCD に統合するのがポイントらしい(がよくわからず). Surface がはやるといいと思っている人は読むとよいです.

MapRecue 対決

James Hamilton が絶賛したのは今年の 1 月号に掲載された MapReduce 対決の記事. 詳しい内容は JH のページ に譲りつつ 野次馬の楽しみを分かちあいたい.

件の対決記事は二本建になっている. 一本目の "MapReduce and Parallel DBMSs: Friends or Foes?" は, DB の大御所 Stonebraker が書いた MapReduce と既存の並列 RDB の比較記事. 両者のアーキテクチャを概観した上で, MapReduce のオリジナル論文にあった grep など, いくつかのタスクについて行なったベンチマーク結果を報告する. その結果は "並列 RDB の方がぜんぜん速い" というもの. Stonebaker は勝負をわけた理由を分析しながら, "こうしてみると Hadoop が遅いのは当然だけど RDB と比べてインストールが楽なのは褒めてやんよ. お互い学ぶことはあるからねフフン." と結論する(脚色あり). Google ファンとしては感じわるい.

Stonebaker は以前 blog で MapReduce: A major step backwards という記事を公開し, 物議をかもしたことがある. CACM の記事はアカデミックな体裁で blog の煽り成分を薄めたものだと見ることができる. 私はもともと MapReduce がデータベースと対比できるとは思ってもいなかったので, blog の記事を読んだときは言わんとするところがよくわからなかった. CACM の記事で紹介されたベンチマークでようやく意図がわかった. 要するに "でかいデータから知りたい情報をひっこぬく" という用途を考えると, MapReduce もデータベースみたいなものと見なせるでしょということらしい.

さて, 話はここから面白くなる. 二本目の記事 "MapReduce: A Flexible Data Processing Tool" で, Jeffery Dean ら Google のエースエンジニアが Stonebraker の主張に意義を唱えるのだ. とっちめてやってくだせえ親方〜っ. 著者らは Stonebraker の主張する MapReduce の欠点ににひとつひとつ反論し, Google 内での MapReduce では指摘されたような欠点を克服済であり, だいたい並列 RDB なんてどのくらい耐故障性あるんだよまったくケッと一蹴する(誇張あり). ほーらごらん!

まあ現実的には公開されておらず使えもしない実装の話をされても困ってしまうけれど, こうした罵り合いじゃないや議論は読んでいて面白い. また Stonebraker の指摘する欠点は Hadoop ユーザの陥りがちな落とし穴として, Jeff Dean の反論はその解決策として読むこともできるかもしれない. EC2 のインスタンス費がかさんで困っている Hadoop ユーザは読むとよいです.

大御所のご神託

ハイテク記事は企業だけでなく, 大学発の研究もある. というか数ではこっちが多いはず. 特に親玉級の研究者がガツンと申し上げるホワイトペーパーは, 数はそう多くないけれど CACM らしい内容だと思う.

6 月号 "The Claremont Report on Database Research" は, 10 年毎に発行されるデータベース研究の指南書のようなもの. (専門家による紹介.) 10 年前は "The Asilomar Report on Database Research" だったらしい. DB 研究者でなくともバズ用語を仕入れて同僚を煙にまきたい先端愛好家は読むといいです.

10 月号 "A View of the Parallel Computing Landscape" は同じようなノリの並列プログラミング版で, ただ定期刊行物じゃなくてこれが初出. データベースのイケイケな感じにくらべると, どうしたらいいかわからない暗中模索な感じが伝わってきてやや胃が痛い. さっさとケリがついて Concurrency for Dummies みたいのを出せればいいのに. そういえば同じ Berkeley から出ている Cloud computing のホワイトペーパー "Aboeve the cloud" は CACM は載らなかったね.

ハイテクアルゴリズム

計算機科学といえばアルゴリズムとデータ構造! といいつつ私はだいぶ得意じゃないので流行ものっぽいのを二本だけ紹介.

5 月号 "Scalable Synchronous Queues" は java.concurrent とかの lock-free 実装を越えるスーパー並列キューの話. らしい. ごめん途中までしか読んでない. 著者には例のごとく Doug Lea がいる. (Java並行処理プログラミング の人ですね.)

10 月号 "Finding the Frequent Items in Streams of Data" はストリーム内に登場する最頻要素をみつけるアルゴリズムの簡単なサーベイ. 後半に登場する Count Sketch アルゴリズムがよくわからずぐぐったら Radium Software で紹介されていた. CACM の前に Radium Software を購読するとよいです. それにしてもストリームアルゴリズムって流行りそうで流行らないかんじだなあ. 専門家は使ってんのかな?

そういえば一部で大流行りな Seam Carving の元ねた "Seam Carving for Media Retargeting" も 1 月号に載っていた. (読んでない.)

リサーチ

ハイテクの話もいいけれど, アカデミックならではの話も読みたい. CACM はそんな欲求にも応えてくれる. といいつつ私にはそういうのをくまなく読めるリテラシーがないので ほとんど猫に小判. それでも中には面白い話があった. ここでも 2 本だけ.

"分散開発はソフトウェアの品質に影響するのか? Windows Vista の実践ケーススタディ" は, Microsoft Research による表題通りの調査. 北米, 欧州, アジアの 21 キャンパス(事務所) に分散した Windows Vista 開発の記録と出荷後のバグ発生件数を元に, 分散開発と一箇所での (collocated) 開発の品質を比較する. 同様の調査はこれまでもあったが, 大半はいわゆる "オフショア" や "アウトソース" のプロジェクトだった. 調査には Microsoft のような単一企業内の対等なチームによる分散開発では何が起こるのか知りたいとう動機があったようだ. データの分析は "ほとんど差がない" という衝撃の事実を明らかにする. 著者は考えうる理由としてチームやオフィスの立場や力関係の対等さ, 文化的障壁を下げるための社員派遣, ツールの統一, ライフサイクルを通じて一貫した所有権, 共通のスケジュール, 経営を含めた組織の統一性などを挙げている.

まあ既存の調査が "修正の要求から実際の修正までの時間" といった柔軟性の指標を使っているところに "出荷後のバグ報告数" のような計測可能(かつある程度予防可能)な指標を持ってくるあたりに若干の後ろ暗さを感じなくはないけれど, オレたちソフトウェアを作らせたら凄いんだぜ! という Microsoft の力強い自負は伝わってきた. Vista は失敗だの Azure は継続的なんとかだのと煩い外野に苛立っている MS ファンは読むとよいです. 個人的には既存研究も読みたかったけど IEEE (入ってない) だったよ...

つづき. 9 月号 "Spamalytics: スパム広告コンバーションの実践分析" は, スパムメールの効果のほどを調べるために, ちょっとばかし botnet を拝借してスパムを送ってみましたよ, という話. 色々な意味で面白い.

(おそらく honeypot に飼っている) botnet の中継サーバをクラック(?) して 配信すべきメールを自分達のサイトに誘導するよう書き換え, 数百万台のワーカー bot から数億通のスパムメールを配信したという. そして偽スパムサイトに辿りつき "buy" をクリックしたユーザを数え, スパムの到達率を計算している. はたしてスパマーはどのくらい左団扇なのか? スパマーに広告を頼むのは割に合うのか? 気になる人は読むとよいです.

私の中ではスパマー=スパム王なので, 色々と感慨深いよみものでありました. 最近のスパム事情(バイアグラを売るかわりに嘘の企業情報を流して株価を操作する Stock Spam)の話や, ハイジャックした botnet である Storm Botnet の アーキテクチャ紹介も面白かった.

そのほか

と, だいたい面白かった話は紹介したつもりになって気が済んだ. (自分の興味にあったジャンルがないという人は, 単に私の軽薄な偏りが口に合わないだけだと思うので, バックナンバー目次を眺めてみると良いかもしれません. 機械学習や NP 完全もあるよ!)

そのほか ACM がやっているチューリング章を受賞した Liskov のインタビュー を読んでめちゃめちゃ現役なのにびびってみたり, Quicksort を発明した Hoare のインタビュー を読んでまだ生きてたかとびびってみたり, 海に消えた Jim Gray を悼んでみたり, 計算機科学有名人の話題にはことかかない.

ニュース欄もそこらへんのニュースサイトとはちょっとズレたかんじで面白い時がある. (インターネット中毒の話とか.) あとは SIGGRAPH の宣伝に夏を感じてみたりもできる.

毎号 100 ページちょっとのコンパクトな体裁なのに, 暇さえあれば隅々まで飽きずに読める盛り沢山な内容で, しかもフルカラー. 船便で印刷版が届くほか, 発行直後に PDF 公開のお知らせも届く. ACM 会員になれば ACM Digital Library にもアクセスできるから, ぐぐってみつけた論文が非公開で読めず涙することもなくなる. (IEEE や Springer などのトラップは除く.) まあ CACM に限らずコンピュータ系の読み物はウェブで検索すれば何割かは公開されているのがみつかるんだけれど, CACM については話題の取捨に有難味があると思う.

すわ購読! と思ったひとは オンラインのフォーム から ACM に入るとよいです.

学費の見返り

CACM を特に勧めたいのは, 情報系の学科出身だけれど仕事はハイテク感がなくて悲しい思いをしているひとたち(=情報系の卒業生大半). 世間の多くのプログラムは CS 的な価値観だと trivial なものが大半なので, 輪読や実験など辛い思いをした日々や完済遥かな奨学金がいまいち報われない感があるかもしれない. かといってたまに現れる non-trivial な問題と戦える腕もない. こうしてハイテクへの憧れは退屈の埃にまみれ挫折の泥に沈んでいく. けれど CACM を読んで人類の英知と野望の一端を楽しめるのは大学卒業の見返りとして悪くないと思う. 煤けた憧れにひとつまみの輝きを呼び戻してくれるから.

スポーツをしたことがあればプロスポーツ観戦の興奮が高まるように, 楽器をやったことがあれば音楽鑑賞の楽しみが増すように, 情報科学をかじったことがあればハイテク野次馬の蘊蓄にも磨きがかかるというもの. アルゴリズムがわからいまま適当に実装したらさっぱり動かず卒論の締切間近な四面楚歌だとか, 三年前の論文を読んで改良を試していたらもっと良いアルゴリズムが半年前に発表されてた修論の締切間近な五里霧中だとか, そういう心配なしに読む CACM は, 最新の面白いコンピュータ話をつまみ食いできる割と楽しい読み物なのでした. ほんとはね.