はじめに
私がIT業界で仕事を始めて20年近く経ちました。主にWebアプリケーションとそれに関連するバッチアプリケーションの構築を行ってきました。要件定義、アーキテクチャの検討、設計、実装基盤の作成、テスト、保守、等様々な業務を経験させてもらいました(特に実装基盤の作成が多かったと思います)。
そういった経験を踏まえて、情報技術者にとって一番重要な能力は何だろう?と考えてみたところ、識別子を見つける能力だと思いました。
ここでは、その理由を書いてみます。
用語の定義
識別子
とは、ある情報を特定の条件下で唯一に識別するための要素(1つ or 複数)、としておきます。
識別子の重要性
情報システムは情報と情報を繋げることによって利便性の高いシステムを構築しています。よって繋げるルールが重要になります。
その中核となるのが識別子です。
識別子が曖昧だとどんなことになってしまうのか、例を挙げてみます。
例:大学生の識別子
ある大学で、学生を管理するシステムが構築されているとします。入学した際にシステムが発行する連番を各学生に割り当てています。この連番が識別子になります。この時点では学生の識別子は明確です。
学生の識別子 | 所属大学 | 名前1 |
---|---|---|
1 | ホゲタ大学 | 田中 亮 |
2 | ホゲタ大学 | 高橋 志保 |
別の大学でも同様のシステムが構築されているとします。識別子も同様のルールで割り当てられています。
学生の識別子 | 所属大学 | 名前1 |
---|---|---|
1 | タコガミ大学 | 森 真弓 |
2 | タコガミ大学 | 山口 浩 |
では、日本全体で大学生を管理するシステムを構築しようとした場合、学生の識別子は何になるのでしょうか?
とりあえず、先に挙げた連番を識別子としてみましょう。
学生の識別子 | 所属大学 | 名前 |
---|---|---|
1 | ホゲタ大学 | 田中 亮 |
2 | ホゲタ大学 | 高橋 志保 |
1 | タコガミ大学 | 森 真弓 |
2 | タコガミ大学 | 山口 浩 |
同じ識別子の人が被ってしまっています。これでは大学生を唯一に識別することができません。😫
例えば、田中 亮さんがTOEICの試験を受けて、その結果をこのシステムに登録した場合、森 真弓さんにもその結果が紐づいてしまいます。
学生の識別子 | TOEICの結果ID |
---|---|
1 | T00001 |
ではどうすべきでしょうか?
識別子を見つける
日本における大学の識別子と組み合わせることで識別子を実現できます。尚、大学の識別子は日本のどこかで管理されているものとします。
大学の識別子 | 学生の識別子 | 所属大学 | 名前 |
---|---|---|---|
A01 | 1 | ホゲタ大学 | 田中 亮 |
A01 | 2 | ホゲタ大学 | 高橋 志保 |
B98 | 1 | タコガミ大学 | 森 真弓 |
B98 | 2 | タコガミ大学 | 山口 浩 |
TOEICの結果もこのように管理できます。
大学の識別子 | 学生の識別子 | TOEICの結果ID |
---|---|---|
A01 | 1 | T00001 |
よって、日本の大学生の識別子は 大学の識別子
と 学生の識別子
の2つとなります。😊
原因
先の例の場合、特定の条件が変更されたことが原因となり、識別子が成立しなくなってしまいました。
- 元の条件
- ホゲタ大学において (もしくは、タコガミ大学において)、大学生を唯一に識別できる。
- 変更後の条件
- 日本全国において、大学生を唯一に識別できる。
このように、特定の条件が変わることで識別子が成立しなくなります。ということはシステムが機能しなくなります。
特定の条件の重要性が分かるかと思います。
開発業務への適用
ここまで簡単な例で説明してきましたが、要は、
識別子を見つける能力 = 識別子が成り立つ特定の条件を見つける能力
を主張したかったのです。
なんちゃらIDが存在すればそれが識別子の様に見えてしまいますが、安易に飛びつかずに特定の条件を考察するのが良い選択だと思います。
たまに、複雑な条件のもとに成り立っている識別子に遭遇することがあります。この場合、ちょっとしたことで識別子が成り立たなくなってしまう可能性が高くなるので注意が必要です。
まとめ
情報技術者にとって識別子は心のよりどころです。識別子を見つける能力(=識別子が成り立つ特定の条件を見つける能力)を身に着けることは安心してシステムを開発するための必須スキルだと思います。😀