見出し画像

【kintone】鉄板演習:仕入先別商品別単価表を作ろう!! パート3【初学者向け】

前回までのあらすじ

パート1
パート2

単価表Excel完全に理解した。

理解したの図

そろそろ作らせてもらおうか!

マスタデータ用アプリを作ろう!

データの概念図ができているので、ここから先は楽になります。

まずは、マスターデータから作りはじめましょう。

マスターデータというのはシステムの対象データが決定するときに、引用するデータのことです。ここでは、仕入先別に商品単価が決まったらアプリに起票する、という動作を考えているので、その時に引用するデータは何かなぁと考えます。

そうです。商品と取引先ですね。

取引先マスター

主キー項目を作る

取引先コードについて。

kintoneにはレコード番号というものがあって、各アプリのレコードを一意に指定できます。じゃあ、「レコード番号をそのままコードに使ってしまおう」と思うでしょう。

これはよくハマりやすいポイントです。やっちゃダメ。

なぜなら、レコード番号はデータの内容に関係なく1>2>3と増えていくので、データの入替えなどをすると、データの内容に対して主キーを割り振ることができません。

なので、マスターデータの主キーにレコード番号を使ってはいけません。

もう一度言います。マスターデータの主キーにレコード番号を使ってはいけません。
CSV読み込みできなくなりますよ!

取引先マスターアプリと、商品マスターアプリを同じように作ってみましょう。

商品マスター

さて、主キーに取引先コードと商品コードを用意しましたね。
では主キーとは何だったでしょうか? 

はい。主キーとは、その値が決まったとき、レコードが必ず一つ決まる。また、レコードが一つ決まったとき、その値が一ついつでも同じ値に決まる。という性質をもったものでした。

これをkintoneで実現するには、「必須項目にする」と「値の重複を禁止する」のチェックをONにします。

こんなかんじ

はい。これでマスタデータの作成は終わりです。
1)マスタデータには主キーになる項目を用意する。
2)主キー項目にレコード番号を利用してはならない。
3)主キー項目には「必須項目にする」と「値の重複を禁止する」のチェックをONにする。

この3つを覚えておいてください。

項目作成のTips

また、項目の作成において、項目名とフィールドコードはできるだけ一致させることを覚えておきましょう。

これはプログラマによくあるのですが、なんとなくデータベースの物理名(プログラム上で指定する名前)と論理名(目で見える場所に出てくる名前)を変えたくなる気持ちになります。

ただこれを実施すると、アプリのメンテナンス性がガクッと下がります

プラグインなどで項目を指定しているとき、それが具体的にどの項目なのか、kintone上で検索するのが難しくなります。

これは経験を積まないと実感できないと思いますが、まずは項目名とフィールドコードはできるだけ一致させるは原則覚えておきましょう。

ただ、絶対に実施しなければならないわけではないです。例えば基幹システムと合わせたほうが取り回しがいいなど、場面に応じて守る、守らないを判断しましょう。

トランザクションアプリを作ろう!

トランザクションは「処理」という意味なんですが、仕入先別商品別単価表を作る、が今回テーマなので、「仕入先別商品別単価表をメンテナンスする」という業務を扱いますから、今回のトランザクションデータは「単価表」ということになります。

単価表データの作成が、このアプリの使命ですからね!

さて、一番最初に、単価表Excelを読み込ませてkintoneアプリを作成したことを覚えていらっしゃいますか? もしそのアプリがあれば、名前を「仕入先別商品別単価表」として改造していきましょう。

もしまだ作っていない場合は、単価表Excelをそのまま読み込ませて、アプリを作成します。

仕入先と商品名が文字列一行になるように気を付けて!

さて、データの概念図をみて、いくつか足りていない項目があることにお気づきかと思います。
1)取引先コード
2)商品コード
3)年度
4)月
この項目が足りないですね。

このなかで、【年度】と【月】は他に依存しない項目です。単価表にしか存在しない項目ですね。

独自の主キーを用意する

年度、月は「ドロップダウン」で作成することにします。

別に他のフォームでも作成できることはできるんですが、「選択肢を選ばせることで入力ミスを減らしたい」「選択肢が固定されている」といった状況では積極的に利用したいフォームです。

年度、月は主キーなので、値が絶対に必要ですから、必須項目にしましょう。また初期値を設定できるので、ユーザーが入力しやすい値を入れておくと利用性が向上します。

年度。迷うところですが、高々10個以上の値が入らない場合は決め打ちで選択がいいです。

さあ、【年度】と【月】ができました。

他に依存する主キーを用意する

データの依存関係について。
依存関係の表現はルックアップ関連レコードで表現できます。
ExcelのVLOOKUPや、RDBの外部キーと似たような機能です。

データを引用したいとき(何もない状態から探す)場合はルックアップで、データを参照したいとき(手掛かりになるデータが既にあって、元データを見つける)場合は関連レコードです。

今回は何もないところから入力するので、ルックアップですね。
さあ、ルックアップで取引先コードを設定してみましょう。

こんな感じ

コピー元は「ルックアップがキーとして紐づける項目」です。なので今回は取引先コードということになります。ルックアップは実は”検索窓でもある”という独特の機能があるんですが・・・まあ、今回は置いておいて。

主キーなので、必須項目にするのを忘れずに。

他のフィールドのコピーで、【仕入先】に取引先マスターの【取引先名】を選択しましょう。仕入先名に値が入ってほしいですからね。

そして、「選択時に表示する項目」は、今回はアプリの全項目を指定しておきます。

「選択時に表示する項目」を指定しない場合は、選択窓がこのようになる。
なんのこっちゃ分からん。

「絞り込みの初期設定」がポイントです!

「絞り込みの初期設定」で「区分」="仕入先"を選択します。
こうすることで、取引先クラスを扱う集合から、仕入先クラスのみを引用できるようになります。
このようにして、複数クラスを1つのアプリにまとめてしまった場合でも、クラスを識別する項目があれば、別集合として扱うことができます。これはkintoneに限らず、データベースすべての特徴です。

複合主キーとその対応

さて、主キー項目が全部出そろいましたね。

ただ、今現在の設定ですと、主キー項目が主キーとして働いていません。
例えば、【年度】、【月】、【商品コード】、【取引先コード】の4つが全く同じレコードが作成できてしまいます。(レコードの再利用を実施してみると分かりやすいです)

こうなると、「重複したデータが登録されてしまう」という業務課題をクリアできません。

なので、値の重複を許さない複合主キーを実現しなければなりません。

ではkintoneではどうするかというと、文字列結合プラグインを利用します。

紹介記事はこちらからどうぞ

プラグインをダウンロード

とにかく覚えておきたいのは複合主キーと言ったら文字列結合です。
さっそく設定してみましょう。プラグインの導入は紹介記事を見てください。

まず「識別キー」という名前で項目を作ります。

文字列一行

ここにプラグインを設定します。

4つの項目を結合

「項目間の記号」は、「-」としておきました。

保存先は【識別キー】です。

さあ、これでサロゲートキーができました。曰く、【識別キー】です。
(もうちょっといい名前がよかったかも・・・。)

こんな感じで重複チェックが効きます

この「文字列の結合」ですが、kintoneでは計算式の機能があり、プラグインを使わずに文字を結合するだけならできます。

重複を厳密に排除するためには「値の重複を禁止する」機能をONにする必要があります。しかし、文字列一行に計算式を設定すると、この機能は使えません。

このように同等の計算式設定できるが、よく見ると値の重複が禁止できない

おさらい

さあ、ここまでで基本的なkintoneの実装は完了です。次回はもっと使いやすくアプリを設定していくことにしましょう。まだ一覧もできていませんからね。

そのまえに、今回お話したポイントをおさらいさせてください。

1)マスタデータには主キーになる項目を用意する。
2)主キー項目にレコード番号を利用してはならない。
3)主キー項目には「必須項目にする」と「値の重複を禁止する」のチェックをONにする。
4)項目名とフィールドコードはできるだけ一致させる。
5)データを探して引用するときはルックアップを用いる。
6)複合主キーを実現するには文字列結合プラグインを使う。

ここまで作成したアプリのテンプレートを用意しました。

次回は、ここから一覧を付けたり、コードを自動採番したり、関連レコードでデータをまとめたりしてみます。


この記事は以上です。 お読みいただき、ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?