Skip to content

miku-project-java 命名体系へ移行する #37

Description

@igapyon

背景

igapyon/miku-project#123 で、製品ファミリーの canonical name を mikuproject 系から miku-project 系へ移行する方針を定めた。

このリポジトリは現在、GitHub repository igapyon/mikuproject-java、Maven artifactId と build final name mikuproject、成果物 mikuproject.jar、Java package jp.igapyon.mikuproject、upstream 参照 directory vendor/mikuproject/ を使用している。公開名称と内部 identifier を一括置換すると、Java 利用者の互換性と upstream 追従履歴を同時に壊す可能性がある。

本 Issue では、公開される repository・Maven metadata・成果物・CLI 表示・参照 URL を miku-project 系へ移行し、Java package、class 名、vendor directory は互換性を優先して第一段階では維持する。

Refs igapyon/miku-project#123

目的

  • GitHub repository を igapyon/miku-project-java へ変更する
  • Java 版の公開 metadata と配布成果物を miku-project 系へ揃える
  • 維持する旧内部 identifier を明記し、機械的な全置換を防ぐ
  • 同じ手順と検証条件で再実行できる移行記録を残す

名称と互換境界

対象 現在 変更後 方針
GitHub repository igapyon/mikuproject-java igapyon/miku-project-java 人間が GitHub Settings で変更する
repository / project 表示名 mikuproject-java miku-project-java canonical name を変更する
Maven artifactId mikuproject miku-project public artifact name を変更する
build final name mikuproject miku-project JAR と distribution 名へ反映する
runtime JAR mikuproject.jar miku-project.jar canonical filename を変更する
sources JAR mikuproject-sources.jar miku-project-sources.jar canonical filename を変更する
distribution ZIP mikuproject-dist.zip miku-project-dist.zip canonical filename を変更する
CLI の製品表示 mikuproject miku-project --version、help、診断を更新する
Java package jp.igapyon.mikuproject 変更しない source/binary compatibility のため第一段階では維持する
main class jp.igapyon.mikuproject.cli.MikuprojectCli 変更しない manifest entrypoint を維持する
upstream directory vendor/mikuproject/ 変更しない subtree の追跡履歴を維持し、歴史的内部 path として文書化する

jp.igapyon.mikuprojectMikuprojectClivendor/mikuproject/ の変更が必要になった場合は、本 Issue に混在させず、互換性と移行方法を定めた別 Issue で扱う。

実施前に固定する情報

作業開始時に、Issue コメントまたは PR 本文へ次を記録する。

  • 変更前 repository の default branch と exact HEAD SHA
  • 変更前の最新 Release tag、または Release がないこと
  • 追従対象となる miku-project の exact tag または commit SHA
  • vendor/mikuproject/ が指す upstream commit
  • 変更前に実行した mvn testmvn package の結果
  • 変更前 runtime の java -jar target/mikuproject.jar --version の結果

latest、可変 branch 名、GitHub redirect だけを再現条件に使用しない。

実施手順

  1. 上記 baseline を取得し、変更前の build/test が成功することを確認する。
  2. 人間が GitHub Settings で igapyon/mikuproject-javaigapyon/miku-project-java へ rename する。
  3. local clone の origin を新 URL へ変更し、fetch/push の参照先が igapyon/miku-project-java であることを確認する。redirect のまま作業を続けない。
  4. pom.xmlartifactIdnamedescriptionurlfinalName と配布 ZIP 設定を名称表へ揃える。
  5. README、development docs、upstream mapping、assembly descriptor、GitHub Actions、Release asset 名、badge、repository URL を更新する。
  6. CLI の --version、help、診断、配布文書に現れる製品表示を miku-project へ更新する。
  7. vendor/ を除く旧名称を棚卸しし、公開名称、互換 identifier、歴史的記録のいずれかへ分類する。
  8. build/test と distribution 検証を完了し、PR に baseline と変更後結果を記録する。
  9. merge 後、通常の Release 承認手順で新名称の成果物を公開し、下流が固定できる exact tag を記録する。

対応範囲

  • Maven metadata と build output name
  • assembly descriptor と配布 archive 内の filename/documentation
  • CLI の product name、help、version 表示
  • README、docs、GitHub Actions、Release asset、repository URL
  • upstream repository の canonical URL と追従手順
  • 新名称を前提にした test assertion と fixture

旧名称の棚卸しには、少なくとも次と同等の検索を使用する。

rg -n --hidden -g '!vendor/**' -g '!target/**' -g '!.git/**' 'mikuproject|mikuproject-java' .

検索結果を無条件に置換せず、維持する identifier は理由とともに PR 本文へ列挙する。vendor/ 内は upstream snapshot として別に確認し、本 Issue の一括置換対象にしない。

検証

mvn test
mvn package
java -jar target/miku-project.jar --version
unzip -l target/miku-project-dist.zip

あわせて次を確認する。

  • --version と help が miku-project を canonical name として表示する
  • distribution ZIP に miku-project.jarmiku-project-sources.jar、README、LICENSE、runtime documentation が含まれる
  • Release workflow が miku-project-<version>.jarmiku-project-sources-<version>.jar を生成・検証する
  • Java package と main class を維持した状態で既存 test が通る
  • 管理中の URL が旧 GitHub redirect に依存していない
  • 旧名称の残存が、互換 identifier、内部 path、歴史的記録として説明されている

中断条件

  • baseline build/test が失敗する
  • rename 対象 repository、default branch、exact HEAD を確定できない
  • Maven artifact、Java package、vendor subtree のどれを変更するかが名称表と矛盾する
  • GitHub rename 後に新 URL で fetch/push できない
  • 新旧成果物の対応を検証できない

中断時は次の repository へ進めず、GitHub repository 名を戻す必要がある場合も人間が判断・実施する。履歴の書き換えや強制 push は行わない。

完了条件

  • GitHub repository が igapyon/miku-project-java になっている
  • Maven metadata、JAR、sources JAR、distribution ZIP、CLI 表示が名称表どおりである
  • README、docs、Actions、Release 設定、管理中 URL が新名称へ整合している
  • Java package、main class、vendor directory の維持理由が文書化されている
  • baseline と変更後の exact SHA、upstream ref、検証結果が PR に残っている
  • build、test、CLI smoke、distribution 内容確認が成功している
  • 下流が参照できる新名称の exact Release tag が確定している

非対象

  • Java package、class 名、vendor subtree directory の移行
  • WBS、MS Project XML、帳票、AI JSON などの機能変更
  • upstream 実装との差分解消
  • Git 履歴の作り直し
  • 過去の Release、Issue、記事にある歴史的名称の一括置換

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions