ようへいの日々精進XP

よかろうもん

Python エンジニアではないけど「Pythonエンジニア養成読本」を読んだ

はじめに

Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!]

Pythonエンジニア養成読本[いまどきの開発ノウハウ満載!]

PythonHello World レベルだけど Ansible を使う上で何かヒントがあったりしないかなと思って読んだ。


目次

6 章構成

こちらより抜粋。

第1章
その特徴,歴史とコミュニティ
よくわかるPythonの世界…… 鈴木 たかのり

第2章
開発を始める前に知っておくべきこと
これだけは知っておきたいPython言語はじめの一歩 
…… 清原 弘貴

第3章
チーム開発に役立つ開発環境とツール
開発環境とチーム開発 …… 嶋田 健志

第4章
Pythonデータ活用術
PyData入門 …… 池内 孝啓

第5章
しくみを理解してアプリ開発に挑戦
入門Webアプリケーション開発 …… 関根 裕紀

第6章
Ansibleで実践
環境構築の自動化 …… 若山 史郎

Appendix2
Python is Everywhere!
ますます活躍の場が広がるPython …… 鈴木 たかのり

Python よく解ってませんが...(ネタバレに注意しつつ)

1 章で Python を知る

Python の歴史やバージョン 2 系と 3 系の違い、コミュニティの紹介等の概要がコンパクトに纏められている。

ちなみに紹介されていた「The Zen of Python」を実行してみた。

C:\Users\kappa>python
Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>>

上記を翻訳された方がいらっしゃったので以下に掲載。

qiita.com

全文を通してなる程なあと思ったが、特に以下の言葉が印象に残った。

Now is better than never.
ずっとやらないでいるよりは、今やれ。

Although never is often better than *right* now.
でも、今"すぐ"にやるよりはやらないほうがマシなことが多い。

2 章で脱 Hello World

Python の文法や関数についてインタプリタを利用した例と共に掲載されていて、Python 環境がインストールされていれば(Python 環境のインストール手順も記載されている)すぐに試せるようになっている構成に好感が持てた。Ruby で言うところの配列やハッシュ等がリスト型になるのかなあと思いつつ、「タプル」については戻り値が二つ受け取れるのは初めて知った。標準的なモジュールやライブラリも紹介されており、限られた紙面の中でよく纏められているなあと感心した。

本章を読んで脱 Hello World は出来るような気がした(自分比)。

3 章で Python をちゃんと使いたいと思う

前半は git の使い方を進めながらチーム開発について解説、virtualenv については耳にしたことはあったが実際の利用方法について知ることが出来て良かった。また、docstringdoctestunittest モジュールを使ったユニットテストの書き方等については実際に開発の現場に居ないのでイメージしにくいところもあるが、サンプルコードで丁寧に解説されているので時間を見て試してみたいと思う。

4 章で IPython を使ったデータ活用法を知る

IPython は初耳、Ruby の pry のようなものなのかしら...。データ加工、集計用のパッケージとして PandasCSV ファイルを簡単に扱えるという点で是非使ってみたいと思った。

5 章で PythonSinatra の Bottle で Web アプリケーションの実装について知る

Web アプリケーションなんて俺には遠い夢のその先の夢であることは間違い無いが Bottle という Sinatra っぽい、簡単 Web フレームワークが少しだけその夢を実現に近づけてくれるのではという妄想を抱かせてくれる内容だったけど...今の僕にはちょっと無理。

6 章で Ansible を再認識

本書購入のそもそもの目的、Ansible について限られた紙面の中で簡潔に纏められていた。

Ansible って設定先のホストには特に何もインストールする必要が無いんだろうって思っていたが...

正確には対象サーバ側に Python 2.4 以上が必要

という点については驚いた(最近の主な OS には Python 2.4 以上はインストールされているので無問題とのこと)。

繰り返しになるが限られた紙面の中で Ansible のポイントをつかむことが出来たが、できれば roles についてもう少し深く掘り下げて欲しかったような気がする。


さいごに

Hello world

モジュールをうまく利用することで複雑なコードを書かずとも CSV の読み込みだったり、JSON の解析だったり、はたまた Web サービスまで実現出来る Python をもう少し突っ込んで勉強してみたいと思わせてくれる書籍だと思う。

ちょっとしたスクリプトは...

プログラミングなんてとんでも無い立場の人間だが、ちょっとしたスクリプト等は Python で書いてみようかなって思わせてくれるような内容だった。(但し、自分の場合にはその前にちゃんとシェルスクリプトも勉強する必要はある)