【自作のDartパッケージ公開!】pub.devへパッケージを公開してみた学び
はじめに
こんにちは、株式会社メンバーズ Cross Applicationカンパニーの田原です。
この度、プライベートで開発した Dart Package を pub.dev に公開しました。
作成したパッケージを pub.dev に公開することで、世界中の開発者がそのライブラリを利用できるようになります。
パッケージをただ公開するだけではなく、適切な準備・設定を行うことで高評価に繋がり、多くの開発者に届けることができます。
この記事では、パッケージの作成から公開、品質を高めるポイントまで解説します。
自作パッケージ:「cacherine
」の紹介
- FIFO, LRU, MRU, LFU などのキャッシュアルゴリズムを、シングルスレッド/マルチスレッドに対応して提供するパッケージです。
- キャッシュのメトリクス分析をしてアルゴリズム最適化の助けとなるモニタリング機能付きのキャッシュも用意しています。
- 命名は、cache(キャッシュ)+ catherine(キャサリン:女性の名前)を組み合わせてキャッチーで愛らしいパッケージのイメージにしました。漫画家・うすた京介先生の作品『セクシーコマンドー外伝 すごいよ!!マサルさん
』の登場人物「キャシャリン」とは一切関係ありません。
公開手順
Dartパッケージの作成
Dart のライブラリパッケージを作成するには、以下のコマンドを実行します。
dart create -t package <PACKAGE_NAME>
<PACKAGE_NAME> には、作成したいパッケージ名を指定してください。これにより、基本的な Dart パッケージの構造が自動生成されます。
Flutterパッケージの作成
この記事では詳しく扱いませんが、Flutter の UI コンポーネントを含むパッケージを作成する場合には、前述のコマンドの代わりに次のコマンドを実行します。
dart create -t package:flutter <PACKAGE_NAME>
Flutter パッケージには、Flutter 固有の依存関係やコード構成が含まれます。
参考:Creating packages
必要ファイルの作成
パッケージを公開するためには、いくつかの重要なファイルを適切に準備する必要があります。
pubspec.yaml
パッケージのメタデータや依存関係を記述します。特に以下の点を確認してください。
- name、version、description を適切に設定する
- description は 60文字以上180文字以下 にする
- ホームページ や リポジトリ の URL を記載する(GitHub など)
README.md
パッケージの概要、使い方を詳しく説明するファイルです。pub.dev のパッケージページにも表示されます。
CHANGELOG.md
各バージョンの変更履歴を記録します。
LICENSE
OSI 承認のオープンソースライセンス(MIT、BSD 3-Clause など)を指定します。
これらのファイルが適切に設定されていないと、pub.dev でのスコアが下がるため、しっかり整備しましょう。
公開
パッケージは公開後、基本的に削除できません。パッケージを使用する側にとっても重要なため、公開前に設定の不備がないか確認することが大切です。
パッケージを公開する前に、設定の不備をチェックするため、以下のコマンドを実行してください。
dart pub publish --dry-run
問題がなければ、以下のコマンドで実際に公開します。
dart pub publish
初回公開時の認証
初めてパッケージを公開する際は、Google アカウントでの認証が求められます。コマンド実行後にブラウザが開くので、指示に従って認証を完了させましょう
参考:Publishing packages
評価項目
pub.dev では公開されたパッケージに対して評価が行われます。以下の項目に基づいて最大 160点 が付与されます。
評価項目と配点は次のとおりです。
☑️ 基本的な要件(30点)
- pubspec.yaml が適切に記述されている(10 点)
- README.md が存在し、内容が充実している(5 点)
- CHANGELOG.md に変更履歴が明記されている(5 点)
- OSI 承認のライセンスを設定している(10 点)
☑️ ドキュメント(20点)
- API の 20% 以上に DartDoc コメントがある(10 点)
- サンプルコード(example/)が提供されている(10 点)
☑️ プラットフォームサポート(20点)
- 6 つのプラットフォーム(iOS, Android, Web, Windows, macOS, Linux)すべてに対応している(20 点)
☑️ コード品質(50点)
- 警告やエラーがなく、適切にフォーマットされている(50 点)
☑️ 最新の依存関係を使用(40点)
- 最新の Dart SDK に対応(10 点)
- 最新バージョンのパッケージを利用(10 点)
- 依存関係の下限バージョンも互換性あり(20 点)
GitHub Actions で公開を自動化
パッケージの更新作業を効率化するために、GitHub Actions や Google Cloud を活用して、自動で pub.dev に公開することができます。
設定手順
- pub.dev
の管理画面 から Automated publishing を有効にする。
- GitHub Actions に publish.yaml
を追加。
- pub.dev
に公開する アクセストークン を GitHub Secrets に保存。
参考:Automated publishing of packages to pub.dev
パッケージの信頼性向上
公開したパッケージをより多くのユーザーに使ってもらうために、信頼性を示す指標を追加するができます。
Verified publishers
Verified publisher として登録することで、公開したパッケージに、その開発者が認証済みであることを示すバッジが表示されます。
公式認証を得ることで、利用者は安心してパッケージを利用しやすくなります。
Verified publisher の登録には「ドメイン」が必要です。持っていない場合は、お名前.com などのサービスを利用して取得しましょう。
参考:Create a verified publisher
OSSF Scorecard
OSSF Scorecard を利用して、セキュリティやメンテナンス状況を可視化 できます。
OpenSSF(Open Source Security Foundation) は、Linux Foundation
の傘下で オープンソースプロジェクトにおけるセキュリティのベストプラクティスを普及する団体です。
GitHub Actions で ossf/scorecard-action をセットアップすることで Scorecard の結果を得ることができます。
参考: OSSF Scorecard
▼Scorecard の結果を README にバッジとして表示する例
[](https://deps.dev/project/github/yordgenome03%2Fcacherine)
CodeCov
テストカバレッジを測定し、README にバッジを表示すると、品質の高さをアピールできます。
カバレッジの測定・表示には CodeCov を利用すると便利です。
GitHub Action で CodeCov を利用するには .github/workflows/api.yml のようにセットアップします。
▼CodeCov を利用してテストカバレッジをREADME にバッジとして表示する例
[](https://codecov.io/gh/yordgenome03/cacherine)
まとめ
以上、Dart のパッケージ公開から評価・品質のポイントまでを解説しました。
パッケージを公開し、継続的に運用することは、OSSの開発やCI/CDの実践、セキュリティ対策など、幅広い知識とスキルを養う非常に有益な経験です。
私自身もまだ道半ばですが、今後も継続的に開発を行い、多くの開発者に評価されるパッケージにしていきたいと思います。
読者の皆さんも、ぜひこのような取り組みを通じてスキルを磨きつつ、一緒にコミュニティを盛り上げていただけると嬉しいです!
最後までお読みいただき、ありがとうございました。
この記事を書いた人
Advent Calendar!
Advent Calendar 2024