こんにちは。日本ヒューレットパッカード(HPE)のオープンソース、Linuxテクノロジ エバンジェリストの古賀政純です。前回の記事では、HPEにおける社内開発基盤の概要について紹介しました。今回は、Dockerがもたらす開発基盤導入の変革と、HPEの開発部門におけるDocker導入の効果について紹介します。
UNIX時代から苦労していた開発環境の準備
開発環境の準備には、さまざまな手法がありますが、一般にはIT部門が用意した物理基盤や仮想マシン上にログインし、開発者が開発ツール類などをインストールし環境を整えるといった作業が必要です。開発用のプログラミング言語、動作に必要なライブラリ群、開発用のGUIツール、ソフトウェアの不具合を見つけるためのデバッガ、機能・性能テストツール、そして、本番環境を模したステージング用の稼働環境など、さまざまな「開発ツール、実行環境」を準備しなければなりません。
筆者が学生時代だった20年以上前のUNIXシステムでは、人工知能(AI)用のプログラミング環境を整えるだけでも、コンパイラや実行に必要なライブラリ、さらにはAIや数値計算に必要な各種の数学ライブラリ、デバッガツールなどのソースコード(ソフトウェアの設計図)を入手し、インストール手順に関する英語の不親切な資料を見ながら、手動で環境を構築しなければなりませんでした。
また、GUIによる可視化を行いたいといった場合には、GUI表示用の開発ツールとライブラリのソースコードも入手し、ビルド、インストールしなければなりませんでした。しかし、GUI表示に必要なライブラリが不足していると、ソフトウェアのビルドに失敗し、なかなか目の前のUNIXマシンにインストールできないといったこともしばしばありました。ソフトウェアを作成するための環境の準備自体に大きなハードルがあったのです。
実は、前世紀のUNIXシステムでも、Linux同様の「ソフトウェアパッケージ」の仕組みがあり、開発環境を容易にインストールできるようになっていましたが、UNIX OS製品に標準で用意されていない最新のソフトウェア開発環境、GUI開発環境、特殊な用途向けの開発ツール類は自分でソースコードを入手し、手動でビルド・インストールしなければならず、非常に面倒な作業を経て開発環境を整えていました。
Linuxの普及によって開発環境のインストールが劇的に改善されましたが、開発の現場では昔も今も使用する開発ツールやライブラリのバージョンを複数試すことが少なくありません。複数のバージョンの開発環境を試す場合、仮想化基盤で稼働する仮想マシン(Virtual Machine:VM)を必要なだけ用意するという方法がありますが、開発ツール入りのVM自体の準備が非常に面倒であるという点とVMが消費するハードウェア資源も非常に大きいという点が、開発者や初心者にとっての不満だったことも事実です。
「限られた性能のハードウェア環境でも、さまざまなバージョンの異なる種類の開発ツールを今すぐに利用したい」――。そういったニーズを満たすのが、まさに、本連載で取り上げているDockerなのです。
図.UNIX時代から大変だった開発環境の配備。さまざまなバージョンの開発ツールを含んだ開発環境を構築、配備するのは、非常に骨の折れる作業だった