「コンピューター技術書の温故知新 第十一回 今や巨大な企業の屋台骨にかかわる大問題」大野典宏

コンピューター技術書の温故知新

第十一回

大野典宏

●今や巨大な企業の屋台骨にかかわる大問題
 最近では日本の巨大銀行が採用しているシステムが障害を起こしてニュースになっている。
 Webに限らず、製菓メーカーが新システムに切り替えたとたんに不具合だらけになり、製品の出荷がまるで間に合わないといった事件も起こっている。これは新システムを提案したコンサルティング会社の仕様に欠陥があり、複数の会社で製作したものの、一年以上も開発に遅れが生じた挙げ句、実際に稼働させたら使えなかった……話にならない。今や違約金や賠償金を支払えば済む問題ではなくなってしまっているのである。
 Deploy(デプロイ)とは、設置を意味するのだが、大規模なシステムはリリースすることは基幹となる装置を設置することと変わらない。それだけ大規模かつ重要なことなのである。考えることで報酬を得ているのはシステムを設計する企業や個人である。そして実際に作り上げるのも企業や個人である。被害を受けるのは、それを使って損害を被った依頼側の企業や消費者である。
 すでに、発生する利益と不利益は対称的なものではなく、不利益のほうが大きくなる。
 隣の国で、亡くなったお子さんを人工知能(生成AI)で蘇らせるサービスを行ってみたら、「気持ち悪い」という声が出てきて賛否両論が巻き起こっている。シンギュラリティとかSFプロトタイピングと称して肯定的に捉える発言を行ってきた方々は、この事態に沈黙している。考えるだけなら「創作にすぎない」でも通じる言い訳なのだが、それを「新しい発想法・創造法」として喧伝する前に、いったん立ち止まって、実際にデプロイした際に何が起こるのかをきちんと考えて行われているのか、ここで考えてみるべきかもしれない。
 こういったライターとして問題になる内容は書きたくないのだが、「私は考えただけ。作った人のせいだ」で済ませられない重大な問題だと考えて行っている方々がどのくらいいるのか、少し心配になってくる昨今である。

ーーーーーーーーーーーーーーーーーーーーーーー
書評 2009年5月 1日

今やWebシステムは全ての企業にとって最重要なシステムだと肝に銘じよう

『Release It! 本番用ソフトウェア製品の設計とデプロイのために』
著者: Michael T. Nygard
翻訳: でびあんぐる
出版社: オーム社
ISBN-10: 4274067491
ISBN-13: 978-4274067495
352ページ
発売日: 2009年2月21日
価格: 3,600円(税抜き)

 例えば,泥縄式でWebサイトをいきなり切り替えた挙げ句,不具合とかコンテンツの未整理が続出して業務が停止してしまったWebサイトがあったとしましょう.すると,ユーザはどう思うでしょうか.たぶん,多くの人は「何これ?」とか「何やってるんだ?」と感じるでしょう.個人のサイトならともかく,企業にとって,これほど恥ずかしいことはありません.
 今や,Webサイトのような大規模なプロジェクトの場合,十分な計画と検討のもとにリリースされなければなりません.なぜなら,「どこに不測の事態が潜んでいるのか」を知る方法が開発者側にはないからです.
 Webサイトの難しいところは,すべての組み合わせのデバッグ・確認作業が異様に困難であるという点と,ユーザが何をしてくるのか,何をしでかすのかを事前に予測できない点でしょう.アクセスが集中することが予想されたとしても,どれくらいの帯域幅が必要になるのか,稼働させてみないと分かりません.ですから,システムの安定性,処理能力,データベースの堅牢(けんろう)性の検討と,不測の事態が発生した際に対応する適応性が求められます.
 ともかく,今やWebシステムは,大規模アプリケーション・ソフトウェア開発と同じくらいに複雑化し,システム構成の検討,予想される事態に対する対策案,そして計画的な開発工程を経て始めて実現されるものなのです.
 こと,システムが大きくなればなるほど,「これでうまくいくはずだ」という考えは妄想にしかすぎません.実際,十分に検討し,十分な知識のうえに構築され,十分にテストを繰り返してからのリリースであっても,そこで何が起こるのか,誰も分からないし,誰も予測できないのです.Windowsのバグに対して文句を言う人は大勢います.大手のポータル・サイトがバグを出したら,たいへんなことになります.たいていの場合,十分にテストを行ったうえでデプロイしているはずなのですが,やっぱり不測の事態は出てしまうのです.
 しかも,Webのようなサービスを段階的に切り替えるなどということは不可能です.ユーザに対して不便であるうえに,混乱しかもたらしません.しかも,構築中であることをユーザに見せてしまうのは,計画性のなさを暴露してしまうことでしかないので,とても恥ずかしいことだと認識しなければなりません.リリースした後,しばらくの間,「Internet Explorer(IE)で表示した際に,プルダウン・メニューの表示に不具合が生じています」などというアナウンスを出すのは,「するべき事をしていなかった」という開発者側の怠慢を暴露しているだけの恥ずかしい行為でしかないのです.
 Webシステムは,今や商業ベースで運用される「看板」であり,「商店」であり,「企業のイメージ」そのものなのです.中途半端は許されません.もし,Webサイトだけで営業しているAmazonや楽天のような企業で同じ事をやったらどうなるのでしょうか.損失は計りしれませんよね.もし,同じ事を宇宙船や航空機のソフトウェアでやってしまったらどうなるのでしょうか.確実に人命にかかわる事故を起こします.
 これ,企業にとっての「イメージ・ダウン」とか,「不具合による信用の損失」,「不稼働時間の間に被る損失」と,事態の深刻さが違うだけで起こっている現象は同じだと思いませんか.
 つまり,今や,ソフトウェアで行うべきテストを,Webサービスをデプロイした際にも同じ事をしなければ恐くてやっていられない時代になったのです.「定評のあるサービスだから大丈夫だろう」という考えは禁物です.こういう考え方には,システム間のインターフェースが完璧なのかどうかをテストしなければならない,という観点が抜けています.今までの考え方を改める時期が来ているのです.Webが単なるHTMLで書かれたスタティックな存在であった頃には,オーサリング・ツールで作ろうが,HTMLを手で打ち込もうが構わなかったでしょう.しかし,AjaxやWeb上での決済が当たり前になった現在,中途半端な状態での公開は絶対に許されないのです.
 さて,今回紹介する本は,そんなWebが重要になった時代において,できるだけ損失を出すことなく,システム・ダウンを起こすことなく,安全にWebシステムを構築するための指南書です.かなり具体的で,細かい部分まで解説されているので,これからWebシステムを構築する,あるいはリニューアルする際のマニュアルとして必読の本だと思います.