アプリやエクセルでデータを管理する場合等に、コードが必要なのかどうか、どのようにコードを採番するべきか悩んだ経験はないでしょうか。
この記事では、コード(番号)を管理する意味・必要性や、採番ルールの具体的なあり方について解説します。
コードを採番する意義と必要性について
今回の記事での「コード」とは、商品コード、取引先コード、文書番号、請求番号といった、情報に付与される番号や文字列のことです。
まず最初に、コードを管理する必要性について考えていきます。例えば、商品名や顧客名等、名称という形で情報を識別する項目は他に存在するのに改めてコードを管理するのは何のためなのか、ということです。
端的に言って、コード(管理番号)を管理する目的は、コードを元に正確にデータを特定するといった点や、一意性を担保するという点にあります。もし、名称等でデータを一意に管理しようとした場合、半角全角やスペースの有無等といった表記の揺らぎによって同じ情報を重複登録するリスクが生じますし、似た名称の別の情報を参照してしまうといった事態も起こります。
そこで、主にマスターデータを中心とした、重複の許されないデータについては、重複しないコードを付与して、このコードを使ってデータを特定するように運用することで、厳密で効率的な情報管理を実現するという方法を取ります。
![](https://nufactory.jp/wp-content/uploads/1ff6c12faaebeb596d5e38d954ef67df.png)
それでは、コード管理はいつでも必須なものなのでしょうか。そうとも限らず、不要なケースも多々あります。
一つのポイントとしては、データの寿命です。寿命が長く、他データから参照されるような情報において、重複が存在すると、業務に悪影響を及ぼすため問題です。
寿命が長いデータは、一般的にマスターデータと呼ばれる、商品や部品、取引先、といった情報が該当します。
一方で寿命が短く他から参照されづらいデータは、コードを管理してもそのコードを活用する機会がないまま使い終わって、管理コストに見合わないケースも多くなります。
また、マスターデータであれば必須という訳ではありません。運用面で、検索機能で確実に目的のデータを特定できるような使い方をする場合や、先に目的のマスターデータを特定してから入力を始めるような使い方をする場合も、コード採番の必要性は薄くなります。仮に重複してしまった場合の悪影響がどれほどになるのか、というのもデータの種類によって異なってきます。
その上で、絶対的にコードが必要となるのは、システムの外でもデータを特定するためにコードを活用するというシーンがあるかどうかです。
例えば、バーコードを使って品目を特定したり、ピッキングリストを呼び出したり、番号を入力してデータを呼び出す業務スタイルが採られる場合等です。
![](https://nufactory.jp/wp-content/uploads/f5e766793abbc33635e6e37f16f473e6.png)
コードを管理するためにはコストや労力も必要になるので、このようにコードを採番し管理する意義を踏まえた上で、データを設計する際に、コードを採番するか否かを検討することをおすすめします。
次に、どのような考え方で採番を行っていくべきかについて解説していきます。
採番ルールの考え方
それでは、実際にコードを採番していく上で、どのようなことが重要でしょうか。
まず念頭におくべきは、長く使えるものであるということです。なぜなら、コードの桁が足りなくなる等、途中でコード体系の変更が迫られると、システム面での変更がだけでなく、既存のコードへの対応等、業務面も含めて膨大な時間・コストが発生する可能性があります。
また、システムを新しいものに移行する場合にも、既存のコード体系は引き継がれる等、非常に長いライフサイクルで使われ続けるものになるため、そういった長い目で見て使い続けられるコード体系を検討する必要があります。
そうした、安定したコード体系を作るために検討すべき採番ルールのポイントしていいくつか考えられます。
1つ目は、コードの統一性です。実際は同じものを示しているにも関わらず、部門やサブシステム事に別のコードが割り振られている、といったことがないように、全社的なデータガバナンスの観点から、コード体系が及ぶ範囲をしっかりカバーしていけるように管理を行っていきます。
![](https://nufactory.jp/wp-content/uploads/713e2fb0f62cdfa384dce9f5f9de1158.png)
2つ目は、有意コードか無意コードか、という選択です。
有意コードとは、コードに何らかの意味付けがなされているものをいいます。例えば、特定の桁がカテゴリを示していたり、枝番を管理する桁が存在していたり、といったケースが考えられます。
有意コードにはリスクもあるので、慎重に設計した上で採用するべきです。例えば、準備した桁数がカテゴリ数をカバーしきれなくなる等の理由から変更に対応しきれなくなるような場合が考えられます。
一方で、メリットもあります。システムの外側でも活用する可能性のあるコード(管理番号)にとって、有意コードにより認識しやすく入力等の取り扱いもしやすくなるという点が有意コードの大きなメリットです。利用方法を踏まえ、メリットがある場合には、変更に強くなるような設計をした上で、有意コードの採用を検討しても良いでしょう。
![](https://nufactory.jp/wp-content/uploads/e79ae98287716689d82955aa1f9baf85-1024x227.png)
また、3点目として、対応可能な件数についても検討が必要です。データの件数が増えた際に、最初に設計したコード体系で対応しきれなくなりパンクしてしまうと、運用上の大きな問題が発生する可能性があります。そのため、シーケンス番号の桁数や、有意コードにおける特定の桁で対応可能な件数等、想定しうる件数やバリエーションに対応しきれるように、あらかじめ十分な件数に対応できるようにコード体系を設計します。
具体的なシステム上でのコード管理の方法について
実際に、ITシステム上でコードを採番し管理していく際には、具体的にはどのように行うべきでしょうか。
システムを構築するようなケースでは、データベース上でどのような扱いとするべきかがポイントとなります。具体的には、コードはあくまでも業務利用するものであり、データベースを管理する上でのキー等では使用しないことです。その上で、コードの一意性については、採番ロジックにおいて担保していく考え方となります。
また、クラウドサービスを活用するようなケースでは、どのようにコードを採番可能でしょうか。
ここでは、ノーコードアプリケーション開発ツールであるNuAppを例に解説します。
NuAppでは、データの管理項目を画面上から自由に追加・設定でき、この管理項目には、文字列や数値、日付等がありますが、その中の一つの種類として「採番型」の項目というものがあります。この採番型が正にコードを採番・管理するためのものであり、この項目を追加・設定するだけでコード管理が成立するため、他に採番のためのロジック等の管理を別途考慮する必要はありません。
この採番型では、採番ルールを、定められた記法に則り設定画面上で記述します。これだけで、データを追加する度に自動的にコードが採番され、この項目に登録されます。
例えば、採番可能な値としては以下のようなものがあります。
形式 | 意味 |
---|---|
固定文字列 | 接頭詞や区切り文字等、必ず特定の桁数に含まれる文字列を指定 |
連番 | 指定された桁数で連番を振っていく |
日付・時刻 | 登録時点の日付や時刻を元に自動的に数値を登録 |
項目の利用 | 登録した内容を元に、値が決定される。例えば、商品ジャンルを元に商品ジャンルを示すコードを埋め込んだり、日付項目を元に、日付文字列を振ったり等 |
具体的なケースを想定してみます。あまり現実的ではないかもしれませんが、有意コードの動作も確認するため、以下のような用途のコードを考えてみます。
用途としては、案件を管理するための案件番号、案件のメイン商材の商品カテゴリや取引日付等が含まれているコードを想定します。
![](https://nufactory.jp/wp-content/uploads/a97f50c56ef6e8d4bc86eaf905ab6a6d-1024x203.png)
以下のような設定を行うことで、登録後に、自動的にルールに沿った番号が採番されていることが確認できました。
![](https://nufactory.jp/wp-content/uploads/267b18d842ea4eb4536348389adadfbf-1024x462.png)
このようにNuAppでは、採番ルールに基づき、簡易にコード採番を行うことができるようになっています。
今回の記事でご紹介したNuAppにご興味をお持ちの方は、以下よりお問い合わせ下さい。