WirelessWire News Technology to implement the future

by Category

ネズミ 手 乗る イメージ

牛の背に乗るネズミになれ! ソフトウェア思考のススメ

2020.01.04

Updated by Ryo Shimizu on January 4, 2020, 14:06 pm JST

昨年一年間をかけて、僕は日本の大企業群を研究した。
大企業の中心で働く様々な人にインタビューし、彼らの会社が技術をどう捉え、ビジネスをどう捉えているかを知った。

どうしてこれほど海外のネット企業勢の蹂躙を許しているのだろうか、という疑問に答えるためだ。
そしてわかったのは、根本的に日本のビジネスシーンでは「ソフトウェア」が理解されていないということだった。

プログラミングではない。ソフトウェアである。

アメリカのネット企業のトップも全員がプログラマーというわけではない。
しかし、彼らはソフトウェア的発想、ソフトウェア的思考法というものをごく当たり前のように身に着けている。
これを僕は「ソフトウェア思考」と呼ぶことにする。

逆に言うと、ソフトウェア思考を持っていない企業は、海外にあったとしてもやはりソフトウェア思考をベースとするネット企業に蹂躙されている。簡単に言えば、ソフトウェア思考を持たないイエローキャブは、ソフトウェア思考を持つUberに蹂躙されている。

ソフトウェア思考を持たなかったブロックバスター(レンタルビデオ店)やタワーレコードは、ソフトウェア思考を持つNetflixに蹂躙された結果倒産した。

つまり、ソフトウェア思考を持つ企業群に既存の大企業群が蹂躙されているのは、なにも日米間だけの問題ではない。全世界的な流れである。

その意味では、やはりプログラマー出身の雷軍が率いるシャオミはソフトウェア思考を持っており、HUAWEIは持っていない。
今やソフトウェアは人類文明の本質であり、ソフトウェア思考を持たない企業は持つ企業に蹂躙される。

ところがソフトウェア思考は、スマホにアプリをインストールするように、どの企業にも簡単にインストールするわけにはいかない。
とりわけ、日本の大企業群ではソフトウェア思考を企業に取り込むのはほとんど不可能に近い。

なぜならば、日本の大企業群の大半は、製造業をベースとして組織全体が構成されているからだ。
日本発のグローバルブランドは、電機メーカー、カメラメーカー、自動車メーカー、ゲームメーカーであり、すまわち製造業しかない。

そして日本語で言う「技術」という言葉は、基本的に製造業で使われる言葉である。

したがって、日本で言う「技術力」とは、製造技術力であり、これは全く同じ製品を安定的に継続的に供給し続ける能力のことである。個々の部品の精度と性能を高めるのが技術であり、ロードマップ化可能なものである。

ところが、ソフトウェア思考には「技術力」という概念は登場しない。
ソフトウェア思考にとって、優位性を確保するのに重要なのは「天才的発想」と「超人的忍耐力」の2つだけである。

なぜなら、ソフトウェアはデジタルコピーされることが宿命づけられているからだ。
つまり、製造業でいう「技術力」はソフトウェアには全く必要がないどころか全く無関係な概念なのである。

にもかかわらず、日本の投資シーンでは頻繁に「御社の技術力は?」と聞かれることがある。
たまに聞かれると答えに詰まる。ソフトウェア企業には「技術力」という概念がないからだ。

時折「当社はRubyを採用しているので技術力があります」というトンチンカンな売り込みをしかけてくる会社がある。
僕に言わせれば単一言語しか使えないのは日本語しか使えないのと同じなので「当社は日本語を採用しているので文章力があります」といっているのと同じで全くナンセンスなのだが、技術音痴ほどソフトウェアやプログラマーには技術力という謎のチカラがあると信じたがる。そんなものはない。

また、技術に疎い起業家は「天才プログラマーを一人CTOとして雇ったからうちは万全だ」という自慢をする。
誤解を恐れずに言えば、全てのプログラマーは天才であることを宿命づけられている。だからこの言葉も、「人間を一人雇った」くらいの意味でしかない。

天才でないプログラマーがいるとすれば、それはキーパンチャーと呼ばれるだろう。
プログラミングとは天才的発想の連続であり、無から有を生み出し、非連続的なジャンプによって新しいものを作り出す。

最も知的労働から遠い仕事として、たとえば郵便物の宛先を手書きする仕事があるとしよう。
指示された文字を指示された通りに封筒に書くだけの仕事であり、ほんの半世紀前までどの会社にも実際に存在した仕事である。
現在では郵便物の宛名を書くのは基本的に人間の仕事ではなくなっている。つまり、現在は知的労働とは見なされていない。

プログラマーは、宛名を書く仕事と同じように言葉を紡ぐ仕事であったとしても、一切の誤魔化しや遊びの効かない、物言わぬ機械をプログラミングする仕事だ。プログラマーの究極の理想は、プログラミングしないことである。必要な道具を必要なタイミングで持ってきて使えば良い。これを「ハック(hack)」と呼ぶ。

今やほとんど全てのソフトウェア技術は無料または限りなく無料に近いかたちでつかうことができる。誰かの膝の上で書かれたコードが地球上のあらゆる場所で必要に応じてつかうことができる。

つまり、ソフトウェアにおいて技術力というのは差異化要素になり得ない。
あるのは、それまで誰も思いつかなかったような道具の新しい使い方を閃く天才的発想と、誰でも答えと実現方法を知っているが面倒すぎてやらないことを敢えてやり遂げる超人的忍耐力だけである。

したがって、本来は誰でも天才になれるし、規模の大小に多少の違いはあるとしても、プログラマーを職業とする人間は、全て大なり小なりの天才的発想を持っている。

そうでなければ、フィンランドの大学生がほとんど一人で作ったOSが、これほど世界で使われるわけはないし、島根県でやはり一人で作られたマニアックなプログラミング言語が、デンマーク人のプログラマーに見いだされ、世界中を席巻するフレームワークになるはずがない。

もし「技術力」なるものがソフトウェアにあるとすれば、一人でこうした偉業を成し遂げることはほとんど不可能である。
だから「技術力」でソフトウェア企業が比較されることはほとんどない。あるとすれば、単にソフトウェアの性能とか、信頼性とか、極端に低い実装能力(技術力と混同されがちだが違うものだ)に対する不安があるだけである。

ソフトウェアにおいてきちんとしたソフトを書けるのは小規模なチームであることが圧倒的に多い。大規模になればなるほどソフトウェアの信頼性は揺らいで行く。誰も全貌を把握できないような規模のソフトウェアは、たいていうんざりするようなバグを大量に抱えている。

最近のWebサービスがマイクロサービス化に向かっているのも、単体のソフトウェアのサイズを小さくすることで見通しを良くし、開発サイクルを高速に回すことができるからだ。

ソフトウェア工学というのは、基本的にはソフトウェアのサイズを小さくし、わかりやすくするために進歩してきた。
その根本にある考え方は、「Ride on the shoulder of giants(巨人の方に乗れ)」というもので、タダで使えるものはできるだけ使うという発想である。

この対極にある考え方が、NIH(Not Invented Here)であり、これは製造業などでは製造技術の特許が多く絡むため、製造業においてはある程度は必要な考え方だった。

ただ、ソフトウェアの世界でNIHは根本的に否定されており、より過激な思想であるDRY(Don't Repeat Yourself;自分でやったことを繰り返すな)原則や、KISS(Keep It Simple, Stupid)に発展していく。

昨年末はPreferred Networks(PFN)社が自社開発の深層学習フレームワークであるChainerを棄て、PyTorchに移行することを表明して世間を驚かせた。

Chainerは登場時にはLUAという特殊な言語を使うtorchと同じ流儀でデータアナリストに人気の高いPythonでプログラムを書ける画期的なフレームワークとして熱狂的に支持されたが、本家のtorchがPython版のPyTorchが登場してしまうと、アイデンティティ・クライシスに陥った。

PFNはtorchをヒントにChainerを作り、FacebookはChainerから学ぶべきことを学び、PyTorchを完成させたが、これについて誰も非難されることがないのがソフトウェアの世界である。

実際にはソフトウェアの世界で「独自技術」というのはほとんど価値がない。独自技術よりも広く普及した技術(デファクトスタンダード)のほうが価値が高い。そのためには、ソフトウェアのエコシステムを持つことが大事である。僕はこれをロジスティクスと呼んでいる。

たとえば、ミドルウェアで影響力を持つためには、まず有償でも無償でもいいからミドルウェアを使える状態にして、それを使うためのマニュアルや教育プログラムを作る自由と販売する自由を外部に与え、コミュニティを構成するために積極的にイベントを開いたりコンテストを開いたりしてそのミドルウェアを使うことで使う側がスターになれる仕組みを作ることが大事である。書店の本棚に1コーナーができるくらいの世界がうまれると、ミドルウェアを提供する会社、それを使って仕事をするプログラマー、使い方を教えるプログラマー、本を書くプログラマー、というロジスティクスを中心としたエコシステムが産まれる。

これがソフトウェア思考の中心にある考え方だ。

製造業における通常の営業活動では、こうした発想がまったくない。
事業計画は出荷台数と原価をベースとして立てられ、事業性が判断される。これは製造業における製品開発のサイクルが数年に及ぶのが当たり前で、なおかつ投資額が数十億から数百億規模になってしまうからだ。

同じ尺度でソフトウェアを捉えると、基本的には全くうまくいかない。
ソフトウェアの世界では、常に何が起きるかわからない。作る前から何年先までも事業計画を描くというのは不可能だ。
昨日までガレージでマリファナを吸ってた連中が、マリファナを吸いながら書いたコードで翌週には世界的大スターになっている世界である。

ソフトウェアの世界では、誰かを説得している時間さえもったいない。その相手が投資家であれ、銀行であれ、例えば上司や当のソフトウェアを作る社員本人であっても、一人の天才的発想を細かく説明して説得してまわるというのは不可能に近い。というわけでしばしばスポンサーや作業者への説得は後回しにされる。

ソフトウェアのディレクターは「これが欲しい」といい続ける。その「これ」は、具体的な画面と、操作性と体験のイメージが最低でもミリ秒単位でわかっていなくてはならない。理想はマイクロ秒単位である。

そしてプログラマーがプロトタイプを作り、プロトタイプに触れてディレクターは方向性を修正する。
この繰り返し(イテレーション)がソフトウェアを高めていく。これを決定づけるのはセンスだけであってやはり技術ではない。
実装能力の差はプログラマーによって異なるので、優秀なプログラマーを確保するのはソフトウェア企業にとっては生命線だ。
優秀なプログラマーであるかどうか、見極めるべきは発想力と忍耐力である。その両方が超人的であることが望ましい。

どれだけ天才的な発想を持っていても、忍耐力のないプログラマーは結局のところ実装能力が低い。
ちょっとややこしいバグが出ただけですぐに尻尾を巻いて逃げてしまう。そんな人間に良いソフトは書けない。

また、どんなに忍耐強いプログラマーでも、天才的発想が伴なければ、ただのウスノロにすぎない。
したがって、全てのプログラマーは天才的発想と超人的忍耐力を持たなければならない。

もはや世間で「技術力」だと思われてるものと、実際のプログラマーの能力に何の関係性もないことがわかるだろう。
プログラマーは必要に応じて使うプログラミング言語を変えたり、組み合わせたり、場合によっては作り出したりしなくてはならない。

「○○が使えるから技術力があります」というのは寝言でしかない。
そんな根拠のようなものは存在しない。

錦織圭がなぜテニスが強いか?「テニスラケットを持っているから強い」わけでないことは誰にでもわかる。

プログラミング言語もフレームワークも、無数にある道具の一つに過ぎない。
単に道具を持っていることは、それを世界で一番使いこなすことと同じ意味にはなり得ない。

イエローキャブは、自動車を買って、黄色に塗って、料金メーターを装着して、運転手を雇い、ニューヨークの町を走らせる。
これには膨大な投資が必要だ。製造業ではないが、装置産業的な発想である。

ブロックバスターは大量のビデオソフトを買い、あちこちに店舗を構え、店員を雇い、新作ビデオを一本2ドル99セントで貸し出す。
やはり膨大な投資が必要になるし、回収までは途方も無い時間がかかるだろう。

Uberはシールとアプリを用意して運転手になりたいユーザーと客になりたいユーザーをマッチングさせた。
Netflixは店舗を用意するかわりに、Webサイトを開き、客から注文されたDVDディスクを郵送するビジネスからスタートした。この商売の場合、極端に言えば注文が来るまでDVDディスクを用意する必要すらない。どのみち郵送なんだから。郵便局に行く途中で買えばいい。

やってることは極めて原始的だが、これがソフトウェア思考である。
共通するのは、「全部自分で用意しない」ということだ。

どちらも最終的なインターフェース(界面)だけに注意を払っている。
たとえば現在のNetflixにおけるインターフェースは、テレビリモコンについてるNetflixボタンやスマホアプリ、Webサイトだけではない。

映像の調達のための映画会社とのインターフェース、独自の映像のための番組制作会社とのインターフェース。そうしたインターフェースにのみリソースを集中することで、短期間でビデオレンタル屋から世界的メディア企業へとのし上がった。

Netflixの隆盛が意味することは、これまでイニシアチブを持っていた製造業が、それをNetflixに明け渡すということだ。
少し想像してみて欲しい。

Netflixボタンがリモコンについているテレビは、Netflixが製造工程に一部影響を及ぼしている。
Netflixボタンをつけるということは、当然、Netflixが視聴できるということだ。

Netflixが視聴できるということは、Chromiumが動作しているのと同じである。東芝のテレビだろうがHUAWEIのテレビだろうが、PS4だろうが、Netflixが再生できるものは、全てChromiumで動いている。

Chromiumは、当然、Netflixが作ったソフトウェアでもなんでもない。むしろほとんどはAppleとGoogleが作っているオープンソースのソフトウェアだ。それは今や全てのWebブラウザのコアになっている。

テレビ製造会社は、わずかなお金と引き換えにNetflixボタンを大きな疑問を持たずに導入している。
しかし実際に何が起きているのかと言うと、王座の移管である。

Netflixは今のところ有料の番組配信サービスに過ぎないが、いつでも好きなタイミングで無料にできる。
今はドラマやリアリティ・ショーがメインだが、いつでもニュース番組を流せる。

今は一方通行の番組しか流れていないが、いつでも全く別のWebアプリケーション、たとえばeメールやワードプロセッサやブログや動画編集ソフトを配信できる。YouTubeのように、動画投稿サイトすらスタートすることができる。パーミッションがあるから、ポルノも好きなタイミングで配信できる。

もちろんゲームソフトも配信できる。Googleのように専用の端末を買う必要すらない。
なぜなら今すでにゲームは動作しているからだ。
とある製造業の人たちにNetflixの「バンダースナッチ」を知っているか聞いたら、誰一人として意味を理解していなかった。

「ストーリーとしてはありきたりだよね」みたいな感想が返ってきてびっくりした。ぼんやりしすぎである。
あれはデモンストレーションに過ぎない。
彼らはいつだってStadiaやPlayStation Nowを上回るゲームを追加設備なしに配信できる。

気がつくと、世界中のテレビはNetflixの端末でしかなくなっている。
ビデオデッキも、TVチューナーも、ブルーレイレコーダーもゲーム機も、全てNetflixに統合され、ユーザーはPCやテレビやスマートフォンといった、身の回りにある全ての「画面」でNetflixにアクセスできる。

あらゆる視聴体験はNetflixにアクセスするだけで事が足りるようになる。B-CASカードも不要になり、チューナーも不要になり、より低価格でシンプルな第三国製の廉価なテレビだけで十分になるだろう。すると、今テレビやチューナーやビデオデッキを売っている会社は、早晩、売るものがなくなる。

実際にNetflixがそれをやり遂げるのか、それともどこかで挫折するのかはわからないが、重要なのは、「やろうと思えば、いつでもできる」ということだ。

戦略の最優先思考は「敵がなにをやりそうか、ではなく、やろうと思えば何ができるかを考えろ」であり、いまやNetflixはやろうと思えばいつでも世界のネットメディアを上書きできるくらいのポジションに来ている。

ちっぽけなソフトハウスに過ぎなかったMicrosoftが、巨大企業であるIBMからイニシアチブを奪ったのも、製造業であるIBMには、ソフトウェア企業であるMicrosoftの思考法を理解できなかったからだ。MicrosoftはIBMという巨人の肩で存分に暴れまわり、あっと言う間に主導権を奪った。

ちょうど今年はねずみ年。言うまでもなく十二支の最初の動物である。

なぜ小さなネズミが一番なのか。牛の背に乗っていたからだ。ゴール直前に牛の背から飛び降りて、一番になった。
ネズミには、牛の背に乗るという十二支の中で惟一の天才的発想と、牛の背から落ちないようにしがみつくという超人的忍耐力があったのだ。

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。

RELATED TAG