ブロゲーロ

「やってしまった・・」にならない為のシステムのコード設計

 

 

 

 

結論、はじめに

 

結論:基本を押さえ、将来の拡張性を踏まえてコード設計をしましょう。

 

システム開発の際、導入する企業が必ずやるべき作業がコード設計・整備になります。開発ベンダーも手伝ってくれますが、基本的には情シス+ユーザー部門で検討、整備をします。

 

システム更改でも、こうした機会にコード体系を一新する場合もあるので、基本に戻りコードの種類から押さえたのでまとめておきます。

 

 

コード設計の基本用語

 

コード設計では基本的に下記5つのいずれか一つ、もしくはいくつかを組み合わせて整備する事になります。

 

シーケンスコード

・順番、連番コードとも呼ばれ、文字通り順番に番号をつける

例)1001、1002、1003・・・・・

 

桁別コード

コードの各桁に意味を持たせる

例)コード「10109F」は、「1」:日本、「01」:北海道、「09」:9月、「M」:女

 

ブロックコード

上位の桁をブロック(固定)して、連番を付与する

例)AA000001、AA000002、AA000003、AA000004

       BB000001、BB000002、BB000003、BB000004

 

二モニックコード

連想コードとも呼ばれ、略語等を利用してコードから連想できるようにする

例)SY(商品)、TK(得意先)、SI(仕入先)

 

デシマルコード

HTMLではお馴染みで色や文字の英数字のコードをHTMLコード化したもの。

例えば「J」。

デシマルコードとは10進コードとも呼ばれ、0~9の10個に分類して更に細分化する

例)コード「532」は、大分類:5、中分類:3、小分類:2

 

 

意味有りコード?意味無しコード?

 

二モニックコードのようにコード自体に意味を持たせるのか、それとも意味を持たせずに連番にするのか、議論が分かれるところです。

 

下の法則に当てはめて考えてみるとすんなりと答えが出てきます。

 

数が多い(1万以上)?これからもどんどん増える?

 

単純な法則ですが、多品種大量生産を行う工場、多品種を扱う小売、更には次々と新しいコードが生まれる場合は、連番にしてしまった方がシステム管理をするうえでも効率的です。

一方、頻繁に新コードが生まれない場合は二モニックコードのような意味有りコードで問題ありません。

 

意味有りコードの良さは、現場や同僚と話すときにコード自体が意味を持っているので話をしやすく、更には桁別コードで他の意味も持っていれば、詳細を調べること無く理解できます。

 

もう一つはシステムへの愛着の問題もあるでしょう。仕事で使うものとは言え、無味乾燥とした連番よりも、意味あるコードを見ているだけで製品を想像できます。

感覚的ですが、こうしたコードを大事にすることが、ユーザーの愛着につながります。

 

 

将来の拡張性

 

コード設計する上で拡張性の検討は避けて通れません。

かと言って、拡張性を持たせすぎて桁ばかりが大きくなってしまう事もあるのでさじ加減が難しいところとなります。

 

「得意先マスタのコードの桁はシステム上では増やせたのに、システム会社に作ってもらった得意先売上一覧の帳票ではコードがはみ出るようになり、帳票のプログラムを修正するために費用が発生してしまった。」

と言った話はよくあります。

 

さらにビジネスの環境変化が著しい最近ではM&Aもめずらしくないので、「子会社が出来たのでコード増やして。」といった事もあり得ます。

 

「何をどこまで考え」、コード設計をすればよいのか難しいところですが、下記2つは必ず考えてみる必要があります。

  • 少なくとも過去5年を振り返り発生した事は、これからの5年で起きる可能性があるので拡張性の考慮に入れる。
  • これからはM&Aもめずらしい事では無いので、会社が増えたり減ったりしても対応できるようにする。

 

 

終わりに

 

システム開発や更改の際、意外と疎かにされがちで、システムの要件定義以降はコード設計をやり直すのは難しくなるので、システムの構想段階でコード設計をしてしまうとスムーズに進みます。