ワイが個人的に便利だと思っていてよく使っているPythonライブラリ(pip)たち

***この記事は[LIFULL その3 Advent Calendar 2018](https://qiita.com/advent-calendar/2018/lifull3)の7日目の記事とされている恐れがあります***

## 謝罪

会社の後輩の記事をパクりました。

[ワイが個人的に便利だと思っていてよく使っているJavaScriptモジュール(npm)たち](https://qiita.com/_somary/items/ac55db148b72726d0753)

## ここから本題

ここ1年の中で :star: しまくったgithubリポジトリを年末調整すると同時に、
使っていて個人的に便利だなと思っているものを簡単に紹介しようと思います。

### モジュール

#### [Poetry](https://github.com/sdispater/poetry)

仮想環境の管理から、ライブラリの公開までやってくれる便利な開発ツール
正直、これを紹介するためだけにこの記事を書きました
BeProud Advent Calender 2018の『[Poetryを使ったPythonパッケージ開発からPyPI公開まで](http://kk6.hateblo.jp/entry/2018/12/20/124151)』という記事も読んでください

#### [Pipenv](https://github.com/pypa/pipenv)

依存ライブラリの管理や仮想(venv)環境も作ってくれる便利なツール
ただ、Poetryがあれば正直必要ない説も出てきてしまった
pyenvでバージョン切り替えてくれる機能は地味に便利


#### [tqdm](https://github.com/tqdm/tqdm)

超長いループの進捗を表示してくれるやつ
jupyter上ではtqdm_notebookを使うので注意


#### [joblib](https://github.com/joblib/joblib)

いい感じにマルチプロセス/マルチスレッドの処理を実行してくれるライブラリ
地味にロギング処理とかもついてる


#### [pyppeteer](https://github.com/miyakogi/pyppeteer)

Pythonで動くヘッドレスなChromeです
[元記事](https://qiita.com/_somary/items/ac55db148b72726d0753)にもあったpuppeteerのポート
ただ、Pythonのasync関数は慣れず、Selenium使ったほうが楽説ある



#### [kennethreitz/requests](https://github.com/kennethreitz/requests)

HTTPクライアント
スタンダードすぎてPython公式の[urllibのドキュメントでもおすすめされてる](https://docs.python.jp/3/library/urllib.request.html#module-urllib.request)


#### [kennethreitz/requests-html](https://github.com/kennethreitz/requests-html)

クローリングするときに便利なライブラリ
簡単なものは今までrequests + BeautifulSoupを使って実装していたが、それらより使い勝手いい

**便利なツールしか作れない開発者、kennethreitz**

#### [Flask](https://github.com/pallets/flask)

シンプルなWEBアプリケーションフレームワーク
WEB APIを作るときによく使ってる

#### [click](https://github.com/pallets/click)

デコレータでCLIを簡単に作れるライブラリ


#### [retry](https://github.com/invl/retry)

デコレータでretry機能をつけてくれるライブラリ
Pythonで例外処理を気合い入れて書こうとすると、どんどんネストしていってしまいがちなので

#### [jupyter notebook](https://github.com/jupyter/notebook)

ブラウザ上でPythonコードを可視化してくれるやつ

#### [pandas](https://github.com/pandas-dev/pandas)

データ分析用のデータフレームを作るライブラリ
Excelから読み書きできるのが地味に便利
個人的にR言語のdplyr/tidyrのほうが好きで、ちょっとした分析ならRStudioを立ち上げてしまうのは内緒


#### [matplotlib](https://github.com/matplotlib/matplotlib)

「もっと楽なグラフツールあるんじゃないか」って思いつつ、5年くらい使い続けている

#### [pytest](https://github.com/pytest-dev/pytest)

Pythonのテストツール

#### [pytest-mock](https://github.com/pytest-dev/pytest-mock)

pytestにmockの機能を追加するモジュール
実体は `unittest.mock` とかをラップしてるだけだが、個人的にお気に入り


#### [pylint](https://github.com/PyCQA/pylint)

Lintツール
毎回ignore設定されるE501


#### [tox](https://github.com/tox-dev/tox)

ライブラリ作るときに複数バージョンのテストが必要になるとき便利
あとpylintとかの設定も管理・実行できるので良い


### 読み物系リポジトリ(?)


#### [awesome-python](https://github.com/vinta/awesome-python)

Pythonのワオなライブラリまとめ


#### [Python チュートリアル](https://docs.python.jp/3/tutorial/)

Python書く前に読んでおいた方が良さそうなことしか書いてないのでおすすめ
もはやリポジトリでもなんでもない




#### [kennethreitz](https://github.com/kennethreitz)

requestsやPipenvなどの作者
API設計がきれいなので見ておくといい
[Webフレームワークの「responder」](https://github.com/kennethreitz/responder)とかも、[この記事](https://blog.ikedaosushi.com/entry/2018/12/01/195512)で気になってるもののまだ試していない


### 最後に

いかがでしたでしょうか。

個人的には、Pythonはライブラリに恵まれているのもあって、割と簡単に必要なプログラムが実装できます。ただ、非同期処理(async/await)やロギング処理で毎回定型文があるし、もう少し便利なライブラリが無いか（もしくはうまくラップする方法が無いか）探しています。

それではよいお年を！