キャリテク!マガジン
- TOP
- キャリテク!マガジン
- Pythonを使ったネットワーク自動化を学ぶことになりました。
Pythonを使ったネットワーク自動化を学ぶことになりました。
こんにちは、吉政創成 菱沼です。
Pythonを使った自動化の学習コラムの最終回で、今後はPythonを使用したネットワーク自動化の学習を進めていくという予告をしておりましたが、ついに教科書となる書籍「Pythonによるネットワーク自動化の教科書」が発売されました!
ということで、今月からはこちらを教材にした学習コラムをスタートさせていただきます。
プログラミング初心者がはじめてプログラミングを学ぶ際に学びやすいと評判のPython。
まだまだまだまだ学習中の身の私ですが、これまで学んできたことを振り返ると、過去にした無謀ともいえる唐突なプログラミング挑戦で扱った言語に比べれば確かにとっつきやすい気はしております。
前回まではExcel業務の自動化について学んだところでしたが、今回からはネットワークが対象となります。Pythonに興味がある!という超初心者の方、ぜひ一緒に学習していただければ幸いです。
■Pythonの歴史
さて、ネットワーク自動化の本格的な話に入る前に、まずPythonについておさらいしていきます。
Chapter1となるこの章では、Pythonの歴史や特徴、Pythonのコーディングで意識して欲しいこと、学習をすすめるにあたっての基本となる情報などを学ぶことになります。
Chapter1 Git入門編:1.1 Pythonの入門知識
Pythonは、シンプルで読みやすく、実用的なプログラムを書くことができるプログラミング言語です。
(中略)
近年、機械学習やディープラーニングの分野で欠かせない存在となっているということを聞いたことがある人も多いでしょう。実際に、ITエンジニアが学びたいプログラミング言語ランキングでは、毎年上位に選出されるほど人気があるプログラミング言語です。
さらに、2020年度の基本情報技術者試験からは、試験問題に出題するプログラミング言語の一つに追加されました。Pythonは、今もっとも注目されているプログラミング言語と言えます。
Pythonの起源は1990年代の初めに遡ります。当時、GuidovanRossum(グイド・ヴァンロッサム)氏は、ABCというプログラミング言語の後継としてPythonを開発しました。はじめてソースコードが公開された時のバージョンは0.9で、その後、1994年1月にはPython1.0がリリースされました。その名前は、イギリスのコメディ番組「空飛ぶモンティ・パイソン」にちなんで付けられました。
(中略)
2000年には、Python2がリリースされ、Guido氏を中心としたPythonのコア開発チームは、2001年に非営利団体のPythonソフトウェア財団(PythonSoftwareFoundation;PSF)を立ち上げました。以降、このPSFがコアディストリビューションの開発や知的財産権の管理をおこなっていますが、ソースコードは今もオープンソースとして提供されています。
現在のメジャーバージョンであるPython3は、2008年12月にリリースされました。しかし、Python3は、Python2とは互換性のない新たなものを目指したことで、ユーザーはPython3へ移行することに消極的でした。Python3とPython2を共存して使わなければならない時期もありましたが、2020年にPython2系のサポートが終了したこともあり、現在は、Python3 が主流となっています。
ここはほぼ読み物になりますので、読んで頂ければなと。
ちなみに最後の方に出てきたPython2とPython3ですが、この二つの間に互換性はありません。では具体的にどのあたりが違うのかというと以下が挙げられます。
① 結果出力
Python2→print文[print ‘文字’]
Python3→print関数[print(文字)]
② 整数同士の演算結果
Python2→整数(例:3÷2=1)
Python3→小数点有(例:3÷2=1.5)
③ 数値の型
Python2→整数int型、長整数long型
Python3→long型廃止、最大値・最小値の制限がなくなったint型に
違う点はこれ以外にもあるようですが、これから学習される方は特にPython2を知らずとも問題はないと思います。
ただ、いつかPython2で作られたものをメンテナスしなくてはいけない可能性がないこともないかもしれませんので、Python2とPython3ではいろいろ違うところがあるんだなぁという程度の認識はあった方が良いんだろうなあと思っています。
Pythonのバージョンについて
Pythonは年1回、秋ごろに新しいバージョンが出ており、2024年現在の最新は3.12です。
Python3は基本的に下位互換性が保たれているため、Python3台であればどのバージョンでも書いたコードが動かないという事はめったになく、たまにあっても多少の変更で済む範囲とのこと。
どのバージョンを使うかで言えば、はじめて学習される方なら、基本的に新しいバージョンで学習すればいいそうです。
使っているうちに新しいバージョンが出る季節が巡ってくると思いますが、追加された機能をよほど使いたいと思わない限り、すぐにバージョンアップすることはあまりなく、1年ほど様子をみる方が多いようです。その理由としては、サーバなどの環境面やライブラリの対応状況などの事情によるものだそうです。
玄人の方々は複数のマイナーバージョンを同居させて、用途に合わせて変えているということですので、そういった選択もありかと思います。
なお、同居できるバージョンはマイナーのみです。
例)バージョン3.9.8:3=メジャー、9=マイナー、8=マイクロ
→3.9.xと3.8.xは共存できるが、3.9.8と3.9.7は共存できない
ところで、macOSをご利用の方に関しては、Pythonが標準でインストールされており、購入時期によってはPython2が入っている可能性があります。
またPython3だったとしても、標準でインストールされているものが古い可能性は高いため、これから新たに学習される方はPythonのバージョンを確認してから使うようにした方がよさそうです。そして、起動するときはどちらのバージョンが起動しているか、気を付ける必要がありそうですね。
■Pythonの特徴とライブラリ
Pythonと言えば、機械学習やデータ分析などの分野での活用がよく記事に取り上げられていますが、それ以外にもWeb開発やスクレイピングなどの分野でも広く活用されています。
そんなPythonの特徴についてです。一部分を抜粋します。
Chapter1 Git入門編:1.1.2 Pythonの特徴
・Pythonで書かれたプログラムは読みやすくわかりやすいという特徴があります。Pythonの文法がシンプルであるため、どのような人が書いても同じようなプログラムになります。チーム開発においても、プログラムの可読性が高いことは重要な要素です。
・スクリプト言語であるため、コードを実行するたびに結果を確認することができます。また、エラーが発生した場合には、エラーの原因を特定しやすいため、修正もしやすいです。これにより、プログラムの開発がスムーズに進みます。
・WindowsやmacOS、Linuxなど、さまざまなプラットフォームで動作することができます。そのため、開発環境を構築する際にも、特別な環境設定が必要なく、手軽に始めることができます。
・あらゆる分野において実用的なライブラリやフレームワークが数多く用意されています。(中略)そのため、Pythonは多様な分野で利用されるプログラミング言語となっています。
(中略:後ほど表でまとめて記述)Pythonは、オブジェクト指向をサポートしたプログラミング言語です。オブジェクト指向においては、クラスという概念を基にインスタンスを生成し、操作します。すべてのオブジェクトは、クラスのインスタンスであり、新しいオブジェクトを作ることをインスタンス化と言います。このようなオブジェクト指向の特徴により、Pythonはコードの再利用性を高めることができ、開発効率を向上させることができます。
Pythonでは、クラスや関数などをPythonファイルとして記述することができます。そして、別のPythonファイルから読み込んで使用することができます。
このPythonファイルのことをモジュールと言い、複数のモジュールをまとめてパッケージと呼びます。さらに、モジュールやパッケージは、単にライブラリと呼ばれることもありますが、これらは区別されることはありません。
この辺も読み物ですね。Pythonがどういったものかご一読いただければと思います。
あと、文中で各分野における代表的なフレームワークやライブラリの紹介が入っていますが、引用文だと長くなってしまうため、表形式で失礼します。
分野 | フレームワーク/ライブラリの代表例と役割 |
Webアプリケーション | フレームワーク)Django、Flaskなど Pythonのシンプルな構文と相性が良く、高速かつ安全な開発が可能 |
機械学習 | ライブラリ)TensorFlow、PyTorchなど 機械学習アルゴリズムの実装やデータの前処理が簡単になる |
データ分析 | ライブラリ)Pandas、NumPy、SciPyなど 大量のデータを処理し、グラフ化できる JupyterNotebookの利用で、データの可視化や解析の過程を共有できる |
Webスクレイピング | ライブラリ)BeautifulSoup、Scrapyなど WebページのHTML解析を行い、必要なデータを抽出できる |
ところで、文中にフレームワークとライブラリとあります。違いは次の通り。
- フレームワーク:アプリケーション開発でよく利用される機能をあらかじめパーツとしてまとめてある枠組み。開発に必要な機能がすべてそろっているため、開発時間を短縮できる一方で、自由度が低い。
- ライブラリ:関数で作った機能を切り出して再利用しやすくしたもの。
という違いがあります。
フレームワークについてはさておき、Pythonのライブラリは大まかに2種類あります。
一つはPythonに標準で実装されている標準ライブラリ。
もう一つがサードパーティ製ライブラリという、企業や個人の方々が作ったものがあります。
ライブラリには使いまわししやすい機能を切り出し、モジュールという形でまとめて配布してくれています。
どちらもimport文を最初に書くことで使えるようになりますが、標準はPythonに含まれるため事前準備は必要ありませんが、サードパーティ製の方はPyPIから先にインストールしておく必要があります。
では具体的にライブラリがどんなものかと言うと、例えば、標準ライブラリに、日時を扱うライブラリとして、datetimeが用意されています。この中には、日時の取得や、経過時間の計算などの日付の処理に必要そうな関数が一つずつ機能(モジュール)としていくつかまとめられています。
Pythonにはこういったライブラリがたくさんありますが、このライブラリが豊富にあることがPython人気の理由のひとつと言われているようです。
ライブラリとフレームワークの違いについて、以下のページで分かりやすく解説されています。より詳しく知りたい方はご確認ください。
【解説】フレームワークとライブラリの違い
また、以下のページもぜひ参考にご一読ください。機能を開発していった先の、アプリケーション作りにつながるお話です。
Pythonで機能を作れるようになったら、機能分割を意識してみよう
それでは今回はこちらで終了です。お付き合いいただきありがとうございました。