Customineカスタマイズ時に使う人の操作や思考を想像してみる

わだっちです。こんにちは。

前回のつづきとして

Customineカスタマイズをするうえで「どのように想像しながら組み立てていくか」について、例題をもとに書いてみます。

「そもそもCustomineって?」という方はコチラ

顧客管理⇒案件管理などで、「顧客の情報を引き継いで案件レコードを作成したい」 よくあるやつです。

こんなとき、まずは標準機能で

  • 案件管理アプリでルックアップを設定して、顧客管理アプリの情報を取得できるようにする
  • 顧客管理アプリでアクションを設定して、アクションボタンで案件管理レコードにキー(ルックアップ)を引き継いだ作成画面に遷移できるようにする

などして、構築を進める事が多いと思います。

顧客管理(営業支援パック)fromアプリストア
案件管理(営業支援パック)fromアプリストア : 顧客情報をルックアップで取得する形

ここで、実際にユーザがアプリを操作する状況を想像すると

  • 01.「顧客管理アプリで対象の顧客に絞り込んで、アクションボタン押して のステップが多くて面倒くさい」
  • 02.「アクションでルックアップのキーは引き継いでくれるけど、結局遷移先の案件管理アプリで取得をクリックしないと保存時にエラーになる」
  • 03.「案件管理アプリでルックアップ取得しようとした際に、対象の顧客を絞り込むのがやはり面倒くさい」
  • 04.「ファイル読み込みを考慮して、ルックアップのキーになるフィールドは重複不可にしたいけど、それだと顧客名とかは厳しいし、コードにすると全部覚えてられないし、名称+コードにしたらっていうのもちょっと微妙・・・」

などなど、出来る/出来ないのレベルでは出来ているけど、操作性というか、ちょっとした利便性を考慮すると、沢山の「こうなれば良いな」が出てきます。

kintoneの標準機能のみで、すべて「よしなに」解決出来れば良いのですが、残念ながら限界があり、突き詰めた結果「カスタマイズしないと」となる事が多い訳です。

想像できたら、次に「どうカスタマイズすれば便利になるだろうか」を考えることになります。

[01][03]あたりを念頭に、次のような事を考えてみます。

  • 案件管理アプリで、特定のキーワードを入力して貰い、「データ取得」のようなボタンを押して貰って、ルックアップのキーとなるフィールドに値を反映してはどうか
  • そもそも、ルックアップをやめて、値を直接コピーするようにしてみたらどうか

※例として2つほどあげましたが、ここに「正解」はありません

前者を例に、Customine設定手法の流れを解説します。

最終的にやりたい事は、顧客管理アプリから参照したデータを、案件管理アプリのレコードに反映するという事ですが、まず、「どういったタイミングでカスタマイズを動かそうとしているか」を考えます。

[03]を考慮すると、「もっと簡単にルックアップできたら良いな」なんで、「追加/編集画面」での操作中とします。

編集画面を開くと、「キーワード入力できるフィールド」と「ボタン」とが表示されている必要があり、カスタマイズが動作する起点(タイミング)としては、「ボタン」を押す事で始まる事になりますよね。

「ボタン」はどこから出てくるのかと言えば、kintoneの設定では無く、「カスタマイズ」で表示する事になります。

という訳で、まずは「編集画面が表示されたら、ボタンを表示する」からカスタマイズスタートです。

Customineの「やること」選択画面や、ドキュメントサイトで「ボタン」と検索すると、「ボタンをスペースに配置する」という「やること」が見つかるので、これを設定してみます。

※他にも「ボタンを配置する」の「やること」はひっかかりますが、ここでは省略させて貰います

ドキュメントを検索する癖をつけましょう

ドキュメントを見ると、次のように書かれています。

「アプリにボタンを設置するスペースフィールドを配置しておいてください。 スペースフィールドには要素IDを設定しておいてください。」

という事で、kintone側でボタンを配置するための「スペース」を追加します。

kintoneで「スペース」フィールドを「要素ID」をつけて追加する

追加が終わったら、Customineの「ボタンをスペースに配置する」アクション、「場所」パラメータでそのスペースを指定します。

「場所」のパラメータに↑のスペースを設定することで、スペースの位置にボタンが表示されます

これで、無事にカスタマイズ動作の起点となるボタンの表示ができました。

次に考えるのは、「ボタンを押したときに何がしたいか」ですがこれは「キーワードに入力された値をもとに顧客管理レコードを参照する」なので、そうできる「やること」を探します。

※ここでは単純に、顧客の名称のみを「キーワード」の対象として参照することを解説します

※「クエリで条件を指定してレコードを取得する」の「やること」を使うと、より便利で複雑な参照にも対応出来るのですが、少し難易度が上がります

「キー(完全一致)」で参照したいのではなく、「キーワード(部分一致)」で参照したい訳なので、「キーを指定してレコードを取得する」の「やること」は適していません。

ですので、一旦「全顧客」のレコードを取得して、取得したレコードから「キーワード」で絞り込むという流れで実装してみます。

「ボタンクリック」⇒「全レコードを取得する」⇒「取得したレコードを絞り込む」でアクションを繋げていきます。

※ここで、「全レコードを取得する」と「取得したレコードを絞り込む」の結果は、どちらも「レコード」であると意識しておきます

ボタンをクリックした後の「動作」をアクションとして繋げていく

ボタンと違って、うまく動いているかの確認がし辛いので、「レコードの一覧をポップアップで表示する」を繋げます。

これに繋げることで、「全レコードを取得する」と「取得したレコードを絞り込む」の結果を視覚的に確認できるようになります。

「レコード取得」がうまくいってるかの確認に便利なアクション

今回やりたいのは、「キーワード(部分一致)」で参照したい なので、対象となるレコードが複数となる事を想定しておく必要があります。

それに対して、案件として顧客を登録する場合は、1顧客である場合がほとんどであり、今回もその前提です。

という事で、「取得したレコードを絞り込む」の結果として得た複数の候補(レコード)から、一つを選択してもらう必要が出てくる訳ですが、ここでも「レコードの一覧をポップアップで表示する」の「やること」が活躍します。

顧客名に「池田」が含まれるものを取得して、ポップアップで表示される

次に、「ポップアップで候補から一つを選択」しただけでは、何も起こらないので、その選択した「結果のレコード」から、ルックアップフィールドに「値」を反映する「やること」を追加します。

ポップアップで選択された「顧客」のIDを、ルックアップフィールドにセットする

ここまでの全体のカスタマイズはこう↓です。

 ボタンを表示 > キーワードで顧客管理データを参照 > 結果をポップアップ表示で、選択させる > 選択結果をもとにフィールドに値反映

ここまでやると、「ああ出来た出来た」と思ってしまいがちです。

間違いではないのですが、[02]の「結局遷移先の案件管理アプリで取得をクリックしないと保存時にエラーになる」が解決していません。ので、それを解決します。

ここまでの流れでルックアップフィールドにキーの値はセットされている状態にできているので、あとは自動的に「取得」が実行されるようにしてやれば良いです。

この場合の「やること」は「ルックアップを取得しなおす」が適しています。 ※「ルックアップ」で検索しましょう

ドキュメントの検索は、文章ではなく、部分的な短い「キーワード」で
ルックアップフィールドにセットされた値を元に、ルックアップの「取得」を実行

これで、値をセットした後で「取得」も勝手にしてくれるので、[02]も解決ですね。

この「やること」は、アクションから画面遷移した瞬間に、自動で「取得」したいなんていう時にも使えます。

[01]~[04]については、全部解決!(めでたしめでたし)となる場合もあるとは思いますが、ここであらためて使う人の立場になって考えてみます。

  • キーワードに何も入力されていない状態でボタン押しちゃう人が居ないかな
  • キーワードで参照した結果、候補が無かったなんてことがないかな
  • このボタン(ボタン用のスペース)とか、キーワード入力するためのフィールドって、詳細画面では見えちゃうと邪魔じゃないかな
  • 1回、顧客を取得できたら、その段階でもう用無しだし画面上見えないほうがよいのかな
  • 取得成功していれば、見えないだけじゃなくてキーワードに入力した値も空の状態に戻すほうが良いかな
  • いやいやでも、(この顧客取得/選択)を間違う事だってあり得るし、ルックアップをクリアした場合なんかは、またボタン等を表示しないといけないよな

こうした「使う人視点のちょっとした事」が想像できれば、あとはそれぞれ「どう解決できるか」を考えるだけです

<キーワードに何も入力されていない状態でボタン押しちゃう人が居る>

  • キーワードに入力あり⇒以降の処理
  • キーワードに入力なし⇒アラートを表示して入力をうながす
必要に応じてアクションを追加し、条件側の設定で分岐させる

<キーワードで参照した結果、候補が無かった>

  • 結果がある場合⇒問題なく次の処理を実行する
  • 結果が無い場合⇒アラートを表示して、そこで処理(カスタマイズ動作)を終わらせる
キーワード参照した結果のレコードは1件以上?

<詳細画面で見せたくない>

詳細画面では、対象のフィールドを非表示にする

<取得できている状態なら非表示>

値が反映されている場合は非表示に

<取得成功でキーワードを空に>

ルックアップ取得の後に、検索キーワードの入力内容をクリアする

<ルックアップをクリアした場合には再度表示>

ルックアップのクリアをして、顧客名が空になれば、またボタン等を表示する

といった感じで、一つの「やりたいこと」から、利用者目線で、どんどん「使い易く」なるように、バージョンアップしていくことができるのは、プラグインとCustomineとの大きな違いであり、とても価値のある事だと思います。

そして、一見難しそうでも、慣れるとこうした「設定」をしていくのはそれほど「難しい」と感じなくなります。

むしろ、あれこれ考えながら試行を繰り返し、思っていた事が「出来た」ときの嬉しさ、楽しさを強く感じるようになります。

※コードを意識せず、利用者の為に何か出来ることがあって、喜ばれる/成果になるのは双方のモチベーションに繋がります

もちろん、こうした「想像して変えていく」というのは、「独り善がり」では失敗や、人の為にならないケースも多いです。

「こんなはずじゃなかった」とならないよう、少なくとも慣れるまでは、なるべく利用者(第三者)を巻き込んで、少しづつ改善していくことをお勧めします。

それと、「kintone(標準機能)による動作範囲」と「Customineカスタマイズによる動作範囲」とは、ご自身のなかで明確に線引き(理解)できるようになる事をお勧めします。でないと、いざ改修しようとした時に、どこに手を付ければ良いのか、原因がどこにあるのかがわからず、苦労する事も多いと思います。

こうした、ノウハウの習得に時間がかかりそう(難しそう)という方については、「gusuku Boostone」というサービスもあります。

kintoneのノウハウを多く持つ弊社スタッフが、社内でkintoneを使って改善をされている方の右腕となってサポートし、「考え方」「作り方」といった一人でモヤモヤしているとなかなか身に付け辛い「知見」を習得する事ができるサービスので、興味のある方は検討してみてください。

今回、書いてみて思いました。。。長いですよね。

「思考の流れ」を文章化するのって、短くまとめるのが難しいですね(-_-;)

最後まで読んでいただけた方、感謝です。

それではこのへんで。

投稿者プロフィール

アバター画像
わだっち
"kintone「かかりつけ医」「伴走者」「よろず屋」 kintoneに関する提案、構築、相談など幅広く色々やっています。
元ユーザという事もあり、お客様に近い距離でのやり取りを主な生業としています。"