2026/01/16

@Sort は高性能!

@Sort を使えば、リスト値をソートすることができます。 先日、この関数のヘルプを見ていると、さまざまな機能が入っていることに気付いたので紹介します。


@Sort の構文

Domino デザイナーヘルプで @Sort を調べると構文は次のようになっています。

   @Sort( list ; [ order ]; customSortExpression )

今回紹介するのは 2 つ目の引数 order です。

ここにキーワードを指定するとソート動作を詳細にコントロールできるようになります。キーワードは 2 つずつが対になっています。

キーワード(〇:デフォルト) 機能
[ASCENDING] 昇順 / 降順を指定
[DESCENDING]
[ACCENTSENSITIVE] 濁点、半濁点の区別
[ACCENTINSENSITIVE]
[CASESENSITIVE] 大文字、小文字の区別
[CASEINSENSITIVE]
[PITCHSENSITIVE] 全角、半角の区別
[PITCHINSENSITIVE]

デフォルトは ”昇順” かつ ”区別する” になっていて、区別させたくない場合に [???INSENSITIVE] を指定することになります。

キーワードの指定は :(コロン)で複数指定することができるので、さまざまなパターンのソートが実現できるということですね。


動作検証

大文字/小文字、全角/半角については結果が想像できるので、濁点/半濁点を検証します。

まず、キーワード未指定と [ACCENTINSENSITIVE] を指定した場合を比較すると次のようになります。[ACCENTINSENSITIVE] では濁点/半濁点だけでなく、小書きも無視してソートしてくれるようです。

ただ、これだけではひらがなとカタカナには効果がありません。区別なくソートするためには [CASEINSENSITIVE] も指定します。

残念ながら、カタカナの全角/半角については、正しく判定されません。モノは試しと [PITCHINSENSITIVE] も指定してみましたが効果がありませんでした。半角カタカナでは濁点/半濁点が 2 文字になるためだと思われます。


まとめ

今回は @Sort のソート順を指定するオプションについて紹介しました。Notes/Domino は海外の製品ですが、日本語の扱いにここまで対応しているんですね。『ソートといえば文字コード順』と思い込んでいたので、正直驚きました。どのような仕組みで実現しているのか ”中の人” に聞いてみたくなりました。

なお、@Sort のキーワードには [CUSTOMSORT] というものがあります。こちらについては、まだ不明瞭な点もあるため触れませんでした。解説できるぐらい理解できたら、改めてまとめたいと思います。


0 件のコメント:

コメントを投稿