Skip to content

fix: 路線名IPAの接尾辞を英語IPAに置換#1413

Merged
TinyKitten merged 1 commit into
devfrom
fix/replace-line-name-suffix-with-english-ipa
Mar 5, 2026
Merged

fix: 路線名IPAの接尾辞を英語IPAに置換#1413
TinyKitten merged 1 commit into
devfrom
fix/replace-line-name-suffix-with-english-ipa

Conversation

@TinyKitten

@TinyKitten TinyKitten commented Mar 5, 2026

Copy link
Copy Markdown
Member

Summary

  • 路線名カタカナのIPA変換時、接尾辞(セン/ホンセン/シセン)を単に除去するのではなく、英語IPA(laɪn / meɪn laɪn)に置換するように変更
  • 例: セイブイケブクロセン → seibɯikebɯkɯɾo laɪn
  • シンカンセン(Shinkansen)は英語でもそのまま使われるため例外として保護

Test plan

  • replace_line_name_suffix のユニットテスト(セン→laɪn、ホンセン→meɪn laɪn、シセン→laɪn、シンカンセン保護、ライン等の非対象、空stem保護)
  • 既存IPA変換テスト49件すべてパス

🤖 Generated with Claude Code

Summary by CodeRabbit

リリースノート

  • 改善
    • 駅名の発音表記(IPA)処理を改良しました。駅名の接尾辞をより正確な英語の発音マッピングに置換するようになり、駅名の読み方表示がより適切になります。
    • 特定の接尾辞については例外処理を追加し、正しく処理されるようになりました。

Instead of just removing 線/本線/支線 from the IPA, replace them with
their English IPA equivalents (laɪn / meɪn laɪn) so that Google TTS
correctly pronounces the line type in English.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Mar 5, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

ipa.rs内のstrip_line_name_suffix関数をreplace_line_name_suffixに名前変更し、単一の文字列を返す代わりに(stem, replacement)タプルを返すように変更。呼び出し側のline.rsをこの新しい関数シグネチャに合わせて更新。

Changes

Cohort / File(s) Summary
IPA suffix replacement refactor
stationapi/src/domain/ipa.rs
関数strip_line_name_suffixreplace_line_name_suffixに名前変更。戻り値の型を&strから(&str, &str)(茎と置換文字列)に変更。LINE_NAME_SUFFIXESLINE_NAME_SUFFIX_MAP(サフィックスと置換のペア)に置き換え。例外処理機構を追加。
Line DTO integration
stationapi/src/use_case/dto/line.rs
新しいreplace_line_name_suffix関数を使用するようにインポートと呼び出しを更新。name_ipaの計算ロジックをタプル戻り値に対応させ、茎と置換を結合した文字列フォーマットに変更。

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested labels

fix

Poem

🐰 接尾辞の置き換えに、
タプルで返すようになりて、
IPA文字列、美しく、
駅名の変換、整いけり。
コードのリズム、整いたり!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed プルリクエストのタイトルは、LINE_NAME_SUFFIX_MAPの導入と接尾辞を英語IPA(「laɪn」/「meɪn laɪn」)に置換する変更という、チェンジセット全体の主要な目的を正確に表しています。
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/replace-line-name-suffix-with-english-ipa

Comment @coderabbitai help to get the list of available commands and usage tips.

@TinyKitten TinyKitten self-assigned this Mar 5, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
stationapi/src/use_case/dto/line.rs (1)

11-15: name_ipa の新仕様に対するDTO層テストを追加してください。

実装は良いですが、この変更点(英語IPA接尾辞の連結・Shinkansen例外)をこのファイルのテストで直接検証していないため、将来の回帰を検知しづらいです。

テスト追加例
+    #[test]
+    fn test_line_to_grpc_line_name_ipa_appends_line_suffix() {
+        let line = create_test_line(TransportType::Rail, None);
+        let grpc_line: GrpcLine = line.into();
+        assert!(matches!(
+            grpc_line.name_ipa.as_deref(),
+            Some(s) if s.ends_with(" laɪn")
+        ));
+    }
+
+    #[test]
+    fn test_line_to_grpc_line_name_ipa_shinkansen_has_no_english_suffix() {
+        let mut line = create_test_line(TransportType::Rail, None);
+        line.line_name_k = "トウホクシンカンセン".to_string();
+        let grpc_line: GrpcLine = line.into();
+        assert!(matches!(
+            grpc_line.name_ipa.as_deref(),
+            Some(s) if !s.ends_with(" laɪn") && !s.ends_with(" meɪn laɪn")
+        ));
+    }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@stationapi/src/use_case/dto/line.rs` around lines 11 - 15, name_ipa
の新仕様(replace_line_name_suffix と katakana_to_ipa を組み合わせて英語IPA接尾辞を連結し、Shinkansen
系の例外処理が正しく動くこと)を検証する DTO 層の単体テストを追加してください: stationapi/src/use_case/dto/line.rs
にある name_ipa 算出ロジックをテスト対象にして、(1) 英語接尾辞を持つ行名で replace_line_name_suffix が返す suffix
を katakana_to_ipa の出力に正しく連結していること、(2) 「新幹線」等の例外ケースで期待する振る舞い(例:
接尾辞を結合しない/別扱い)が守られていることをそれぞれのケースで assert するテストケースを追加し、必要なテストデータは
replace_line_name_suffix や katakana_to_ipa の戻り値を想定して構築してください。
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@stationapi/src/use_case/dto/line.rs`:
- Around line 11-15: name_ipa の新仕様(replace_line_name_suffix と katakana_to_ipa
を組み合わせて英語IPA接尾辞を連結し、Shinkansen 系の例外処理が正しく動くこと)を検証する DTO 層の単体テストを追加してください:
stationapi/src/use_case/dto/line.rs にある name_ipa 算出ロジックをテスト対象にして、(1) 英語接尾辞を持つ行名で
replace_line_name_suffix が返す suffix を katakana_to_ipa の出力に正しく連結していること、(2)
「新幹線」等の例外ケースで期待する振る舞い(例: 接尾辞を結合しない/別扱い)が守られていることをそれぞれのケースで assert
するテストケースを追加し、必要なテストデータは replace_line_name_suffix や katakana_to_ipa
の戻り値を想定して構築してください。

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: aeb5495c-378e-4d02-9a03-732e22256492

📥 Commits

Reviewing files that changed from the base of the PR and between 487af67 and 898c167.

📒 Files selected for processing (2)
  • stationapi/src/domain/ipa.rs
  • stationapi/src/use_case/dto/line.rs

@TinyKitten TinyKitten merged commit 945a1ba into dev Mar 5, 2026
1 check passed
@TinyKitten TinyKitten deleted the fix/replace-line-name-suffix-with-english-ipa branch March 5, 2026 22:46
@github-actions github-actions Bot added the fix 直した label Mar 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fix 直した

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant