kintoneの利用が進んでくると、蓄積したデータを任意の条件で抽出し、一覧表示やグラフ表示することで分析するようになります。その際、検索条件を指定して対象データの絞込みを行うわけですが、入力項目で利用されているフィールドの種類によっては、行いたい検索を実現できない場合があります。特に、フィールドが文字列なのか数値なのかによって、検索時に条件指定できる内容が異なります。ここを押さえておかないと、アプリ作成後にフィールドの種類を作り直す必要が出てくるということも発生しえます。キントーンに貯めたデータを活用する際の観点も含めてアプリの作成をすると、更によいものが実現できます。
そこで今回は、検索時を見据えたフィールドの種類の選択方法についてご紹介します。アプリを作る際にこの点を意識しておくと、検索時の活用の参考になるかと思います。
kintoneのアプリでフォームに配置できるフィールドの種類
フォームに配置できるフィールドの種類は、ヘルプにもありますが以下の通りです。ためしに数を数えてみたところ、28種類のフィールドが用意されていました。普段使用していると気付きませんが、キントーンには結構用意されているフィールドは多かったのだなという印象です。
ラベル、文字列(1行)、リッチエディター、文字列(複数行)、数値、計算、ラジオボタン、チェックボックス、複数選択、ドロップダウン、日付、時刻、日時、添付ファイル、リンク、ユーザー選択、組織選択、グループ選択、関連レコード一覧、ルックアップ、スペース、罫線、グループ、レコード番号、作成者、作成日時、更新者、更新日時
文字列・数値・計算フィールドの利用における検索時の注意
特によく使う項目といえば、次の3つかと思います。
- 文字列(1行)
- 数値
- 計算
特に、「文字列(1行)」フィールドと「数値」フィールドのどちらを使うかについて、フォーム作成時に悩まれる方も多いのではないでしょうか。数値を入れる項目として「文字列(1行)」フィールドを使うことも可能ですが、検索時にそのフィールドを使う場合は注意が必要です。
検索時の条件指定の違い
まず、「文字列(1行)」フィールドの場合です。以下のように検索時の条件としては、「=(等しい)」「≠(等しくない)」「次のキーワードを含む」「次のキーワードを含まない」の4つを指定可能です。
次に、「数値」フィールドの場合の検索条件指定です。以下のように検索時の条件としては、「=(等しい)」「≠(等しくない)」「≦(以下)」「≧(以上)」の4つを指定可能です。
このように、フィールドの種類によって、条件に指定できる内容が異なります。ここで分かるのは、範囲指定をしたい場合、「数値」フィールドを使用する必要があるという点です。
例えば、あえて日付フィールドを使わずに、YYYYMMDD形式でユーザに入力させるような項目を作ろうとした場合、文字列(1行)フィールドで作ってしまうと日付の範囲指定ができません。OracleやSQL ServerなどRDBでは文字列フィールドでも範囲指定ができますが、kintoneではできません。同じような感覚でフィールドを作ってしまうと嵌る部分でもあります。検索条件指定時に範囲を絞って抽出したい場合はフォームのフィールドとして「数値」を使用する、というのが基本になります。
「文字列(1行)」フィールドに対する検索時の範囲指定
「文字列(1行)」フィールドが「≦(以下)」「≧(以上)」の検索条件指定ができないからといって、フィールドを数値で作りなおす(合わせてデータをインポートしなおす)というのは手間がかかって面倒ですし、早計です。代替案として、「計算」フィールドを使うという方法があります。
以下は、「計算」フィールドの計算式に、「文字列(1行)」フィールド:文字列FROM を設定した例です。
この方法は「文字列(1行)」フィールドに数値のみ設定されている場合に有効です。このように、「文字列(1行)」フィールドと同じ値を表示する「計算」フィールドを作り、その「計算」フィールドに対して条件指定をすることで、「≦(以下)」「≧(以上)」といった範囲指定ができるようになります。
この例から、「計算」フィールドは「数値フィールド」と同じように、検索時の条件としては、「=(等しい)」「≠(等しくない)」「≦(以下)」「≧(以上)」の4つを指定可能ということが分かります。
「日付」フィールドに対する検索時の範囲指定
このことから、「日付」フィールドに対しても同様のことで応用ができそうだということがわかります。(あまり利用想定は考えられませんが・・)
- 「日付」フィールドを作成します。
- 「文字列(1行)」フィールドを作成し、日付に対して書式変換をします(ここではyyyyMMdd形式に変換)。
- 「数値」フィールドを作成し、yyyyMMdd形式に変換した値が入っている「文字列(1行)」フィールドを計算式に入れます。(数値フィールドではDATE_FORMAT関数を使用できないため)
こうすることで、検索条件指定画面にて3の「数値」フィールドに対して「=(等しい)」「≠(等しくない)」「≦(以下)」「≧(以上)」の条件指定ができるようになります。
「数値」フィールドに対する検索時の部分一致指定
同様に、数値に対して「次のキーワードを含む」「次のキーワードを含まない」といった部分一致検索をさせることも可能です。その場合は上記に説明したことの逆をすればよいです。つまり「文字列(1行)」フィールドを作成し、計算式に数値フィールドを指定すればよいです。
まとめ
このように、kintoneではフィールドの種類としてどれを選ぶかによって、検索時の条件指定に違いが生じます。これにより、行いたい検索条件指定が実現できないということも発生しえますが、計算フィールドをうまく使うことでカスタマイズやフィールドの作り直しをせずに解消できる場合があります。どのフィールドで作っても見た目に違いが無い項目の場合、検索時の使われ方を想定して決めるのもひとつの手ですので、まずは検索を意識したフィールド選定をしてみるとよいでしょう。