Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Your AI brand reviewer should read the cancellation code

2026年10月01日に「Dev.to」が公開したITニュース「Your AI brand reviewer should read the cancellation code」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

サービス解約時に「いつでもキャンセル可能」と謳いつつ、実際は理由入力や引き止め閲覧が必須で矛盾する問題がある。これはブランド原則がコードに反映されていないためだ。AIを活用し、サービスの約束と実際のコードを照合して矛盾を特定・修正する重要性を、解約処理の具体例で解説。システム開発では、ブランド原則をコードレベルで守ることが重要となる。

ITニュース解説

多くの企業や製品は、「いつでもキャンセル可能。お客様は管理できます。」といった魅力的な約束を掲げている。しかし、実際にサービスを解約しようとすると、必ず理由の入力を求められたり、解約を引き止めるためのオファーを強制的に見せられたりして、約束と異なる体験をすることが少なくない。このような場合、AIが表面的なコピー文だけをレビューしても、「いつでもキャンセル可能」というメッセージ自体は問題ないと判断してしまう可能性がある。だが、その裏側にあるシステムの実際の振る舞いは、顧客の自律性を奪っているという矛盾がそこに存在する。

この問題に対処するため、「Brand Machines」というアプローチが提案されている。これは、ブランドが大切にしている価値観、すなわち「アイデンティティ」を単なる言葉だけでなく、システムがどのように動くかにまで深く関わらせる考え方だ。ブランドの原則が、システムの振る舞いを決定する「結果」につながるように設計し、コードレベルでその原則が守られているかを検証することが目的である。

具体的な例として、サブスクリプション製品のキャンセル処理を取り上げる。「自律性(P-AUTONOMY)」という原則を考えてみよう。この原則は、「認証されたアカウント保有者は、理由を述べたり、引き止めオファーを見たり、サポートの承認を待ったりすることなく、請求設定から将来の更新を停止できる」と具体的に定義される。さらに、「有料アクセスは期間終了まで続く」という点も重要だ。この原則を採用することの「トレードオフ」として、「強制的な引き止め機会を放棄する」という企業側の決定も明確にする。これにより、チームはフィードバックを求めることや別のプランを提案することはできるが、それらを解約の条件とすることはできないと合意する。

次に、このブランドの約束と、それを実現するシステムの振る舞いを並べて検証する。ユーザーが目にするウェブサイトの料金案内には「いつでもキャンセル可能。お客様は管理できます。」と書かれており、解約完了後の画面には「定期購読が終了しました。アクセスは閉鎖されました。」と表示される。一方で、実際の解約処理を行うPythonのプログラムコードを見てみよう。cancelという関数の中には、reason(理由)が指定されていない場合や、offer_seen(引き止めオファーを見たか)がFalseの場合に、解約処理を進めずにエラーを返すような条件分岐(ガード節)が記述されている。これは、ユーザーが理由を答えたりオファーを見たりしないと、システムが解約を完了させないことを意味する。

ここで矛盾が明らかになる。ウェブサイトの言葉は顧客の自律性を約束しているにもかかわらず、プログラムコードはそれを妨げているのだ。また、解約後に「アクセスは閉鎖された」というメッセージが表示されるが、定義された原則によれば、有料アクセスは期間終了まで継続されるべきである。この点もコードと表示の間の乖離である。AIによるテキストのレビューだけでは、このようなコードレベルでの問題や、システム全体の振る舞いの矛盾は見抜けない。

Brand Machinesのアプローチでは、このような矛盾を発見するためにAIエージェントを活用する。エージェントには、定義されたブランド原則(principles.md)、ユーザー向けの表示文言(pricing.md, cancellation.md)、そして実際の処理コード(cancellation.py)をまとめてレビューするよう指示する。具体的には、「認証された顧客が理由を述べず、オファーも見ずにキャンセルを要求した場合に何が起こるか」を追跡させ、各発見について関連するファイルとコードの箇所を引用し、「自律性(P-AUTONOMY)」原則にどう関連するかを指摘させ、最小限の修正案を提案させる。

このレビューによって、Brand OS層(システムの振る舞いを司る部分)の問題として、cancellation.pyのガード節が解約を妨げていることが特定される。また、Skin層(ユーザーが目にする部分)の問題として、web/cancellation.mdの「アクセスは閉鎖された」という文言が、原則で保証された有料アクセス期間の継続と矛盾していることが指摘される。

発見された問題に対する修正は、まずシステムの振るまいから行う。cancellation.pyのcancel関数から、理由やオファーの閲覧を強制するガード節を削除する。これにより、顧客は理由を述べたりオファーを見たりすることなく、更新を停止できるようになる。修正後の関数は、単にサブスクリプションの更新を無効にし、確認済みステータスとアクセス終了日を返すだけになる。その後、この修正された振る舞いを反映するように、ウェブサイトの確認メッセージも更新する。「更新は停止されました。お客様の有料アクセスは{access_until}まで継続します」といったように、実際の状態を正確に伝える文言に変更する。

これらの修正が正しく機能するかを検証するために、Pythonのテストコードを作成し実行する。テストでは、キャンセル関数を呼び出し、renewal_enabledがFalseになっているか、statusがconfirmedであるか、そしてaccess_untilの値が変わらず維持されているかを確認する。このテストは、修正前のコードでは失敗し、修正後のコードで成功する。

この一連のプロセスが示すのは、ブランドのアイデンティティ、つまり企業や製品の根幹をなす価値観や約束は、単にマーケティングの言葉だけでなく、プログラムコードの最も深い部分まで浸透していなければならないという事実だ。システムエンジニアにとって、これは単に要件を満たすコードを書くだけでなく、その製品がユーザーに与えたいと約束している体験や価値観をコードレベルで理解し、体現することが求められることを意味する。キャンセルポリシー、プライバシー保護、アクセシビリティ、サポート体制といった、ユーザー体験に直接影響する重要な領域において、ブランド原則とシステムの実際の振る舞いが一致しているかを常に意識し、検証する姿勢が重要である。

関連コンテンツ

関連IT用語

関連ITニュース