ICU ロケール形式の有効化の準備


Salesforceからの重要なお知らせ。なんか嫌な予感だ。

ちょうどこれに関する質問もあった

Ways to query items using a hard-coded date in an org?

ヘルプ

Go Global with New International Locale Formats

  • Spring ’22 リリースより、Salesforce では International Components for Unicode (ICU) ロケール形式が必須になります。
  • ご利用いただいている組織では、まだ ICU 形式を採用されていないようです。
  • ICU を採用することで、日時や通貨など、すべてのロケールデータのパターンと形式に一貫性を持たせることができます。

組織で使用されているロケールと各ロケールのユーザ数を検索します。

SELECT toLabel(LocaleSidKey) LocaleName, LocaleSidKey, Count(id) UserCount FROM User where IsActive=true GROUP BY LocaleSidKey

変更点


で、何が問題になるのか?

##2021/06/16の考察
Date- Long : 現在2021/06/16 -->移行後 2021年6月16 になるような書き方。

ちょっと、嫌なのが 月の桁数が変わっている。 もし年月日を桁数で抜き取っている場合は問題になりそうな気がします。こういうとろを重点的にチェックした方がよさそうな気がしています。

対策の着眼点

The ICU format change doesn't necessarily mean things will break - only that certain field formats may change. Only functionality that was built to rely on particular formats would break, like if you have something that gets the time portion from a date-time text.

ICU形式の変更は、必ずしも問題が発生することを意味するわけではありません。特定のフィールド形式が変更される可能性があるだけです。日時テキストから時間部分を取得するものがある場合のように、特定の形式に依存するように構築された機能のみが機能しなくなります。

How to Adopt the New Locale Formats: Evaluate the impact to your org

レポート、数式、入力規則、その他の自動ワークフローの検索条件を確認する

日付、数値、または通貨ベースの検索条件が新しい形式で適切に機能することを確認します。よく発生する問題として次のようなものがあります。

  • 検索条件で「ハードコード化」された日時値を使用している場合、その値が新しい形式に適合しない限り、検索条件は適切に機能しません。
  • 新しい形式には、新たにカンマが追加されているものがあります。カンマは検索条件の区切りに使用されるため、これによって検索条件が誤動作する可能性があります。

項目のルックアップ検索条件を確認する

オブジェクトの項目に対して定義した検索条件が新しい形式で機能することを確認します。日付、時刻、数値を使用している検索条件は、変更が必要になる場合があります。

Apex コードを確認する

Apex コードをテストして、新しい形式で機能することを確認します。テスト時には、現在のロケールに基づいて形式を返すメソッドに重点を置きます。たとえば、Date.format()、Date.parse()、DateTime.format()、DateTime.parse()、DateTime.formatLong() などのメソッドです。

次のコードブロックを考えてみます。

Datetime myDT = Datetime.now();
String myDate = myDT.format('h:mm a');

この例は、文字列の引数 'h:mm a' を format 関数に渡すため、dateTime は、ロケールに関係なく指定された形式 'h:mm a' に従って形式設定されます。後続のコードが特定の形式を期待する場合、日付、時刻、通貨の形式設定にはこの方法を使用することをお勧めします。

Apexは、新しいロケール形式を問題なく処理できます。ただし、ベストプラクティスは、ロケールに依存しないApexメソッドを使用することです。

Use Locale-Neutral Methods in Code

format 関数に引数を渡さないと、ユーザのロケールによって dateTime 形式が決まります。 この方法は、ユーザに表示する情報を作成する場合に便利です。

やっぱりすごい。私が師匠と密かに思っているイギリスの方の回答
やっぱり、format関数は要チェックみたい。

Do ICU Locale Formats apply to Web Services API

Aura コンポーネントを確認する

$Locale は、Salesforce Platform から取得された形式を使用します。これらの属性を十分にテストします。

すべてのインストール済みパッケージに ICU 形式との互換性があることをパッケージプロバイダに確認します。

しかしながら、Salesforce Labsはどこに聞けばいいのかという質問がちらほらあります。さすがはお師匠さん、いい答えを教えてくれました。

What I'd recommend doing is to just create a sandbox, activate ICU, and try it out yourself!