AIもオープンソースだしね

いま、ソフトウエアの開発のほとんどは「オープソースソフトウエア(OSS)」を組み合わせて作る。そして、そのOSS自身がまた、他のOSSの組み合わせでできていたりする。ソフトウエアは巨大になり、複雑になっている。この流れは止めることができない。

そして、OSSだって人間の作るものだから、バグがあったりするが、そのバグを直すなんてのも、あまりに膨大であるためにできなくなっていたりする。つまり、プログラマがソフトウエアの1行1行を知っている、という時代ではない。そのため、OSSの実行中に停止するなどのトラブルがあれば、そういうシチュエーションを回避する方法を探る。ソフトウエアそのものを書き換える、なんてのは全体のバランスを崩すので、できなかったりするのだ。

先日も、あるOSSを使うことがあって、それがちゃんと動いていれば便利なのだが、そのソフトを呼んだきり返ってこない、なんてトラブルがあった。しょうがないので、使い方を変更し、だましだまし使う。中身を見るなんてのは、コスト(人件費)が高くなるから、まずやらない。

おそらく、某巨大OS会社のアップデートなどでOSそのものが起動しなくなる、なんてトラブルは、そういうことにも起因しているのかもしれない。であればそれを直すのは多大なコストがかかりすぎ、誰もやらない。

ソフトウエア開発の時代は変わった。しかし、それにちゃんとついていける日本のソフトウエア開発会社も、人もいない。

ソフトウエア開発崩壊の日が近いのかもしれない。そして、今やデータベースもOSもAIも、オープソースであることが当たり前になっている。


 

ITの業界の現場と「一般人」から見えるもの

どんな専門の業界でもそうなのだとは思うが、内部から見ている人間と、それを外から見ている人間では、その中間地点にある物事の見え方がまるで違う。どちらが悪い、どちらが良い、ということではないのだが、どちらが認識不足かというと、内側から見る人と、外側から見る人の認識が違うのは当たり前、やっぱり内部から見ていた人のほうが、中身は良く知っている、ということになる。

最近の世界のプログラム開発の主流はオープンソースに変わってきた。ちょっと古い人だと、その世界がどう言う世界かわかっていない。それなのに、新しい人はオープンソースで開発をする。このギャップも出てきた。オープンソースでモノを作る時代になれば「バグ消滅曲線」とかそういう従来の「基準」が役に立たなくなることは言うまでもない。

たとえば、ルーターのような製品、Google Homeのような製品は、内部はオープンソースの塊で、それをいかに使うか、という技術は非常に大切になる。まずはどこにどういうオープソース資源があるかを知らないと、見積もりさえできない。世界の最新のプログラミング事情を知らないと、全く役に立たない。IoTも今やオープソースの塊だから、やはりオープンソースでの開発をやったことがないと、全くできない。

ちなみにオープソースを「プログラミング技法」などと言っているあいだは、全くこの流れについていけないと思って良いだろう。オープソースは現在のハイテク技術の根幹を成す「ソフトウエア」の開発において、「技法」ではなく、それよりも遥かに重要な「思想・哲学」である。そして、それは実際に手にして触った者しかわからないものだ。しかし、これなくして、今日のITやIoT、人工知能システムなどは全く成立しない。IoTのプロダクト等を作るには、その思想を取り込んでいることが求められる。

この程度は作るほうの人間にとって必須の知識やスキルなんだが、ちょっと古いプログラミングしか知らない技術者が混じっていると、そこで、コミュニケーションがとれず、混乱する。数年以上前の知識しかない技術者や管理者はいるだけ開発の阻害要因であって、早く現場から消えてほしい、となる。プロジェクトの管理者の技術スキルは非常に重要で、プロジェクトの成否を分ける。正直なところ、プロジェクトマネージャレベルでさっさとこういう話ができないで「教えてくれ」なんてのは論外だ。それだけでプロジェクトの足を引っ張っている、ということになる。そして、それを自分ではたいてい気が付かないから、始末に悪い。

さらに、こういうプロダクトを作る会社の社長などでも、全く内容についていけない、という人も論外だ。プロジェクトの進捗や、うまくいかないときになにが足りないのか?などの見識が即座に持てないからだ。技術者としては、意味がない人と仕事をしてもプロジェクトは失敗するだけだし、得るものもない。日本流のマネジメントで、こういう世界は回っていくわけがない。それでも流行っているから、ということで、やろうとしているのが、日本の役所とか古い技術職だった人たちの塊だが、正直なところ、その全てが時代遅れになっている、と言って間違いはない。

現代のプログラム開発、IT/IoT製品開発は、明らかに国際的な開発スピードの競争であって、そこに、日本的なのんびりしたジェネラリストが入り込む余地は全くなくなっている。

いまは日本が一番ではない。技術もお金も日本は中国などの後についていっている、金魚のウンチみたいなものだ。日本企業のお家芸、なんて言われていた液晶ディスプレイ技術もそうだ。今や8Kは中国の2社が独占と言っても言い過ぎではない。

まずは現状を見据え、できるところから、できるだけ新しい世界のトップクラスのやり方を真似るところから始め直さないと、日本のITはやはり危うい、と言わざるを得ない。

 


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

最近は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しかいないようなメーカーの人に騙されて、高い開発費を払わされていなければいいんですけど。

 


オープンソースの時代が始まったんだが。。。

Shinjuku/Tokyo

いやもう、とっくに「オープンソースソフトウエア(OSS)」をベースにして、全てのソフトウエアが作られる時代が2年くらい前からやってきていると思うんだが、いまだに、オープンソースで実際にシステムをどう作るかとか、ソフトウエアのライセンスの問題はどうするのか?とか、そういうまともな話が一向に出てこない。これは日本とか韓国ではけっこうあって、未だに旧来のソフトウエアの作り方の話ばかりしている「おじいさん」が多い。「多い」が、「ないわけではない」という感じではあるが、その程度だ。日本では。

実際、世界のソフトウエアは、オープンソースのソフトウエアを開いてみると、そのオープンソースのソフトウエアそのものが、他のオープンソースのソフトウエアの集合でできている、なんてのも当たり前になってきた。日本はふた時代くらい遅れているところが非常に多い。ものによっては、一行もソフトウエアを書くことなく、システムができあがる、ってこともある。それに抵抗のある人も多いんだとは思うけれども、それで生産性をあげなければ、なんのためのソフトウエアかわからないじゃないですか。

そういうOSS based OSSのソフトウエアのコードをGithubから持ってくると、ベースとなった様々なOSSの様々なライセンスの条文がダンゴになっていっぱい出てくる。これは一応は全て読んでおいて、訴訟などのリスク回避を行う、なんてのも、当たり前のことになってきた。世界ではね。

いまや、ソフトウエア開発はOSSなしで考えることはできない。それをしないと、世界の水準に追いつかない。加えて、ハードウエアはすべてコモディティ化した。これからはソフトウエアが中心となる。そういう世界がここにある。だからこそ、超安価になったIoTとかがもてはやされているのであって、それは単なる流行ではないし、キーワードでさえない。それが当たり前だから、そうなったに過ぎない。だから、IoTでもセキュリティでも、OSSをベースにしたものだけが生き残る。そういう時代がここにあるのだ。

逆に言えば、OSSを知らない企業やITエンジニアは生き残れない。そういう時代に変わったのだ。