世界のソフトウエア開発の主流は「オープンソース」。

最近はICTの業界も世代変わりの時期なんだなぁ、と、思うことの大きな変化に「オープンソース(Open Source Software – OSS)」がある。明らかに、旧世代と新世代の溝はここにある。実際、世界的にはOSSのソフトウエアを使うことが「主流」になりつつあるんだが、日本のメーカー系のソフトウエア開発者やその周辺は、いまだに1からコードを書く「スクラッチ」に普通にこだわっていることが多く、おそらく、今後はさらに日本のソフトウエアは大きく世界から遅れていく可能性が高い。

OSSで作られた製品は実は普通に身の回りに数多い。代表的なものはプリンターのファームウエアや、デジタル家電、最近はAI搭載スピーカー、そして、インターネットとの接続口に必ずあるルーターなどは、OSSを大幅に取り入れているものとして、知られている人には知られている。実は数多く、OSSは使われているのだが、多くの人は知らない。また、Webの開発で使われるCMSも、ほとんどOSSである。こちらはインターネット上に直に晒される環境のため、世界中野多くの人が使い、多くのエンジニアが常に監視しており、セキュリティは特に気をつけて開発されている。有名なOSSは、毎週のようにセキュリティ・パッチ(セキュリティの更新のためのプログラム)が配布されている。

物事の変化は「メリット」と「デメリット」の天秤で、「メリット」のほうが明らかに大きい場合、新しい変化が訪れる。日本で変化が起きないのは、日本という土地では、「デメリット」のほうが大きい、と考えられているからで、ある意味日本のICTの遅れというのは、「当然」と言われるのかもしれない。なかなか世界の流れに乗って「変わる」ことができない社会が存在し、その社会の中ではOSSのような新しい変化はなかなか市民権が得られないのだろう。しかしながら、ICTについてはインターネットなどグローバルなものがベースにあるので、OSSを当たり前に使った開発体制や製品が世界的にあふれている昨今では、明らかにOSSへの対応がなければ、日本のICTが全体として世界に遅れた「ガラパゴス」になることは避けられないように思う。

特に、「人工知能」「IoT」などの分野は明らかにOSSの独壇場であり、OSSなくしてこれらのシステムの開発はありえない。

OSSを使うメリットは以下だ。

  1. ソフトウエア開発の時間が大幅に短縮される。
    ソフトウエアの開発のコストはすべて「人件費」である。それはそのまま「開発にかかる時間」であることは言うまでもない。
    「半製品」として、あるいは「パーツ」としての「OSS」を使うことによって、当然ソフトウエア開発の時間が(一からソフトウエアを作るよりも)短縮される。
  2. 世界中のエキスパートが開発や検証に関わるためセキュリティが向上する。
    実はOSSが使われる大きなメリットの2つめはセキュリティの向上だ。世界中のエンジニアが「検証」しているのが現在のOSSであり、そのため、ネットのあちこちにOSSのセキュリティ情報があり、より安全なシステムを構築できる。また、セキュリティホールが見つかった場合でも、電光石火の速さでその情報がネットを駆けまわり、多くの人に周知され、あっという間に「修復」される。多くはその週のうちに、無料でセキュリティパッチが配布される。

それにしても、OSSへの「恐れ」を多く持つ日本のソフトウエア関係者は多い。なぜだろう?

日本でOSSが流行らないわけ。

  1. 「現在のOSS]と「フリーソフトウエア」を間違えている。
    現在無料で入手可能なOSSはPCのエンドユーザーが使っていた「フリーソフトウエア」とは全く別だが、これらが混同されている。
  2. 日本の開発者が時代についていけていない。
    日本の、特に日本のメーカーに勤務するソフトウエア開発者の多くは、若いときの経験が現在に生きるものだ、と思っているだろうが、ソフトウエアの世界では5年もたつと5年前の話は「弥生時代」である。10年前は「縄文時代」くらいの感覚の差がついてくる。特にここ5年での動きは非常に急であり、それ以前のICTの専門知識だけでは全く理解できないことが多い。この世界で仕事をする以上、常に勉強を怠るわけにはいかないのだ。
  3. モノ作り」への執着がOSSへの理解を拒否している。
    ソフトウエア開発は「モノ作り」「製品開発」だと思っているのは大きな間違いである。実際のところ、ソフトウエアは通常において不可視であって、非常に複雑なものだ。性質としては、人間社会とキカイの社会の中間地点に存在するものなので、製品として作ったつもりのものでも、リリース後に、常に新しい状態に保っておく必要がある。最近のWindowsなどのOSでのアップデートを見るとわかるだろうが、あれは「Microsoftの技術者の技量が落ちたから」長いアップデートの時間をとっている、というものではない。OSは「完成品」ではなく、社会とつながったものなので、社会の動きに合わせて、常に変わっていくものなのだ。つまり、世界的に、現代のソフトウエアというものは、従来の「モノ作り」の枠内で考えてはいけないものだ。

先進的なOSSを使ったソフトウエアの開発は、(1)まず機能要件をまとめた後、(2)その機能に必要なOSSをGitHubなどのリポジトリで探し、(3)実際に組み合わせて作ってみて、(4)機能の足りないところや不都合なところは独自開発する(多くはユーザーインターフェイスなどがそれに該当するだろう)。そういう流れになっている。既に10年ほど前から、入れ替わりの激しい家電である「テレビ」などは、OSSの塊である、と言ってよい。テレビを買うと、ついてくるマニュアルの後半分が全部英文のOSSのライセンスの表示に使われている、なんてことも多くなった。

最近多く使われている人気のOSSのライセンスページを開くと、それ自身が多くのOSSを使っていることがわかる。OSSがOSSを産む時代に入っており、ここで既に日本の多くのガラパゴスなソフトウエア開発は、数歩遅れている。開発者には「このOSSは、示されているライセンスに従えば、どのように使うのか?」などの法的な問題の理解も必要になっている。

時代は差別化が図れなくなったハードウエアの時代ではない。ソフトウエアが要の時代になっている。そしてそこには多くのOSSが当たり前に使われている。古い時代のソフトウエアエンジニアの時代は終わっている。

日本の某自治体、某役所では「OSS使用禁止の開発をお願いする」などという時代錯誤なものもあるようなのだが、明らかに的を外している、と言わざるを得ない。いや、古い時代のSEしかいないようなメーカーの人に騙されて、高い開発費を払わされていなければいいんですけど。