Experts.jp日本に、もっとエキスパートを。(14)こんにちは、編集長の白石です。2017に登壇したエキスパートに、お話されたセッションのトピックを中心に語っていただこうとういものです。セッションの内容をより深く理解する手助けになるだけでなく、本記事単体でも面白く読んでいただけることを目指しています。撮影:刑部友康)竹洞さんのセッション「テクニックではなく、今、本気で取り組むべきWebパフォーマンス」に関するスライド資料は、こちらで公開されています。民法(債権法)が改正された、ということに注目なさってるそうですね。はい、民法の大規模な改正法案が今年5月に成立しました。3年以内に施行されることになっており、備えが必要です。様々な改正項目がありますが、中でも品質の担保を行う義務が明文化されたことで、ソフトウェア業界にも大きな影響が及ぶものと考えています。今までは「瑕疵担保」という概念があったおかげで、とりあえずは品質を担保しない状態で納品を行い、その後の瑕疵期間で問題を修正していく...というのが一般的に行われていました。今後は、納品時に一定の品質を保証することが開発側に求められるようになります。私としては、ソフトウェア品質が全般的に向上することで、市場が健全化すると考えています。品質への理解が低い市場は、必ずと言っていいほど衰退するんです。消費者が品質の善し悪しが判断できない状態だと、価格が一番の判断材料になります。なると結局、品質を犠牲にした価格競争にならざるを得ない。「安かろう悪かろう」が当たり前になってしまうわけですね。いうスパイラルに陥らないためには、品質への意識を高く保つ必要があるんです。例として適切かはわかりませんが、たとえば麻薬の売人って、品質にものすごく気を使うんです。質の悪い麻薬が出回るようになると、価格に対する期待と同程度の「ハイ」の状態を得られず、その結果、価格の下落を招き、結局市場が衰退してしまうからです。した現象を、アメリカの中古車市場の分析から「情報の非対称性」として研究したジョージ・アカロフ博士は、2001年にノーベル経済学賞を受賞しています。そのことが、受託開発のビジネスなどをより難しくしてしまうことも考えられます。ウェブ制作会社は、一般的には納品後に入金が入るという仕組みになっていますよね。品質がそこそこの状態で納品してしまう...ということも起きるわけです。パフォーマンスはその悪い例で、まずはチューニングしていない状態で納品する。すると、後でパフォーマンス・チューニングの依頼が来てまた売上につながる...なんて事情も実際にはあるわけです。したこれまでの商慣行が崩れてしまう可能性はありますね。品質保証が義務付けられるせいで、納品までにより時間がかかるようになるとすると、入金が遅くなるということに繋がる。民法債権法改正では、部分単位やステージ毎の請負金額の要求ができるようになっています。それだけ聞くと、受託開発や制作を行っている企業にとっては、ただただ厳しくなるようにも聞こえますね。完璧なソフトウェアを作らねばならない...なんてそもそも無理だとも思うのですが。その点については安心していいと思います。「品質を保証する」というのは、「完璧な製品」を意味しているわけじゃないんです。テスト項目について顧客と合意し、その結果を提出すればいい。実は、ソフトウェア品質には、V&Vといって、Verification(検証)とValidation(妥当性確認)という二つの概念があります。要求事項を満たしているかどうかの確認です。妥当性確認(Validation)とは、機能や性能が本来意図された用途や目的に適っているか、実用上の有効性があるかの確認です。Webパフォーマンスは、品質においては、妥当性確認にあたります。従来、ソフトウェア開発における「品質」、特に受託開発においては、検証確認が主体でした。応答速度の遅延などで使いものにならないという妥当性確認もあったものの、それはハードウェア性能であったり、データベース設計の問題であったりと、「表示」そのもののロジックに原因はあまりなかったのです。要求仕様の実現という意味での検証については、仰るとおり「完璧な製品」というのは、ほぼ存在し得ない。それは、ソフトウェアが、論理記述であって、物理法則の縛りがなく、かつ、連続性の保証がないためです。連続性の保証とは、物理法則であれば、100Kgの重さまで耐えられるテーブルであれば、当然ながら、80Kgや10Kgなど、100Kg以下の重量に耐えられることです。ソフトウェアは二値論理がベースであるために、100という値で大丈夫であっても、80や10という値で大丈夫であるという保証がない世界です。2002年に亡くなられた、オランダの著名な計算機科学者で、構造化プログラミングの提唱者でチューリング賞を受賞しているエドガー・ダイクストラ博士が「テストは誤謬を見つけることはできるが、それがないことを証明することはできない」と指摘しています。バグや欠陥がないことを保証するというのは無理なんです。それなら少し安心です。バグや欠陥のないソフトウェアなんて不可能ですし。品質についても顧客との合意内容に盛り込む必要が生じる、ってことですよね。した合意があるのとないのとでは、品質に対する意識が全然違ってきます。品質については、検証として従来もやってきたことです。ところが、WebがソフトウェアのUIの主体となることによって、今まで問題にならなかった「表示」に関するロジックが突如、問題となり始めた。いっても、もう20年ぐらいになるわけですが...その部分は、検証ではなくて、妥当性確認なんですが、妥当性確認のテストのノウハウが日本では普及していなかった。今、そこが問われているわけです。「完璧な製品を作る」ことが品質保証なのではなく、「妥当性品質に対してどこまで保証するかを明確にする」ということなんですね。して、妥当性品質についての期待値を高く保つことは、Webに関する業界として必要なことだと思いますよ。日本の住宅市場は、品質保証がうまくいっていない例だと思うんです。日本の住宅って、非常に寿命が短いじゃないですか。その理由は様々ですが、一つに中古住宅に対する品質の期待値が低いことがあると思っています。品質保証がない空き家を買うくらいなら、新築のほうがいいって心理です。確かにそういう一面はある気がしますね。ぼくは安さに釣られて中古住宅を買ったクチですが(笑)、一生住めるなんて少しも期待してませんし。それって、結局その家はいつか捨てることになるってことで、財の蓄積が進んでいないとも言えると思うんです。社会的に見ると、将来世代に引き継ぐ財が形成されていないとも言える。財の蓄積が期待できないと、そこの投資は進まない。お金が集まってこないのです。ウェブのように技術がどんどん進歩していく世界に財の蓄積は有り得るのか?システム構築費用は5年で償却されるのであれば、5年持てばいいじゃないか?という考えられるのは、仰るとおりです。プレゼンテーションとしてのUIデザインと、データとしてのコンテンツやユーザのデータは分けて考えるべきで、だからこそ、HTMLとCSS、JavaScriptで役割分担をしているわけじゃないですか。システムの永続性というものを考慮してWebサイトの設計を行うことは非常に重要なのです。減価償却期間の5年も持たない、3年程度で捨てざるを得ないとなれば、企業財務的にはそこはできるだけ安く済ませるべきなのです。品質が保証されて、減価償却の5年を超えて使えるとなると、将来価値が上がる。企業財務的にはおいしいお話なのです。そこに気付いてほしい。メンテナンス費用は当然発生するでしょうけど、新規で作るより安いですし、何より「継承」できることが大きなメリットなんです。UIデザインや技術力だけで勝負しているWeb制作会社さんは、その点に、早く気づかれた方が良いと思います。お金を握っている経営者や財務担当者は、別のロジックで判断しているわけですから。ウェブサイトも、いつか捨てるものとなれば、そこに予算を掛けようとは思わない。品質が保証されないのであれば、なおさらのことです。「お客様からあまり予算をいただけない」と嘆くことがあるかと思いますが、その背景には、品質が保証されていないので修正するより作り直した方がいいと考えられていること、いつかWebサイトは捨てて新しく作るものと考えられている背景は認識しておくべきだと思います。ウェブサイトの品質は主に3つの要素から成っていると言っていいでしょう。一つはアクセシビリティ。最後がパフォーマンスです。Webサイトの三大品質これらはそれぞれJISで規定されてもいる重要な指標です。これらをしっかり担保していく体制づくり、それがウェブサイトの品質保証に繋がります。ウェブサイト制作にも、これらを担保するワークフローを確立していくべきということですね。これらは、運用と一体になって改善していくべきものでもありますので、DevOpsの観点から考えるのも重要です。一つ不思議なのが、日本でDevOpsに関して述べている文献や書籍って、ほとんどの場合品質保証のことが抜けてしまっているんですよね。品質に対する意識が高まらない原因は、こういうところにもあると思います。品質を向上させるためのコストが低く見積もられがちというところもあるんでしょうか。いうよりは、そのコストが認識されていないというのが正しい気がします。3要素を同時に満たすことはできず、トレードオフの関係にある」といった、プロジェクトマネジメントやソフトウェア開発見積りの基本もあまり浸透していない感覚がある。当たり前の話ですが、品質を高めようとすれば、時間的、金銭的なコストを支払う必要があるということですね。品質保証が当たり前になれば、品質保証のためのコストがかかるのも当たり前になる。今は、その当たり前のコストを払っていないだけとも言えるのです。小手先のテクニックはたくさんありますし、いろんなところで語られてもいますので、もう少し根源的なところから考えると、結局「基礎」と「長期的な視野」が重要になると思うんです。基礎というのは、コンピューターやネットワークに関する基本的な知識。長期的な視野と言うのは、数年後にインターネットがどうなっているか、といった話です。パフォーマンスに関する話を突き詰めていくと、意外なほどハードウェアに関する知識って大事なんです。パフォーマンスって、最終的には絶対にハードウェアに依存するわけですからね。とある大規模サイトで遅延が発生していたんですが、その原因を追求するのすごく大変だったんです。アプリケーションをいくら調べても、データベースのクエリをいくら見直しても、ネットワークの状態を見ても、原因がわからなかった。そのサーバはVMWareで仮想化されていて、サーバ負荷に応じてCPUリソースが動的に割り当てられるようになっていました。割り当てられているCPUリソースが足りなかったせいで、CPUの動的割り当てが頻繁に発生してしまっていたんです。その割り当てが行われる際に、サーバの処理が遅延してしまっていたんですね。ここまで奥深くに原因がある場合って、ハードウェアを含めたアーキテクチャ全般の知識が必要になります。結局、コンピューター全般の知識って必要だなと。私の会社では、入社したら最初の一歩として、まずPCを自作してもらうようにしています(笑)。はい、具体的には5Gネットワークの話になりますね。5Gはアプリケーションの作り方を含め、全てを変える可能性がある技術だと思っています。大きく3つのトピックがあると考えています。一つはネットワークスライス。インターネットを「輪切り」にするイメージで、用途に応じて別々のネットワークを提供していくようになります。電波には周波数によって特性があり、サービスの特性に応じて周波数を割り当てて異なるネットワークを構成できるので、ネットワーク全体の利用効率が大きく向上すると考えられています。ネットワークスライス次に指向性アンテナです。今までは、基地局といういわば「傘」を中心として、そこから広がるように無線ネットワークが構築されていました。これからは、パネル型のアンテナがビルの壁面に貼られるようになり、そこから端末と直接「ビーム」をやり取りするように通信を行います。通信の受信強度が高まるだけでなく、他の電波との干渉も減らせます。指向性アンテナ最後にモバイル・エッジ・コンピューティングです。Controller)配下に、仮想サーバー(エッジサーバー)を設置できるようになるのです。今まで携帯の会社はコアネットワークを公開していなかったので、これは大きな変化です。モバイルエッジコンピューティングこれは分散コンピューティングの新たな可能性を示しているといえます。インターネットより手前でトラフィックを捌けるわけですから、サーバーの応答性も大きく向上します。へえ、知りませんでした!世界中のエッジサーバー上に、静的リソースのキャッシュを置けたりしたら、すごく速くなりそうですね。それだけではありません。エッジサーバーで可能な限り処理を行い、必要な処理だけインターネット上のサーバーに送るようにすることもできます。アプリケーションの処理を、エッジサーバーとインターネット上のサーバーで分担するというわけです。全てエッジサーバー上で処理を行うような、非インターネットのローカルなサービスを行うことも可能です。なると、アプリケーションの作り方も大きく変わってきそうですね。夢が拡がりますね...。2020年の東京オリンピックまでには使えるようになるだろうと言われています。モバイル・エッジ・コンピューティングを使った高画質動画配信や映像解析を活用した人物検知システムの実証実験を行って成功した旨のプレスリリースを発表してています。10月13日には三菱商事が、この分野のリーディングカンパニーであるJIG-SAWと、モバイル・エッジ・コンピューティングの実証実験成功のプレスリリースを発表しています。