公開日:
こんにちは。ゆーいちです。
kintone(キントーン)で画面を運用していて、ラジオボタンやドロップダウン、またチェックボックスなんかで、フィールドの表示/非表示を制御したい事、ありませんか?
gusuku Customine(※以下、カスタマインと記載)でこのフィールドの表示制御を実現する場合、この時の「条件」の分岐には、大きく分けると次の2パターンがあります。
- それぞれの値に応じたパターンを愚直に書く
- 表示を全て一旦クリアしてから表示すべき項目だけを表示する
この記事の前編では決定表についての話と、ラジオボタンをつかった表示制御について、決定表を使った表示制御の設計・カスタマイン上での「それぞれの値に応じたパターンを愚直に書く」の実例として、ラジオボタンによるグループ表示の表示制御(表示/非表示)について説明しました。
後編となるこの記事では、チェックボックスによる表示制御を「それぞれの値に応じたパターンを愚直に書く」パターンで書いてみて、その後「表示を全て一旦クリアしてから表示すべき項目だけを表示する」パターンで書いてみる事で、条件がシンプルに実現できる という事を体感してもらえればと思います。
まずはラジオボタンでやっていた2グループの表示制御を、同じ形でチェックボックスでやってみよう
まずは2つのグループ(Aグループ、Bグループ)の制御を考えてみましょう。
2つのグループの場合、次の要件を満たす必要があります。
・Aグループが選択されたときはAグループを表示し、Aグループが選択されなかったときはAグループを非表示ににする
・Bグループが選択されたときはBグループを表示し、Bグループが選択されなかったときはBグループを非表示ににする
これらの条件の組み合わせを、決定表(ディシジョンテーブル)で描くと次のようになります。

前回のブログと見比べるとわかるのですが、横に長くなってしまいました!
というのも、ラジオボタンの時は、常に1つの選択肢しか選択する事ができないためラジオボタンの個数だけのパターンだったのに対し、チェックボックスだとそれぞれの選択肢に「チェックがある」「チェックがない」パターンが存在するため、ラジオボタンの2項目の時に比べて倍のパターン数に増えてしまうのです!
でも、決定表を描いていたのでパターンが見やすくなっています。
やったね! これならテストもしやすそうです。
上の決定表を、そのまま素直にカスタマイン上でこの条件に沿ってアクションを設定してみましょう。
すると、次のようになります。

使っているのは、やること「フィールドやグループを表示する」「フィールドやグループを非表示にする」と条件「フィールドの値を編集して値が変わった時」「フィールド値が特定の値ならば」「他のアクションの実行が完了した時」です。
また、条件「フィールド値が特定の値ならば」ではチェックボックス内の値で条件分岐を行うため、条件「含まれる/含まれない」を使っているのがポイントです。
実際の動きは次のようになります。チェックボックスの値に沿って表示制御できている事がわかります。




※正確には画面を初期表示したときに初期値に合わせて初期表示をするアクションも、同様の要領で準備する必要がありますが、あまりにカスタマイズが長くなってしまうため、このカスタマイズでは省略しています
併せて、アクショングラフも見てみましょう。

チェックボックスで要素を3つに増やすと……?
さてここまでで、まずは2グループでの表示制御が実現できました。
ただし実運用などにおいても往々にありますが、運用していく過程で 表示制御のグループを増やしたい といった要望が出てくる事があります。
今回はそういった要望があったと仮定し、グループにCグループを追加してみましょう。
これは上で記載した要件
- Aグループが選択されたときはAグループを表示し、Aグループが選択されなかったときはAグループを非表示ににする
- Bグループが選択されたときはBグループを表示し、Bグループが選択されなかったときはBグループを非表示ににする
に次の要件を追加する形になります。
- Cグループが選択されたときはCグループを表示し、Cグループが選択されなかったときはCグループを非表示ににする
ですが、こんな時もあせらず決定表を描きなおして、まずは客観的に条件分岐がわかるようにしてみましょう。
実際に決定表をまずは描きなおしてみると、次のようになります。

先ほどのケース(2グループの表示制御)だと4パターンでしたが、Cグループが増えたことで、8パターンに増えてしまいました!
ですが決定表がある事で、条件分岐がわかりやすくなり、この通りにカスタマイズをつくればちゃんと動きそうです。
そして上の決定表を、そのまま素直にカスタマイン上でこの条件に沿ってアクションを設定してみると次のようになります。





実際の動きは次のようになります。チェックボックスの値に沿って表示制御できている事がわかります。








アクショングラフも見てみましょう。綺麗に8つに分かれています。

組み合わせで複雑な形になるパターンでも、ちゃんと決定表などの条件分岐を管理する技法を用い、客観的な検討を行えば実現できることがわかりました。
ただ今回の様な形だと、組み合わせるパターンが増える毎にアクション数が倍々になっていくのは、設定が大変ですし、作れたとしても維持するという観点でも大変そうです。
これをどうにかする手はあるのでしょうか?
考え方を変えよう
今までは、選択された状態に対応するアクションの組み合わせをそれぞれ設定する事で、その表示を実現する といった形で処理を実現していました。
ですが、今回のケースでは「Aグループ」のチェックボックスをチェックした場合はグループフィールド「Aグループ」の表示がされ、チェックを外した場合は表示が消えます。また「Aグループ」のチェックボックスのチェックの状態は、他のグループの表示に影響を与えていません。「Bグループ」、「Cグループ」についても同様に独立して表示制御される条件となっているので、次の様に条件を分離する事ができます。

これを踏まえて、アクションを改めて設定しなおすと、次のようになります。
※併せて、このカスタマイズからは初期表示時の表示制御も踏まえたカスタマイズにしています


アクショングラフは次のようになります。

随分とアクションの数が減りましたが、このカスタマイズでも同様の事が実現できます。
ですが、このカスタマイズはもっと改善の余地があります。
ここでは例として
- チェックボックスの値が切り替わったら全てのグループを一旦非表示にする
- チェックボックスでチェックがついているグループだけを表示する
といった処理に組み替えてみます。
すると、ここまでシンプルになります。

アクショングラフは次のようになります。

あれ?
チェックボックスのチェック有無によって、該当するフィールド・グループの表示/非表示を切り替えるkintoneカスタマイズ
と同じ形のカスタマイズになってしまいました!
※という検討の結果を経て、上の記事(およびカスタマイズ例)を作成しているため、この形に着地するのは当然といえば当然なのですが
おわりに
この記事では決定表を使うと複雑な組み合わせでも客観性を維持しながら条件の組み合わせを検討できて設定が進めていけること、また組み合わせのパターンだけで全てを実現しようとするだけではなく、組み合わせではない形での実現を検討することで、処理を簡単にしつつ要件を実現できる事がある という点についてお伝えしました。
「条件」については特にそうなのですが、いきなり複雑な組み合わせの条件を設定するのではなく、この前後編のブログで記載したように、順を追って条件分岐を育ててもらったり、決定表などの客観的に組み合わせをコントロールしやすくなる手法を使ってもらったりする事で、できるだけ破綻しにくい形でカスタマイズを進めていただく事ができると思います。
思い通りに条件が組めない時は、シンプルなカスタマイズから順番に「条件」分岐を育てるというポイントを思い出してもらえると嬉しいです。
また今回はサポートの記事を例にカスタマイズを検討して設定を落とし込んでいくところを順を追って説明しましたが、例えばキミノマホロ for kintone(の「ロ-2 業務改善で使えるkintoneアプリ作成」)などのプロフェッショナルサービスでは、こういった論理的な整合性の検討を行った上でアプリ作成を行ったり、また、より維持管理しやすい形でのカスタマイズを実現したりしていくのに、プロの視点を交えたシステム構築を進められる事が大きなメリットであり、活用していただだく事で、結果として継続的に維持しやすいシステムを実現できるはずです。
もしカスタマイズの条件分岐の規模が大きすぎたりして内製開発では厳しそうだな……と感じた場合にはキミノマホロ for kintoneの利用を検討頂くのも手だと思います。
なお、システム開発グループではkintoneに関するお悩み相談をお受けする「kintone駆け込み相談室」を随時開催しているそうです。kintoneのシステム開発でお悩みの方がいらっしゃいましたら、ぜひ検討してみてください!

アールスリーのシステム開発グループメンバーが、kintoneに関するお悩み相談を無料で何でもお受けします!
毎日開催中!お好きな曜日でお申込みいただけます!
(オンライン or 大阪オフィス来社のいずれか選択可能)


投稿者プロフィール
-
ドキュメントを書いています。また、たまにISMSと向き合っています。
情報処理安全確保支援士(第000594号)、kintone認定カイゼンマネジメントエキスパート/カスタマイズスペシャリスト






