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.mikuproject、MikuprojectCli、vendor/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 test と mvn package の結果
  • 変更前 runtime の java -jar target/mikuproject.jar --version の結果

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

実施手順

  1. 上記 baseline を取得し、変更前の build/test が成功することを確認する。
  2. 人間が GitHub Settings で igapyon/mikuproject-java を igapyon/miku-project-java へ rename する。
  3. local clone の origin を新 URL へ変更し、fetch/push の参照先が igapyon/miku-project-java であることを確認する。redirect のまま作業を続けない。
  4. pom.xml の artifactId、name、description、url、finalName と配布 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.jar、miku-project-sources.jar、README、LICENSE、runtime documentation が含まれる
  • Release workflow が miku-project-<version>.jar と miku-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、記事にある歴史的名称の一括置換

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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