目次
インフラをプログラミングするとは?
IT基盤を支えるインフラをプログラミングする意味とは何でしょうか。これまでの業務内容とどのように変わっていくのでしょうか。
これまでとこれからのインフラエンジニアが直面するであろうインフラのプログラミングについて、もう少し詳しく見ていきましょう!
これまでのインフラエンジニア
従来のインフラエンジニアが行う業務に多かったのは、社内に物理的なサーバーを設置・構築・運用していくオンプレミス(自社運用)というスタイルでしょう。
通信機器の選定・設置から効率的なケーブルによる接続、サーバーの選定・運用・保守など、すべて社内のサーバールーム内で物理的な機器と格闘するイメージが近いでしょう。また、サーバーのメンテナンス作業はもちろんのこと、突発的に発生する障害対応については緊急招集がかかって深夜であっても会社に出勤してサーバールーム内で業務を行うようなケースもよくあります。
また、サーバー環境の移行や拡張などによる増強があると、OSや関連する必要なライブラリなどをすべて手動でインストール・設定・テストするような場合もあります。
このようなオンプレミスな方法は、初期費用が高額になったり導入までの期間が長くなりがちですが、今でも大手企業や大規模なサービスでは採用されやすい傾向にあります。例えば、自分たちの好きなようにカスタマイズ可能なところやすべての情報を自社で保持出来ること、長期的に見ると従量制よりもコストが低く抑えられる点などが大きな理由となるでしょう。
クラウド化されるインフラとは?
オンプレミスな手法に対して、最近人気が高まっているのがクラウド化です。
一般的にはAmazonが提供するAWSを利用したIT基盤の構築が有名ですが、他にもGoogleが提供するGCPやMicrosoftが提供するAzureなどがよく使われています。
クラウドの利点はなんといっても物理的なサーバーを保持しなくても良いところで、インターネットに繋がっているパソコン1台あればすべての導入準備ができてしまうのが大きな特徴でしょう。また、簡単な手続きにより短時間で導入できるうえ、初期費用はほとんど無く毎月の従量課金のみで運用できるため資金が少ないスタートアップなども積極的に採用するわけです。
このようなIT基盤がクラウド化されていくことで、業務の効率が向上しサービスを提供するまでの準備期間が圧倒的に速くなります。
また、クラウドの利点をさらに高める方法としてインフラをプログラミングするという動きも最近は盛んに行われるようになりました。これは、サーバーを構成する設定やソフトウェアのインストールなどをプログラムで管理することです。
従来はサーバーマシンのセットアップや関連ソフトのインストールなどを手動で行っていたわけですが、サーバーが増加していくと作業量も増加することや人的ミスも発生しやすいわけです。これらの作業をすべてプログラムにすることで、作業を自動化できるうえミスも減らすことが可能になります。
また、インフラをプログラミングできるということは、これまでソフトウェア開発で培ってきたバージョン管理やテスト駆動開発などのベストプラクティスが使えるという意味も大きいのです。
インフラエンジニアとして必要なプログラミング言語3つ
プログラミング言語にはさまざまな種類があり、それぞれ特徴も異なります。それでは、インフラエンジニアの業務の中で必要になるプログラミング言語にはどのような種類があるのでしょうか。
ここではインフラエンジニアとして必要な「Python」「JavaScript」「Ruby」という3つのプログラミング言語についてご紹介していきます。
1:Python
Pythonは近年では人工知能の開発で注目されている言語で、スマホアプリや業務システム、ゲームなどさまざまなものを開発できる言語として活用されています。Pythonのような軽量プログラミング言語は、インフラエンジニアの業務の中でも障害対応時のログ調査やファイルインポートなどで用いられることがあります。
また文法がシンプルで読み書きやしやすいため、初心者でも学びやすい言語でもあります。
2:JavaScript
JavaScriptはWeb開発に必須とされる言語で、近年多くなってきているポップアップ表示やスライドショーといった要素を持ったWebサイトの開発で活用されています。
インフラエンジニアにはバックエンド側のスキルが注目されがちですが、フロントエンド側で動作するJavaScriptのような言語のスキルを習得していると、規模の大きなプロジェクトでも活躍できるインフラエンジニアになれるでしょう。
3:Ruby
RubyはWebアプリの開発などに活用されている軽量プログラミング言語です。Rubyは日本人が開発した言語ということもあり、初心者でも習得しやすい言語です。
また、前述のとおり軽量プログラミング言語はインフラエンジニアの業務でも活用できるため、習得しておくと役に立つでしょう。
インフラエンジニアとして覚えておくといいプログラミング言語6つ
ここまでインフラエンジニアに必要となるプログラミング言語をご紹介しましたが、必須ではなくでも知っておいた方が良いプログラミング言語があります。
ここでは覚えておくといいプログラミング言語をご紹介しますので、ぜひ参考にしてみてください。
1:AWS/GCP
インフラのクラウド化にもっとも貢献しているのがAmazonの提供するAWSでしょう。
サーバーの構築、データベース、ストレージ、AI(機械学習)、モバイル、IoT…など、非常に広範囲なIT基盤をクラウド上に構築できる万能なサービスと言えます。
AWSは一般的なWebサービスと同様に個人でも手軽に利用できるので、プライベートでどんどん活用しながら基本的な使い方を学んでいくのが良いでしょう。
一般的な使い方としては以下のようなものがあります。
・Webサイトやサービスのホスティング
・データのバックアップ
・IoT開発・制御
・スマホアプリのデータ管理
・社内アプリなどのデータ管理
これらのサーバー環境を構築・運用できるようになることをまずは目標にしていくのがオススメです。
また、同様なサービスとしてGoogleが提供しているGCPがあり、できることはAWSとほとんど同じですが特にビッグデータの分析・活用など膨大なデータを扱うことにも定評があります。
2:Docker
インフラをプログラミングすると聞いて最近はDockerをイメージする方も多いのではないでしょうか。
Dockerはコンテナ型の仮想化プラットフォームとよく言われるのですが、簡単に言うとサーバーマシンを構成するすべての設定ファイルやソフト・パッケージなどを1つの【Dockerイメージ】というファイルにまとめておくことができるわけです。
そして、空っぽのサーバーマシンにこのDockerイメージを実行することで、まったく同じサーバー環境を作り上げることができるのです。これはDockerエンジンによって実行されることで実現できているため、環境による差異を受けにくいというメリットもあります。
このDockerイメージは【Docker Hub】というサービスを利用してネット上に公開することも可能です。すでに多数のサーバー環境が公開されており、このイメージを利用することで自分のサーバーマシンを簡単に作り変えることも可能です。
このように便利にサーバー周りを構築できることから、インフラをプログラミングするための人気プラットフォームになっているわけです。
3:Perl
Perlはテキスト処理に特化しているプログラミング言語で、PythonやC言語などの利点を併せ持っています。Perlも軽量プログラミング言語となっているため、インフラエンジニアの仕事にも活用できます。
また、PerlはLinuxディストリビューションに搭載されていることから、わざわざインストールしなくても利用することができる点もメリットだと言えます。
4:TTL
TTLはWindows向けのターミナルエミュレータ「Tera Term」用のマクロ言語です。インフラエンジニアとして仕事をするのであれば、現場で利用することになるでしょう。
TTLにはマクロ作成機能が搭載されているため、インフラエンジニアの業務で利用することで複数のサーバーへのログオンの自動化や多段ログインなどを高効率に行えるようになります。
5:Bash
BashはUnixで動作するシェルスクリプトです。厳密に言えばプログラミング言語と異なりますが、インフラエンジニアとしてBashを習得することで、Unix OSでコマンドを効率よく運用することができます。
インフラエンジニアの業務ではUnixを利用するケースも多いため、身につけておくと良いでしょう。
6:BAT
BATはWindowsで利用できるバッチファイル用の言語です。BATを用いることでWindowsを利用したプロセス起動処理やファイルの一括処理などを効率化することができるため、業務でWindowsを利用する場合に活用できます。
また、インフラエンジニアに限らずエンジニアであれば業務でBATファイルを利用することはあるため、習得しておくと良いでしょう。
インフラを独学できるオススメサイト
この章では、インフラエンジニアに求められているスキルを効率よく学習できるサービスについて見ていきましょう。基本的に動画で視聴しながら学べる講座を提供するサービスを中心に学んでいきます。
ドットインストール
主要なプログラミング言語の基本的な使い方を日本語の動画で学習できる国産サービスが【ドットインストール】です。
1つの講座は3分ほどの動画が複数組み合わさって構成されており、それぞれの動画を順番に視聴することで体系的に学べるように設計されているのが特徴です。インフラエンジニアとして受講しておくべき講座には次のようなものがあります。
・ローカル開発環境の構築
・Vim・Emacs入門
・AWS / Docker入門
・データベース入門
・シェルスクリプト入門
レッスン一覧ページから受講できる講座を確認することが可能で、上記以外にも非常に多彩なリソースが提供されていることが分かるでしょう。
まずはドットインストールで基本的な概要を学習し、実際に自分の手を動かしながら勉強していくと理解しやすいのでオススメです。
Udemy
良質な動画教材を有料で販売しているプラットフォームが【Udemy】です。
有料だけあって動画講座の中身は非常にクオリティが高く、また基本から応用まで体系的にまとめられているのが大きな特徴でしょう。断片的な情報をネットから収集するよりも効率的で、また書籍を購入して勉強するよりも分かりやすいのでオススメです。
インフラエンジニアにオススメの講座としては次のようなものがあります。
・WS:ゼロから実践するAmazon Web Services
・Linuxコマンドから始めるDocker
・現役エンジニアが教える、手を動かして学ぶGoogle Cloud Platform
・フルスタック・Webエンジニア講座(2019最新版)
基本的な知識・スキルを提供するものから、本格的なサーバー構築術やAWSをはじめとするクラウド対応のテクニックまで幅広く学習できるのが大きな特徴でしょう。
現時点でこれほど種類が豊富で体系的に学習できる動画講座は、Udemy以外にはほとんど無いのでまずはこのサービスを利用して実践的なスキルを得ることを優先するのが良いでしょう。
YouTube
YouTubeと言えば最近話題のユーチューバーをイメージしがちですが、実はインフラエンジニア向けの本格的な動画講座も無料で提供されているのです。
日本語の動画もありますが、オススメは海外向けの英語動画です。英語が苦手な方も怖がらずにぜひ挑戦してみてください。無料とは思えないクオリティの講座を視聴することが可能です。
動画自体は豊富に提供されていますが、いくつかオススメの動画を以下にピックアップしておきます。
・アマゾン ウェブ サービス(AWS)とは?(日本語字幕)
・デジタル変革の最前線で選ばれ続けるクラウドへ:AWS Summit Tokyo 2019
・Docker Tutorial for Beginners
・Google Cloud Platform Tutorials
・What is Infrastructure as Code(IaC)? | DevOps Tutorial
最近はIT系の動画講座で日本語も増えてきていますが、やはり英語の動画が圧倒的に多いうえクオリティも高いです。英語が聞き取れない場合は字幕を表示することも可能です。
また自分にとって分かりやすい解説動画を発見したら、チャンネル登録をして定期的に動画を視聴するクセを付けるようにするのも良いでしょう。コストを掛けずに実践的なITリテラシーやスキルを学習できる唯一のプラットフォームなのでぜひ有効活用していきましょう。
インフラエンジニアに必要なプログラミングスキルを習得しよう
今回は、インフラエンジニアに求められるプログラミングスキルについて解説をしました。
最後に、もう一度ポイントをおさらいしておきましょう!
・インフラがクラウド化されコードによって管理されるようになってきた
・必須スキルとしてプログラミング・クラウド(AWS・GCPなど)・Dockerを学ぼう
・動画で学習できるサービスを有効活用して実践的なスキルを習得しよう
上記内容を踏まえて、ぜひ自分でもプログラミングに取り入れて活用できるように頑張りましょう!
インフラエンジニア専門の転職サイト「FEnetインフラ」
FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。
転職をお考えの方は気軽にご登録・ご相談ください。