TCP/IPの「Slow Start」と、スタートアップの「Start Small」

及川卓也氏:TCP/IPが、どういうプロトコルなのかについてお話しします。データを転送するときって、間にどんなネットワーク機器があるかわかんないんですよね。有象無象がいるわけですよ。Ciscoさんのようにちゃんとした高級品しか出さないところもありますし、アキバで買った部品で自作したルーターにプロトコルを載っけちゃっても、それはルーターとして動くわけですよ。

そういった有象無象が入っているときでも、ちゃんとつながなきゃいけないんですね。そのときって、すごいパフォーマンスを出すということよりも、ネットワークにとって一番大事なのは確実にデータが相手に届くことなんです。

ですから、考え方はSlow Startっていうんですね。一番最初は、まず相手がどういった能力を持っているか確認するためにちょろちょろっと行って、徐々にスピードを上げていくという考え方を取ります。これがTCP/IPのSlow Startという考え方で、これによって確実につながるということが保証されているんですね。

これは、スタートアップとかで考えているやり方とも近いんです。よくスタートアップの起業家の人たちにアドバイスするときに、この言葉が使われることがあります。

「Think Big」「Start Small」「Scale Fast」。つまり考えていることは非常に大きいんだけど、まずは小さく始めて、それがうまくいったらすごい勢いでスケールさせていきましょう、拡大させていきましょうというもので。これはまさに、インターネットという技術で証明している、1つの成功の法則だと考えることができるわけです。

ソフトウェア開発の主流はウォーターフォールからアジャイルへ

現代のソフトウェア開発がどうなっているかというと、そもそもお客さん自身がなにを欲しいかわかっていない、ということはよくあります。

例えば最終的に作るものがクルマであったとしても、一番最初に必要なのが「移動したい」という要望だったならば、まずは自転車から始めて、最終的にはクルマに発展するというかたちでもいいでしょう。

これがまさに、アジャイルと言われているところです。ウォーターフォール型で開発ライフサイクルを一つひとつのフェーズで逆戻りすることなく進めていくということではなく、ちょっと作ってはお客さんに使ってもらって実験してみて、本当に必要とされているものはなにか、を確認しながら大きくしていくっていう考え方なんです。

これは、事業開発でもまったく一緒です。スタートアップにおいてはリーン開発が当たり前のように使われているんですけれども、要はスタートアップってリソース、とくに資金が枯渇するっていうリスクを常に抱えているんですね。失敗ができないんです。

ならば「すべての考え方は仮説である」と考え、仮説検証のフェーズを何度も何度も繰り返すんですね。一番最初の仮説というのは「ユーザーはこの課題を持っている」ですよね。なので「本当に課題を持っているか?」「それが重要なものかどうか?」「お客さんがお金を払うくらいに重要なものか?」の確認をします。

次に、その課題に対しての解決策と我々が考えているものが「本当に最善の解決策か」の検証を行い、そのあと実際に市場性があるかを確認していく。こういったプロセスがリーンと言われているもので、これもやはり仮説検証をひたすら繰り返していくというやり方になるわけです。

すべては仮説であり、検証しながら育てていくもの

もう1つ取り入れられているのは、DevOpsという考え方です。今でも古い会社では「ソフトウェアは開発してお終い。リリースしたならあとは運用フェーズになります」と考えていらっしゃる方は多いんです。

昔私がいたMicrosoftもそういう会社で、要はシュリンクラップのパッケージ製品を家電量販店の棚に並べたら、会社は一旦安心なんですね。そのあとは保守運用してくれる別部隊に任せればいいと。「サポートコールは受けてください。バグがあったらそちらで直してください」と言うことができた。

でも、Webって違うんですね。私はGoogleに入ってからそれを知りました。開発してリリースしてっていうところまで、それはそれで大変なんだけれども、リリースしたときに本当にそれがユーザーに使われるかどうかを見るんですね。

一番避けなきゃいけないのは、ユーザーが思った以上に集まってしまって回線がパンクし、サーバーがアクセス不可になることです。これが起きてないかをちゃんと見なきゃいけない。もしそんなことが起きそうだったら、リソースをすぐにそこへ与えないといけない。

もう1つは、我々が目玉だと思っていた機能が使われているかどうかを調べることです。Webだと、アクセスログを見ればすぐにわかるんですね。もし使われてなかったら、「このボタンをもう少し大きくしよう」「色を変えてみよう」「位置を変えたらどうだろう」「それでもダメだったら、機能そのものがちょっとわかりにくかったのかもしれない」といった感じで、検証しながら使えるものに育てていきます。そうなると、開発と保守運用は別のものではなく、一体化するDevOpsの考え方が当たり前になってくる。

この3つの基本的な考え方は、「すべては仮説であり、それを検証していくことによって確認し育てていく」ということです。つまりイテレーション(反復、繰り返し)と言われているものが大事であり、育てていくのが今後のプロダクトの開発方法であるということです。

サイバーとフィジカルが融合した世界の到来

今日のもう1つのテーマの「モビリティ」についてもお話ししたいと思います。

今IT業界だとか、ものづくりの世界がどうなっているかというと、サイバーとフィジカルが融合しています。とくにAI、IoTはそうだと言われています。

実際、日本の国家戦略としても今「Society5.0」という名前で、いろんな省庁がこれに向けて努力しているわけですね。文明が始まったときのSociety1.0は狩猟文化で、そのあと農耕になり、産業革命が起きて工業化になり、情報化社会になる。工業化社会のときの日本は、製造業を中心として圧倒的に勝利した時代でしたが、情報化社会ではアメリカのシリコンバレーに負けたという時代です。

次に、そのフィジカルとサイバーが融合した世界がきます。そういった世界では、単純にクラウドからデータを使ってなにかをするのではなく、世の中にいろんなかたちで置かれたセンサーなどから得たビッグデータの解析を機械学習等で行うということが、有機的になされていくと言われています。モビリティの世界というのは、まさにその最たる例であると考えることができます。

この世界ではどんな技術が大事になるだろうかということを、端折ってお話しします。

1つは、やはりデータが大事です。GAFAがデータを独占しているんじゃないかとよく言われていますが、データ流通や情報銀行みたいなものを国などが進めているのも、そこにあるわけです。

どんなデータをどのくらい保存していつ活用するかって、すごく難しいんですね。「データがなにかあるから、この宝を使ってなんかやってください」って言っても、そんなにうまくいくことはないです。

そもそも「何をやりたいか」という課題をそこから発見して、その課題のためにはどういったデータを集めなきゃいけないか。どのくらい集めて、保存期間はどのくらいにするか。解析の技術は何を使うかってことを、しっかり考えていくことが大事です。

すべてのものがソフトウェア化していくという潮流

もう1つ、ちょっと抽象的な言い方をしちゃってるんですけど、すべてのものがソフトウェア化していくという流れがあります。少し前から、例えばネットワークもSoftware Defined Networkというかたちで、ハードウェア特有のものではなくてソフトウェアでコントローラブル、マネージャブルなかたちで、ダイナミックにネットワークのフローを変えることができるようになっています。

いろんなものが、ソフトウェアでコントローラブルになる。例えば、コンテナ技術ですとか、Kubernetes、オーケストレーションと言われていたりするわけですけれども。それもソフトウェアにより、今まで人が張り付いてオペレーションを見ていた部分を、コードで実現できるようになる、という1つの例になるわけです。

あとは、その集めたデータの解析をどうするかという話があります。UIのかたちも、いわゆるコンピュータディスプレイにおけるUIだけではなく、いろんなデバイスが出てきます。

UIって、「そこにタンジブルなかたちで、ものが表示される」ということだけじゃないんですね。スマートスピーカーみたいに声で話しかけてくれるUIもあるし、ユーザーが自らそこにアプローチすることなく相手から歩み寄ってくれるようなものも、すべてインターフェースの新しいかたちなんです。こういったものが大事な要素ではないかと思います。