【kintone】鉄板演習:仕入先別商品別単価表を作ろう!! パート3【初学者向け】
前回までのあらすじ
単価表Excel完全に理解した。
そろそろ作らせてもらおうか!
マスタデータ用アプリを作ろう!
データの概念図ができているので、ここから先は楽になります。
まずは、マスターデータから作りはじめましょう。
マスターデータというのはシステムの対象データが決定するときに、引用するデータのことです。ここでは、仕入先別に商品単価が決まったらアプリに起票する、という動作を考えているので、その時に引用するデータは何かなぁと考えます。
そうです。商品と取引先ですね。
主キー項目を作る
取引先コードについて。
kintoneにはレコード番号というものがあって、各アプリのレコードを一意に指定できます。じゃあ、「レコード番号をそのままコードに使ってしまおう」と思うでしょう。
これはよくハマりやすいポイントです。やっちゃダメ。
なぜなら、レコード番号はデータの内容に関係なく1>2>3と増えていくので、データの入替えなどをすると、データの内容に対して主キーを割り振ることができません。
なので、マスターデータの主キーにレコード番号を使ってはいけません。
もう一度言います。マスターデータの主キーにレコード番号を使ってはいけません。
CSV読み込みできなくなりますよ!
取引先マスターアプリと、商品マスターアプリを同じように作ってみましょう。
さて、主キーに取引先コードと商品コードを用意しましたね。
では主キーとは何だったでしょうか?
はい。主キーとは、その値が決まったとき、レコードが必ず一つ決まる。また、レコードが一つ決まったとき、その値が一ついつでも同じ値に決まる。という性質をもったものでした。
これをkintoneで実現するには、「必須項目にする」と「値の重複を禁止する」のチェックをONにします。
はい。これでマスタデータの作成は終わりです。
1)マスタデータには主キーになる項目を用意する。
2)主キー項目にレコード番号を利用してはならない。
3)主キー項目には「必須項目にする」と「値の重複を禁止する」のチェックをONにする。
この3つを覚えておいてください。
項目作成のTips
また、項目の作成において、項目名とフィールドコードはできるだけ一致させることを覚えておきましょう。
これはプログラマによくあるのですが、なんとなくデータベースの物理名(プログラム上で指定する名前)と論理名(目で見える場所に出てくる名前)を変えたくなる気持ちになります。
ただこれを実施すると、アプリのメンテナンス性がガクッと下がります。
プラグインなどで項目を指定しているとき、それが具体的にどの項目なのか、kintone上で検索するのが難しくなります。
これは経験を積まないと実感できないと思いますが、まずは項目名とフィールドコードはできるだけ一致させるは原則覚えておきましょう。
ただ、絶対に実施しなければならないわけではないです。例えば基幹システムと合わせたほうが取り回しがいいなど、場面に応じて守る、守らないを判断しましょう。
トランザクションアプリを作ろう!
トランザクションは「処理」という意味なんですが、仕入先別商品別単価表を作る、が今回テーマなので、「仕入先別商品別単価表をメンテナンスする」という業務を扱いますから、今回のトランザクションデータは「単価表」ということになります。
単価表データの作成が、このアプリの使命ですからね!
さて、一番最初に、単価表Excelを読み込ませてkintoneアプリを作成したことを覚えていらっしゃいますか? もしそのアプリがあれば、名前を「仕入先別商品別単価表」として改造していきましょう。
もしまだ作っていない場合は、単価表Excelをそのまま読み込ませて、アプリを作成します。
さて、データの概念図をみて、いくつか足りていない項目があることにお気づきかと思います。
1)取引先コード
2)商品コード
3)年度
4)月
この項目が足りないですね。
このなかで、【年度】と【月】は他に依存しない項目です。単価表にしか存在しない項目ですね。
独自の主キーを用意する
年度、月は「ドロップダウン」で作成することにします。
別に他のフォームでも作成できることはできるんですが、「選択肢を選ばせることで入力ミスを減らしたい」「選択肢が固定されている」といった状況では積極的に利用したいフォームです。
年度、月は主キーなので、値が絶対に必要ですから、必須項目にしましょう。また初期値を設定できるので、ユーザーが入力しやすい値を入れておくと利用性が向上します。
さあ、【年度】と【月】ができました。
他に依存する主キーを用意する
データの依存関係について。
依存関係の表現はルックアップと関連レコードで表現できます。
ExcelのVLOOKUPや、RDBの外部キーと似たような機能です。
データを引用したいとき(何もない状態から探す)場合はルックアップで、データを参照したいとき(手掛かりになるデータが既にあって、元データを見つける)場合は関連レコードです。
今回は何もないところから入力するので、ルックアップですね。
さあ、ルックアップで取引先コードを設定してみましょう。
コピー元は「ルックアップがキーとして紐づける項目」です。なので今回は取引先コードということになります。ルックアップは実は”検索窓でもある”という独特の機能があるんですが・・・まあ、今回は置いておいて。
主キーなので、必須項目にするのを忘れずに。
他のフィールドのコピーで、【仕入先】に取引先マスターの【取引先名】を選択しましょう。仕入先名に値が入ってほしいですからね。
そして、「選択時に表示する項目」は、今回はアプリの全項目を指定しておきます。
「絞り込みの初期設定」がポイントです!
「絞り込みの初期設定」で「区分」="仕入先"を選択します。
こうすることで、取引先クラスを扱う集合から、仕入先クラスのみを引用できるようになります。
このようにして、複数クラスを1つのアプリにまとめてしまった場合でも、クラスを識別する項目があれば、別集合として扱うことができます。これはkintoneに限らず、データベースすべての特徴です。
複合主キーとその対応
さて、主キー項目が全部出そろいましたね。
ただ、今現在の設定ですと、主キー項目が主キーとして働いていません。
例えば、【年度】、【月】、【商品コード】、【取引先コード】の4つが全く同じレコードが作成できてしまいます。(レコードの再利用を実施してみると分かりやすいです)
こうなると、「重複したデータが登録されてしまう」という業務課題をクリアできません。
なので、値の重複を許さない複合主キーを実現しなければなりません。
ではkintoneではどうするかというと、文字列結合プラグインを利用します。
紹介記事はこちらからどうぞ
プラグインをダウンロード
とにかく覚えておきたいのは複合主キーと言ったら文字列結合です。
さっそく設定してみましょう。プラグインの導入は紹介記事を見てください。
まず「識別キー」という名前で項目を作ります。
ここにプラグインを設定します。
「項目間の記号」は、「-」としておきました。
さあ、これでサロゲートキーができました。曰く、【識別キー】です。
(もうちょっといい名前がよかったかも・・・。)
この「文字列の結合」ですが、kintoneでは計算式の機能があり、プラグインを使わずに文字を結合するだけならできます。
重複を厳密に排除するためには「値の重複を禁止する」機能をONにする必要があります。しかし、文字列一行に計算式を設定すると、この機能は使えません。
おさらい
さあ、ここまでで基本的なkintoneの実装は完了です。次回はもっと使いやすくアプリを設定していくことにしましょう。まだ一覧もできていませんからね。
そのまえに、今回お話したポイントをおさらいさせてください。
1)マスタデータには主キーになる項目を用意する。
2)主キー項目にレコード番号を利用してはならない。
3)主キー項目には「必須項目にする」と「値の重複を禁止する」のチェックをONにする。
4)項目名とフィールドコードはできるだけ一致させる。
5)データを探して引用するときはルックアップを用いる。
6)複合主キーを実現するには文字列結合プラグインを使う。
ここまで作成したアプリのテンプレートを用意しました。
次回は、ここから一覧を付けたり、コードを自動採番したり、関連レコードでデータをまとめたりしてみます。
この記事は以上です。 お読みいただき、ありがとうございました。