見出し画像

kintoneで検索する時の注意点と対応方法を考えてみる

kintoneの検索機能は大変便利。全体検索が可能で、特定のアプリやスペース内に範囲を限定して検索もでき、テキストデータはもちろん添付ファイルも検索可能など、強力な検索機能が装備されています。

kintoneで検索する時の注意点

ただ、ちょっと気をつけたいとことがありまして、注意点と、自分なりに考えてみた対応方法をまとめました。

「データを検索する」については、以下ヘルプがわかりやすいです。

私がハマったのは、ヘルプにある以下仕様。

検索キーワード入力時の注意事項
・「cybozu」または「kintone2」をキーワードとして指定します。「cy」や「kintone」など部分一致する検索キーワードでは検索されません

英単語の場合は、スペース区切りで検索してくれるで問題ありません。
注意点はココ

「kintone2」は「kintone」で検索するとヒットしない!

つまり、検索するとき

「たしか kintone って、入れてたよな、全体検索で、kintoneと。。。あれ?出ない?」

ってなるということです。

これは同じような苦労をされている方が多いのか、

上記「kintone全般の操作に関する質問/トラブル」にも、詳しく記載されていました。

キーワードが英数字の場合、部分一致検索はできない
英数字の場合、単語単位で検索されます。
(例1)「test123」という文字列を含むレコードを検索したい場合
「test123」:検索できます。
「test」:検索できません。
「123」:検索できません。

「kintone2」 や、「test123」を、分割できない単語単位というかどうかは、意見が分かれる所だと思いますが、いわゆる「わかち書き」という観点で、スペースをセパレータとするなら、「kintone2」 や、「test123」は、たしかに分けられないひとつの単語となるのかな。

でも、でもですね。実際、マスターなどでは、コード体系として英数を組み合わせて、かつ、それぞれの文字の位置に意味づけしている場合もあったりします(そもそものコード体系としてそれがよいかどうかは別の話としてください)。

私の経験の範囲では、昔の基幹システムは文字位置を指定して色んなロジックを組んだり、検索などのキーにしたり、こういう処理を頻繁にやっていました(当時開発で使ってたメインフレームやCOBOLの順編成ファイルは固定長でしたし、私見ですが、昔は記憶媒体など1バイト当たりの情報の単価が今とは比べ物にならないほど高価だったためという事情もあるかと思います)。

例として、「商品コード」に、「商品の番号」と「商品の個別情報」の意味をもたせたりしている場合を作成してみました。

先頭3文字が「商品番号」、4文字以降が「商品」のローマ字表記という人が見てわかりやすいコード体系です。

画像3

画像1

商品コード 商品名
101MIKAN  みかん
201RINGO  りんご
301BANANA バナナ

上記のようなデータは、MIKAN で検索すると、

画像2

検索条件に一致する情報は見つかりませんでした。

と、なってしまいます。「101MIKAN」をひとつのキーワードとして認識しているためですね。でも、個別情報の「MIKAN」で検索したいというニーズには対応できません。さて、どうしよう。。。

とりあえずの対応方法

解決方法のひとつとして、商品コードを分ける方法を思いつきました。

画像4

画像5

商品コード 商品名 商品番号 商品
101MIKAN  みかん 101     MIKAN
201RINGO  りんご 201     RINGO
301BANANA バナナ 301     BANANA

「101MIKAN」を、「101」と「MIKAN」と分けて、それぞれのフィールドに入力します。すると。。。

画像6

検索結果
くだもの 101MIKAN
MIKAN
くだもの by 46u 2021-01-16 8:41

おおっ!ちゃんとヒットしました!

しかし、いちいち2重入力をするのは面倒ですし、入力ミスも発生します。

自分でやるならまだよいですが、実際、入力担当者に
「これからは、商品コードと同じ内容を、商品番号と商品にも分けて入力してください。」
とは、ちょっと私も言えません。^^;

受け入れてもらえそうな対応方法

で、逆転の発想として、「商品番号」と「商品」から「商品コード」を自動計算する方法を思いつきました。

画像7

画像8

「今後は商品コードを入力する代わりに、商品番号と、商品に分けて入力してください。」
これなら入力担当者からもOKしてもらえそう。

受け入れてもらえないなら。。。

「いや、商品コードのフィールドに入力するという運用は変えられない。」
という事になれば、商品コードを分割するためのプラグインか、カスタマイズを検討することになってきますね。。。

カスタマイズの一例

(function() {
"use strict";
kintone.events.on(['app.record.create.change.商品コード','app.record.edit.change.商品コード','app.record.index.edit.change.商品コード'], function(event) {
 var record = event.record;
 var str = record['商品コード'].value;
 record['商品番号'].value = str.substr(0,3);
 record['商品'].value = str.substr(3,7);
 return event;
});
})();

いちおうこんな感じでできなくもなさそう。

でも、できたら標準機能でやりたいですね。カスタマイズは保守性がおちるとか、プラグインは別途料金が必要とかという話もありますが、

標準機能だと、kintoneの「ファイルから読み込む」で、CSV取り込み時にもちゃんと式の結果が更新される!(カスタマイズは更新対象外なのです)

ココがおおきなポイントです。

特に、マスター関係では外部よりCSV入力するケースも多くなると予想されますので、カスタマイズなど、CSV入力時に動作しないのであればちょっと厳しい、対応にひと工夫必要になってきます。

文字列操作関数がほしい

ので、希望としては、標準機能で、「substr」のような文字列操作関数も利用できるようにならないかなーと思っています。

前述のとおり、コードの桁ごとに意味付けしている仕様の是非はあるにせよ、実際そういう仕様になってしまっているような基幹業務はたくさんあって、そういうのをkintoneへ移行する場合などにも、私としては、あれば大変助かります。

Excelの「MID関数」というほうが一般的にはなじみがあるかもしれません。

最近は、kintoneの標準関数も充実してきているので、ぜひとも追加してほしいです。サイボウズさんご検討よろしくお願いします。

そもそもの話とは違う対応方法

ヘルプの記載で、もう一つ気づいたことがありました!

検索キーワード入力時の注意事項
「_(アンダーバー)」と「#(シャープ)」は、全角、半角共に単語の一部とみなされます。
例:値が「cybozu_kintone」のフィールドを検索する
「cybozu_kintone」をひとまとまりでキーワードとして入力します。「cybozu」や「kintone」のみを入力しても検索されません。

これ、裏をかえせば、

「_(アンダーバー)」と「#(シャープ)」以外の記号は、単語の一部とみなされない

と読み取れます。

ということは、

画像10

商品コード  商品名
101-MIKAN  みかん
201.RINGO  りんご
301 BANANA バナナ

「101-MIKAN」のように商品コードを「-(ハイフン)」など、それ以外の記号で区切ると、

画像9

ちゃんと検索にヒットするようになるという事みたいです!

これは、「商品コードの仕様を変更する話」になってしまいますので、コードの見直しが可能ならそもそも。。。と、ちょっと話がちがってきますが。。。^^;

ご参考まで。

この記事が気に入ったらサポートをしてみませんか?