ソフトウェア工学研究の日々

ソフトウェア工学の学術研究を紹介しています。ソフトウェア開発に関する調査と実験が大好きです。

スマートフォンを支えるオープンソースソフトウェア

IPSJ-ONE にて、「ソフトウェアの生態系を探る」というタイトルで登壇してきました。

ipsj-one.org

この発表では時間の都合上、まったく言及することができませんでしたが、「ソフトウェアの生態系(Software Ecosystem)」と総称されるオープンソースソフトウェア群は日常生活に非常に密接にかかわっています。

私たちにとって身近で、かつ、オープンソースソフトウェアを活用している筆頭と言えそうなのが Android プロジェクトです。Android SDKソースコードをダウンロードしてくると、2019年2月時点で、external ディレクトリに300個ぐらいのソフトウェアが並びます。この中には、たとえば以下のようなものが入っています。

  • 1979年に発表された Basic Linear Algebra Subprograms に由来するベクトルや行列を扱うライブラリ。OpenCV なんかも同じ仲間と言ってよいかもしれません。
  • 1984年頃からインターネットの発展に伴って登場してくる、TCP/IP ネットワーク系のツール(ppp, tcpdumpなど)。
  • 1989年頃から登場し始めた giflib, libjpegなどの画像処理系ライブラリ。
  • 1995年頃から登場した zlib, bzip2 などのデータ圧縮・展開ライブラリ群。libpng のように zlib に依存した画像処理なんかも登場します。
  • 1998年頃から揃ってくる動画、音声、XML などの各種データフォーマットを扱うライブラリ。
  • 2003年頃から登場してきた、LLVMApache Ant、JUnit などの開発環境、テスト自動化系のツール群。

スマートフォンが音声や映像、通信を扱うことを考えると入っていておかしくないものばかりですが、有名ツール、プロジェクトがけっこう入っています。約半分は Android が発表される以前のもの(Copyright を見ると 2008年以前)となっていて、実績を積んできたソフトウェアたちが今も活躍しています。COBOL のプログラムが今も企業のビジネスを支えていたり、昔のゲームソフトが今も遊ばれているのと同じように、「必要なソフトウェア」は、しっかり長生きしています。

プロジェクトの由来は手作業で調べているので、勘違い等もあるかもしれませんが、これらのソフトウェアの Copyright には MicrosoftIntelApple、複数の大学の名前も入っていて、コミュニティ全体で協力して信頼できる基本部品を整えるという最近の時流がよく分かる事例になっていると思います。気になる方は、ソースコードをダウンロードして Copyright という文字列を検索してみてください。