Liquidでユーザープロフィールの値を利用してif文等で比較する際、ユーザープロフィールの型情報が反映されるよう変更されます。
リリース日
2025 年 9 月 16 日
※ 無事に日程どおり、リリースが完了しております。ご協力ありがとうございました。
仕様変更に伴う背景
これまで、Liquidによるパーソナライズを利用し展開された値は すべて文字列型として扱われる 仕様となっていました。
したがって、展開前の値が整数や小数であっても文字列として比較・演算を行う必要があり、以下のような課題がありました。
- テンプレート内の if / elsif / case で毎回クオート付き比較を書く必要があり、可読性が低い
- クオート忘れによる 意図しない評価結果 が発生する
仕様変更後は、ユーザープロフィールの型情報(整数・小数)の場合、そのまま展開されるため、数値比較などが実現しやすくなります。
お客様にご対応いただくこと
Liquidを利用した値の埋め込みのみ行っている場合
お客様にご対応いただくことはございません。
今まで利用していたLiquid文をそのまま継続してご利用いただけます。
if文などを利用した分岐が存在するキャンペーンがある場合
クォーテーション付きで記述していた数値比較等で 評価結果が変わる可能性 があります。
以下を参考に影響のあるテンプレートがないかご確認をお願いいたします。
修正が必要な Liquid 記述例
本来は整数・小数のユーザープロフィールを利用し {% if user_profile['age'] == '20' %} のように文字列として比較する記述は、仕様変更のリリース後 FALSE として評価されるようになるため、意図した動作が得られません。
| 例 | 記述 | 評価結果 |
|---|---|---|
| 整数比較 | {% if user_profile['member_rank'] == '1' %} |
仕様変更前 : TRUE (member_rank は文字列 '1' が入るため) 仕様変更後 : FALSE (member_rank は整数 1 が入るため) |
| 小数比較 | {% if user_profile['rating'] == '25.0' %} |
仕様変更前 : TRUE (rating は文字列 '25.0' が入るため) 仕様変更後 : FALSE (rating は小数 25.0 が入るため) |
注意点・制限事項
- 上記の記述例のように、
==!=casewhenを利用した場合、評価結果が変わる可能性があります - テンプレート修正が難しい場合は、管理画面右下のチャットサポート よりお声がけください
評価結果が変わるLiquidを今後利用する方法
影響のあるLiquidの記載方法があった場合、リリース後に配信の内容が変わってしまいます。
一度キャンペーンを非公開にした上で、本リリース後に修正した内容で再度公開してください。
例:リリース後に修正したLiquid 記述
※case文でも、if文と同様にクオートなしで比較が可能になります。
| 例 | 記述 | 評価結果 |
|---|---|---|
| 整数比較 | {% if user_profile['member_rank'] == 1 %} | TRUE(整数 1 と比較) |
| 小数比較 | {% if user_profile['rating'] == 25.0 %} | TRUE(小数 25.0 と比較) |
よくあるご質問
該当するLiquidを利用しているかわかりません。
Liquidを見ながら、コードの記載内容をご確認ください。
また、影響のあるキャンペーンを配信中のお客様には、カスタマーサクセス担当よりご連絡させていただきます。
日付型のユーザープロフィールにも影響はありますか?
ありません。現在ご利用されている場合は、そのまま変更なく継続いただけます。
修正不要なパーソナライズとは、具体的にどんなものですか?
以下の例は、本リリース前後で特に配信内容に影響がない記述例です。
| ケース | 記述例 | 影響がない理由 |
|---|---|---|
| 1. 文字列型プロフィール | {% if user_profile['location'] == 'Japan' %} | location はもともと文字列型のため、新仕様でも文字列のまま比較されるため評価結果は変わりません。 |
| 2. 整数型 × 大小比較 | {% if user_profile['age'] > 18 %} | > < >= <= は Liquid が自動で数値へ型変換するため、旧仕様でも正しく数値比較されていました。 |
| 3. 小数型 × 大小比較 | {% if user_profile['rating'] < 4.5 %} | 小数値でも同様に暗黙の数値変換が働くため、動作に影響はありません。 |