インフラエンジニアにプログラミングの楽しみを!…今、PythonやRubyが注目される理由

インフラエンジニアにプログラミングの楽しみを!…今、PythonやRubyが注目される理由

「インフラエンジニアにプログラミングの知識なんて必要ない」…そう思っている方、いらっしゃいませんか?これまでのインフラ構築では確かに必要はなかったかもしれません。しかし、仮想化やクラウド化によって、「ソフトウェア化されたインフラ」を管理する時代となり、もはや必須の技術となってきました。その管理に使われるのが「プログラミング」なのです。最近注目される「インフラ構築の自動化」「ビッグデータ」「機械学習」にも欠かせないプログラミング、特に「Python」や「Ruby」といった「軽量プログラミング言語(LL)」に注目します。

「当たり前」になりつつある、プログラミングという行為

皆さん、こんにちは。千田泰史です。主業務はインフラストラクチャー系のインストラクターです。今回、「プログラミングの楽しみ」などと、大上段に構えたタイトルで書き始めたものの、筆者自身の趣味は別として、ITインフラストラクチャーに関わるエンジニアとして業務に直結するようなプログラミングは、せいぜい シェルプログラミング や バッチファイル の作成がほとんどでした。

インフラエンジニアとプログラミングの関係性

2000年代前半からの急速なITの普及による人材需要に応じるため、IT業界、とくにサーバー周りのインフラストラクチャー界隈に携わるエンジニアには、プログラミングの経験を持たない方や、いわゆる文系出身者も数多く含まれています。私自身がそうでした。実際、これまでは、プログラミングという営みがあまり身近に感じられない状況であっても、業務上大きな不都合は無かったかもしれません。

それで不都合が無かったと言えた方にとっては、例えば、ちょっと前までの一般的なインフラ構築といえば、手順書に記述されているコマンドを一行一行手作業でコピー&ペーストすることが半ば通例だったこともその一因でしょう。

しかしながらここ最近は 流れが明らかに変わってきています。IT講師としての私の経験から、ここ 2,3年くらいの間に、インフラエンジニアの間で、プログラミングに関連したトレーニングへの意欲の高まりを感じています。受講者との雑談の際などにも、プログラミングの経験者やプログラミング学習中という方々がしばしば見受けられるようになっており、プログラミングという行為が「何か特別なもの」という感じではなくなってきているようです。

 

インフラは「ソフトウェア化」され、プログラミングによって制御する時代に

その背景について、恐らくお気づきの読者もいらっしゃるかもしれませんが、ITインフラの仮想化 が進んでいることが大きな要因を占めていると考えるのが自然でしょう。ここでいう「ITインフラ」とは、クラウドはもちろんのこと、オンプレミスのサーバーも含まれます。

インフラの仮想化

インフラの仮想化とは、すなわち インフラのソフトウェア化 ということです。サーバー、ネットワーク、ストレージといったインフラがソフトウェアによって記述されているということは、これらの インフラをプログラムによって操作 できるようになったとも言えます。

実際の操作の方法は、専用のプログラミング言語やスクリプト経由だったり、Java等の汎用のいろいろなプログラミング言語からのAPI経由だったり、あるいはインフラの構成管理ツール経由だったりしますが、とにかく現代のインフラは「プログラミングによって制御することができるという特徴を持つようになった」という意味合いが大きいです。

プログラミングでインフラを制御する

プログラミングによって制御することで、これまで手作業で行ってきた 構築や運用などの作業を自動化 することができます。また、自動化することによってミスを減らし、生産性を高めることができるでしょう。

また、仮想化したサーバー等の数が非常に多くなったということも、プログラミングによる制御の必要性を高める大きな要因です。数百台のサーバーを手作業で管理しなければならないようなケースで発生するであろう問題を簡単に想像できます。多くの人間にとって退屈で時間の掛かる繰り返しのタスクをプログラミングによって自動化し、以前のような手順書の手動コピペで陥りがちがったコピペミスなどのケアレスミスを排除することができ、作業時間の短縮やひいては作業品質の向上、安定化にも繋がります。

その結果、現在普及が進んでいるクラウドおよび仮想インフラにおいて、より少ない人数で、より少ない苦労で、早く、正確にインフラ関連業務を遂行することができるようになります。

エンジニアとプログラマの垣根を超える「Infrastructure as Code」の時代

ところで、このような、ソフトウェアで記述されたインフラストラクチャーのことを表す Infrastructure as Code という言葉があります。他にも、SoftwareDefined XXXX(XXXX の部分には、例えば Data center、 Storage、 Network などが入る)という表現も数多くITマーケティング用語として定着していますね。

Infrastructure as Code

コスト、生産性、正確性などの大きなメリットがある Infrastructure as Codeが進展していくのは今や当然の流れであり、私たちインフラストラクチャーに携わるエンジニアはこの環境の変化に適応していかなくてはなりません。

プログラマーがインフラ技術を身につける のと、インフラエンジニアがプログラミングを身につける のと、どちらの方向性も必要になってきます。(もちろん、これは単なる喩えのひとつであって、両者は対立するような概念でもありませんが)

そのような考えに立つと、もはや、プログラミングができないままのインフラエンジニアの価値は低下しこそすれ向上することは金輪際ありえないでしょう。

これからプログラミング言語を学ぶ方におすすめしたいのが、Python と Ruby

そこで、今まで縁が無かったけれどプログラミングを始めたいと思った方にとって、何から学べば良いのやらと途方に暮れるかもしませんが、これもいろいろな意見がありますね。

やれITの基本はC言語だ!とか、いやいや業務プログラミングにおいて Javaの汎用性でつぶしがきく!だとか。プログラミング言語の好みで論争が起こることはネット上では日常風景です。(あとエディタでも)

軽量プログラミング言語

インフラエンジニアにお奨めのプログラミング言語ということで、私からは Python と Ruby を挙げさせていただきます。どちらもちょっと小粋な 軽量なプログラミング言語 (LL: Lightweight Language) です。
参照:軽量プログラミング言語(Wikipedia

前出の Wikipediaに記述されているように、軽量プログラミング言語には数多くの種類がありますが、さきほど挙げたこの2つについては、以下の利点があるためとくにお薦めなのです。

  1. 多くの OSに最初からインストールされている ためセットアップの手間が無い
  2. インストールされていないOSであっても実績ある 簡単かつ実用的なセットアップ方法が確立 されている
  3. インターネットや書籍に数多くの記事があり 学習が捗りやすい環境が整っている(特に Rubyには日本語リソースが多い)
  4. 文法的に簡易 であるとこと旨としているため学習コストが低い
  5. インフラ構築によく使用される 構成管理ソフトのバックエンドの言語 として多く採用されている
  6. 言語としての汎用性が高くインフラ構築のみならず ビッグデータ処理、機械学習等 の多方面に亘る応用事例が得られるため使いどころが多い

分かり易いところでは、仮想インフラを構築運用するクラウドコントローラである OpenStack の大部分は Python で実装されていますし、Chef や Puppet などの構成管理ツールは Ruby で実装されています。そういう事例は枚挙にいとまがありません。

本稿をご覧になってプログラミングスキルの必要性に「目覚めた」向きには、是非ともご参考いただければ幸いです。

記事は、予告なく変更または削除される場合があります。
記載された情報は、執筆・公開された時点のものであり、予告なく変更されている場合があります。
また、社名、製品名、サービス名などは、各社の商標または登録商標の場合があります。