5ステップでPyPIデビュー：ライブラリ公開ガイド【pyproject.toml版】


# PyPIへのライブラリ公開ガイド：5ステップで学ぶ実践的アプローチ

## はじめに

本記事では、`pyproject.toml`を使用してPyPIにライブラリをアップロードする方法を、実際のソースコードと共に5つのステップで詳しく解説します。
初めてオープンソースライブラリを開発し公開する方々に向けた内容となっています。


## オープンソースの重要性

オープンソースソフトウェアの開発と公開は、プログラミングコミュニティにとって非常に重要です。以下に、その主な理由をまとめます：

- **知識の共有**: 他の開発者が学び、改善することができる
- **協力と成長**: コミュニティからのフィードバックにより、ソフトウェアが進化
- **再利用性**: 車輪の再発明を避け、開発効率が向上
- **透明性**: コードが公開されることで、セキュリティや品質の向上につながる
- **イノベーション**: 既存のプロジェクトを基に、新しいアイデアが生まれやすくなる
- **キャリア向上**: 個人の技術力とプレゼンスを高める機会になる
- **コスト削減**: 多くの人が無料で利用でき、開発コストの削減につながる

これらの理由から、自作のライブラリをPyPIで公開することは、Pythonコミュニティ全体に貢献する素晴らしい方法の一つと言えます。


## Step 1: プロジェクトの準備

まず、プロジェクトの基本構造を作成します。以下の例では、`mypackage`という名前のパッケージを作成します。

```
mypackage/
│
├── src/
│   └── mypackage/
│       ├── __init__.py
│       └── main.py
│
├── tests/
│   └── test_main.py
│
├── pyproject.toml
├── README.md
└── LICENSE
```

`src/mypackage/main.py`に簡単な関数を作成します：

```python
def greet(name: str) -> str:
    return f"Hello, {name}!"
```

`pyproject.toml`ファイルを以下のように作成します：



```toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "mypackage"
version = "0.0.1"
authors = [
  { name="Your Name", email="your.email@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[project.urls]
"Homepage" = "https://github.com/yourusername/mypackage"
"Bug Tracker" = "https://github.com/yourusername/mypackage/issues"

```

`README.md`と`LICENSE`ファイルも作成してください。

## Step 2: 必要なツールのインストール

ターミナルで以下のコマンドを実行し、必要なツールをインストールします：

```sh
pip install build twine
```

## Step 3: ディストリビューションパッケージの作成

プロジェクトのルートディレクトリで以下のコマンドを実行し、配布用のパッケージを作成します：

```sh
python -m build
```

このコマンドにより、`dist/`ディレクトリに`.tar.gz`ファイル（ソースアーカイブ）と`.whl`ファイル（ビルド済みディストリビューション）が作成されます。

## Step 4: TestPyPIへのアップロード（オプション）

本番のPyPIにアップロードする前に、TestPyPIで動作確認をすることをお勧めします。

まず、[TestPyPI](https://test.pypi.org/)でアカウントを作成してください。

次に、以下のコマンドを実行してTestPyPIにアップロードします：

```sh
twine upload --repository testpypi dist/*
```

アップロードが成功したら、新しい環境で以下のコマンドを実行してインストールテストを行います：

```sh
pip install --index-url https://test.pypi.org/simple/ --no-deps mypackage
```

## Step 5: 本番PyPIへのアップロード

テストが問題なく完了したら、本番のPyPIにアップロードします。まず、[PyPI](https://pypi.org/)でアカウントを作成してください。

その後、以下のコマンドを実行してアップロードします：

```sh
twine upload dist/*
```

アップロードが成功したら、PyPIのウェブサイトでプロジェクトページを確認し、新しい環境で以下のコマンドを実行してインストールテストを行います：

```sh
pip install mypackage
```

## まとめ

以上の5ステップを通じて、自作のPythonパッケージをPyPIに公開する方法を学びました。
この過程を通じて、オープンソースコミュニティに貢献する第一歩を踏み出すことができます。

自分がよく使う機能をライブラリとしてまとめて、他のプロジェクトでも使用したいというきっかけからPyPIへ公開しました。
今回はじめてライブラリを公開しましたが、オープンソースの重要性は理解しているので、今後もできるだけ続けていきたいと感じました。


## 注意点

- バージョン管理を適切に行い、更新の際は`pyproject.toml`のバージョン番号を必ず変更してください
- セキュリティに関する考慮事項を忘れずに。**機密情報を誤ってパッケージに含めない**よう注意しましょう

## 参考

- [Python Packaging User Guide](https://packaging.python.org/en/latest/tutorials/packaging-projects/)
- [PyPI - the Python Package Index](https://pypi.org/)
- [Twine documentation](https://twine.readthedocs.io/en/latest/)

---
### 会社紹介

**株式会社 Mosaica**  
最先端テクノロジーで社会課題を解決し、持続可能な未来を創造する IT カンパニー。
AI ソリューション、クラウド統合、DX 推進、経営コンサルティングなど包括的なサービスでビジネス変革を支援しています。  

詳しくは [公式サイト](https://mosaica.co.jp/) までお気軽にご相談ください。
公式サイト： https://mosaica.co.jp/