全3197文字
PR

 Pythonの代表的な用途には、データ分析/機械学習のシステム開発が挙げられる。このようなシステムは、素早くプロトタイプを作成して試行錯誤を繰り返す効率的なPoC(概念実証)が欠かせない。Pythonの開発ツールやライブラリーには、PoCの生産性向上をサポートする機能が充実している。

 以下では、Pythonで効率的なPoCを実現するのに役立つツール群を紹介しよう。また、Pythonでのチーム開発や全社展開に欠かせないコーディング規約や、Pythonの弱点の1つといえる性能問題への対処法についても解説する。

 Pythonによるシステム開発で利用される主な開発環境を以下に示す。

Pythonシステム開発に利用される主な開発環境
Pythonシステム開発に利用される主な開発環境
[画像のクリックで拡大表示]

 このうち、効率的なPoCを支援するツールの代表格は、Pythonプログラムの開発環境である「Jupyter Notebook(ジュピター・ノートブック)」だ。このツールの特徴は、対話形式で開発できることである。例えば、Pythonコードを1行記述し、出力結果をコードのすぐ下に表示できる。

 コードをセルというブロック単位で実行できるので、「特定のコード部分だけ実行し、修正するような開発に最適」(NTTデータのエボリューショナルITセンタ グローバル・アラインメント担当小林佑輔シニア・エキスパート)という。

Jupyter Notebookの画面例
Jupyter Notebookの画面例
[画像のクリックで拡大表示]

 また、コードチェックツールの「Flake8」やテストツールの「tox(トックス)」なども高速なPoCの実施に役立つ。NECのAI・アナリティクス事業部 兼 データサイエンス研究所菅野亨太シニアマネージャーは「とりわけFlake8の出来は秀逸」と話す。後述するPEP8への準拠だけでなく、エラーチェックや開発環境に設定しておけば、ファイルの保存時に標準のコーディング規約に準拠しているかどうかを自動的にチェックできる。

PEP8+αで規約を作る

 チームでの開発はもちろんのこと、Pythonでの開発を全社的に展開するならコーディング規約などのルール作りが不可欠だ。コードの可読性や再利用性が向上し、ノウハウの継承もしやすい。このような規約を作る際もPythonは優れている。

 そもそもPythonは、言語仕様によって可読性の高いプログラムの記述が強制されている。例えば、インデント(字下げ)が挙げられる。Pythonのプログラムはインデントを使って処理の固まり(ブロック)を指定する。正しくインデントを入れていなければ、プログラムは正常に動かない。

 現在、多く利用されているプログラミング言語でこのような制約がある言語は少ない。厳しい制約のある言語仕様なので、Pythonプログラムは誰が書いても見通しの良いプログラムになる。

 さらに、Pythonプログラムを記述する上で必ず目を通しておきたい文書がある。それが、Python標準のコーディング規約であるPEP8だ。CMSコミュニケーションズの寺田学代表取締役は、「PEP8のコーディング規約に準ずることは、Pythonエンジニアの中では常識になっている」と話す。PEP8に準じていないプログラムは、GitHubにコミットできないようにしているプロジェクトすらあるという。

PEP8に記載されている主なコーディング規約
PEP8に記載されている主なコーディング規約
[画像のクリックで拡大表示]