✅
Juliaのパッケージ名が利用可能か確認する
Juliaの新しいパッケージをGeneralレジストリに登録する(]add PkgNameでインストールできるようにする)とき、パッケージの命名はRegistryCI.jlのガイドラインに従う必要があります。似た名前のパッケージがあると公式レジストリに登録できない(できなかった例)のですが、これを事前に確認する方法が分からず困っていました。最近、GPT-5.3-Codexの力を借りて綺麗に解決したので共有します。
環境
今回のコードを実行した環境は下記の通りです。
julia> versioninfo()
Julia Version 1.10.10
Commit 95f30e51f4 (2025-06-27 09:51 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: 8 × 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-15.0.7 (ORCJIT, tigerlake)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)
パッケージ
下記のRegistryCI.jlとRegistryInstances.jlをインストールしましょう。
import Pkg
Pkg.add("RegistryCI")
Pkg.add("RegistryInstances")
判定する関数
下記の関数で判定できます。
using RegistryCI.AutoMerge
using RegistryInstances
path_to_registry = joinpath(DEPOT_PATH[1], "registries", "General.toml")
all_pkg_names = AutoMerge.get_all_non_jll_package_names(RegistryInstances.RegistryInstance(path_to_registry))
function verify_package_name(pkg_name; all_pkg_names=all_pkg_names)
# 既存のパッケージ名と一致しないか確認
ok_match, msg_match = AutoMerge.meets_name_match_check(pkg_name, all_pkg_names)
ok_match || return false, "✗ $msg_match"
# 近いパッケージ名が無いか確認
ok_dist, msg_dist = AutoMerge.meets_distance_check(pkg_name, all_pkg_names)
ok_dist || return false, "✗ $msg_dist"
# 問題ない場合
return true, "✓ Package name is available."
end
実例
以下のように判定を行うことができます。
julia> verify_package_name("Antique")
(false, "✗ Package name already exists in the registry.")
julia> verify_package_name("Antique2")
(false, "✗ Package name similar to 1 existing package.\n 1. Similar to Antique. Damerau-Levenshtein distance 1 is at or below cutoff of 2. Damerau-Levenshtein distance 1 between lowercased names is at or below cutoff of 1.")
julia> verify_package_name("AntiqueShop")
(true, "✓ Package name is available.")
ここでは私が開発・公開しているAntique.jlを例に挙げました。Antiqueは既に使われているので利用できません。Antique2についてもDamerau–Levenshtein距離が近すぎるので利用できません。一方、AntiqueShopは利用可能です。
ノートブック
Google Colab上で実際に動かせる例を用意しました。パッケージの公開を考えている方はぜひ動かしてみてください。
Discussion