【構築日記】kintoneレコードを1文字単位で検索する方法を3つ見つけてきた話
目次
はじめに
ペパコミの構築・サポート担当の鍋島です。
弊社Youtubeではkintoneのアップデート解説してます。かなり短くサラっと毎月のkintoneアップデートを開設しているので、軽い気持ちで見ていただけるとありがたいです。
今回はお客様からの問い合わせを元に、2週間ほど自由研究しました。ちょっと早いけど夏休みの自由研究報告会みたいな。
この記事で書いている内容
kintone内のレコードを1文字で検索する方法について
前提
まず、kintoneは公式ヘルプにある通り、日本語は2文字以上、英数字は1単語、が検索最小単位となります。
「ペパコミ」を検索したいとき「ペパ」で検索することは可能ですが「ぺ」で検索することはできません。「kintone」を検索したければ「kintone」と入力しなければならず「ki」では検索できません。
実務的なところでは、工場・製造・物流・契約管理等のアプリにて、型番や何かしらのidを元に検索する場合に、完全一致しなければならない、というところで不便を生じます。
「PK202407070001」という型番・idを検索する場合、「PK」でも「PK2024」でも検索できず、「PK202407070001」まで入力しなければなりません。
これは不便なので、どうにかして解決したいな、と思って取り組みました。
解決方法について大方針
「PK202407070001」を「PK」や「2024」で検索可能にするには、検索用の文字列を作れば良いです。
上記は長くてわかりづらいので、一旦「サイボウズ」という単語で考えると、
「サイボウズ」→「サ,サイ,サイボ,サイボウ,サイボウズ,イ,イボ,イボウ,イボウズ,ボ,ボウ,ボウズ,ウ,ウズ,ズ」というような検索用文字列を作ればOKです。
下記は動きのイメージです。検索用文字列を作ったことで、「サ」という1文字だけで「サイボウズ」のレコードを絞り込むことができるようになることがわかります。
具体的な解決案について
では、これを踏まえ、この検索用文字列をどうやって生成するのか、その案を3つ出します。
A案:カスタマインを使おう!
実はカスタマインにこのカスタマイズが存在するので、カスタマイン導入企業はこれ使っていただくと可能になります。詳細はリンク先ご確認ください。ただし、中小企業に於いてはカスタマインは金額的に導入できない/導入しているがアプリスロットが足りない、という声も出ますので、それ以外の案も考えます。
B案:Chat-GPTを使おう!
M-SOLUTIONSさんの「Smart at AI」を使い、Chat-GPTの力を借りることを考えました。
この案試しているときは色々試行錯誤していたので、検索文字列に試行錯誤の跡が見て取れます。雰囲気できている感じなのですが、プロンプトを相当工夫しても、精度が100%になりませんでした。
「greeeen」のように同じ文字が続くケースに弱いです。それでも、気軽に設定するには良いと思います。プロンプトについてM-SOLUTIONS様にご相談したので、事例公開されました。プロンプトについてはそちらをご確認ください。※別件MTG時にデモ準備されているのを確認
C案:計算式プラグインを使おう!
rex0220さんにご相談させていただきました。改めてありがとうございます。
検索用文字列のフィールドに、計算式プラグインを設定し、下記の式をコピペしてください。
フィールドコードの部分を、自分が検索したい文字列の元々で指定してください
LET(
str,フィールドコード,
len,LENGTH(str),
arr,ARRAY(), // 分割文字列の出力用
dummy,ARRAY_FOR(len,idx,
ARRAY_FOR(len-idx,idx2,
// 分割文字列を追加
FSET(arr,ARRAY(arr,SLICE(str,idx,idx+idx2+1)))
)
),
// 重複文字の削除
JOIN(DISTINCT(arr),",")
)
設定イメージは下記のようになります。私の場合はフィールドコードを「検索対象」にしています。
なお、この数式を導くまでの過程を、rexさんの方で公開されているので、興味のある方はそちらもご一読ください※リンク貼ります
Chat-GPTの使い方として面白いことをされています。
おわりに
ということで、kintone内のレコードを1文字単位で検索する方法を色々模索し、見つけることができました。
実際、サポートの現場ではこうして複数案を出してその中でそのお客様にとってのベスト案を一緒に考えることが多いので、その雰囲気が出ていたら良いなと思います。
僕もこれまで「仕様です」で回答終了していることが多い部分ではあるので、今回改めて考えることで良い勉強になりました。
この記事へのコメントはありません。