一年前半、enchantMOONというハードウェア製品を発売すると宣言したときに、「どうしてソフトウェア企業がハードウェアを作るのですか?」という質問がたくさん寄せられました。
その疑問は、もっともだ、と思うと同時に、不可解だ、とおも思いました。
なぜなら、ハードウェアとソフトウェアの境目は、いまとても曖昧になっているからです。
私がハードウェアビジネスとは本質的にソフトウェアの差別化にある、ということを最初に意識したのは、スティーブ・ジョブズがMacのCPUをPowerPCからIntelに変えたところでした。
本来、CPUが違うということは、コンピュータとして根本的なアーキテクチャが異なるということで、人間でいえば日本人とフランス人くらいは違います。喋る言葉(機械語)もまるで違いますし、ふつうに考えたらCPUを変えるメリットはありません。しかし、Intelは大量に生産され消費されていたため、低消費電力で低価格なものが次々と発売される一方、PowerPCは計算能力は高いものの、消費電力や価格の面で競争力に欠けていました。
それまでPowerPCだったCPUをIntel製のものに変えるということは、いわば日本が突然、フランス語を公用語とする、くらいには無茶苦茶な話です。しかし、Appleはその無茶をやり切りました。Rosettaという、翻訳プログラムを用意することで、当面PowerPC向けに書かれたアプリケーションもIntel上でエミュレーションできるようにするなど、数々の工夫が施され、なんとか使えるようなものになりました。
この構成をとることにより、Macは少なくともハードウェア的には、Windowsマシンとほぼ同じものになったのです。
それはほどなくしてWindowsをMac上で動作させるBootcampという仕組みによっても証明されました。
つまりIntel化されたMacは、ハードウェア的には単なるWindowsマシンに過ぎないのです。
しかしMacは圧倒的な存在感を持って販売され、今なおファンを獲得し続けています。
Macにとって重要なのは、MacOSというソフトウェアであり、PowerPCというハードウェアではなかったわけです。
その時代に応じて常に最適なハードウェア構成を選択する自由度こそがMacというOSの強みに繋がって行ったわけです。
iPhoneやiPadで動作するiOSも基本は同じく、MacOSXです。
ただしCPUはARMになっています。
CPUやハードウェア環境が違っても、開発するためのプログラミング環境はほとんど変わりませんでした。
MacOS向けのアプリもiPhone向けのアプリもともにXcodeと呼ばれる環境で開発します。
Xcodeの世界にいる限り、iOS向けアプリの開発経験がある人はMacOS向けアプリの開発もスムーズに行うことができます。
MacOS向けのアプリを開発する人は世界中にいましたから、AppleがiPhone向けアプリ開発にXcodeを採用したことは、初期の開発者の獲得に大きく貢献しました。
そして今や、誰もがiOSとMacOSを自在に使い分けています。
そのCPUが違うことなど、まるで問題になりません。
Appleが産み出していた本質的な価値は、OSというソフトウェア、そしてそれが実現するアプリケーションのパラダイムや、開発環境といったもので、それがある限りはCPUというハードウェアはあくまでも従属されるものに過ぎなかったわけです。
ジョブズが復帰する前のAppleは互換機を認める方向にシフトしていましたが、ジョブズはそれをやめさせました。
それは互換機が存在すると、互換機で動作させるためのソフトウェア開発コストが異常にふくれあがってしまうからです。
事実、MicrosoftがOSの開発に膨大な社員とリソースを必要とするのはそれが理由です。
世界中に無数に存在する部品の、無限大とも言える組み合わせ全てに対応しなければ製品が発売できないからです。
当時瀕死だったAppleが生き残るためには、互換機ビジネスを展開してリソースを浪費するよりは、本質的な価値、すなわちソフトウェアの価値を最大化するためにハードウェアを含めたユーザー体験(UX)を絞り込む必要があったのではないかと思います。
従って、ハードウェアの外観、つまりデザインそのものもひとつのソフトウェアである、とAppleは定義し、OSからキーボードの先端、つまりユーザに直接触れる部分に至るまでを設計したのです。
最近になると益々ハードウェアとソフトウェアの違いは少なくなってきます。
3Dプリンターが低価格になり、いずれオフィスや家庭に一台ずつ、なんらかの形で3Dプリンターが配備されるかもしれません。
そうなると、次に起きるのは、ものをお店に買いに行ったり、Amazonで注文したりするのではなく、モノのデータをダウンロードして自宅で出力するというライフスタイルです。
ダウンロードしてきたモノのデータを自在にカスタマイズして、自宅で好みの形状のコップやお皿を出力して使えるというわけです。
こうなると、お皿やコップを作って売っていた製造業という仕事は、お皿やコップのデザインの3Dデータを売るというソフトウェアの仕事へと変化します。
コンピュータの内部部品も例外では有りません。
FPGA(フィールド・プログラマブル・ゲート・アレイ)という、動的に回路書き換えが可能なチップは1980年代から発売されていました。
これは通常のマイクロチップとは異なり、後から動的に回路情報を書き換えることができるというチップです。
近年はこれがかなり高度化し、最近ではFPGA上にCPUを含めたコンピュータ回路を丸ごと構成できるようになりました。
さらにオープンソースのCPUというのも登場し始めています。
これをカスタマイズしたり、必要な個数だけFPGA上に書き込んだりすることで必要なシステムをソフトウェアだけで構築することができます。
FPGAの設計はVerilog HDLやVHDLという一種の並列プログラミング言語で行います。
もともとCPUを構成するのは論理回路ですが、VHDLを使ったプログラミングではそれがより一般化され、高度な回路を比較的簡単に書けるようになっています。
また、90年代後半からは、FPGAを動的に書き換えることでアルゴリズムに対してハードウェアを最適化するようなことも試みられています。
少量生産された1チップMSXなど、FPGAを大胆に活用した例はいくつかあります。
最近ではALTERA DE0の開発キットが1万5千円前後で販売されたりしていて、「ちょっと気分転換に週末は秋葉原でFPGAを買って来てCPUでも作ってみようかな」という、一昔前から考えたらかなり贅沢な趣味まで堪能できます。
こうなると、もはやハードウェアとソフトウェアは区別をつけるのが難しくなってきます。
もちろん製造工程や製品化までの道のり、販売後のサポートなど、ハードウェアビジネス固有の問題はありますが、ハードとソフトを垂直統合した製品化への道のりは、もう始まっているのではないかと思うのです。
今、ハードウェアを販売している会社でも工場を自社で抱えているケースは稀です。
ソニーのPS4だって、実際の設計は台湾の会社で、製造は中国で行っています。
ここでソニーが提供する本質的な価値は、「プレイステーション」というフォーマットと、アーキテクチャというソフトウェアだけなのです。
むしろハードウェアの製造工程をソフトウェア化していくことで、オープンソースとして叡智を共有し、それを土台としてさらなる高みを人類全体で目指して行くというのは、いかにも現代的とも感じます。
というわけで、今はソフトウェアとハードウェアの境界線はかなり曖昧になってきているのです。
だからソフトウェア会社がハードウェアを作ろうとする試みは、これからもどんどん増えて行くのではないかと思います。
おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)
登録はこちら新潟県長岡市生まれ。1990年代よりプログラマーとしてゲーム業界、モバイル業界などで数社の立ち上げに関わる。現在も現役のプログラマーとして日夜AI開発に情熱を捧げている。