見出し画像

Cisco Certified DevNet Associate資格について

・はじめに

この記事を読んでいるということはCisco関連の資格について勉強している、あるいはCCNAもしくはその上位資格を取得している方が多いと思うため説明を省略している部分があります。また、私自身この資格については勉強中です。自己の学習メモとして記事作成を行っている部分もあり内容の正確性は保証できないため不明点・疑問点については適宜調べることを推奨します。

・Cisco Certified DevNet Associateとは

Cisco社が2020 年 2 月 24 日より開始したソフトウェア開発
と設計に関する知識を問う新認定。Ciscoが認定のポートフォリオを変更する一つの理由としては「Unleashing the full capabilities of the new network」を実現するための認定が必要とされてきたことなどから。

・Cisco Certified DevNet Associateの内容

まずはBlueprintを参照します。Blueprintとは出題範囲がまとめられたドキュメント。Blueprintを確認することが、各試験の受験準備の第一歩と言えると思います。

順に見ていきます。この記事ではソフトウェア開発と設計の部分に関してのみ。

スクリーンショット 2020-05-03 3.02.43

1.0 ソフトウェア開発と設計

1.1 データ フォーマットの比較(XML、JSON、および YAML)

・XMLとは(eXtensible Markup Language)日本語にすると「拡張可能なマークアップ言語」
・HyperText Markup Languageの親
・Structured Generalized Markup Languageの派生物
・相違点としてはHTMLはタグにより表示されるデザインが異なっているが、XMLはレイアウト情報を持たずデータを記述する。XSLなどの周辺技術でレイアウト・デザイン情報を持つことで、データとレイアウトを分離することが可能となる点
・XMLは、テキストデータを対称タグでラップしセマンティクス(断片)を示す
・属性値は常に一重引用符または二重引用符で囲む

JSON(JavaScript Object Notation)はデータ記述言語の1つ。
・JavaScriptでのオブジェクトリテラルの記述方法から派生したデータ形式。通常、JSONファイル名は「.json」
・JSONの個々のオブジェクトはキーと値のペアで構成され、個々に中括弧で囲むことが可能
・共通データ定義言語として XML が利用されてきたが、現在では、簡易的な JSON が利用されるケースが増えてきている
・JSON は YAML のサブセット
・JavaScript のデータ定義文をベースとした、簡易的なデータ定義言語

YAML
・yaml ain't markup language の略
・Ansibleなどのツールの宣言型自動化テンプレートを作成する際用いられる
・YAML は「仕様」であり、処理するライブラリの「実装」が必要
・各種設定ファイル、データ保存・交換用、ログファイルの用途でしようされやすい
・YAMLのコメントは長い文字列リテラル以外の任意の場所に挿入でき、先頭にハッシュ記号とスペースが付く
・終了タグが必要ない、インデントを使ってデータの階層構造を表すため読みやすいといった特徴がある

1.2  一般的なデータ・フォーマット(XMl、JSON、および YAML)の構文解析および Python データ構造への変換

ここでの解析とはメッセージを分析し、メッセージを構成要素に分解し、コンテキストでその目的を理解すること

シリアライズ・・・ローカルに保存されたデータを取得し、これを同等のJSON、YAML、またはXMLとして文字列形式で出力し、リモートに表示するように要求

解析⇄シリアライズ

PythonでのXMLの解析

・すべてのテキストタグ付きデータフィールドは、Pythonまたは他の一般的な言語のデフォルトのデータ型に明確にマッピングされない
・属性値をデータ内でどのように表現する必要があるかは必ずしも明確ではない

サンプルファイルのディレクトリに移動
ヘルパーライブラリと正規表現エンジンをインポート
parse関数を使用してファイルを解析、関数を使用してルート要素を取得
パーサーが収集したデフォルトの操作とテストオプションの値を出力
パーサーの詳細リンク

PythonでのJSONの解析

トークンリクエストからのレスポンスを解析する場合
Python独自のjsonライブラリを使用、JSONをPythonのネイティブデータ構造に解析、データ構造をJSONとしてシリアル化
json.loadメソッドを使用


PythonでYAMLを解析する

PyYAMLを使用すると、PythonでYAMLを解析するのが簡単になる

パブリックAPIからのJSONデータを探して、何を抽出できるかを確認しよう


1.3 テスト駆動開発の概念

・ユニットが目的に適合していることを確認する
・バグをローカルで捕捉し早期に修正、これらのコンポーネントに依存するソリューションの高次の部分をテスト、使用する際のトラブルを防止する

テストを作成→実行、予期しない理由で失敗するかどうかを確認→新しいテストに合格するためのアプリケーションコードを記述→テストを実行して、失敗したかどうかを確認→アプリケーションコードのリファクタリング

高いテストカバレッジを提供

1.4 ソフトウェア開発手法の比較(アジャイル、リーン、ウォーターフォール)

ウォーターフォール
滝のように、プロセスは一方向に進み、後戻りすることはない(ようにする)

アジャイルソフトウェア開発
開発の後半であっても、変化する要件を需要。アジャイルプロセスは、変化を利用して顧客の競争力を向上させる
短いタイムスケールを優先
定期的にチームはより効果的な方法を検討、それに応じてその動作を調整する

リーンソフトウェア開発
無駄を最小限に抑え、顧客への価値を最大化することに重点を置く

無駄(部分的に行われる作業、待機、顧客にとって価値のない追加機能)をなくす
不確実性がある場合は、意思決定を意見や推測よりも事実に基づいて行うため、意思決定を遅らせる、多くの詳細情報を持っている状態でより適切な決定を実施する

1.5 メソッドや関数、クラス、モジュールにコードを組織化するメリットの説明

プロジェクトが拡大し、他の開発者(および利害関係者)が関与するようになると、より優れたコードを記述し、それをより簡単に共同作業するのに役立つ規律ある方法とベストプラクティスが必要となる

クリーンなコードは、他の開発者がコードを読みやすく、理解しやすくする
・コードのフォーマットが整い、関係するコンピュータ言語の一般に認められているフォーマット方法に従っている
・ファイル全体で、インデントレベルごとに同じ数のタブまたはスペースを使用している(Pythonなどの一部の言語では必須)
・変数、オブジェクト、およびその他の名前がコードで使用されている
・コードは適切なコメントで内部的に文書化されている
・コードの各行は目的を果たし、未使用のコードはすべて削除されている

クリーンではないコードはすぐに技術的な負債になる。つまり、保守が不可能で、信頼できなければ使用不可。リファクタリングするか、削除して書き直す必要が求められる。

1.6 一般的な設計パターン(MVC および Observer)の利点

オブザーバーのデザインパターン
監視しているオブジェクトに変更があったときにオブジェクトがイベントを受信できるようにするサブスクリプション通知デザイン

モデルビューコントローラー(MVC)

グラフィックユーザーインターフェイスに依存するアプリケーションの開発を簡素化する。MVCは、コードと責任を3つの異なるコンポーネントに抽象化する。各コンポーネントは、一方向で相互に通信します。ユーザーインターフェイスとWebアプリケーションで一般的に使用される。

1.7 バージョン管理の利点

・複数のユーザーが、互いの変更を上書きすることなく、プロジェクトに同時に取り組むことが可能
・誰が何を変更したか、いつ変更したか、理由を把握可能
・新しい機能を個別に構築可能
・間違いがあった場合、ファイルを元に戻すことが可能
・ファイルはリポジトリに保存されるため、どのデバイスでも作業コピーを作成可能

1.8 Git でよく使用されるバージョン管理操作の活用

Gitは最も一般的なバージョン管理システム
Gitクライアントはクライアントマシンにインストールする必要があるMacOS、Windows、Linux / Unixで利用可能
GitとGithubを使用して試してみよう

2.0 APIの理解と使用 Devnet Associate 学習メモ

・学習教材候補
Introducing the DevNet Associate Fundamentals Course
公式の有料学習教材
組み込みの統合ラボも備えている、オールインワンで学習可能
選択問題や統合ラボがあるが基本的には教科書的な学習教材
学習教材の統合ラボではなくGitなどは実際に動かしてみた方が良いと感じる部分もある

DevNet Associate Exam v1.0(200-901)
無償の学習経験と試験準備を補足するためのリソース。

お読みいただきありがとうございます。
このnoteはメモ程度のものなので不明点は上記教材などで補完してください。


この記事が気に入ったらサポートをしてみませんか?