Cisco DevNet の学習コンテンツでプログミングを学ぶ

##はじめに
この記事は、Cisco Systems Japan Advent Calendar 2019 の 18日目として投稿しています。
2017年版: https://qiita.com/advent-calendar/2017/cisco 
2018年版: https://qiita.com/advent-calendar/2018/cisco 
2019年版: https://qiita.com/advent-calendar/2019/cisco

##ネットワークとプログラミングを学ぶ
こんにちは :smiley:  いよいよ2019年も残すところ後わずかですね。  
こちらの記事では、ネットワークやシステムを柔軟にコントロールするのに便利なプログラミング技術を学ぶのに便利なコンテンツ紹介します。
学習方法は数多く出ているプログラミング本などがありますが、 今回は弊社の手前味噌になってしまい恐縮ではありますが、Cisco DevNet の "Learning Tracks (学習トラック）" のコンテンツを使って学ぶ方法を紹介しています。
特にこれから、ネットワーク + プログラミングを学ぶ方には参考になると思います。

そもそも、Cisco DevNet とは、インフラストラクチャー・エンジニアやアプリ開発者エンジニア向けの情報ポータルサイトでありコミュニティーになります。
https://developer.cisco.com/
<img width="1102" alt="000.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199936/ec35abb2-2aa5-335d-9037-d2825f1a5b48.png">

各種情報については、[Cisco DevNetのポータルサイト](developer.cisco.com) から、各種アプリケーション・プログラミング・インターフェイス(API)やソフトウェア開発キット（SDK) の情報、そしてプログラミングに関連する情報などを提供しています。
また、ユースケースに合わせたサンプル・コード(Code Exchange)やアプリケーション連携出来るパートナーが探せるサイト(Ecosystem Exchange) などもあります。
そして、このサイトでは、学習コンテンツの "Learning Tracks (学習トラック）" を**無償**で提供しています。
学習コンテンツは、開発環境のセットアップやプログラミング, API の基礎といった初歩的なところから、ネットワークのコントローラーやデバイスなどと連携するような実践的な部分までカバーされています。
そして、これらのコンテンツについては日本語のコンテンツも拡充してきています。
さて、宣伝紹介はここまでにして実際の使い方に入ります。

##実際に使ってみる
まずは、[Cisco DevNet](https://developer.cisco.com) へアクセスします。
<img width="1117" alt="001.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199936/9119ed22-56bb-1856-30e3-dee1dd1f779f.png">

学習コンテンツを使うには DevNet アカウントを入手して DevNet へログインをします。
アカウントがない場合は、" Sign UP FREE" から登録をします。
DevNet アカウントは、_Github, Google, facebook, Cisco, Webex Meetings, Webex Teams_ のアカウントと紐づけることが可能です。
<img width="320" alt="login.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199936/4217458f-a9e3-9bad-4836-283d22265444.png">
*学習コンテンツの中には、シスコがクラウドで提供しているデモ環境の dCloud を利用するものあるので、Cisco.com ID があるとより便利です。


ログインしたら "Learning Tracks" を選択します。
<img width="1104" alt="002.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199936/c78acaf5-594d-283d-ce75-d507c40affbf.png">

学習コンテンツとして、"Tracks(トラック)", "Modules(モジュール)","Labs(ラボ)" からなります。
<img width="1118" alt="003.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199936/6347a7ab-3c2c-7f57-ecb0-86409f1438db.png">

Tracksは、選択されたシスコテクノロジーを学習するためのコンテンツになっています。
トラックはモジュールで構成され、モジュールはラーニングラボで構成されています。
一部のモジュールは、プログラミング、ネットワーキング、またその他のトピックの一般的なところからカバーしています。

日本語のコンテンツを利用するには、Labs, Modules で検索すると探しやすいです。

最初に各Labs(ラボ)での日本語でのコンテンツを探してみます。
"Labs" を選択します。
<img width="766" alt="004.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199936/f7a45c0e-57e5-f538-4f16-23c69fc6f20d.png">


Labのページで日本語コンテンツを探すのに「Japanese」で検索します。
<img width="1107" alt="005.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199936/a25defe5-0041-66e8-d5b8-bf7f2ce57159.png">


こちらで、日本語化されているLabs(ラボ)のコンテンツと、各Labs(ラボ)の所要時間が分かるようになっています。( 2019年12月18日現在では、75個のラボが日本語化されています。)
* 若干、古いコンテンツもあるので注意が必要です。

これから始める人向けの Coding の基礎の日本語コンテンツとしては以下がオススメです。
1. Coding 101  REST API Basics
 2. Coding 102  Calling REST APIs from Python 
3. Intro to Coding and APIs 
4. Intro to Python - Part 1
 5. Intro to Python - Part 2
 6. Introduction to Git

次にモジュール単位で日本語のコンテンツを探してみます。
モジュールで "Japanese" で検索します。
日本語化されたコンテンツが出てきます。
<img width="1103" alt="006.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199936/116e5cc0-3d17-0101-c5ac-f919315c99b7.png">
2019年12月18日現在では、10個のモジュールが日本語化されています。
（全体では103個のモジュール（日本語モジュール含む））

＜日本語モジュール＞
1. 開発環境のセットアップ
2. ラボ環境の確認
3. Python の基礎
4. REST API の基礎
5. Cisco DNA Center のプログラマビリティの紹介
6. モデル駆動型プログラマビリティの紹介
7. IOS XE 上のゲスト シェルの紹介
8. Meraki の紹介
9. Connected Mobile Experiences（CMX）の紹介
10. NFVIS API を使用したネットワーク機能の仮想化の紹介

各モジュールコンテンツでも、学習するのにどのくらいの時間がかかるかの目安の時間も分かるようになっています。
<img width="1086" alt="007.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199936/5cd4f815-2784-cfbc-77c0-b4fed38f1504.png">

コンテンツ自体はステップ・バイ・ステップで進められるようになっていますので、ぜひお時間がある時にでも遊んでみて頂ければと思います。　この他にも英語のコンテンツもあるので、こちらもご興味がある方は、のぞいてみてください。
私も復習をしにいこうと思います。:sweat:

##さいごに
今回はプログラミングとネットワークを学習するためのコンテンツとして、Cisco DevNet の学習コンテンツである "Learning Tracks（学習トラック）"を紹介しました。
ベーシックな部分については、これからネットワークエンジニアでプログラミングをはじめる人には、ぜひ参考にして頂ければと幸いです。