『ちょっとしたツール』の実装時に品質が向上する工程6つ! Python製FTPサーバ実装を例に #pyconjp #pyconjp_203

Pythonでpyftpdlibを使ってFTPサーバーを作る際に使ったテクニックの紹介 @tokibito Shinya Okano https://pycon.jp/2016/ja/schedule/presentation/31/ Pythonでちょっとしたツールを作る際、コードの書き方やパッケージング、自動テストの仕方など、どのようにしようか、考えるかと思います。 私がツールを作る際にどのようにしているか、具体的にFTPサーバーアプリケーションを例に紹介します。
1
Shinya Okano @tokibito

IT系のエンジニアです。PythonとDjangoフレームワークを長く使ってます。 株式会社ObotAI、株式会社オープンコレクター、株式会社MARIANA OCEAN JAPAN https://t.co/rWpzOJ4Ahb

https://t.co/8TGYHttYPu


かしゅー @kashew_nuts

#pyconjp #pyconjp_203 ソフトウェアを開発をする際、手順(工程)を意識して開発すること。

2016-09-22 10:47:17
やまだ でんぞう @denzowill

#pyconjp_203 ソフトウェアを開発する大まかな流れのお話し

2016-09-22 10:53:22
Ryuji Tsutsui @ryu22e

ソースコードを書く前にREADMEにツールの使い方を書いて要件を固めた。 #pyconjp #pyconjp_203

2016-09-22 10:55:40
やまだ でんぞう @denzowill

#pyconjp_203 たしかにこの最初のコミットからはじめるとわかりやすそう github.com/tokibito/solof…

2016-09-22 10:58:15
かしゅー @kashew_nuts

#pyconjp #pyconjp_203 まずはREADMEに用件や使い方を記述したり、定型のライセンスやsetup.pyを作る。

2016-09-22 10:58:15
かしゅー @kashew_nuts

#pyconjp #pyconjp_203 @tokibito さんはConEmuでcmd.exeを動かす派なのかー。

2016-09-22 10:59:55
やまだ でんぞう @denzowill

#pyconjp_203 モジュール内のソースコード分割の目安は、機能として名前をつけられるか。

2016-09-22 11:04:26
Ryuji Tsutsui @ryu22e

関数=処理 クラス=状態と処理 #pyconjp #pyconjp_203

2016-09-22 11:06:33
やまだ でんぞう @denzowill

#pyconjp_203 関数とクラスの使い分けは確かに悩むときある * 引数受けて処理するだけなら関数 * 状態を保持するならクラス 状態での分岐が多いならクラスるほうがいい。

2016-09-22 11:06:54
かしゅー @kashew_nuts

関数は処理で、クラスは状態と処理。状態によって分岐がたくさんあるようなものはクラスにしてあげて、if文を関数に分けたほうがきれいになると思う。 #pyconjp #pyconjp_203

2016-09-22 11:07:15
Ryuji Tsutsui @ryu22e

状態(入力)によって処理の分岐が発生するなら、クラスにしたほうがよい #pyconjp #pyconjp_203

2016-09-22 11:07:18
かしゅー @kashew_nuts

テストコードを書く。非同期処理はテストしづらい。気合いでやるしかない。つらい。 #pyconjp #pyconjp_203

2016-09-22 11:09:15
かしゅー @kashew_nuts

発表資料はSphinx+blockdiagで作ったのをPDF出力してるのかな?#pyconjp #pyconjp_203

2016-09-22 11:10:24
すずどら @sz_dr

unittest派です (他のフレームワーク触ったこと無いだけ) #pyconjp_203

2016-09-22 11:11:43
かしゅー @kashew_nuts

テストフレームワークとテストランナーは別のライブラリを使える。テストランナーにpytestをつかうのはレポート機能が充実してるから。 #pyconjp #pyconjp_203

2016-09-22 11:14:57
かたぎりあまね @amane_katagiri

#pyconjp_203 - ログ出力のための print と import logging はやめてほしい - Qiita : qiita.com/amedama/items/… #miteru

2016-09-22 11:18:38
かしゅー @kashew_nuts

ロログ出力は標準のloggingを使うとまずは簡単かなと。 #pyconjp #pyconjp_203

2016-09-22 11:18:45
かしゅー @kashew_nuts

自分にあった開発手順を持ち、スムーズに品質良くソフトウェアを作れるようになれるといいですね。:D #pyconjp #pyconjp_203

2016-09-22 11:24:18
かしゅー @kashew_nuts

何をする何をやらないと判断するいうのは経験によるところが大きいので、なるべくたくさんのコードを読んで自分でも書いてみて経験値を重ねていく。その上で何をやるやらないを判断できるようになっていく。 #pyconjp #pyconjp_203

2016-09-22 11:29:59