サイオステクノロジーのシニアアーキテクトとして情報発信をする意義とは
2020年7月、サイオステクノロジーとして初の「Microsoft Most Valuable Professional (Microsoft MVP)」に選ばれたシニアアーキテクトの武井 宜行(たけい のりゆき)。技術者としての心がけや情報発信に力を入れる理由について聞きました。
ピープル2020年9月11日
今まさに技術の転換期
「ICT*1の分野は技術の進展が目覚ましく、新しいモノ好きの技術者としてはとても醍醐味があります」と話す武井はどこか嬉しそうだ。
サイオステクノロジーで武井は主に、システムの受託開発とプロダクト開発の両方のプロジェクトに携わっている。開発エンジニアとしてだけでなく、開発リーダーとして、またアーキテクトとして課題の本質を見極めながら技術の選定やシステムの設計を行う立場だ。その傍ら、技術コミュニティの活動にも積極的にコミットしている。
数ある技術の中で、武井が近年注目している領域が、Docker*2やKubernetes*3などコンテナ*4技術関連だ。これらの技術は開発者コミュニティを通じてさまざまな機能が拡張されるなど進化が著しい。
「欧米では多くの企業が、従来の仮想化技術などをコンテナ技術にシフトさせていますが、日本では、いよいよこれから本番という状況です。ただ、どんな技術でも何のために導入するのか、目的の明確化が先決です。そして開発と運用フェーズの協調、DevOps*5の進展には組織全体で取り組む必要があります」(武井)。
コンテナ技術が与えるインパクトはいくつもある。例えば、Windowsによる開発は以前と比べるとストレスが小さくなってきた。
「特に、Windows 10 Home Editionで、May 2020 Updateから利用が可能になったWidows Subsystem for Linux 2(WSL 2)を用いると、Windows上でフル互換のLinuxが動作します。つまり、Linuxカーネルを利用するDockerコンテナが動作可能になったのです。従来はWindows 10 Pro以上の環境が必要でしたが、その制約がなくなりWindowsによる開発の門戸が一気に広がりました」(武井)。
開発リーダーはまず、Web/DBサーバー、アプリケーションを動かすJavaやPHPなどで記述されたソースコード、各種コンテナ関連設定ファイルなどから構成された開発環境をコンテナ化する。次にコンテナ化された開発環境をGitリポジトリ*6を介して配布する。Windowsを利用する開発エンジニアは、コンテナ化された環境を自分のWindows環境(ホストOS)に展開するだけで、ソースコードの修正などにすぐに取りかかれる。
「すぐ修正に取りかかれる理由は、開発エンジニアが用いるWindows環境上におけるコンテナの作成、およびソースコードをコンテナにマウントするためのコマンド操作などが自動化できるツール(Visual Code StudioのRemote Development拡張機能など)も強化されてきているためです。このような自動化により開発エンジニアにかかる工数やストレスは減り、開発の生産性が高まります」と武井は指摘する。
かつては、開発環境のWindowsと実行基盤のLinuxを隔てる差異が大きかった。
「私を含めて、多くのエンジニアが、環境構築やソースコードのバージョン管理に長年悩まされてきました。しかし、昨今のWSLの進展をみるとWindowsとLinuxの垣根がさらに低くなりそうです」と武井は期待を寄せる。
本インタビューに応じる「Microsoft MVP」に選ばれた武井宜行
情報発信を通じて技術が深く理解できる
最近の開発は、マイクロソフト製品に限らず、進化するさまざまなOSの機能、プログラム言語、各社のクラウドサービスを含むサービス、そしてAPI*7やコンテナ技術を複数組み合わせて進められるのが主流である。
「新しい技術の情報を得るためにインターネット上のコミュニティが発信する情報や、専門誌などの文字だけ追って頭でわかったつもりでいても、若いエンジニアや社内のメンバー、また社外のお客様に説明するときにうまく説明できなければ、本当にわかっている、とは言えません。私にとってコンテナ技術がそうでした。最初は何がメリットなのか、ピンときませんでしたが、そんな時は、新旧の技術の違いに着目します」(武井)。
武井は、従来の仮想化技術と比較しながら、コードを書いてコンテナの挙動を比較し、気づいた点や特徴をメモにまとめていった。
そこでの知見をまとめたものが、サイオステクノロジーの技術系ブログで連載する「世界一わかりみが深いコンテナ & Docker入門」シリーズだ。
「私がオープンにアウトプットするのは、技術者としての自己啓発の一環です。読者に伝えようとすると、自分の中でわかったつもりになっていたこと、あいまいだった点がいくつもあることに気づかされます。コメントやメッセージから思いがけない気づきも得られますし、情報を発信し続ける上でのモチベーションになります。技術を理解し、定着させるうえでは、おすすめの方法です」。
武井はこの2年ほどで200本以上もの記事を書いている。
その中で、2020年1月に執筆した「Azure Kubernetes Serviceで実現する超低予算&(ほぼ)フルマネージド&本格的なWordPress環境」は、最もアクセス数の多いコンテンツだ。これがきっかけでセミナーやウェビナーで講演する機会も増え、2020年7月28日に開催されたVirtual Azure Community Dayでは日本語トラックに登壇した。
情報発信において武井が常に意識していることは、入門者に寄り添うことだ。
「新しい技術に対して立つスタートラインは、私も皆さんと同じです。最初は思い通りにシステムが動かなくて、何度も試行錯誤を重ねます。でも、上手くいき、新技術の利便性などがわかると嬉しいし、そのテクノロジーの恩恵をより多くの人に知って欲しい。私の発信する情報が、誰かの役に立ったり、エンジニアやアーキテクトの助けになったりすれば何よりです」(武井)。
世の中に新たな価値をもたらす、よりモダンなシステムの開発と運用を目指し、技術者のすそ野を広げる。1人のエンジニアとして、武井はコミュニティでの活動や情報発信を続けていく考えだ。
技術を好きになる
最後に武井は、未来のエンジニアに向けたメッセージで締めくくった。
「最後に、私がこれからエンジニアを目指す皆さんに一点だけお伝えしたいのは、技術を上達させるための最大のコツは、『技術を好きになること』です。好きになってしまえば、四六時中そのことを考えるようになり、勝手に技術力がグングン上がっていきます。そして、技術を好きになるためには、色んなことにチャレンジしてください。最初から『アプリエンジニア』『インフラエンジニア』と領域を限定するのではなく、色んなことにトライしてみてください。そうすれば必ず、夢中になれることが見つかります」。
講演活動を行う武井宜行
*1 ICT:Information and Communication Technology(情報通信技術)の略であり、IT(Information Technology)とほぼ同義の意味を持つ。
*2 Docker(ドッカー):コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンソースソフトウェアあるいはオープンプラットフォーム。
*3 Kubernetes(クーバネティス):Linux コンテナの操作を自動化するオープンソース・プラットフォームのこと。
*4 コンテナ:ホストOSのリソースを論理的に分離し、アプリケーションを動作させるのに必要なライブラリやアプリケーションなどをひとつにまとめ、個別サーバーのように使用できるようにしたもの。
*5 DevOps:開発者と運用者が相互に協力して新機能の円滑なリリース、システムの安定運用を実現し、最終的には顧客の利益の最大化を目指すという開発手法のこと。
*6 Gitリポジトリ:ソースコードのバージョンを管理するツールGit内で、ソフトウエアの機能や仕様を格納しておくシステム内の小さなデータベースのこと。
*7 API(Application Programming Interface):アプリケーションやソフトウェアとプログラムをつなぐ機能。
記事の関連情報
- サイオステクノロジーのエンジニア募集情報はこちら
- SIOSポータル記事
⇒ Virtual Azure Community Day 日本語トラックで「Azure Kubernetes Services活用事例」を解説 - 技術ブログ「SIOS Tech. Lab」武井執筆記事
⇒ Azure Kubernetes Serviceで実現する超低予算&(ほぼ)フルマネージド&本格的なWordPress環境
⇒ 【連載】世界一わかりみが深いコンテナ & Docker入門〜 その1:コンテナってなに? 〜