SDNやクラウド、仮想化の普及によってソフトウェア化されたインフラが増えてきました。ここ数年でインフラエンジニアであっても、ソースコードの読み書きが出来なければいけない時代になってきたと感じています。ネットワークスキルは知っていて当たり前、さらにプログラミングのスキルを持っているインフラエンジニアが求められてきています。個人的にもDockerやAnsibleなどのDevOpsツールを触る機会が増えてきたので、これを機にシステムエンジニア向けの記事を書いていこうと思います。使用する言語は様々ありますが、OpenstackやAnsibleで使われているPythonについて解説していきたいと思います。
Pythonの開発ツールには様々ありますが、今回はJupyter(iPython Notebook)を使って見ます。
Jupyterはインタラクティブ(対話的)なコード実行のための環境で、特にデータ分析に非常に適しています。
また任意に分けたコードブロックごとに実行し、結果を都度インラインで表示出来るほか、グラフのインライン表示やマークダウン方式の文章記載、数式の記述なども可能です。単純にPythonスクリプトを書くだけであれば、他のツールでも良いと思いますが、簡単にトライアルアンドエラーをしながら実行することができるので、私のようなPython初心者でも扱いやすいのと、最終的にはデータ分析や機械学習にも手を広げていきたいのでJupyterを選択しています。
そもそもPythonが入っていることが前提ですので、インストールされているかどうかを確認します。
$ python --version
Python 2.7.9
Jupyterのインストールはpipで行うのが一番簡単です。
$ pip install jupyter
Collecting jupyter
Downloading jupyter-1.0.0-py2.py3-none-any.whl
Collecting notebook (from jupyter)
Downloading notebook-4.2.1-py2.py3-none-any.whl (6.7MB)
<省略>
Anacondaとはは、Continuum Analytics社によって提供されているPythonパッケージです。Python本体に加えて、科学技術や数学、エンジニアリング、データ分析などのよく利用される Pythonパッケージを一括でインストールしてくれます。
Python開発者の間では有名なパッケージです。
Download Anaconda now! | Continuumから環境に合ったインストーラーをダウンロードします。
ダウンロードしたパッケージを使ってインストールすれば、Jupyterもインストールされます。
ローカルの環境を汚したくない場合は、Dockerを使ってコンテナ上でJupyterを動作させる方法がおすすめです。公開されているDockerコンテナを検索してみると結構ありました。
$ docker search jupyter
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
jupyter/jupyterhub JupyterHub images have moved to jupyterhub... 65 [OK]
jupyter/notebook DEPRECATED. Use one of the `-notebook` doc... 63 [OK]
xblaster/tensorflow-jupyter Dockerized Jupyter with tensorflow 24 [OK]
jupyterhub/jupyterhub JupyterHub: multi-user Jupyter notebook se... 14 [OK]
ermaker/keras-jupyter Keras and Jupyter 9 [OK]
<省略>
データ分析等を利用しないのであれば、「jupyter/notebook」で良いと思いますが、NumPyやpandasパッケージを利用する場合は「jupyter/datascience-notebook」か「jupyter/all-spark-notebook」が良いと思います。
$ docker pull jupyter/all-spark-notebook
$ docker images jupyter/all-spark-notebook
REPOSITORY TAG IMAGE ID CREATED SIZE
jupyter/all-spark-notebook latest d819f3a8e5e8 4 days ago 5.044 GB
イメージサイズが5GBとかなり大きいですね。8888番ポートを使ってコンテナを起動します。
$ docker run -d -p 8888:8888 jupyter/all-spark-notebook
Unable to find image 'jupyter/all-spark-notebook:latest' locally
latest: Pulling from jupyter/all-spark-notebook
8b87079b7a06: Pull complete
a3ed95caeb02: Pull complete
b7837d46e7ab: Pull complete
662ca9fe7b05: Pull complete
97953f27b77a: Pull complete
Status: Downloaded newer image for jupyter/all-spark-notebook:latest
起動後にブラウザで「http://localhost:8888」にアクセスします。
Jupyterはブラウザ上で動作します。起動方法はターミナルから「jupyter」コマンドを実行します。
$ jupyter notebook
コマンドを実行するとブラウザ上に以下の画面が自動で開きます。
新規にノートブックを作成したい場合は、右上の「New」ボタン → 「Python2(環境によってはPython3)」を選択し、ノートブックを作成します。
Jupyterはセルと呼ばれるスペースにPythonのコードを入力し実行することができます。実行や編集のショートカットキーには以下のようなものがあります。
試しにお約束の「Hello World」をやってみます。
以下のようにPandasパッケージを使えばテーブル出力も可能です。
Matplotlibパッケージを使えば、グラフもインラインで表示可能です。
利用出来るショートカットキーを調べるには、メニューにあるキーボードアイコンをクリックすると確認できます。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓