BacklogAPIライブラリを作ってみた
Pythonエンジニア見習いのぬまやんです。
今回はBacklogAPIのクライアントライブラリを作ってみました。
Backlogの課題やプロジェクトをオブジェクトとして扱えるようにしています。
目次
動機
今まで作りかけだった自作のライブラリにエキスパートPythonプログラミングの内容を実践してみたいと思ったことがきっかけです。
エキスパートPythonプログラミングは言語の基本文法だけでなく、パッケージの作り方やテスト、プロジェクトの管理
についてPythonのベストプラクティスをまとめていただいている本になります。
- 作者: Michal Jaworski,Tarek Ziade,稲田直哉,芝田将,渋川よしき,清水川貴之,森本哲也
- 出版社/メーカー: KADOKAWA
- 発売日: 2018/02/26
- メディア: 単行本
- この商品を含むブログを見る
作ったもの
作成したライブラリはGitHubにて管理していて、PyPIに公開しています。
使い方
実現したかったことはBacklogのプロジェクトや課題をオブジェクトとして扱うことです。
そのため以下のような操作感にしています。
from backlogapi import BacklogClient client = BacklogClient(api_key='apiKey', space_name='spaceName' # Space内の全プロジェクトを取得する projects = client.project.all() project1 = projects[0] # プロジェクト内の課題を取得する issues = project1.get_issues() # 取得した課題を削除する for issue in issues: issue.delete()
エキスパートPythonプログラミングを参考にしたところ
PyPIのへのアップロード
今回のライブラリの目標はPyPIにアップロードして、公開することでした。
公開するにはsetup.py, MANIFEST.in, requirements.txtなど準備するものが多いです。
本書にはこの設定方法について詳細や一般的な手段が記されています。
本書内で何箇所か説明されている新しいPyPIはすでに公開されています。
pypi.org
さらに Project DescriptionについてMarkdownの対応も完了しています。
対応方法はsetup.pyのsetup関数に以下を追加するだけです。
long_description_content_type='text/markdown',
コード管理手法
コードの管理として、継続的デプロイが紹介されています。
私はGitHubにてホスティングしていたため、TravisCIを用いて自動テストを行いました。
TravisCIを用いた所感は以下になります。
- 新規の仮想環境にてテストを行うことができる
- GitHubとの連携が簡単
- 設定方法のドキュメントが読みやすい
他にも紹介されているJenkinsやBuildbotについても試していきたいと思います。
テスト駆動開発
テストについては基礎から応用まで幅広く記されています。 具体的にはunittestを用いた基本的なテスト方法から拡張モジュールであるnose, pytestの使い方が説明されています。 今回はBacklogという外部APIを用いたライブラリなので、Mockを作成する方法やtoxを使ったマトリックステストも使ってみました。
本書から引用したツール・ライブラリは以下になります。
- mock: 26.5. unittest.mock --- モックオブジェクトライブラリ — Python 3.6.5 ドキュメント
- nose: Note to Users — nose 1.3.7 documentation
- tox: Welcome to the tox automation project — tox 3.0.0rc3.dev29 documentation
作ってみた感想
ベースとなる書籍があったためPyPIでの公開はスムーズにできました。
しかし、ライブラリ自体を使用する側の目線に立って作ることが難しかったです。
現状はまだまだ使いにくいものなので、改善していきたいと思います。
また、使用感を教えていただけると大変嬉しいです。