はじめに
鈴木たかのりです。
前回に引き続きPythonエンジニア養成読本という書籍の読書会イベントについてレポートします。
第2回の読書会は6月18日(木)にアライドアーキテクツ株式会社の会議室で開催されました。
当日はだいたい以下のタイムテーブルで進めました。
- 19:00-19:15 参加者の自己紹介
- 19:15-19:45 「Appendix1 便利な標準ライブラリ、
サードパーティ製パッケージ」 - 19:45-21:00 「第3章 開発環境とチーム開発」
- 21:00-22:00 ビアバッシュ
(ビールとピザでの参加者懇親会)
今回も前回と同様に本書の読み合わせは行わず、

自己紹介
最初に全体で自己紹介を行いました。全部で23名の方が参加してくださいました。また、
自己紹介の中では2回目参加の方から
Appendix1 便利な標準ライブラリ、サードパーティ製パッケージ
Appendix1は筆者の担当です。今回は前回の反省を踏まえて、

以下はPyCon APAC 2015の集合写真のツイートです。どこかに筆者がいます。
Remember the exciting moments? Photos here! http://t.co/sECvyoE7eV #pyconapac2015 pic.twitter.com/DFsZEqovms
— PyConTW (@PyConTW) June 18, 2015
PyCon APAC、
Pythonの付属バッテリー、標準ライブラリ
この節では、
「こんなのあるといいな」
Python標準ライブラリについては下記のドキュメントにまとまっています。日本語化もされており、
本書ではたくさんあるライブラリのうち
たとえばOS依存の機能を操作するosモジュールでは以下のディレクトリ操作を行うコードを紹介しました。実際にはosモジュールのドキュメントを見てみると、
>>> import os
>>> os.mkdir('spam') # ディレクトリを作成
>>> os.chdir('spam') # ディレクトリを移動
>>> os.getcwd() # 現在のディレクト名を取得
'/Users/takanori/spam'
ここでは質疑応答で、
ちなみに、
- sys-システムパラメータと関数へのアクセス
- os-オペレーティングシステムインターフェース
- time-時刻データへのアクセスと変換
- datetime-基本的な日付型および時間型
- math-数学関数
- random-擬似乱数の生成
- itertools-効率的なループ実行のためのイテレータ生成関数
- shutil-高レベルなファイル操作
- json-JSONエンコーダおよびデコーダ
ここで筆者を含め会場から回答として挙がった、
- urllib、
urllib2-URLでのリソースへのアクセス - urlparse-URLの文字列解析
- logging-ログ出力
- argparse-コマンドラインオプションの解析
別の方からcopytree(src, dst)
でディレクトリツリーをまとめてコピーしてくれますが、
余談としてloggingはバッチファイルなどでも途中経過を出力するときに使うと便利であるという話をしました。また、

Pythonをさらに強力にするサードパーティ製パッケージ
この節では標準ライブラリ以外に多数のサードパーティ製パッケージが提供されていることを紹介しています。PythonではPyPI: Python Package Index
ここで
ちなみにpipのインストールはhttps://python get-pip.
を実行して行います。詳細はInstallationドキュメントを参照してください。
また、
他に良いパッケージを探す手段としてStack Overflowで検索して回答を見るという方法が紹介されていました。確かに有用な方法だと思いますので、
まとめとしては、
第3章 開発環境とチーム開発
第3章の著者の嶋田健志

3-1 開発環境とチーム開発に求められること
この節ではこのあとに解説するそれぞれの項目について概要的に触れています。チーム開発として必要な以下の要素について簡単に解説がありました。
- バージョン管理システム
- チームで開発を行うためには、
それぞれの担当箇所の開発を平行して行うために、 バージョン管理システムが必要です。 - 隔離された実行環境
- さまざまなプロジェクトの開発を行う場合に、
プロジェクトごとに使用するライブラリのバージョンが異なる場合があります。環境を混在させないために隔離された実行環境が必要です。 - ソフトウェア品質の担保
- 作成したソフトウェアがきちんと仕様どおりに動作するか確認するためにテストが必要です。
- ドキュメント
- 仕様書や手順書などをチーム内で共有するために、
あまり手間を掛けずにドキュメントを作成する必要があります。 - 統合開発環境
- これからPythonで開発を行うのであれば統合開発環境を使用して、
テストやデバッグを効率的に行う必要があります。
3-2 GitとGitHub
この節ではバージョン管理リステムとしてGitの紹介と、
最初にGit、
バージョン管理については馴染みの話題ということもあり、
- Q:ブランチはどの単位で作成しているか?
- A:機能単位
(Redmine、 GitHub Issueの単位) で作成している。今のプロジェクトでは 「fix_ shimada_チケット番号」 というようなブランチ名にしていて、 ブランチは人に紐付いている。担当者が変わった場合はブランチを作成し直す - Q:普段はコマンドラインとGUIツールのどちらを使っているのか?
- A:コマンドラインを使っている。GUIツールのSrouceTreeは手になじまなかった
(ちなみに筆者はGitを使いこなせていないのでSrouceTreeを使っています) - Q:コンフリクトをしたときにはコマンドラインだと大変じゃないか?
- A:ガッツで乗り切っている
(笑) - Q:Gitをデザイナーさんにどうやって使ってもらうか。今はメールとかでもらったものを代わりにcommitしている
- A:
(答えはない……) (注1)
またGitHubに関する質疑応答は以下のとおりです。
- Q:仕事でGitHubを使っているか?
- A:使っている。ただし、
本書はMercurial (別のバージョン管理ツール) とBitbucket (別のホスティングサービス) を使用して執筆した - Q:GitHubに企業で開発しているコードを載せると他の人から見られるのでは?
- A:無料プランは公開リポジトリしか作れないが、
お金を払うとプライベートリポジトリが作成できる。仕事ではプライベートリポジトリを使用している。個人でプライベートリポジトリが必要であれば、 無料で作成できるBitbucketがお勧め
3-3 virtualenv
この節ではプロジェクトごとにPythonの環境を独立させるための、
env環境でのみrequestsが利用可能になっていることが確認できます。
$ pip install virtualenv # pipコマンドでインストール $ virtualenv env # envという名前で環境を作成 New python executable in env/bin/python Installing setuptools, pip...done. $ . env/bin/activate # env環境を有効にする (env)$ pip install requests # requestsをインストール (env)$ python >>> import requests # requestsをインポートできる >>> quit() (env)$ deactivate # env環境を無効にする $ python >>> import requests # requestsのインポートに失敗する Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named requests
virtualenvを使うことにより、
virtualenv環境をどのように作成してどのフォルダに配置するかというのは、
質疑応答では
他に
プロジェクトで沢山のサードパーティ製パッケージを使用している場合、
(env1)$ pip freeze > requirements.txt # パッケージ一覧をファイル出力 (env1)$ cat requirements.txt # パッケージ一覧を確認 alabaster==0.7.4 Babel==1.3 docutils==0.12 Jinja2==2.7.3 MarkupSafe==0.23 Pygments==2.0.2 pytz==2015.4 six==1.9.0 snowballstemmer==1.2.0 Sphinx==1.3.1 sphinx-rtd-theme==0.1.8 (env1)$ deactivate $ virtualenv env2 # 新規に環境(env2)を作成 $ . env2/bin/acitvate (env2)$ pip freeze # パッケージが存在しない (env2)$ pip install -r requirements.txt # ファイルを使用してインストール # ここで各パッケージがインストールされる
3-4 テストと品質
この節ではPythonでのテストについての解説を行いました。テストは大事ですが手で実行すると大変なので、
最初にPythonにはdoctestというコメント
# -*- coding: utf-8 -*-
def get_ok():
"""
文字列 'OK' を返す
>>> get_ok()
'OK'
"""
return 'OK'
doctestは以下のように実行します。上記のコードをdoctest_
というファイルに保存します。なお、
$ python -m doctest doctest_sample.py $
doctestで複雑な単体テストコードを書こうとすると、
3-5 Sphinx
SphinxはreStructuredTextという形式で作成したドキュメントを、
嶋田さんはsphinxcontrib-plantumlを使用してURLの図を作成しているそうです。しかし、
Sphinxにはこのように拡張機能
「仕事でSphinxはどんなところで使っているか?」
また、
3-6 PyCharm
この節ではPyCharmというPython用の統合開発環境
PyCharmにはさまざまな機能がありますが、
また、
質疑応答では
また
ビアバッシュ(懇親会)
読書会の終了後はビールとピザでビアバッシュという形式の懇親会を行いました。今回、
一通りピザを食べ終わったら、

LT1-業務のためのPython勉強会
阿久津

この勉強会は阿久津さんがPythonスタートブックの著者の辻さんと知り合って立ち上げたもので、
第1回の勉強会の中で阿久津さんが発表した
- Text:
「Pythonスタートブック」 等の書籍での学習 - Web:MIT OpenCourseWareでの学習
- Real:勉強会への参加、
企画
初心者としてどのように勉強していったかなかなか興味深い発表でした。ぜひ、
第2回は7月2日開催予定ですが、
LT2-slackpy
執筆者の一人の池内さん

池内さんが作成しているslackpyというパッケージで、
ログレベルを指定するとSlack上で色分けして表示されるため見た目にもわかりやすいです。
発表の後で
LT3-Pythonエンジニア養成読本オモテウラ
最後は筆者のLTです。最初にPython関連イベント2つの告知をしました。どちらも参加者募集中、
LTではどのようにして本書が作られて行ったのかという話をしました。Googleスプレッドシートにレビューの指摘を書いてもらい、

まとめ
2回目の読書会はビアバッシュでのライトニングトークも盛り上がりました。
次回は7月23日(木)に開催します。内容は
では、