調整さんのイベント作成をPythonコード上から行えるライブラリchouseisan-pyを作りました。

以下の方法でインストールできます。

1
$ pip install chouseisan-py

現在のバージョン0.1.0では、イベントの作成しかサポートしていません。 使い方は以下のとおりです。

1
2
3
4
5
6
7
8
9
>>> from datetime import datetime
>>> from chouseisan_py.chouseisan import Auth, Chouseisan
>>> auth = Auth(email="test@example.com", password="<secret>")
>>> chouseisan = Chouseisan(auth)
>>> chouseisan.create_event(
...    title="test event",
...    candidate_days=[datetime(2021, 10, 17, 19, 0), datetime(2021, 10, 18, 19, 0)]
... )
'https://chouseisan.com/s?h=f7b7fc11995b441782844bc3fddaf456'

ソースコードは以下に置いてあります。

https://github.com/ryu22e/chouseisan_py

調整さんにはAPIがないので、中でやっているのはrequestsbeautifulsoup4を使ったスクレイピングです。

以下で、開発で利用したライブラリ・ツールについて紹介します。

poetry

公式サイト: https://python-poetry.org/

Pythonのパッケージマネージャーです。 poetry publishでPyPIにデプロイする機能が便利そうだったので採用しました。

black

公式サイト: https://black.readthedocs.io/en/stable/

ソースコードを自動整形してくれるツールです。 GitHub ActionsとGitのpre-commitスクリプトで呼んで、blackで整形していないファイルがあればエラーにしています。

blackについて詳しくは以下の記事が参考になります。

もうPythonの細かい書き方で議論しない。blackで自動フォーマットしよう - Make組ブログ

flake8

公式サイト: https://flake8.pycqa.org/en/latest

Pythonコードが規約通りに書かれているかチェックするツールです。 前述のblackを使っていてもflake8的にエラーになるケースがあるので、併用しています。 GitHub ActionsとGitのpre-commitスクリプトでも呼ぶようにしています。

mypy

公式サイト: http://www.mypy-lang.org/

Pythonの型チェックを行ってくれるツールです。 requestsやbeautifulsoup4には型ヒントが書かれていないのですが、types-requeststypes-beautifulsoup4をインストールすることで型チェックができます。 mypyのおかげでNoneが返ってくる可能性があるコードなのにNoneに定義されていないメソッドを呼んでいる、といった不具合に早く気付くことができました。 GitHub ActionsとGitのpre-commitスクリプトでも呼ぶようにしています。

isort

公式サイト: https://pycqa.github.io/isort/

import文の並びを自動的にソートしてくれるツールです。 GitHub ActionsとGitのpre-commitスクリプトでも呼ぶようにしています。

responses

GitHubリポジトリ: https://github.com/getsentry/responses

requestsをモック化してくれるライブラリです。テストコードで本物の調整さんURLにアクセスするわけにはいかなかったので、採用しました。標準のunittest.mockより簡潔にテストを書けて重宝しました。

pytest

公式サイト: https://docs.pytest.org/en/7.0.x/

Pythonでは人気があるテストフレームワークです。標準のunittestとは違って、assert文だけで結果の検証ができます。

bump2version

GitHubリポジトリ: https://github.com/c4urself/bump2version

ソースコードに書かれたバージョン番号を更新し、Gitのタグを付けたコミットを作ってくれるツールです。 設定ファイルは以下のように書いています。

https://github.com/ryu22e/chouseisan_py/blob/v0.1.0/.bumpversion.cfg

後で調べて分かったのですが、poetry-dynamic-versioningというpoetryプラグインを使ってバージョン番号を更新する方法もあるようです。

pre-commit

公式サイト: https://pre-commit.com/

YAMLの設定ファイルを元に、Gitのpre-commitスクリプトを生成してくれるツールです。 設定ファイルは以下のように書いています。

https://github.com/ryu22e/chouseisan_py/blob/v0.1.0/.pre-commit-config.yaml