CodeZine(コードジン)

特集ページ一覧

アプリ開発者がネットワークに出会ったら? スキルを活かして可能性を広げよう【デブサミ2020夏】

【C-3】APP Meets NW! 垣根を越えて生きていく入門

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2020/08/31 12:00

目次

アプリ開発者とネットワークエンジニア、互いのスキルを活かし広げていこう

 では、どうやって学んでいけばいいか。アプリケーション開発者がネットワークを学ぶには。逆にネットワークエンジニアがアプリケーション開発を学ぶには。生田氏の推しはDevNetだ。オンラインサイトやオフラインイベントを通じてアプリケーションからネットワークまで幅広く学ぶことができる(詳しくは後述)。今では社会人エンジニアだけではなく学生からの参加もある。

 ここからはプログデンスでCTOを務める円佛公太郎氏がマイクを握る。円佛氏のキャリアのスタートはPCメーカーでのソフトウェア開発から。ここでソフトウェアとハードウェアを学んだ。最初の起業はホームページ制作会社で、アプリケーション開発の要素が多かったが、それ以降の起業ではネットワーク領域に進出していった。

株式会社プログデンス 技術最高責任者 円佛公太郎氏
株式会社プログデンス 技術最高責任者 円佛公太郎氏

 技術的な構成要素でアプリケーションとネットワークを見ると、アプリケーションは最も上位層にあり、その下にOSやミドルウェアや(サーバーの)ハードウェアがあり、そしてネットワークがある。サッカーなら、アプリケーションがアタッカーでネットワークがディフェンダーのように対極的だ。それゆえに「離れた」イメージがあるものの、「今はアタッカーとディフェンダーが手を携えてシナジーを生んでいく時代であり、こんな時代が来るのは必然」と円佛氏は言う。

 世界観の違いを見ていこう。アプリケーションは新しいツールを積極的に取り入れていく文化がある。コミュニケーションならSlackやWebex、そしてコードのバージョン管理や継続的インテグレーションもツールを用いて生産性を高めていく。

 一方、ネットワークの世界は変化をあまり好まない。コミュニケーションはいまだにメールが多く、バージョン管理はファイルにサフィックスを使うか、Diffツールを使う程度。継続的インテグレーションに至っては「何それ?」というレベルだ。

 実際、円佛氏がネットワークの世界に踏み入れた時、使うツールの違いに驚いたそうだ。ある日、作業を依頼されて現場に到着すると大変なものを目にした。現場で「ls」コマンドを入力すると反応が遅い。嫌な予感がした。そして画面いっぱいに似たファイルがずらりと並んだという。思わず円佛氏は「なんの罰ゲーム?もしくは視力検査?!」と困惑したという。ネットワーク業界ではアプリケーションの世界の常識や感覚が普及していないと痛感した。

本当にあった怖い話(再現イメージ)
本当にあった怖い話(再現イメージ)

 しかし円佛氏は「これってチャンスでは?」と気持ちを切り替えた。ネットワークの世界にプログラマビリティ、自動化、バージョン管理、継続的インテグレーションなどアプリケーションの世界のスキルや文化を活用したらぐっと生産性が上がると考えたのだ。今やクラウド時代、ネットワーク設定作業は様変わりしている。従来通りコントローラーから集中管理することもあるが、GUI画面で操作できる場面も増えてきた。ネットワークエンジニアが身につけるべきスキルも徐々に変わりつつある。

 これから必要となるスキルセットを考えてみよう。米グローバルナレッジが発表した「稼げるIT資格」によると、ネットワークに関する資格は14位のCCNPなど、そう高い位置にあるわけではないものの、ランキング内に食い込んでいる。かつては何か1つ極めたものがあれば「いっぱし」と言われたが、円佛氏は「今は3つくらいの軸があるといい」と言う。例えば「クラウド、セキュリティ、ネットワーク」、あるいは「プログラミング、プロジェクトマネジメント、セキュリティ」など。

 どこから学べばいいか。円佛氏はおすすめをいくつか挙げた。Pythonなら「PyQ」、メニューが豊富なUdemyもおすすめ。「もちろん翔泳社のサイトや書籍も」と付け加える。

 そして生田氏とともに円佛氏が薦めるのがCisco DevNetだ。ネットワークからアプリケーション開発まで、基礎から学べる教材が多数あり、多くが無料で提供されている。円佛氏は「Ansible、Git、PythonなどCiscoに特化しない教材も多数ある」と評価する。

 オンライン学習サイトは多数あれど、一通り学ぶと「次はどうすればいいの?」と壁にぶつかる。これは実践への足がかりが見いだせないためだ。その点、DevNetは専門の学習サイトではなくベンダーが提供しているだけに、製品と連携するためのノウハウや教材が豊富に用意されている。Sandboxがあるのも心強い。スイッチやルーターはそうそう手軽に試せるものではないので、作ってみたコードが無事に動くかどうかを試すことができるのは貴重だ。

 開発したものの例としては、Cisco ACIのアプリケーションやAnsibleのモジュール化などがある。前者はこれまで設定前後の比較を「show コマンド + diff」としていたところ、ACI ToolkitをPythonで書いたアプリをコンテナ化し、Cisco ACI状態を自動的に比較できるようにした。後者はなかったので作成し、後にオフィシャルにマージされた。

[事例]Cisco ACI 状態比較の自動化
[事例]Cisco ACI 状態比較の自動化

 円佛氏は締めとしてこう述べる。「自分にとってラッキーだったのはアプリのスキルを持ち、ネットワークに来たこと。今では垣根はなくなりつつある。ネットワークエンジニアはアプリケーション開発スキルを身につけて生産性を高め、キャリアアップしていきましょう。アプリケーション開発者はネットワークにある宝の山を活用しましょう。APIで拾う仕組みがレディな状態になっています。スキルをいかしてアイデアを活性化させてください」

関連リンク



  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

バックナンバー

連載:【デブサミ2020夏】セッションレポート

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5