SBクリエイティブ

ピクサー社・手島孝人氏からの推薦コメント『C++のためのAPIデザイン』

2012.10.12
対象書籍
C++のためのAPIデザイン

10月30日刊行予定『C++のためのAPIデザイン』につきまして、米ピクサー・アニメーション・スタジオ 手島孝人氏から推薦のコメントを頂きましたので、ここに一部抜粋してご紹介致します(全文は本書をご参照ください)。

■推薦のことば(一部抜粋)
Cover_Cpp_Api.jpg 
APIデザイン。あまり聞き慣れない言葉です。この本は何か特殊な分野に関するC++のTipsを集めた参考書の一つなのでしょうか? いいえ、それは違うようです。
すでに世の中にC++プログラミングの参考書は数えきれないほどありますが、もし今、初心者の新人プログラマに参考書を渡すとしたら何だろう、と考えてみました。もちろん皆さんいろんなご意見があるかと思いますが、私ならまずは『ロベールのC++入門講座』、そして次に『Effective C++』を薦めるかと思います。まずはこれらで基本を学ぶとして、問題はその次です。『Modern C++ Design』や難解なテンプレートの解説本も面白いかもしれません。でももし職場の同じチームで働く新人君だとしたら、一日も早く第一線で活躍して欲しいですから、あんまり難しい本をのんびり読んでもらってる暇はないですね。こういうときは一緒にコードを追いながら教えていくのが一番なのですが、もしそんな余裕もなかったら、彼に現場のエンジニアが体得している実践的なプログラミングのセンスを伝えるにはどうしたらいいでしょう。
そう、プログラミングセンス。同じように決められた仕様にそって動作するプログラムにも、センスの良いものと悪いものがあります。拡張性がなかった、効率が悪かった、堅牢でなかった・・・ベテランプログラマは膨大な経験を通してこれらの失敗を回避する勘、センスを持ち合わせているようです。基本的な文法やライブラリ知識の次に必要なものは、過去の成功例失敗例に学び築かれたセンスなのではないでしょうか。そうだとして、そのセンスは果たして手放しで教えられるほど体系化、形式知化されているのでしょうか。

長生きする優れたコードにはある一定の知恵が効いていることがわかります。数多くのエンジニアが試行錯誤し、議論しながら見つけ出していった賢い方法。あらゆる分野のソフトウェア開発で同じように数多くの「センスのいい」ノウハウが生まれてきました。中でも設計方法に関して様々な観点から体系化し、実経験のない初学者でも学べるように整理したものは、今日デザインパターンとして広く知られています。

デザインパターンはプログラミングを学ぶ者にとって非常に重要なリファレンスであるのですが、言語や環境に依存しない抽象的な概念が中心になっています。一方で特定の言語でのより具体的なテクニック、例えばクロスプラットフォームでのヘッダファイルの構成の仕方や外部モジュールとのバインディングの方法、様々なレベルでの互換性の維持、自動ビルドやテストの方法などに踏み込んだ実践的な教科書というのはなかなか存在しません。Java や C# では環境が比較的統一されていることもあり、実践的な本がいくつかあります。一方、バラエティに富んだ処理系が存在し、多種多様な状況で大規模開発にも用いられているC++を対象とした本格的な実践ノウハウ本は、私の知る限りほとんど見たことがありません。いざ書こうにも、そもそもデザインパターンのようにきれいに体系化しきれなかったバラエティ溢れるトピックを一体どのようにまとめたら良いものでしょうか。

本書の著者はこの「コードのセンスの善し悪し」が、実は「APIのデザイン問題」であると見極め、最も重要な開発言語であるC++をターゲットに本書をまとめあげました。この着眼点は極めてユニークで卓越していると思います。もう一つ本書のすごいところは、具体的でわかりやすい実例をふんだんに使って、非常に説得力のある形でそのセンスの良さの理由を説明していることです。ここにようやくC++プログラマに伝わる重要なノウハウが一冊の本で読めるようになりました。
というわけで私は、これから多人数での開発プロジェクトに参加する新人エンジニアの皆さんにこの本を強くお薦めします。自分の書いた新しいコードを先輩にレビューしてもらう前に、本書の目次を思い出しながら、定石に違反しているところはないか確認してみてください。先輩のあなたを見る目も変わるに違いありません。そしてベテランC++エンジニアの皆さんにもお薦めしたいと思います。もう20年以上C++を使っている私も本書に気付かされたことがたくさんありますし、バイナリ互換性の確保やテストの構築法など、玄人好みの項目も数多く取り上げられています。
本書をお薦めしたい方々がまだ他にもいました。本書の内容はC++エンジニアの能力を正しく見極めるのにとても適したトピックになっています。もしあなたがエンジニアの採用を任される立場であるなら、面接や採用試験でどんな質問をして候補者をテストしたらいいか、この本が大いにヒントになるでしょう。逆にもしあなたがC++エンジニアとしてどこかの会社の採用試験を受ける立場であるなら、ぜひ本書の内容を完全にマスターして欲しいと思います。シリコンバレーのエンジニア採用面接では本書で取り上げられたようなAPIデザインの質問は必ず出ますし、今はきっと多くの日本の会社でもそうでしょう。
最後になりますが、原著のスマートな英語を卓越した美しい日本語に訳して下さった翻訳者のホジソンますみさん、細部に至る徹底した監訳を頂いた安藤毅さん、石原啓一郎さん、釜井政義さん、南野真太郎さん、スクウェア・エニックスの三宅陽一郎さん、編集制作してくださった編集マッハさん、そして本書の翻訳を選択してくださったソフトバンク クリエイティブの品田洋介さんに感謝いたします。
堅牢で美しいAPIを設計、実装するのは簡単なことでありません。でも苦労して納得のいくAPIが出来て、みんなに使ってもらえたときの何と言えない達成感、まさにC++er 冥利に尽きるというものですね。
Happy C++ Programming!
手島孝人
 

Cover_Cpp_Api.jpgC++のためのAPIデザイン
マーティン・レディ 著 
ホジソンますみ 訳 
三宅 陽一郎 監修
ISBN:978-4-7973-6915-1
サイズ:B5変/1色
ページ数:528
価格:3990円 (税込)
出版日:2012/10/31


この記事をシェアする