7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenCVAdvent Calendar 2024

Day 7

作ったパッケージを公開してみた

Last updated at Posted at 2024-11-15

主旨

OpenCV使いのみなさんも、作っているライブラリの中で、公開することが許されるものがあったら、テストして、リファクタリングして、パッケージにまとめて、PyPIに登録しませんか。

開発しているとほしいものがでてくるよね

  • まず探してみよう。
  • なかったら、作るしかない。
  • 役に立つ実装と利用例を作ってみる。
  • 複数のプロジェクトで、使ってみる。
  • 使えるものなったか。

pythonモジュール化する。

  • モジュール名を決める。
  • モジュールフォルダに__init__.py ファイルをおく。
  • pyproject.toml を書く。
    • [dependencies] に依存パッケージとバージョンを記入する。
  • python3 -m pip install . をできるようにする。

testを書く

  • mkdir test
  • 動作検証するpythonスクリプトの中にassert を書く。
  • 意味のまとまりを def test_関数名(): など関数に抽出する。
  • pytest test_*.pyでテストが実行できるようにする。
  • Makefile に make testを書く。

リファクタリングする

  • black などのフォーマッタを使って書式をそろえる。
  • モジュールの中の関数で公開する必要ないものは"_" アンダースコアで始まる名前にする。
  • 変数名・関数名などを読めばわかる名前に直す。
  • typehintをする。
  • 関数には副作用を持たないように設計する。
  • 副作用を持つときは、そのことがわかるようにdoc comment に書く。
  • import モジュール名 だけで動作するように、__init__.py に必要な加筆をする。

    `from .somefile import 識別子` みたいなものを書き加えます。

利用側のスクリプトでの動作確認

  • python3 -m pip install . でパッケージをインストールしたあとに、利用側のスクリプトでの動作を確認する。

  • 使い勝手は意図したものになっているか。

コードを公開する範囲は社内、社外

Githubのそのリポジトリはprivate, public
社内:Packagecloud
社外:PyPI

ライセンスを確認する。
公開先の範囲に応じて、コメントのコードの日本語コメントの扱いを再考する。
わかりやすい日本語ならば、機械翻訳して得られた英語の品質もそれなりになってきている。

パッケージを作り公開する。

まとめ

手順をふんでいくと、意外と簡単です。
みなさんも、作ったライブラリのうち、再利用性のあるものを公開して、楽しいOpenCVライフをしていきましょう。

つっこみ:OpenCVに限った話じゃないじゃないか

そうです。OpenCVなどを利用しているアルゴリズム系のエンジニアの場合、システム系の作業が弱いことが多いので、私の場合ながらく、パッケージを公開することがありませんでした。でも、あなたの作ったアルゴリズムをぜひ、共有できるぶんを共有してほしいので、OpenCVのAdvent Calendar に書きました。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?