/* */

コード(プログラム)書く必要ってあるの?

ITインフラエンジニアなのにコードなんて書く必要ありますか?

結論: あるでしょ!!

いや、時と場合に応じてですけど。
ただ、選択肢として持っておかなければならないスキルだと田中(゜P゜)は思います。できなくても別にいいけど「必要となった時にできない」では市場価値下がる一方じゃないかなぁ。

なぜコードを書くかというと、「人手でやっていた作業の自動化=コスト削減」だからです。
先の記事で書いたように、経営の人がITインフラに期待するのはコストの削減ですから、市場価値にも直結するスキルなのかな、と田中(゜P゜)は思ってます。

また、自動化のためのスクリプト等を作成するんじゃなくても、OSやアプライアンスの設定ファイルや、変更のためのコマンド実行には、ごくごく基礎的なプログラミングの知識が必要となります。
あと単純な話、GUIでマウス使ってたくさんの設定するの時間かかるし、ミスも怖いし

コードの知識が必要となる場合を簡単にまとめました。

  1. ITインフラの運用の自動化
  2. Linuxをベースとしたシステムの構築/運用
  3. クラウドで大規模なインフラを構築/運用する

(1)について。
たとえ話、ジョブ管理ツールにWindowsやLinuxの再起動コマンドを仕込みたいなんて場合は当然必要ですし、単純な話、他部署に発行されたアカウント情報からADの登録用のコマンド群を生成するのに必要だったりします。

田中(゜p゜)の過去の経験だと、ExcelのVBAでマクロ組まれてて、ボタン押すと情報システム部門内で必要なアカウント登録コマンドが一式出力される、みたいなのをよく見ましたが、これだって立派なプログラミングだと思ってます。
というか、マクロ職人は部署内ですげー重宝されてました。属人化の危険性あるんですけどね。

それと、余談だしあまりおススメできないですが、WBSをExcelでやってる企業なんかだと、マクロで集計だったり図形描画していたケースもありました。印刷の都合上、ExcelのWBSも必要悪なんだと思ってましたが。

(2)について
Linuxベースのシステムは、よっぽどのことがない限りCLIで運用するので、バッチや設定ファイル作成するのにも、簡単なプログラミングの知識がないとしんどい

Webサーバの膨大なログファイルの中から指定した条件のログを見つけ出すのに、awkでフィルタかけたりとか。

(3)について。
これが今後の本命なんじゃないかと思いますが。代表的なパブリッククラウド(AWS、Azure、GCP)はクライアントOSで叩くコマンドセットか、HTTPS(Web)でリクエストするREST APIを備えていて、ITインフラの管理をプログラムに組み込めるのです。

いわゆるinfrastructure as codeてやつですね。
メタ情報ブッこめば、OSの設定すら自動化できます。

すると何が起こるか。
どこかの記事で、AWSのCloudFormationとAnsibleの組み合わせで、プログラムの開発環境の構築期間が1/100近くまで圧縮できたという話はしたと思います。

また極端な例、クラウドのVM(仮想マシン)の費用は起動していた時間の比例するので、営業時間外(20:00~08:00)はサーバ止めとく、みたいなバッチ流せば、サーバの運用コストが半分で済みます。

要は構築の観点でも、運用の観点でもコスト削減に大きく貢献できるのですよ。

また、田中(゜p゜)はプライベートクラウド好きではないですが、とにかくCLI、APIでできることが少ないので、自動化の幅も少ないのです。コストも高いし、さっさと廃れてしまった方が良いと勝手に思ってます。

田中(゜p゜)はどこまでやれんのか

余談になりますが、田中(゜p゜)が使える言語は以下です。
※プログラミング言語じゃないものも交じってるのは百も承知です。

  • awk
  • CSS
  • Go
  • HTML
  • Javascript
  • Perl
  • Python
  • PowerShell
  • SQL
  • XML
  • YAML
  • シェルスクリプト(Bash)

走りは、2000年頃、Perlで自分のサイトの掲示板を組んでたことかな。
だいたいはバッチなどの自動化系で必要な言語ですけど、SQLは設定やログをDBに放り込んでる情報系サーバが多くて、ごく基礎的な構文書ける、程度かなぁ。

プログラマのお仕事も若干やってみたりしましたが、言語を知ってるだけじゃダメでした。生産性向上のために開発環境(eclipse、vscode)、フレームワークの理解が必要で、片手間にやれるようなもんじゃなかったです。

ITインフラエンジニアがこれからクラウドやるんであれば、Python、YAML構文あたり抑えとけば。Azure/o365ならPowerShellあたりがおススメですかね。

まとめ

  • ITインフラエンジニアといえど、プログラミングの初歩的な知識は必要
  • 特にクラウドを手掛けるのであれば、絶対に必要
  • 運用の現場では、意外とExcelのVBAが重宝されている
  • プログラマに要求されるスキルとはだいぶ異なる