【kintone】鉄板演習:仕入先別商品別単価表を作ろう!! パート4【初学者向け】
前回までのあらすじ
よっしゃアプリもできて完璧だ!
現場の民も喜ぶぞ~
利用者の視点から
現在どのような状況かというと、kintoneのアプリとプラグインの機能で、「あるべきデータを表現できた」という段階です。ではこの状態ですぐに使えるかというとそういうわけでもありません。
データが表現できていることと、普段使いの画面が整備されていることは違いますからね。
正直、ここから先は開発者の好みが分かれてくるので、どのように対応するかはお客様の利用シーンと合わせながらということになります。
ただ、頻出の手法はあるので、それを列挙して、
最後によくある問題に対処してみようと思います。
一覧画面を作ろう
現状は「すべて」の一覧が表示されているのみです。
いままでは各年度ごとのExcelブックに各月のシートで分けてデータが記載されていました。なので、今までと操作感が変わってしまったかもしれません。
Excelと同じ項目にしてあげるのがやさしいですが、あいにく年度、月で同じ仕入先、商品のデータが出てしまっている状態です。
ここは、「すべて」に代わる見やすい一覧と、いままでのExcelに近い一覧の2つを作ってあげることにしましょう。
このとき、ソートの順序も必ず設定するように気を付けてください。
さあ、一覧ができました。次に年度と月で絞り込んだ一覧を作ります。
このとき、便利な機能があります。「複製」機能です。
年度と月の初期値は現在の値に設定しておきます。
さて、作った一覧を見てみましょう。
ちゃんと絞り込まれていますね。順序もばっちりです。
では絞り込みのマークを押してみます。
このように、一覧に設定した絞り込みの状態が、ちゃんとユーザー画面にも反映されます。すごい!
もちろん毎月この一覧をメンテナンスできれば便利ですが、できない場合でも利用者が自分で絞り込みを適用できます。
絞り込んだ後のフィルタをブックマークに入れることをユーザーに伝えてください。毎月月の絞り込みを設定しなくても、絞り込んだ後のURLをブックマークすることで、操作をスキップにすることができます。
一覧の項目を定義するような、あるデータの集合から、切り取られたデータの属性を射影と一般的に呼びます。
依存関係を表すもう一つの方法
依存関係を表すにはルックアップのほかに関連レコードがあります。
ここでは利用シーンに合わせて2種類設定してみましょう。
この単価表のねらいは、商品ごとに、
1)業者ごとの各月の変動情報
2)今月の最安値
を知りたいと思っているでしょう。
各商品>単価と辿りたいので、商品マスターアプリに設定します。
さあ、設定できましたので、画面を見てみましょう。
次に、特定商品、特定年度・月の最安商品はどのように探したらよいでしょうか?
一覧画面で、商品+年度+月で絞り込み、単価でソートしてもよいです。
今回はせっかく関連レコードを利用しているので、操作なしの設定のみで実現してみましょう。
おそらくユーザーは、特定の商品を商品マスタからアプリ内検索で検索し、先ほど作った「各社別単価状況」をみて、特定の年度、月を選択し、「仕入先別商品別単価表」アプリの特定のレコードにたどり着くでしょう。その時に、は年度、月、商品は決定しているので、自分自身へ関連を張って、違う取引先コードのレコードのリストを得ることができます。
仕入先別商品別単価表アプリに、検索用の項目を追加します。
今回は重複チェックが必要ないので、計算式(自動計算)でよいですね。
”表示するレコードの条件”に先ほど追加した検索用項目を追加します。
同じ年度、月、商品コードで、仕入先が違うデータが複数ありますので、リストとして取得されることになります。【単価】でソートして、一番上に最安値が出るようにしましょう。
正直、表示されているレコード自身が最安値である場合があるので何とも言えないのですが、同じ商品で比較という時には利用できると思います。
ラベルで注意書きを書き添えておいてもいいですしね。
操作のイメージが説明不足かもしれないないと思い、動画を用意しました。
さあ、納品しよう!
りっぱなkintoneアプリができましたね。
データも考察されて、利用シーンも配慮され、運用の際にユーザーに伝える内容も考えてあります。うむ!これで不満なんか出ないやろ!
と、そうはこの世の中甘くないのでした。
一覧画面が使いにくい
いままではExcelブックを開いて、他の人と編集権を取り合いながらも、セルに対してそのまま入力していました。
kintoneではExcelのような操作感は得られません。
どのように解消しましょうか。
商品(仕入先)で簡単にフィルタできない
Excelだったらフィルタ機能で商品を絞り込んで、各仕入先ごとの単価を比較できた。kintoneはできないじゃないか! というご要望ですね。
kintoneのフィルタはExcelとは違うので、どのように使いやすくしたらよいのでしょうか?
ルックアップで商品(仕入先)を探すことが難しい
ルックアップのポップアップ画面。項目が並んでいるとはいえ、目的の商品をどのように見つけたらよいでしょうか?
マスターデータの入力時にコードが手打ち採番になる
足りない商品を手作業でデータとして追加する場合、商品コードに自動採番が設置されていないため、手作業で前のレコードを追って採番が必要になってしまいます。
うーん。どうしましょ?
問題を解決するために
ここからは利用性とのトレードオフになる課題解決の例を取り上げたいと思います。「ルックアップで商品(仕入先)を探すことが難しい」の課題と対決してみましょう。
ルックアップの名前とコードの引用関係を逆転させる
例えば、ここまで作ってきたアプリで、取引先を検索するとき、取引先コードを入れて、検索はできるが、名前では検索できませんでした
もし、単価表がユーザーからの入力しか受け付けない運用である場合は、ルックアップの関係を逆転させるという技が利用できます。
コピー元フィールドをコードではなく名前にすることで、名前での検索を可能にしつつ、他のフィールドのコピーでコードを引用することができます。
これで使いやすくなった?
トレードオフ
では、これで問題が何もなくなるかというと、そういうわけでもなく、
実はCSVでの読み込みができなくなります。
これは、名前が主キーではないことから、ルックアップでCSVアップロードを受け付ける際の「コピー元のフィールドは値の重複を禁止する」という制限を実現できていないからです。
試しにCSVを出力して、読み込ませてみます。
これは取引先がCSVでの更新を受け付けなくなっていることを示しています。これはこまった。
アプリストアの例を見てみましょう
kintoneのアプリストアには、いろいろな業務に対するベストプラクティスとなるアプリ例が掲載されています。
参考に「営業支援パック」見てみましょう。
中心アプリは「案件管理」アプリで、顧客名を引用していますね。
顧客マスターになるのは顧客管理アプリなので、その設定を見てみましょう。
むむむ。営業支援パックでは、顧客マスタに特定のコードを割り振るのはやめて、「顧客名がかぶることはなかろう」という暗黙の取り決めのもとで、「顧客名」にキーの役割を担わせていることが分かると思います。
これも諸刃の刃で、顧客名が変わったときにデータの連関が崩れたり、同名のデータを取り扱えなかったりと、いろいろと弊害は出てくるのです。
という夢を見たのさ!
問題を全部解決していませんが、この演習はこれでおしまいです。
いかがでしたでしょうか?
実は、演習は、構造化されたデータの取り扱いがポイントでした。
kintoneは万能とはいっても、できないことも多いので、最後はトレードオフの壁に遭遇することになります。
それを技術的に突破してもいいし、運用の取り決めで突破してもいい。
さて、kintoneを扱う技術者はこの演習のような内容を頭の中だけで構築できないといけません。想像力でシミュレーションして、「アプリはだいたいこんな形になるだろうな」と打ち合わせしながら事前に考えておくわけです。
いくらトライ&エラーが可能とは言っても、実際に作っていたらいつまでも終わりませんからね。試行回数を減らさなければ。
そういうわけで、「単価表って、基幹システムと連携したいとかってあります?」とお客様に聞きます。あるいは「単価表ってどういう業務に必要なのか、理由を教えてくれませんか?」と大きく問います。
これは「ルックアップでどう実現するかね・・・」と考えて情報収集しようとしているわけですね。
「なんでそんなこと聞くんだろう?」と不思議に思うかもしれませんね。
パート4まで完了した、単価表アプリのテンプレートは以下からダウンロードできます。
この記事は以上です。 お読みいただき、ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?