先日Rubyビジネス推進評議会主催の第3回Rubyビジネスフォーラムが大阪で開催されました。 Ruby言語開発者、まつもとゆきひろさんが、『インターネットが変えるソフトウェアとビジネス。Rubyを例として』と題した基調講演を行いまいした。 その内容を紹介します。
計算機としてのコンピューター
IBMの初代社長トーマス・ジョン・ワトソンの有名な言葉に、「コンピューターは全世界で5台くらいしか売れないと思う」と言ったとされています。 その数字は当時の計算技師の人数とENIACの計算性能から導かれた数でした。
ところが、今ではその数百万倍の処理能力をもつコンピューターが何億台もあります。 去年だけでPC出荷台数は3億台。スマートフォンとタブレットはそれを超える出荷がされています。 コンピューターは計算機としてのみ使われているわけではありません。
インターネットとの接続
今日、大阪まで松江から飛行機で来ました。 飛行機に乗ると、スマートフォンを機内モードに切り替える必要があります。 スマートフォンはインターネットと通信がとれなくなると、ほとんどのアプリが使えなくなります。 多くのアプリはサーバーと通信をしているのです。
ネットワーク駆動の社会が広がっています。 インターネットは、コンピューターとコンピューターをつなぐ世界的ネットワークです。 インターネットを介して、デバイスとデバイスがつながります。 例えば、トヨタのプリウスはコンピューターとも言えます。ワイパーの動いた量、GPSの情報をインターネットを使って集約することで、どこでどのくらい雨が降ったかを知ることができます。今後、さらに全世界に存在するたくさんのデバイスがつながっていくでしょう。
昔のコンピューター雑誌を開くと、超高速通信10kbps 19万8千円などと広告があります。 今では、100Gbpsの光回線を家庭に引けます。その差は1000万倍です。それが機材はレンタル、月々5000円前後で利用できます。 量は質に転換します。1965年Intelの創業者の一人ゴードン・ムーアの論文中に示したムーアの法則は半導体集積度は18ヶ月ごとに2倍になるというものです。 20年で1000倍以上、40年で100万倍以上になります。
このコンピューターとネットワークの変化は、多くの変化をもたらしました。 メディア、クラウド、ビックデータ、そしてオープンソースとそのコミュニティの変化です。 そして、Githubを中心とした、 ソーシャルコーディングを可能にしました。 ソフトウェアの開発の仕方も変わりました。
これからの産業の変化
アメリカの調査会社Gatnerのレポートに、2020年にすべての産業はIT企業になるというレポートがあります。 それはITがすべての産業において、クリティカルな内容になるということを意味しています。 そうなれば、ソフトウェアビジネスはどうなるのでしょうか。
ソフトウェアビジネスは、受託やパッケージ等様々な形があります。 その中で、日本では多くのソフトウェアビジネスに関わる会社様が受託開発を行っています。 ところが、すべての産業がIT企業になると、ITは企業にとってコアコンピタンスであり、差別化の要因になります。 コアコンピタンスはアウトソーシングできません。
今ソフトウェアはソフトじゃない
ソフトウェアとその開発は勘違いされたままです。ソフトウェアは今ソフトではありません。 ソフトウェアには構造物や物体はありません。ベルトコンベアー上で組み立てられる製造がありません。
ソフトウェアにおける製造はダウンロードやコピーの部分といえます。 ではソフトウェア会社は何をしているのでしょうか。ソフトウェア会社は設計をしているのです。 製造業との比較における、このズレに注意する必要があります。
建築と比較されることもあります。ソフトウェアには建築ほど、物理的限界がありません。 それはソフトウェアの複雑さにつながり、複雑さは依存関係を産みます。 その結果、変化に弱くソフトウェアはソフトじゃなくなっているのです。
ソフトウェアは錆びませんが、ソフトウェアは変化に対応する必要があります。 OSや、ビジネスモデル、法律、税率が変わっていきます。 ソフトウェアは変化に対応する必要があるのです。それにはどういう方法があるでしょうか。 スパイラルモデルでしょうか、アジャイル開発でしょうか。
ソフトウェアの複雑さ
ソフトウェアの複雑さは、社会、そのルールから来ます。さらにその複雑さは人間の要求や、心理が曖昧で複雑であることに由来します。 受託開発はとてもWin-Winになりにくいものです。 従来型受託開発の限界は、プロジェクト開始時の無知や想像力の限界、要求の曖昧さにあります。 プロジェクトの開始前には、本当に僅かなことしかわかりません。
昔コンピューターの役割は計算機でした。その当時コンピュータでやりたいことは明確でした。 今は違います。役立つのかどうかわからないものを作らなければなりません。事前に必要性が明確でないもの作るのです。 これに対応する方法は一つしかありません。トライアンドエラーです。試行錯誤を繰り返しす必要があります。 プロジェクトは自由に開始され、誰のアイディアがいいのか、わかりません。それには変化を受け入れる、幅広い協力体制が必要です。
これからのソフトウェアビジネスのヒント
そのヒントは、インターネットがもたらした、ソーシャルコーディングやオープンソース開発にあるのではと思います。 インターネットはオープンソースで動いていると言うっても過言ではありません。スーパーコンピュータのランキングで使用されているOSの97%はLinuxです。 オープンソースは広く利用されています。 オープンソースという言葉は1998年に誕生しました。 それまではフリーソフトウェアと呼ばれていました。それはリチャード・ストールマンが提唱した、 ソフトウェアの自由 を求めたものでした。 中身が見れる、改造できる、おすそ分けが出来る、そしてそこから学ぶことがができる ソフトウェアの自由 を求めました。 しかし、そこにビジネスの視点が必要です。
オープンソースとビジネス
オープンソースはソフトウェアビジネスを難しくしたとおもいます。しかし、その流れはとめることはできません。 その流れに乗るしかありません。新しいビジネスモデルを考えなければなりません。 多くの企業で、今オープンソースは暗黙のアライアンスとして機能しています。差別化部分のみ独自実装し、他はオープンソースで共有されるのです。
ではソフトウェアビジネスはどうすればいいでしょうか。 今後は二極化すると考えられます。プラットフォームを開発するか、アプリ(スマートフォンのそれを意味していません)を開発するかです。 プロトタイプをつくり、それを何度も捨てなくてはなりません。アジャイルな方法を取り入れる必要があります。予定は確定されないのです。 ユーザー主体の開発、使用者であり開発者になることが有効です。プラットフォーマーは常にオープンソースとの競争になります。
Rubyについて
RubyはJavaと同じ時期に開発が始まりました。Javaは企業であるサン・マイクロシステムズが開発をしていました。一方Rubyは私が個人で始めた言語です。 JavaはいまC++で書かれたコードよりも実行速度が早いこともあるほど、最適化されています。 大企業で開発される言語Javaに対し、Rubyは機能や性能では勝負をしませんでした。使い勝手で勝負をしたのです。人間を選びました。 そして今、コンピュータに対して、人間のコストのほうが高くなりました。 アジャイル宣言にはRubyの開発者やRubyへの好感をもつ人が多く関わっています。Rubyはアジャイルと相性がいいのです。
Rubyは個人プロジェクトとして始まりました。 スノーボールエフェクトをご存知でしょうか。雪山に小さな雪の玉を投げるとどんどん転がっていき大きくなります。 明日からでも、あたらしい小さな雪玉を投げることができます。