本業で出会った、コンテナという深遠な世界
青山氏とOSSとの関わりは、大学時代から始まる。当時の青山氏は、学部全体のインフラを管理する学生団体に所属していた。Google GanetiやOpenStackなどの技術に慣れ親しんでいたのだ。研究内容も、構成管理ツールのChefに関するものだったという。
新卒でサイバーエージェントに入社してからも、OSSとの関わりは続く。配属されたのは、プライベートクラウドの基盤開発チームだった。最初は、コンテナ基盤をプライベートクラウド上に構築するプロジェクトにアサインされていた。
当時は、KubernetesやDocker Swarmが登場したばかりの頃。まだ、「どのソフトウェアがコンテナのクラスター管理のデファクトスタンダードになるかわからない」状態だった。さらに、「オンプレミス上にどうやって基盤を作るか」の選択肢も、OpenStack Magnumを使う方法や、AnsibleやOpenStack Heatで自前実装する方法など、数多くあったという。そうした状況において、どのように技術選定を行うのが最善なのだろうか。
「技術選定の基準はいくつかあります。まず、最低限の要件を満たせるかどうか。さらに、『機能性』と『難易度・学習コスト』はトレードオフの関係にあるため、何を優先すべきかを考える必要があります。ソフトウェアの現状だけを見るのではなく、『将来性』や『技術が普及するか』も踏まえて選定しなければいけません」
OSSの醍醐味は「ソースコードが“オープン”なこと」だと青山氏は語る。その特性ゆえに、以下の利点が生じるのだ。
- スキルの高いエンジニアによって作られたソースコードや設計思想を知ることができる
- 機能拡張や連携などがしやすい
- 不具合が起きても詳細を追うことが可能
- 新しい技術が数多く生まれてくる
- OSSの多くは汎用的に作られているため、学んだ知識をさまざまな領域に応用可能
エンジニアリングの世界では、毎年のように新技術が登場する。場合によっては、せっかく自社に導入した技術を、数年でリプレースせざるを得ないケースもある。だが、「移行コストを払ってでも、可能な限り新しい技術を学んでいった方がいい」と青山氏は説明する。
その理由は「技術の根本にある考え方は、必ず廻っていく」ことにある。過去に用いられた設計思想が、10年後や20年後に形を変えて再登場することは、ソフトウェアの世界において珍しくない。技術を深く学んでおけば、その知識は後で必ず応用できるのだ。
また、同じ技術を使い続けることは、組織の停滞を招く。メンバーに学ぶ機会を与えることは、企業の“福利厚生”の一部だ。