こまぶろ

技術のこととか仕事のこととか。

『データ指向アプリケーションデザイン』を読む(1):タイトルについて

『データ指向アプリケーションデザイン』を読み始めた。本文だけで605ページという大著なので、少しずつ読み進めていきたい。

データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理

データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理

  • 第I部 データシステムの基礎(1〜154ページ)
    • 1章 信頼性、スケーラビリティ、メンテナンス性に優れたアプリケーション(3〜27ページ)
    • 2章 データモデルとクエリ言語(29〜71ページ)
    • 3章 ストレージと抽出(72〜117ページ)
    • 4章 エンコーディングと進化(119〜154ページ)
  • 第II部 分散データ(155〜422ページ)
    • 5章 レプリケーション(161〜213ページ)
    • 6章 パーティショニング(215〜237ページ)
    • 7章 トランザクション(239〜295ページ)
    • 8章 分散システムの問題(297〜349ページ)
    • 9章 一貫性と合意(351〜422ページ)
  • 第III部 導出データ(423〜605ページ)
    • 10章 バッチ処理(427〜479ページ)
    • 11章 ストリーム処理(481〜535ページ)
    • 12章 データシステムの将来(537〜605ページ)

XX-oriented vs XX-intensive

「〇〇指向△△」というと、原題は「〇〇-oriented △△」だろうかと想像するが、この本の原題は、「Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems」である。

まず気がつくのが、「データ指向」がDate-orientedの訳語ではなくData-intensiveであるということだ。この"intensive"の語感は、「labor-intensive(労働集約的)」というときのintensiveに近いものだと思われる。つまり、アプリケーションのなかの相対的に重要な位置をデータが占めているということだ。本文中の以下の記述には、演算指向(compute-intensive)、つまり演算(計算処理)が中心となるアプリケーションとの対比が表現されている。

今日の多くのアプリケーションは、演算指向ではなくデータ指向であり、CPUの処理能力そのものが制約条件になることはほとんどありません。通常は、データの量や複雑さ、そしてデータの変化する速度のほうが大きな問題なのです。*1

オブジェクト指向(Object-oriented)」が分析なり設計なりプログラミングなりの「中心にオブジェクトを据えていきましょう」という方向性を示しているものであるのに対して、「データ指向(Data-intensive)」は事実としてデータが重要な位置付けを占めているということを表現しているということができるだろう。それは、「労働集約型産業(Labor-intensive industry)」が「労働を中心に据えてやっていこうな」という話ではないというのと同じだ。

「データ指向アプリケーションデザイン」は手法ではない

上述の点と関連して、押さえておかなければならないのは、「Data-intensive」という形容詞が、「Application」にかかっているということである。つまり、本書が語る対象は、「<データ指向な><アプリケーション設計>」ではなく、「<データ指向アプリケーション>の<設計>」なのである。

この書籍の主眼は、先述の意味で「データ指向なアプリケーション」をどのように「設計」すべきかという点に置かれている。「デザイン」と訳されている原題の語は「Designing」(動名詞)であり、たとえば『エリック・エヴァンスのドメイン駆動設計(Domain-Driven Desgin)』における名詞の「Design」とは異なっている。後者が設計の手法であるのに対して、前者は設計という営み自体である。

内容に照らしてみても、本書は「データ指向アプリケーションデザイン」という設計手法の考案・提唱を目的としたものではない。したがって、「DDDで設計してみました」はありえても*2、「データ指向アプリケーションデザインで設計してみました」ということはない。

技術書の邦題問題

以上、『データ指向アプリケーションデザイン』のタイトルについて考えてきた。自分の考察が適切であるとすれば、本書の邦題はややピンぼけしているように思う。しかし、それは訳者に帰する問題ではおそらくないし、批判しようという意図はない。

テスト駆動開発』をオーム社から再出版するときに、「入門」とタイトルに入れたがる出版社サイドを、訳者のt-wadaさんが制したという。「入門」や「実践」が入るとよく売れるという出版事情があるようで、それは自分の知っている書籍にも影響を与えているように思う*3。それ以外にも、シリーズらしく見えるように邦題を設定したり、さまざまな制約が邦題というものにはあるのだろう。

読者コミュニティの一員としてできるのは、このような大著を母語で読める形で世に出してくれた訳者や出版社に敬意を評しつつ、より良くその書籍を読むアイデアをコミュニティに提出していくことなのではないかと思う。

*1:『データ指向アプリケーションデザイン』3ページ。

*2:ただ、「DDDで設計してみました」にはその他の理由でマサカリが飛ぶことはあろう。

*3:『実践ドメイン駆動設計』や『実践テスト駆動開発』など。