【pub.dev】パッケージの検索方法・見つけ方【Dart・Flutter】

Flutter

こんにちは、教育系エンジニアのひらまつ(@hiramatsuu)です。

ひらまつの簡単な自己紹介

書籍「ゼロからわかる Linuxコマンド200本ノック(技術評論社)」の著者。Udemy受講者7万人。
プログラミング教育をメインに活動するエンジニアとして、動画教材の作成・技術書の執筆・教育アプリの開発などを行なっています(詳しくはこちら)。

本記事では、pub.devで目当てのパッケージを見つけるための、検索テクニックについて解説します。

先日公開した、パッケージの選び方についての記事と併せて活用すれば、快適なパッケージ利用ができると思いますので、さっそく学んでいきましょう。

※pub.devの検索によらず、Google検索など、あらゆる検索の場面で必要な考え方については、私のUdemyのコース「「検索戦略」入門【欲しい情報を最短時間で入手しよう!Google・GitHub 検索などで使える4つの戦略プロセスとは】」などを参照してください。

検索アルゴリズムについて

検索が実行されると、次のような手順で検索結果が表示される。

  1. フィルターを適用する
  2. フィルターを通過したものの中で、検索クエリにマッチするものを見つける
  3. ソートする

アルゴリズムの順番とはズレるが、検索クエリ→フィルター→ソートの順で解説。

検索クエリ

一番重要なのはやはり、検索ボックスにどのようなクエリを書くか

単純なキーワード検索のほかに、pub.devでは次のような検索を行うことが可能。

  • "exact phrase":引用符内の正確なフレーズ(exact phrase)を含むパッケージを検索。デフォルトでは、似たフレーズを含むパッケージも、検索結果に含まれるが、「” “」で囲うことで、フレーズと完全一致する結果だけが表示される。
  • package:<prefix>:指定したキーワードから始まるパッケージを検索。例えば、「package:firebase_」と検索すれば、「firebase_」から始まるパッケージだけが表示される。
  • dependency:<package_name>:指定したパッケージに、直接依存するパッケージを検索。例えば、「dependency:share_plus」とすれば、share_plusパッケージに直接依存するパッケージだけが表示される。transitive dependencyやdev dependencyは含まれない。
  • dependency*:<package_name>:指定したパッケージに、なんらかの方法で依存するパッケージを検索。例えば、「dependency*:share_plus」とすれば、share_plusに直接依存するだけでなく、推移的に依存するパッケージや、dev_dependenciesで依存するパッケージも含めて表示される。
  • topic:<topic-name>:指定したtopicを持つパッケージを検索。
  • publisher:<publisher-name.com>:指定した発行者が公開したパッケージを検索。
  • sdk:<sdk>:指定したSDKをサポートするパッケージを検索(flutterまたはdart)。
  • runtime:<runtime>:指定したランタイムをサポートするパッケージを検索(web、native-jit、native-aot)。

フィルター

検索クエリだけでなく、フィルターを使うことで、検索結果を絞り込むこともできる

本記事執筆時点では、次の画像のようなフィルターがある。

pub.devより引用

対応プラットフォームやSDK、ライセンスなどで絞り込みができる。

意味がわかりづらいものだけ、少し解説しておくと、

  • Include unlisted:非推奨になったパッケージなど、デフォルトでは表示されないパッケージも含めて表示するためのフィルター。唯一、チェックを入れると検索結果が増えるフィルター。
  • WASM ready:Web Assembly(Wasm)に対応しているパッケージを表示するフィルター。

ソート(並び替え)

検索結果は、次の画像ようなルールで、ソートすることが可能。

pub.devより引用

デフォルトは、search relevanceだが、これは次のような観点の組み合わせで計算される。

  • 検索クエリとの関連性。
    • パッケージ名
    • パッケージの説明
    • README
    • ドキュメントコメントと識別子
  • パッケージの評価指標。

パッケージのソースコードは、大量のテキストを含むため、一般的な検索ワードを入れると、多くのパッケージがヒットしてしまう。そのため、このような複数の指標を使って、よりユーザーの期待に近い結果が出るように工夫されている。

より詳しくは、pub.devのリポジトリも参照。

その他の情報

Flutter開発についての、他の記事はこちらを参照。

Flutter
「Flutter」の記事一覧です。

参考文献

Search | Dart packages
Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter and general Dart programs.
タイトルとURLをコピーしました