Python と私

    本ページは英語ドキュメントを翻訳したものです。

     


     

     Python と私

    最近、私は Python を学習し始めました。ただし、それは別に何も大それたことではありません。

     

    知人には、学習意欲が非常に高いとよく言われます。今まで 10 年間はネットワーク関連の仕事に就いてきましたが、開発者やシステム管理者との対話をスムーズにするため、コーディングを勉強しようと思い立ちました。彼らの課題を理解できれば、自分がネットワーク アーキテクトとして設計する際に、その要素を取り入れることができます。ネットワーキング業界は変化しており、スキル セットも広げる必要があります。では、エキスパートは今後不要になるのでしょうか。いいえ。誰もがプログラマにならなければいけないのでしょうか。いいえ。しかし、コーディングを勉強するメリットも多くあります。たとえば、職探しのときなどは有利です。

     

    しかし、なぜ Python なのでしょうか。

     

    • 簡単だから:Python は、他の多くの言語よりもはるかにコーディングが簡単です。コーディングは複雑で、これまで楽しいと思ったことは一度もありませんでした。コーディングを楽しめるようになるまでの、最初の壁を乗り越えられませんでした。Python なら、すぐに習得できます。インデントが上手に使用されているため、コードが読みやすくなっています。

    • プログラム的な考え方に役立つから:Python を学ぶうち、プログラム的な考え方が必要とされた大学時代を思い出しました。例を挙げると、Python を学習するために Google クラスを使用しました。次のようなミニ シナリオや課題が用意されています。

      # B. front_x
      # 与えられた文字列のリストから、文字列のリストを
      # 並べ替えて返します。ただし、「x」で始まるすべての文字列を先頭にまとめます。
      # 例:['mix', 'xyz', 'apple', 'xanadu', 'aardvark'] から
      # ['xanadu', 'xyz', 'aardvark', 'apple', 'mix'] が得られます
      # ヒント:これは 2 つのリストを作成して、結合する前にそれぞれをソートして
      # 実行できます

      このようにタスクを小さく分割する考え方は、ネットワーク エンジニアにも非常に役立ちます。ネットワークのトラブルシューティングや構築の際にも、非常に有効なスキルです。このタスクは以下のコードで解決されます。

     

    def front_x(words):
      x_list = []
      other_list = []
      for word in words:
          if word.startswith('x'):
            x_list.append(word)
        else:
            other_list.append(word)
      return sorted(x_list) + sorted(other_list)
    


    最初に def front_x で関数が定義され、単語のリストが関数に入力されます。2 つの新しいリストが作成され、最初は空です。その後 for ループを使用してリスト内で処理を繰り返し、「x」で開始する単語が見つかると x_list に挿入します。「x」で開始しない単語はもう 1 つのリストに挿入されます。結果として、2 つのリストを結合して返します。


    • 認定に向けてより効率的に学習できるから:認定試験に向けた勉強では、ほぼ間違いなく実習が必要です。多くの場合、何らかの形態の基本トポロジと基本構成が使用され、ラボにはそれぞれ固有の構成があります。コーディングの学習によって、基本トポロジや基本構成の構築といった作業を自動化できます。論理ネットワークの構築や BGP へのアドバタイズなどにも役立ちます。100 個のループバックの設定を作成して BGP へアドバタイズするのは面倒な作業ですが、以下に挙げるサンプル コードを使えば、Python で簡単に実行できます。

     

    for x in range(101):
        print "interface loopback" + str(x)
        print "ip address 1.1." + str(x) + ".1 255.255.255.0"
        print "!"
    print "router bgp 65000"
    print "address-family ipv4 unicast"
    for x in range(101):
        print "network 1.1." +str(x) + ".0 mask 255.255.255.0"
    

     

    • 自動化するために使用できるから:自動化の段階に到達する前に、すべての構成要素がどのように組み合わされるかを理解する必要があります。自分が理解していないものは自動化できません。この点は、専門知識を持つ人材が各分野でまだ必要だという私の主張につながります。自動化に着手するには、VLAN のプロビジョニングなどのシンプルなタスクから始めます。こうしたタスクに今長い時間を取られているとしたら、その時間をネットワークの改善や新しいスキルの習得に回せれば効率を改善できます。

     

    • 楽しいから:コーディングは楽しいもので、コーディングを学べる面白いサイトが公開されています。たとえば CheckIO(https://checkio.org/)では、パズルを解いてゲームをしながら、コーディングを学習できます。とてもスマートな方法です。他にも同様のサイトがいくつもあり、Python コミュニティは本当に役に立ちます。したがって、Python のコーディング方法を学習するリソースを見つけるには何も問題もありません。

     

    コーディングを始めてみようという気持ちになったでしょうか。上記のコードはすっきりしていないかもしれませんが、動作します。効率的かどうかを気にするより、とにかくコーディングを始めることのほうが重要なのです。それではまたいつかお目にかかりましょう。

     

    ====

     

    Jennifer(コミュニティ マネージャ)からの注:

    今年初め、シスコ ラーニング ネットワーク プレミアムは Python の 10 部からなる入門トレーニング ビデオ シリーズを公開しました。Python は、現在使用されている最も一般的なプログラミング言語の 1 つです。このシリーズの詳細については、Karlo のブログ「Introduction to Python Programming(Python プログラミング入門)」[英語] を参照してください。

    CLNBanner