水色が好きなダイスケです。エム・フィールドのエンジニアソリューション事業部で大手通信キャリアでPythonを使ったネットワーク検証自動化のプロジェクトに開発エンジニアとして5年間参画しています。
ネットワークエンジニアは常に人材不足といわれていますが、クラウドを利用する企業が増えたことで、ネットワークエンジニアにも様々な業務が求めらるようになりました。さらに、ネットワーク検証など様々な作業の自動化、RPAの導入やDevOpsが進んだことで、エンジニアに求められるスキルは大きく変化しています。
この記事では、私がチームリーダーとして経験した、ネットワーク検証自動化のプロジェクトの事例を元に、これからのネットワークエンジニアの仕事はこう変わる!という私なりの考察をシェアしたいと思います。
■ネットワーク検証自動化導入による効果
上の図は、私が担当したネットワーク検証の自動化の案件に関わる数字をまとめたものです。
これだけ作業が効率化したことで、お客様から「自動化を導入したことにより手動時よりも検証にかかる時間が15分の1に減り、非常に助かった。」、「バージョンアップでのバグ発見が見違えるほど楽になった。」と自動化した結果にとても喜んでいただけました。
複数の自動化された検証プログラムを同時に実行すれば、更に検証にかかる時間は短縮されます。さらに、手動検証時は人間が視認するため見逃しが発生したり、機器・環境の設定の戻し漏れなどの人為的なミスがありましたが、それがなくなったことも自動化導入の効果だと言えます。
このように自動化を導入することで検証担当者が単調な作業を繰り返す必要がなくなり、それ以外の業務に割ける時間が多くなります。そのため私が参画したプロジェクトでは、検証担当者のモチベーションがアップするという副次的な効果も感じられました。
■作業を自動化するメリットとデメリット
ネットワーク検証に限らず、自動化を導入すると様々なメリットがあります。
・作業時間短縮
・作業者の負担軽減
・作業者の専門性削減(高度な設定や操作が不要になる場合)
・人為的ミスの削減
・生産性向上(作業に充てていた時間が他の作業にあてられる為)など
自動化をする対象によって、上記以外にもより多くのメリットが生み出せます。
自動化を導入することによるデメリットは、
・自動化を導入するためのコスト
・専門性を持っている担当者・エンジニアの減少
・作業のブラックボックス化
・自動化プログラムの設定ミスや更新遅れにより誤ったアウトプットが繰り返される
・自動化プログラムのメンテナンスコストなどが考えられます。
開発や検証に関わる全ての工程を自動化する為には相当なコストがかかるので、どの作業の頻度が高いのかを分析し、上位20%の作業を洗い出して自動化を検討することで全体の作業ボリュームの80%を自動化できるようになります。(20:80 パレートの法則)
しかし、逆にいうと80%もの作業が自動化され、人の手を離れるということは、作業の80%がブラックボックス化されていくことになります。
自動化のプログラムが正常に動いていれば問題はないですが、いざという時に人の手で対応できるよう常に準備をしておく必要があります。
自動化プログラムのメンテナンスも怠ってはいけません。メンテナンスを怠ってしまうと間違った作業がくり返される事になります。そのため自動化対象作業と自動化プログラムを上手く伝承していく事が自動化導入後は大事になってきます。
■自動化を担当して感じたやりがいと大変なこと
自動化のプログラムを作る開発者として、私個人の意見としては、自分が書いたコードによってお客様の負担を数字として目に見えて軽減できていること、人の役に立っている実感が私のやりがいです。
また、自動化やRPA、ノーコード開発など新しいソリューションがでてきている中で、いち早く自動化の案件に携わったことで、これからのエンジニアはどうあるべきかを考えるきっかけとなったことも良い経験になりました。
自動化のプログラムを作る上で大変だと感じたことは、多くありました。中でも一番大変な作業は、人の目では正常と判断出来てもプログラムでどう判断するかを数字で明確に規定することです。
例えば、あるファイルを作成した際にデータ残容量が”問題ないぐらい残っていればOK”という手順があるとして、それをプログラムにするには”問題ないぐらいの容量”を数値化しなければなりません。残容量60%以上なら問題ないと定義してしまうと、残容量59%になるとエラーとして検出します。判断基準を明確に数字で設定するために、お客様と全ての手順を数値化する検討をしました。
お客様のやりたいこと、実現したいことを、手順に沿って正確に引き出し、それを実装する。すごく大変ではありますが、それ以上に達成感、やりがいを感じられる仕事だなと私は思いました。
■これからのネットワークエンジニアに求められる資質と資格
検証作業、構築作業などネットワークエンジニアが今まで行ってきた仕事がどんどん自動化されていく中で、ネットワークエンジニアに求められる資質や資格とはどのような事なのでしょうか。
前述した通り、多くの業務が自動化されていますが、いざという時には、専門性のあるネットワークエンジニアは必要です。
とはいえ、現状のように経験が少ないネットワークエンジニアでもできるような仕事はあっという間に減っていき、求められるスキルは高くなっていくでしょう。
これからのネットワークエンジニアに求められる資質としては、前述したようにお客様とのコミュニケーションが取れることが必須です。DevOpsが当たり前になっている現在、お客様の利便性を追求するホスピタリティとそのためにお客様の要望を引き出すコミュニケーション能力は必須です。また、進化する技術に合わせて自分の向き不向きを判断しながら、適切にスキルチェンジをしていけること。一点突破の技術力を磨くのであれば、世界レベルの技術力を目指し、そういうタイプでないのであれば、幅広い知識をもったオールラウンダーの資質が求められると思います。
ネットワークエンジニアとしては、既にPythonはできて当たり前の時代なので、Python、Ansibleなどの言語はすぐに習得に取り組みましょう。
また仮想ネットワークやVMwareでの仮想環境構築の知識も役に立つと思います。AWS、Kubernetes、VMware、Dockerといったところは知識をつけておくといいでしょう。
資格としては、Python3エンジニア認定基礎試験、CCNA(Cisco Certified Network Associate)は必須。Red Hat Enterprise Linux 8 向け RHCE 認定試験、CCNP(Cisco Certified Network Professional)もできれば取得することをお勧めします。
以上が、ネットワーク検証自動化案件に携わっている私が考えた、これからのネットワークエンジニアに必要な資質と資格です。
いかがでしたでしょうか? 自動化、ノーコード化は世界中で加速しています。
先日、当社の自動化の経験を活かし、どんな機器にもノーコードで対応できるネットワーク検証自動化ツール「RBO-Field」をリリースしました。
エンジニアを多く抱える当社が、ノーコードの自動化ツールを発売することで自社の首を絞めるのでは?という声も聞こえそうですが、どんなに自動化が普及しても、人間でなければできない仕事はたくさんあります。エム・フィールドも、私も、技術の進歩に乗り遅れず、常に新しい技術や事業にチャレンジしていきたいと思います。
自社のインフラを効率化したい、コスト削減をしたい、インフラに関わる人員を削減したい、効果が大きいDX施策を導入したいとお考えの方は、
株式会社エム・フィールド
お問い合わせフォーム https://www.ambl.co.jp/contact/
にご連絡ください。