ブロゲーロ

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

 

 

 

 

結論、はじめに

 

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

 

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

 

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

 

 

コード設計の基本用語

 

コード設計では基本的に下の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もめずらしい事では無いので、会社が増えたり減ったりしても対応できるようにする。

まずはこんなところでしょうか。

 

 

終わりに

 

システム開発や更改の終盤戦にコード設計をじっくり考える暇は無いのが普通なので、テストだ本番だとドタバタが近づく前に、ユーザー部門と共に愛着が持てるコード体系を検討してみる事をお勧めします。

時期としては要件定義が終わり、システム会社が開発を行なっている最中が一番良いかと思います。