« Diomidis Spinellis, Georgios Gousios編「ビューティフルアーキテクチャ」オライリージャパン 久野禎子・久野靖訳 1 | トップページ | Diomidis Spinellis, Georgios Gousios編「ビューティフルアーキテクチャ」オライリージャパン 久野禎子・久野靖訳 3 »

2016年7月10日 (日)

Diomidis Spinellis, Georgios Gousios編「ビューティフルアーキテクチャ」オライリージャパン 久野禎子・久野靖訳 2

膨大なドキュメントを作成したり作業者に規約を強制したりするというものもありますが、これが長期に渡ってうまくいくことはほとんどありません。
  ――序文

 Diomidis Spinellis, Georgios Gousios編「ビューティフルアーキテクチャ」オライリージャパン 久野禎子・久野靖訳 1 から続く。

【1章 アーキテクチャとは何か?(ジョン・クライン,デビッド・ワイス)】

グループ化を行う際の指針の1つに、「あるレイヤのプログラムは1つ上のレイヤのプログラムと比較して、およそ10倍高速かつ10倍の頻度で使用されるようなものであるべきだ(Courtois 1977)」というものがあります。

 「アーキテクチャ」という、あいまいな言葉を巡る話。

 元は建築様式を意味する言葉だそうな(→Wikipedia)。今はIT関係の設計や構造を示す場合が多いけど(→Wikipedia)。最後の小話「アーキテクトとは何か?」が、本書の言う「アーキテクチャ」を、巧く伝えている。

 ティム・バーナーズ・リーの Web の発想は、確かに見事だっだ。何が凄いといって、決めたのはプロトコルだけって潔さが凄い。加えて1回ごとにセッションを切っちゃうのも。小さく生んで大きく育てた好例だよなあ。

【2章 2つのシステム:今風ソフトウェア物語(ピート・グッドリッフ)】

時間があり過ぎると、プログラマというのは最高傑作を創作しようとするものです(最高傑作というものは、いつも大体のところまではいきますが、きちんと形になることはない、というのが常です)。

 一部のミュージシャンもそうだけどね。お前の事だよトム・シュルツ。

 開発する組織の構造が、出来上がるシステムの構造に反映する、というお話。開発チーム内の派閥が、まんまモジュール構成に反映するとか、まるでどこぞの銀行のシステムみたいだ。いや詳しくは知らないけど。

 また、目指す市場や開発の目的がハッキリしないため、あれもこれもと機能を詰め込んだ結果、アチコチに魔物が潜む迷宮ができあがるとかは、よく聞く話。これに対しては…

設計上の決定は、その決定を「しなければならない」時まで延期するべきです。まだ要求がわかり切らないうちにアーキテクチャに関する決定を行ってはなりません。想像で進めてはいけません。

 と、実にもっともな事を言ってるんだが、日本の組織ってのは無駄に意思決定が遅いんだよなあブツブツ…

【3章 スケーラビリティのためのアーキテクチャ設計(ジム・ウォルド)】

クライアントはユーザやプレーヤの制御下にあることが前提であり、本来のクライアント側コードを別の「カスタマイズ」されたバージョンのコードにすげ替えることも容易なので、クライアント側にあるコードは信頼できないものとして扱う必要があるのです。

 マルチプレーヤ・オンラインゲームのプラットフォーム、ダークスター(→英語版 Wikipedia)の話。

 ゲームは当たり外れが大きくて、当たれば数百万人が使うけど、外れたら十数人しか来ない。じゃ、サービス開始時には何台ぐらい用意すればいい?

 ってな事情から、「最初はサーバ数台でサービスを始めて、当たったらサーバを増やせるようにしよう」となり、それをどう実現したか、という話でもあり、同時に、マルチプレーヤ・オンラインゲームならではの事情も面白い。

 最初の引用は、つまりチート対策。そういう配慮が必要なわけ。またビジネス系のシステムはサーバ側の処理が大きくてクライアントは貧弱だけど、ゲームは逆とか。またゲーム開発者とサーバ設計者の考え方の違いも興味深かったり。

 サーバ負荷の分散だと、エリア分割が巧い。ゲーム内世界を複数のエリアに分割し、各エリアごとにサーバを用意する。エリアが混んでくるとサーバの負荷が高くなり反応が悪くなるんで、客は自然と他のエリアに逃げ出すんで、自然と負荷が調整される。もっとも、逃げ出す先は他のゲームかもしれないのが、困ったところw

【4章 メモリーを作る(マイケル・ニガード)】

「素早く失敗、はっきり失敗」

 テーマは Lifetoutch Portrait Stdios。アメリカの写真館チェーン向けのサービス。

 日本だと、駅前とかにある写真館を思い浮かべてほしい。七五三や成人式や結婚式などの記念日に、おめかしした顧客が写真館に来る。写真館では、スタジオでプロのカメラマンが記念写真を撮り、後日顧客がプリントしたモノを受け取る、そんなサービスだ。

 写真ったって最大60cm×70cmぐらいのポスターサイズになる時もあるんで、ピントはバッチリあってなきゃいけない。よって撮影はプロのカメラマンの仕事。撮った写真はDVDに焼き、印刷施設に送る。プリンタは専用の高価なもので、写真館の店舗には置けないのだ。印刷施設で印刷したら、店舗に写真を送り返す。

 また、撮った写真をセピア調にしたりリスマス風の背景にしたり、多少の加工をする時もある。プリクラみたいな雰囲気かな?

 店舗は全米各地にあるんで、開発者が現地に行ってサポートとかは、いちいちやってらんない。店舗で端末をいじるのはカメラマンやパートのオバチャンで、コンピュータの素人なんで、あんまし難しい事はできない。などの泥臭い話が多いが、それが楽しかった。

 冒頭の引用は、写真のレンダリング・エンジンの話。レンダリングたって印刷用のデータはモニタ表示用より1~2桁ほど解像度が高く、当然データ量もデカくなり、処理時間がかかる。だもんで、途中で止まるのは、実に腹立たしい。どうせ止まるなら、早いうちに止まってくれ。

 あなたも経験ありませんか。デカいソフトをインストールしたら、数時間かかった挙句に「××が足りない」とか言われて異常終了しちゃった経験が。「わかってんなら最初に言ってくれよ」とか思うよね。まして印刷中なら、インクも無駄遣いする羽目になるし。

 ってんで、そういう設計にしました、という事。某MSも見習ってほしいもんです。

【5章 リソース指向アーキテクチャ:「Web上にある」こと(ブライアン・スレッテン)】

IT産業に携わる者として大変恥ずべき事実を、私たちは認めざるを得ません。すなわち、自分たち独自のシステム上で情報を見つけるよりも、Web上で情報を見つける方がずっと簡単というのが、大半の組織にとっての現実だということを。

 「社内LANよかGoogleのが使えるよね」って、それ言っちゃらめえw 私もこのブログで自分の書いた記事を探す時に、Google で探したりするし。

 とは言うものの、肝心の内容については、実は何が言いたいのかよくわかんなかった。Persistent URL(→はてなキーワードpurl.org)の話らしい。

【6章 データの成長:Facebookプラットフォームのアーキテクチャ(デビッド・フェターマン)】

 今をときめく Facebook の登場。スケーラビリティより、サード・パーティ向けのインタフェースをどうするか、みたいな話。また、個人情報を扱うだけに、セキュリティも大事な要素になる。サードパーティーと連携できる自由度と柔軟性を持ちつつ、個人情報のセキュリティを維持するにはどうするか、みたいなテーマ。

 この人は言語を作るのが好きみたいで、最終的には「専用の言語を作ればいいよね」となるのが楽しい。ってんで、紹介してるのが、SQL の Select 文風の問い合わせ言語 FQL と、HTML 風の Facebook 専用マークアップ言語 FBML。確かに、言語にしちゃうってのは、自由度と柔軟性とセキュリティをバランスさせる巧い方法かも。

【7章 Xenと仮想化の美(デレク・マレイ,キア・フレイザー)】

コンピュータサイエンスの問題は何でも、1つのレイヤを追加して間接性を導入することで解決できる。しかし、そうするとまた別の問題が生まれるのが普通である。
  ――ダビッド・ウィーラー(David Wheeler)

 Amazon EC2 などで使われている仮想マシンのプラットフォーム、Xen(→Wikipedia)のお話。安全性と実行速度、そして堅牢性をどう維持するか。

 なにせOSの話なので、CPUの特権モードだの入出力のDMA(→Wikipedia)だのと言った、低レベル=ハードウェアに近いネタが出てくるのが嬉しい。DMAは特別なプロセス(ハイパバイザ)がバッファを持ち、そこを各VMと共有したり、複数イベントをまとめて処理したり、細かい工夫の話が燃える。

 開発してたら Intel と AMD が仮想マシンサポート機能をCPUに組み込んだ上に、必要なコードまで貰えたというから、向こうの企業は肝が太い。

【8章 Guardian:フォルトトレラントなOS環境(グレッグ・レーシー)】

 不沈コンピュータ Tandem(→Wikipedia)改め NonStop(→Wikipedia)の設計を、ハードウェアと低レベルのソフトウェアを中心に語る。

 フォルトトレラントとは、滅多に止まらないこと。CPU やディスクなど全ての要素を2つ以上持ち、どれか一つが壊れても動き続ける頑丈なシステムの話。なにせ16ビット機から話が始まるため、ちょっと懐かしかったり。

 なにせ50センチ四方のボードに乗っかるメモリが最大1Mとか。でもコアメモリ(→Wikipedia)はさすがに見た事ないなあ。当然、16ビットじゃ64kbまでしかアドレッシングできないんで、色々なアドレッシング・モードを用意してる。ワードって言葉も懐かしい。ちなみにこの章だと、1ワード=2バイト=16ビット。

 やはり低レベルの話が面白い。環境レジスタのビット構成も鼻血が出そうだが、ディスクのアクセスでヘッドのタイミングが問題になるあたりは、「おお、懐かしい!」と叫びそうになったり。ディスクだと、階層ディレクトリがないフラットなファイル・システムも懐かしい。昔はソレが珍しくなかったんだよなあ。

 にしても、checkpoint 機能は羨ましい。任意の時点で、プロセスをバックアップできるのだ。デバッグ中には使いまくりな気がする。

【おわりに】

 次の記事に続く。

【関連記事】

|

« Diomidis Spinellis, Georgios Gousios編「ビューティフルアーキテクチャ」オライリージャパン 久野禎子・久野靖訳 1 | トップページ | Diomidis Spinellis, Georgios Gousios編「ビューティフルアーキテクチャ」オライリージャパン 久野禎子・久野靖訳 3 »

書評:科学/技術」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Diomidis Spinellis, Georgios Gousios編「ビューティフルアーキテクチャ」オライリージャパン 久野禎子・久野靖訳 2:

« Diomidis Spinellis, Georgios Gousios編「ビューティフルアーキテクチャ」オライリージャパン 久野禎子・久野靖訳 1 | トップページ | Diomidis Spinellis, Georgios Gousios編「ビューティフルアーキテクチャ」オライリージャパン 久野禎子・久野靖訳 3 »