Upgrade to Pro — share decks privately, control downloads, hide ads and more …

用語統一のその先へ〜フロントとバックエンドの円滑なコミュニケーション

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for mytysoldier mytysoldier
August 21, 2025
36

 用語統一のその先へ〜フロントとバックエンドの円滑なコミュニケーション

Avatar for mytysoldier

mytysoldier

August 21, 2025
Tweet

Transcript

  1. is_plus: type: boolean plus: type: object properties: amount: type: integer

    time_of_next_payment: type: string format: date-time required: - amount - time_of_next_payment is_plus_trial: type: boolean plus_trial: type: object properties: ends_at: 例:用語の不一致
 (Mobile開発者)今度の "無料キャンペーン" の件なん ですが、ユーザーが対象かどうかと、終了日を知りたい です。
 (BE開発者)"無料キャンペーン"...?ああ、内部的には "Plus Trial"と呼んでいる機能です。はい、APIで取得で きますよ。

  2. is_plus: type: boolean plus: type: object properties: amount: type: integer

    time_of_next_payment: type: string format: date-time required: - amount - time_of_next_payment is_plus_trial: type: boolean plus_trial: type: object properties: ends_at: 例:用語の不一致
 (Mobile開発者)今度の "無料キャンペーン" の件なん ですが、ユーザーが対象かどうかと、終了日を知りたい です。
 (BE開発者)"無料キャンペーン"...?ああ、内部的には "Plus Trial"と呼んでいる機能です。はい、APIで取得で きますよ。
 用語変換という小さなコストが頻繁に発生 

  3. 例:レスポンスの使用方法が不明
 properties: is_basic: type: boolean basic: type: object properties: plus_trial_enabled:

    type: boolean can_join_plus_trial_plan: type: boolean is_plus: type: boolean is_plus_trial: type: boolean plus_trial: type: object properties: ends_at: type: string (Mobile開発者)ユーザーが"無料体験中"である場合の 判定について質問です。
 is_plus_trial というフラグがありますが、これを正として 見れば良いでしょうか?
 また、is_plus_trial が true の時、is_basic や is_plusと いった他のフラグがどのような値になるか、レスポンス の具体例を教えていただけますか? 

  4. 例:レスポンスの使用方法が不明
 properties: is_basic: type: boolean basic: type: object properties: plus_trial_enabled:

    type: boolean can_join_plus_trial_plan: type: boolean is_plus: type: boolean is_plus_trial: type: boolean plus_trial: type: object properties: ends_at: type: string (Mobile開発者)ユーザーが"無料体験中"である場合の 判定について質問です。
 is_plus_trial というフラグがありますが、これを正として 見れば良いでしょうか?
 また、is_plus_trial が true の時、is_basic や is_plusと いった他のフラグがどのような値になるか、レスポンス の具体例を教えていただけますか? 
 レスポンスのどの項目を使ったら正しい判定ができ るのかわかりづらい

  5. 例:同じ情報がAPIによって異なる名称で使われる
 properties: is_plus_trial: type: boolean plus_trial: type: object properties: ends_at:

    type: string (Mobile開発者)APIについて質問させてください。無料 体験機能について調べているのですが、関連しそうな APIが2つ見つかりました。
 名前も構造も全く違うのですが、もしかしてこの2つの APIが返している情報は、表現している内容は全く同じ もの、という認識で合っていますでしょうか? 
 properties: plan_name: type: string trial_info: type: object properties: trial_end_date: type: string /contract /subscription
  6. 例:同じ情報がAPIによって異なる名称で使われる
 properties: is_plus_trial: type: boolean plus_trial: type: object properties: ends_at:

    type: string (Mobile開発者)APIについて質問させてください。無料 体験機能について調べているのですが、関連しそうな APIが2つ見つかりました。
 名前も構造も全く違うのですが、もしかしてこの2つの APIが返している情報は、表現している内容は全く同じ もの、という認識で合っていますでしょうか? 
 properties: plan_name: type: string trial_info: type: object properties: trial_end_date: type: string /contract /subscription APIごとに同じ内容が異なる形式で返され、 
 変換実装コストがかかる 

  7. 想定される問題
 - 🔄 無駄な実装コスト
 - 同じ情報を異なるAPIで異なる形で処 理
 - クライアント側での変換ロジック実装 


    - ⚠ バグの温床
 - 用語の取り違えによる実装ミス 
 - レスポンス構造の誤解による不具合 
 - 📈 保守性の悪化
 - 機能追加時の影響範囲が不 明確
 - 新メンバーの学習コスト増大 
 - 技術的負債の蓄積
 

  8. 󰳕 2-3人チーム
 「プレミアム無料体験」
 「Plus Trial」
 → 口頭で確認できる範囲
 👥 5-6人チーム
 Backend:「Plus

    Trial」
 iOS:「プレミアム体験」
 Android:「無料キャンペーン」
 → 用語変換が頻繁に発生
 チーム規模と意思疎通コスト
 󰔢 10人以上チーム
 複数の用語が混在
 各自が異なる用語でドキュメント化 
 新メンバーが混乱
 → 意思疎通コストが指数関数的に増加 

  9. description: | ユーザーが現在契約している利用プランを表す。 - 契約を表すプロパティ: is_classic, is_basic, is_plus - 必ずこれらのプロパティのうちのひとつを持つ

    (いずれも存在しなかっ たり、2つ以上存在することはない) - 存在するプロパティの値は必ずtrueである - 今後種類が増える可能性がある - 契約の追加情報を表すプロパティ: basic, plus_trial - 契約を表すプロパティ (is_*) に対応するものが含まれる - これらのプロパティは存在しないこともある properties: is_classic: type: boolean description: このキーが存在し、かつtrueなら従来プランを契約してい る is_basic: type: boolean description: このキーが存在し、かつtrueなら基本プランを契約してい る 実践したことーレスポンスの使用方法
 • OpenAPI の description フィールドに補足を記載

  10. 得られたこと&今後の展望
 • 共通言語で会話しスムーズなやりとりができた 
 ◦ 設計段階で用語を統一したことで、開発中のコミュニケーションに認識のズレがなく、手戻 りや無駄な確認コストを削減できた 
 ◦ →

    FrontEndやQA, デザイナー, PdMと、プロジェクト全体で用語を統一していきたい 
 • デイリーミーティングでお互いの進捗が把握しやすい 
 • 型の統一も図れ、実装で複雑性を吸収することを防げた 
 ◦ モバイルとバックエンドでデータ構造を統一 
 ◦ クライアント側で複雑な変換ロジックを持つ必要がなくなった 
 ◦ Swift OpenAPI Generator, OpenAPI Generator 
 ◦ https://github.com/apple/swift-openapi-generator 
 ◦ https://github.com/OpenAPITools/openapi-generator 
 ◦ → 型安全性の向上に繋げたい