クラウドネイティブが当たり前の時代に向けて「ITエンジニアのスキルアップ」としてコンテナを学ぼう
ITエンジニアのあなたは「コンテナ」と聞いてどのようなイメージを連想するだろうか。今さら説明するまでもないが、コンテナとはITシステムでアプリケーションを1つにまとめ、パッケージ化する技術だ。システム開発やデプロイメントを効率化できるため、特に柔軟性やスピードが要求されるクラウドネイティブの世界では、コンテナは必須のテクノロジーになっている。
一方で、サーバーやクラウドといった、いわゆるインフラ系の開発に携わっていない人には、コンテナやそれを管理するKubernetesのような技術は「となりの畑」に見えるかもしれない。だが、それは実にもったいないことだ。というのも、コンテナを学ぶことは、現代のアプリケーション開発やクラウドネイティブを学ぶ上で、非常に有効だからだ。
クラウドや仮想化、そしてAIと、日々猛烈なスピードで進化していくITとクラウドネイティブ技術を理解するために、コンテナをどのように学べば良いのか。ITに関する幅広い教育・研修サービスを提供している、株式会社カサレアルの新津 佐内氏にお話を伺った。
コンテナの重要性と
若手エンジニアの間にある「温度差」の理由
今回お話を伺った、株式会社カサレアル プロフェッショナルソリューション第2技術部 部長の新津 佐内氏は、コンテナや自動化など、クラウドネイティブ領域の技術支援を長く手がけてきたエンジニアだ。また現場向けの支援だけでなく、同社が提供する教育コンテンツの開発やセミナーの講師なども担当しており、ITの最新状況と、若手を中心としたエンジニア育成の双方に通じている、技術と教育のエキスパートである。
今回コンテナのメリットや重要性を、教育・学習の視点から紹介しようと考えた理由について、新津氏は「自社の若手メンバーの教育を担当しているうちに、コンテナに対する見方の温度差があるのに気づいたのがきっかけでした」と振り返る。
「最近、私は現場の支援案件でコンテナ周りの環境構築や運用改善を担当することが増えています。そこで当社の若手メンバーにも、ぜひコンテナを学んでもらおうと、Kubernetesなどの話をするのですが、どうもピンと来ないという顔をされる。その理由を考えるうちに、これはもっと彼らに身近なところから入らせる必要があるのではと気づいたのです」
Kubernetesとは、いくつものコンテナを統合管理するためのオーケストレーションツールだ。当然導入されるのは、大規模なエンタープライズのシステムが多い。一方、新津氏の指導するメンバーの多くは若手エンジニアで、まだ大規模なシステムの開発・運用経験がなく、当然コンテナを実際に扱ったこともない人ばかりだという。
「そういう彼らに、いきなりインフラのKubernetesから理解しろと言う方が無理です。そこで、まずはローカル環境でデータベース等のコンテナを立ち上げて、自分で使ってみながらコンテナの特徴や、何ができるのかを知ってもらうのがよいと考えました」
そうした実技と併行して、コンテナの基本的な考え方や、利用で得られるメリットを説明し、「だからコンテナを学ぶことには価値がある」と広く知ってもらう取り組みも欠かせない。もちろん今回の記事も、そうした新津氏の熱意で実現した企画なのは言うまでもない。
クラウドネイティブ時代の学習にも
コンテナの活用は大いに「効く」
上でも触れたように、一般にコンテナのもたらすメリットは、インフラ側の視点から語られがちだ。確かに大規模なシステムで、サーバーのCPUやメモリなどのリソースを効率的に活用できるのは大きいが、やはり大規模経験のない若い開発エンジニアには、「ピンとこない」話だろう。
これに対して新津氏は「実際には、アプリケーションの開発側にも、コンテナを使うメリットはいくつもある」と強調する。
例えばクラウドネイティブの世界では、その柔軟性や拡張性を生かした大規模システム開発や、システム連携などが日常的に行われている。必然的にインフラ技術者はKubernetesを始めとしたコンテナ技術を使うし、アプリ側の開発者にもアプリケーションをコンテナ化することが求められてくる。これが当たり前になった今、「自分はインフラ担当ではないから、コンテナとは縁がない」などと、他人ごとのように考えているわけにはいかない。
「クラウドネイティブが当たり前の世界になっていく今後、そこで力を発揮できる、あるいはお客様やチームに選ばれるエンジニアになるためには、コンテナはあらゆる局面で必要になってくる技術です。この先もずっと通用するエンジニアを目指すなら、インフラだアプリだという領域を超えて、コンテナは必須の技術だというのを、まず念頭に置いていただきたいと思います」
やや厳しい言い方になるが、クラウドネイティブの時代に生き残っていくためには「自分は○○の領域が担当だから」と自ら線を引いてしまってはだめで、さまざまな新しいツールやサービスをどん欲に学び、キャッチアップしていく積極性が欠かせないということだ。
そうは言っても、ふだんの業務をこなしながら、新しいことを勉強しようにも時間は限られている。今がいっぱいいっぱいなら、なんとか時間を作り出す工夫をしなくてはならない。新津氏は「その時間を作り出すためにも、コンテナが使えるのは非常に有利なのです」と明かす。
例えば、あるサービスを新しく勉強しようと思えば、まずそれを使う環境を構築しないといけないが、これがまた手間がかかるのはご承知の通りだ。マニュアルのインストール手順に従ってOSバイナリのインストールを行い、サービスが立ち上がったら初期設定をして、ようやくそこから目的の学習が始まる。この準備だけで何時間も費やしてしまい、やっとセットアップできたところで力尽きた経験をした人も少なくないだろう。
「それに対してコンテナを使った学習ならば、あらかじめ新しいツールやサービスのコンテナイメージが用意されています。エンジニアは自分の環境でコマンドを打ってこれらのコンテナを立ち上げるだけで、学習のための環境構築が完了します。今までは準備のための作業をいくつも乗り越える道のりがあったのが、いきなり学習の本丸にたどり着いてスタートできる。スピードアップはもちろん、時間的余裕が生まれるので、学習の質そのものも大きく向上する。まさにコンテナは、『若手技術者の学習にも効く』のです」
Getting Startedを起点に
「広く浅く」で視野と知識を広げていく
コンテナを学習することが、若手エンジニアの効率的なスキルアップにつながるのはわかった。では、実際にどう勉強を進めていくのが良いのだろうか。まず新津氏は心構えとして、「広く浅く」を心がけるのが大事だと示唆する。
「クラウドネイティブ技術は実に多種多様で、しかも日々新しいツールやサービスが生まれてきています。もう乱立ともいえる状態なので、これらを1つひとつ深掘りするよりも、1つのサービスを広く浅く理解して、それに関連する別のサービスとどう連携するかを見ていくといった方が、効果的に学習を進められます」
なるほど、では心構えもできたところで、第一歩となる具体的な勉強の仕方をアドバイスいただけないだろうか。これに対して新津氏は「Getting Startedをお勧めします」と断言する。
ちなみに「Getting Started」とは、エンジニアの学習のためにツールやサービスの開発ベンダーが提供しているリソースで、基本的なセットアップや使い方を説明した導入ガイドやチュートリアルで構成されている。この内容をしっかりと押さえれば、ツールやサービス活用のスタートラインに立てると言って良いだろう。
「『Getting Started』での学習を深掘りしていくと、必ず他のツールなどとの連携も出てきます。そこで、またそのツールの『Getting Started』を見て、コンテナで立ち上げて動かしてみる。そうやって、まずは何か1つの『Getting Started』をよく理解して、そこを起点に『広く浅く』他のツールにつなげていくというアプローチをお勧めします」
学習を効果的に進める上でもう1つ重要なポイントが「アウトプット」だと新津氏は言う。つまり、勉強したら自分の中で理解して終わりではなく、誰か第三者に自分が理解した内容を説明してみることが、学習効果を飛躍的に高めるというのだ。
「これはどのような勉強でもそうですが、先輩にでも仲間にでも、自分が学んだことを言葉にして説明することで、自分の頭の中が改めて整理でき、理解がより深まります。また仕事の現場ではチームで開発・運用にあたる機会が多いので、アウトプットを習慣づけることは、周囲に自分の考えを正確に伝え、理解してもらうトレーニングにもなるのです」
実は、これは近い将来やってくる、クラウドネイティブが引き起こすワークスタイルの変化への備えにもなると新津氏は語る。クラウドネイティブ領域では非常に多くのツールやサービスが加速度的に生まれつつあり、1人のエンジニアが全てを理解することは、時間的にも情報のボリューム的にも、もはや限界だというのが、新津氏をはじめカサレアルの技術チームの共通認識になっているという。
「そこで必要になるのは、1人で頑張るのではなく、いかにうまくチームで役割分担をして効率的かつ高品質に業務を進めていくか。いわば集合知のようなチームワークを実現するためにも、アウトプットのスキルを高めることは必須の要件になるでしょう」
「全員必修」の技術だからこそ
身構えずにモチベーションを高めながら学ぼう
今後のIT全体の技術動向について新津氏は、クラウドネイティブが当たり前の世界になっていき、その結果、コンテナも全てのエンジニアにとって必須のスキルになっていくと確信している。
「今は、まだクラウドネイティブのツールでも、バイナリのインストールとして提供されていますが、近い将来にはコンテナでしか提供されないものも出てくるでしょう。学習環境も、環境構築自体がコンテナでないとできないとか。そう考えると、自分がクラウドネイティブのエンジニアかどうかに関わらず、全員必修の技術になっていくのは確実です」
そのためにも、本記事で少しでも興味を持ったら、できるだけ早くコンテナの学習を始めてみてほしいと、新津氏は呼びかける。とはいえ、冒頭でも触れたように、今のところコンテナについての情報というと、Kubernetesの使い方などインフラ寄りのドキュメントが多く、若手のエンジニアほど「これは難しそう」と身構えてしまいがちだ。
「でも、実際は皆さんのローカル環境でも十分に立ち上げられる技術なので、まず環境を作って触ってみて、『こんなことができるんだ』というのを体感していただきたいですね。それで興味が持てたら、どれか1つ『Getting Started』を入手して試してみる。身構えずに、自分のモチベーションを高められる方法を探りながら進んでいきましょう」
ちなみに、無事「Getting Started」レベルをクリアした後は、どう進めていけば良いのだろうか。あるいは頑張ってみたけれど、独学では今ひとつ理解が進まないというケースもあるはずだ。実はそういう人のために、カサレアルでは「クラウドネイティブ道場」と銘打って、クラウドネイティブやコンテナに関するトレーニングを、まさにクラウドサービスとして提供しているという。
「クラウドネイティブの基礎固めから、運用の基本操作、インフラストラクチャ アズ コード入門、サーバーレスアプリケーション開発その他、合計10種類のコースをそれぞれ1~2日で学べるカリキュラムになっています。もう『Getting Started』の次は、こうした個別の技術の学習フェイズに入っていくので、効率的に学習を進めたい、あるいは学習法で悩んでいるという方は、ぜひ気軽にご相談いただければと思っています」
好むと好まざるにかかわらず、時代の技術トレンドはすでにクラウドネイティブに移行しつつある。この先、全てのITエンジニアに求められるキーテクノロジーの1つがコンテナならば、この記事を参考に、まずは第一歩を踏み出してみてはいかがだろうか。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- 企業のクラウドネイティブ化を実現するジールが考える「SRE支援サービス」の必要性
- ミランティスジャパンの新社長が「OpenStackが下火なのは良いこと」と語る理由
- CNDT2021、日本オラクルのエンジニアによるクラウドネイティブを再確認するセッション
- KubeCon+CloudNativeCon NA 2020 IntuitとMayaDataによるカオスエンジニアリングのセッション
- クラウドネイティブ開発で注目されるPlatform Engineering、チーム作りから環境構築までのポイントを知る
- 「CloudNative Days Spring 2021 Online」開催レポート
- CNCFのサンドボックスプロジェクト、カオスエンジニアリングのLitmus Chaosを紹介
- CNCFが2022年の活動と成果を振り返る「CNCF Annual Report 2022」を公開
- クラウドネイティブに必要なエンジニアとは「本質的なことがわかって、積極的に価値を提供できる人」
- CNDT 2020開幕、2日目は富士通、レッドハットからの率直な話が聞けた