Cisco DevNetでネットワークの最先端を学習していくシリーズ第3回

ネットワーク機器、操作・設定

第3回 開発環境の基礎とDevNet活用におすすめのツールなど

Cisco DevNet を活用したネットワークの最先端とプログラミングを学習していきながらネットワークプログラマーを目指すシリーズ。第3回はプログラマー(開発者)に必要な開発環境とはどういうものか、また必要なものは何かや、DevNet でおすすめしている開発環境の情報の紹介などをまとめています。

内容はCisco DevNet の Learning Lab にある以下のモジュールを参考にしてまとめています。

モジュールとはある技術や目的の習得に必要なラーニングラボのいくつかのセミナーをまとめた1つの単位です。

Cisco DevNet
モジュール:開発環境のセットアップ
What is a Development Environment, and why do you need one? (Japanese)
Setting up your Windows workstation as a development environment (Japanese)
Setting up your Mac OS workstation as a development environment (Japanese)
Setting up your Linux (CentOS) workstation as a development environment (Japanese)

Cisco のID を登録してログインするだけでDevNet 内のたくさんのコンテンツが無料で利用できるので興味があればぜひ使ってみてください。

開発環境とは

開発者がソフトウェアを開発するために必要な作業環境です。作業環境には、PCなどの機器やソフトウェア、ツールなどの一式が含まれます。

開発環境に必要なものは開発するものによって、また使う人の好みによっても異なります。

開発環境の構成要素はいくつかのカテゴリーに分かれており、カテゴリーごとに必要なもの、好みのものを選択していけば良いです。

ちなみに、開発環境を作成する場所としては、ローカルマシン上に作成する場合と、遠隔のサーバに用意しておいてリモートデスクトップやSSHなどを使ってサーバに接続して使用する方法、または、クラウド上の開発環境へWebアプリケーションを使ってアクセスする方法、などがあるようです。

開発環境の主な構成要素

開発環境で必要になる基本的なカテゴリーは以下のように分けています。

  • OS(オペレーティングシステム)
  • ソース管理システム
  • ターミナルとシェル
  • プログラミング言語
  • テキストエディタとIDE
  • 開発ツールおよびクライアント
  • アプリケーションコンテナエンジン

OS(オペレーティングシステム)

Windows、Linux、Mac OS

好みはあると思うがこれら一般的な主要OSはいずれも開発環境としては問題なく使えるので他のみんなと合わす必要がなければどれでもよさそう。使い慣れたOSを使えば良い。ただし、どのOSでも最新バージョンにすることが開発環境にとって重要とのこと。

ソース管理システム(バージョン管理システム)

プログラムを更新していく過程で重要なのはファイルのバージョン管理。
作成したプログラムを保存するたびに、別のファイル名を付けて保存していくやり方では、作成したファイルごとの違いがわかりずらいし管理しずらい。また、チームで共有して編集していくような場合は、同じファイルに上書きしてしまうなどの心配がある。

このような心配をしなくて済むようにファイルの保存とともに変更履歴を効率よく管理していくソース管理システムがある。複数人で共有する場合は、上書きがされないような仕組みもある。

ソース管理システムで代表的なのは git や subversion がある。

git
https://git-scm.com/

subversion
https://subversion.apache.org/

ターミナルとシェル

ターミナル(コマンドラインターミナル)はプログラムの実行やシステムとのやり取りに必要なツール。シェルはOSと対話するためのプログラム。ターミナルを介してユーザーからのコマンド入力を受け取り実行する。

以下は代表的シェル。

・bash
Unix/Linuxで使用される。

・cmd.exe
「コマンドプロンプト」。Windows標準。

・PowerShell
「パワーシェル」。Windows7移行、Windowsに標準搭載。

プログラミング言語

プログラミング言語の種類はたくさんあり、作成するアプリケーションや用途によって使い分けることを目的に設計されている。また使うプログラミング言語によっては、以下のようなコンポーネントも同時に必要になることがある。

・コンパイラ:コンピュータが理解し実行できる機械語に変換することをコンパイルという。コンパイルするためのプログラムのことをコンパイラと言い、特定のプログラム言語ではコンパイラが必要となる。例としては、C++とGoなど。コンパイルされていればユーザ側のシステムにコンパイラは必要ない。

・インタープリタ:プログラム言語の命令を、機械語に解釈しながら実行する。アプリケーション開発者とユーザーの両方にインタープリタのインストールが必要になる。Pythonはインタープリタ型言語。Pythonはネットワークプログラミングにも使われるので、仕組みを理解しておきたい。

・ソフトウェア開発キット(SDK):SDK とは、開発者がアプリケーションを作成するために必要になるソフトウェア開発ツールの数々を 1 つにまとめたパッケージのことです。例としては、Java開発者は開発の際にJava SDKを利用している。

テキストエディタとIDE

アプリケーションを作成する開発者はプログラムを書くためにテキストエディタを利用します。テキストエディタはプログラミングがやりやすくなるよう、見た目を色分けなどで工夫したり、作業を効率化するために、コードの自動補完や構文エラーなどの検出機能などが付いていたりします。

IDE(Integrated Development Environment:統合開発環境)とは、プログラムを書く際に役立つ補足機能やデバッグ、コンパイラなどプログラミングに必要な機能が一つになったテキストエディタよりもプラグラミングに特化したソフトウェアです。

開発ツールとクライアントソフト

APIの調査やアプリケーションテストに使用するツール。また、Webを介したアプリケーションではWebアプリケーションを検証するためのツールも必要になる。作成するものや開発環境によって使用するツールはいろいろな種類がある。

アプリケーションコンテナエンジン

アプリケーションと必要なライブラリ/ミドルウェアと1つのコンテナにパッケージ化して収容する方法。コンテナは、ホストOS上に作成する必要があり、各コンテナは他のコンテナから隔離された状態で実行できることがメリット。

DevNet おすすめ開発環境

紹介された開発環境の中には DevNet と相性の良いものがあると思いますが、これがないとだめということはなく、同じ目的が果たせれば他のものや、すでに使っている手に馴染んでいるものを使えば良いとおもいます。

以下に参考までにWindows向けの開発環境で紹介されていたものを挙げておきます。詳細なインストール手順等は以下のリンク先や各サービス提供サイトでご確認ください。

Cisco DevNet
モジュール:開発環境のセットアップ
Setting up your Windows workstation as a development environment (Japanese)

また、Mac OSやLinux向けの開発環境については上記のリンク先から以下のトラックを参照ください。

Setting up your Mac OS workstation as a development environment (Japanese)
Setting up your Linux (CentOS) workstation as a development environment (Japanese)

ソース管理システム

Git
https://git-scm.com/

ターミナルとシェル

bash
Git インストールプロセスの中で Windows 用の git-bash シェルとインタープリタがインストールされている。

プログラム言語

Python
https://www.python.org/downloads/

node
https://nodejs.org/en/download/

テキストエディタとIDE

Atom
https://atom.io/

開発ツールとクライアントソフト

Postman
https://www.getpostman.com/apps

Rest APIを開発したりテストしたりするのに便利なツール。

ngrok
https://ngrok.com/download

自PC上のサービスを外部のインターネットに公開するツール。HTTPやHTTPSを使ってインターネット経由で簡単に接続テストを行うことができるようになる。

Google Chrome
https://www.google.com/chrome

Web開発で検証に使えるChromeのデベロッパーツール。

OpenConnect
https://github.com/openconnect/openconnect-gui/releases

VPNクライアント。DevNetのサンドボックスに接続するために使用。

アプリケーションコンテナエンジン

Docker
https://www.docker.com/community-edition

アプリケーションをコンテナに収納して開発・実行できるソフトウェアプラットフォーム。Windows Pro の仮想化機能 Hyper-V を有効にすることが必要。

最後に

ざっとDevNetで紹介された開発環境のツールなどを並べてみましたが、ネットワークエンジニアにとってはさすがに見慣れないものが多いです。

まずは流し目程度で確認しつつ、実際に必要になったときには、それぞれ調べながら使い慣れていくしかない、という感じです。

幸いにも開発者にとってはどれも有名なもののようで親切な方がわかりやすく説明してくれているサイトがたくさんあるようです。次回からは、そのようなサイトにもお世話になりつつ少しづつ実践していければと思います。

参考リンク

Cisco DevNetでネットワークの最先端を学習していくシリーズ第1回

CCNA(Cisco Certified Network Associate) 新試験の概要


コメント