コード設計とは何か?用いられるコードの種類とコード設計書に記述する内容を解説

2020年11月11日

コード設計の概要

コード設計とは、ソフトウェアの外部設計の1つであり、どのようにコードを表記していくのかを定めたものです。
ソフトウェアで使う社員番号や部門コードなどに対し、どのような形式でコードを記述するのかをまとめていきます。
このコード設計の内容はコード設計書としてまとめられます。

コード設計に用いられるコードの種類

ここからはコード設計に用いられるコードの種類を解説していきます。

シーケンスコード(順番コード)

シーケンスコードとは、連続した数字を順番に付与するコードで、連続コードと呼ばれることもあります。
例えば下記の例のように、社員番号などのように、連番になっている時にシーケンスコードが使われます。

  • (例)社員001、社員002、社員003、社員004……

ブロックコード(区分コード)

ブロックコード(区分コード)とは、上位の桁数をいくつかのブロックにし、そのブロックの中で連番の数字を付与します。
ブロックに分けているので、少ない桁数での分類が可能になりますが、ブロックの桁数を超えて、コードを付与することはできないため、追加や挿入に限界があります。
このブロックコードは、郵便番号をイメージすればよいでしょう。

  • (例)001-0000、001-0010、001-0011、001-0012……

郵便番号は上3桁で都道府県が区別できるようになり、下4桁で市区町村が分かるようになっています。
JIS規格では、日本地図の北から南へ向かって、各県に順番に数字を割り当てているので、探している県が北にあれば、最初の方に、南にあれば後方にあることが直感でわかりやすくなっています。

桁別コード

桁別コードとは、コードの桁ごとに意味を持たせて組み合わせたコードです。

  • (例)東京在住1月生まれの男性 ⇒ 13(東京のコード)+01(誕生日)+M(男性)⇒1301M

このように、桁別コードを使うと分類は容易になりますが、多くの情報にコードを対応させる必要がある場合は桁数が増えてしまうという難点もあります。

表意コード(ニモニックコード)

ニモニックコードとは、コードの中に情報を表す略称等の文字や数字、記号を入れて表現したものです。

  • (例)日本>JPN、イギリス>ENG、フランス>FRA、イタリア>ITA、中国>CHI

ニモニックコードについては下記の記事もご参照ください。

10進コード(デシマルコード)

10進コード(デシマルコード)とは、データを10進数の原則に従って0~9に10分割し、さらに下位グループのデータも同様に10分割を繰り返しコード化します。

  • (例)321>>>3(大分類)2(中分類)1(小分類)

10進数の桁を増やすことで、データの追加、挿入は無限に行うことが可能ですが、桁数が大きくなってしまうこと、データの種類によっては桁数にバラつきが出てしまうという難点もあります。

コード設計書の作成

これまでは、コード設計で用いる手法を見てきましたが、ここからはこれらの手法を用いたコード設計書の作成方法を解説していきます。
IPAの「ソフトウェア方式設計書(構造化:良い例)」では以下のようにコード設計書を記述しています((ソフトウェア方式設計書<良い設計例> より。)。

項目名コード体系説明
社員番号99999・数字5桁で構成
部門コード999・数字3桁で構成
受注コードYYMM999999・数字10桁で構成
・先頭4桁には、受注した日付のYYMM部分が設定される
・残り6桁は、受注登録時に自動採番される
納品書番号YYMM999999・数字10桁で構成
・先頭4桁には、納品書を発行した日付のYYMM部分が設定される
・残り6桁は、納品書発行時に自動採番される
表1:コード設計書の例

このように、コード設計書はソフトウェアで使う社員番号や部門コードなどに対し、どのようにコードを記述していくのかを定めていきます。
社員番号と部門コードは、シーケンスコードになっており、数字の連番になっています。
受注コードと納品書番号は桁別コードになっており、YYMMに日付の年と月が入るようになっており、下6桁が数字の自動採番になっています。

コード設計のメリット

コード設計をしておくことで、以下のようなメリットが得られます。

1.チームでの開発が容易になる

コード設計を行うと、チームでの開発が容易になります。
例えば、プログラマーAさんと、プログラマーBさんが、社員番号を使うソフトウェアのモジュールXとYをそれぞれ開発していたとします。
コード設計を行わない場合、Aさんが開発したモジュールXとBさんが開発したモジュールYで社員番号の表記の仕方が異なっているということもあるでしょう。
しかし、コード設計を行っていれば、社員番号をどのように表記するかが定まっているため、AさんとBさんが別々にモジュールを開発していても、社員番号の仕様が異なるということはなくなります。

また、新しくソフトウェア開発に加わったプログラマーも、各コードがどのようにして書かれているかをコード設計書から知ることができます。

このように、コード設計を行えば、複数人が関わる開発プロジェクトでも認識の統一ができ、チームでの開発の難易度を下げることができます。

2.ソフトウェアの保守性の向上

コード化することにより、データの一意性が確保され、分類や識別が可能になります。それにより、ソフトウェアの保守性が高まります。
例えば、表1の受注コードのように、YYMM999999という形式で出力されるデータにエラーがあったとします。YYの部分がおかしいのか、MMなのか、それとも999999の部分なのかでチェックするコードの場所が変わってきます。
このようにルールが定まっていれば問題が発生した時も、問題個所の見当がつきやすいため、原因究明のための時間を削減することができます。

また、コード設計によりルールが定まっていれば、ソフトウェアに機能を追加するという場合でも、これまで作成してきたコードをどのように使えばよいのかが明確になっているため、開発の難易度を下げることができます。

参考