Skip to content

feat: 生成コードを再生成し Autogen 名前空間に追随する - #64

Open
masatoi wants to merge 1 commit into
masterfrom
autogen-namespace-migration
Open

feat: 生成コードを再生成し Autogen 名前空間に追随する#64
masatoi wants to merge 1 commit into
masterfrom
autogen-namespace-migration

Conversation

@masatoi

@masatoi masatoi commented Aug 22, 2026

Copy link
Copy Markdown
Member

前提: pokepay-sdk-generator#77 と ios-sdk#119 のマージが必要です。マージ順序は末尾を参照してください。

背景

pokepay-sdk-generator#77 で、ios-sdk の生成コードが Sources/Pokepay/Autogen/Autogen.* 型名前空間へ隔離されました(再生成で手書き 55 ファイルが黙って上書きされていたため)。ios-sdk#119 がその移行です。

flutter-sdk の生成物 ios/Classes/AutogenMethodHandlers.swift は ios-sdk の型を呼び出しますが、未修飾の BankAPI.<Tag> を指したままでした。ios-sdk 側の生成コードが Autogen.BankAPI.<Tag> へ移ったため、追随しないと手書き側に同名の型が無い操作でコンパイルできません。

変更内容

1. Swift ネイティブリンクの呼び出し先(150 箇所)

-client.send(BankAPI.Terminal.GetTerminal(), handler: self.after)
+client.send(Autogen.BankAPI.Terminal.GetTerminal(), handler: self.after)

未修飾の呼び出しはゼロになりました。

android/src/main/java/jp/pokepay/pokepay_sdk/AutogenMethodHandlers.java は元から jp.pokepay.pokepaylib.BankAPI.autogen.* を import しており、パッケージ指定の変更は不要でした(android-sdk は元から BankAPI/autogen/{requests,responses}/ に隔離できているため)。

2. spec 拡大にともなう生成物の更新

pokepay-server の api-response-validation-tests ブランチで x-pokepay-mobile-sdk が 55 → 153 箇所に拡大したことによる更新です。

変更前 変更後
Dart 呼び出し 104 154
Java / Swift の case 各 92 各 186

影響範囲

手書きコードには一切変更がありません。 変更は lib/generated/ と両 AutogenMethodHandlers に閉じています。手書きの SwiftPokepaySdkPlugin.swift / PokepaySdkPlugin.java / lib/bank_api/** は無変更です。

pubspec.lockpub get の副作用で差分が出ましたが、コード生成に効くパッケージ(json_serializable / json_annotation / source_gen / build_runner / dart_style)はすべて同一バージョンで、無関係な transitive 依存のドリフトだったため戻しています。

検証

項目 結果
flutter analyze No issues found!
dart run build_runner build 256 outputs
tool/check_native_links.dart 0 error / 89 warning
ネイティブリンクの型検査 Build complete!

check_native_links の警告について

ベースライン(再生成前)が 27 warning、再生成後が 89 warning です。増分 62 件はすべて同一カテゴリで、「手書き switch と AutogenMethodHandlers の両方に case があり、手書き側が優先されて生成側は到達しない」というものです(iOS / Android 各 31 メソッド)。error はゼロ、既存警告の悪化もありません。

ビルドは壊れませんが生成側が死にコードになるため、手書き case を整理するかは別途の判断事項です。

ネイティブリンクの型検査について

この環境には Xcode が無いため(CLT のみ)、実機・シミュレータでのビルドは行えません。代わりに、生成物 AutogenMethodHandlers.swiftimport Flutter するものの Flutter のシンボルを一切使わないことを利用し、空の Flutter モジュールと MethodCallTaskflutterEnvToSDKEnvafter の 2 メソッドのみ)のシムを用意して、ios-sdk#119 適用済みの ios-sdk に対して型検査しました。1252 行すべてが Autogen.BankAPI.* の型と整合することを確認しています。

マージ順序

  1. pokepay-sdk-generator#77 — 生成器の修正
  2. ios-sdk#119 — ios-sdk 側の移行(Autogen.BankAPI.* が存在するようになる)
  3. この PR — flutter-sdk が Autogen.BankAPI.* を呼ぶようになる

2 と 3 の間に依存があります。この PR を先にマージすると、ios-sdk に Autogen.BankAPI.* がまだ無いためコンパイルできません。

🤖 Generated with Claude Code

pokepay-server の api-response-validation-tests ブランチ (x-pokepay-mobile-sdk を
55 → 153 箇所に拡大) の spec から pokepay-sdk-generator#77 で再生成した。

主な変更は 2 つ。

1. ios/Classes/AutogenMethodHandlers.swift の呼び出し先を Autogen.BankAPI.<Tag> に
   変更 (150 箇所)。ios-sdk#119 で生成コードが Autogen 名前空間へ隔離されたため、
   未修飾の BankAPI.<Tag> を指したままだと、手書き側に同名の型が無い操作で
   コンパイルできない。

2. spec の拡大にともなう Dart 層と両ネイティブリンクの生成物の更新。
   Dart 呼び出し 104 → 154、Java/Swift の case 92 → 186。

android/src/main/java/.../AutogenMethodHandlers.java は元から
jp.pokepay.pokepaylib.BankAPI.autogen.* を import しており、パッケージ指定の
変更は不要だった (android-sdk は元から隔離できているため)。

手書きコードには一切変更なし。変更は lib/generated/ と両 AutogenMethodHandlers に閉じている。

検証:
  flutter analyze                    No issues found!
  dart run build_runner build        256 outputs
  tool/check_native_links.dart       0 error / 89 warning
                                     (ベースライン 27 からの増分 62 はすべて
                                      手書き switch との重複カテゴリ、既存警告の悪化なし)
  ネイティブリンクの型検査           ~/ios-sdk (Autogen 適用版) に対して Build complete!

pokepay-sdk-generator: pokepay/pokepay-sdk-generator#77
ios-sdk: pokepay/ios-sdk#119

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant