Arcade 条件式のベスト プラクティス

特定のユース ケースで、他の適用よりも優れた ArcGIS Arcade の適用があります。 以下では、ArcGIS Velocity の解析ツールでの Arcade 条件式に推奨されるベスト プラクティスを示します。

  • 条件式の複雑さ - Arcade を使用して複雑なスクリプトを記述し、変数を宣言し、関数を定義して呼び出すことができますが、VelocityArcade スクリプトを構築する際に、できるだけシンプルに保つことが推奨されます。 スクリプトが複雑になると、エラーが発生する可能性も高くなる傾向がありますが、さらに重要なことは、解析のパフォーマンスに与える影響も大きくなるという点です。 スクリプトおよび条件式が短いほど、よりすばやく解釈されるため、処理速度に与える影響が小さくなります。
  • 条件式の長さ - Arcade は、長い複数行のスクリプトをサポートしますが、複雑なスクリプトと同様に、長いスクリプトも処理速度に悪影響を与えることがあります。 パフォーマンスに対する悪影響を防ぐために、スクリプトをできるだけ短く保つことをお勧めします。
  • ループの回避 - スクリプトおよびプログラムを記述するときに、データのセットにわたって反復し、手順または特定の条件のテストを繰り返すループ ルーチンを活用すると便利です。 Velocity ではループがサポートされていますが、それによって、ときには解析のパフォーマンスが著しく低下することもあります。 解析の条件式では、ループ論理をあまり使用しないようにし、使用する場合でも、慎重に使用してください。

    解析を実行するときに無限ループにつながる可能性のある条件を、条件式において回避してください。 無限ループが発生した場合、解析のパフォーマンスに著しい悪影響が見られることがあります。

    Velocity は、解析を整合チェックし、ループ論理が含まれている可能性があると判断した場合、整合チェックの警告を返します。 この警告が表示されても解析を実行できますが、ループがパフォーマンスに悪影響を与える可能性があることを通知しています。

  • サンプル値を使用した条件式のテスト - 構成された入力から正しいデータ型を生成するために、サンプル値を使用したテストが必要になります。

    たとえば、「2022-11-30T16:05:18Z」のような時間値を含んでいる ingestion_time という文字列フィールドが存在し、それらの文字列を解析して時間に変換したい場合、「Date($feature.ingestion_time)」などの式を使用できます。 Arcade 条件式ビルダーは、サンプル文字列を使用して、条件式を整合チェックしようとします。 デフォルトのサンプル文字列は「Pacific」であり、この文字列は正常に時間に変換されません。 条件式ビルダーの終了後に、ターゲット フィールド タイプでデータを返す有効な条件式を構成する必要があることを示す整合チェック エラーが返されます。

    デフォルト値を使用して式をテストするエディター

    ユーザー自身の有効なサンプル文字列を式の設定機能に渡すことによって、この動作を更新することができます。 このためには、式の設定ウィンドウを開き、[プロファイル変数] ウィンドウで [$feature] をクリックして変数にアクセスし、時間情報を含む文字列フィールドを選択します。

    サンプル値の編集

    このフィールド内の値と同じ時間形式で、文字列の例を入力します。 式をテストするときに、有効な時間値が生成され、その式をツールで正常に使用することができます。

    サンプルの時間値を使用した式のテスト