1. マジック・ナンバーって何?
「マジック・ナンバー」という言葉を聞いたことがあるでしょうか。プログラムの世界では、コード内に記述された固定値や特定の定数、あるいはファイル形式やプロトコルなどで定義された特定の値など、特別な意味を持つ数字のことを指します。
2. マジック・ナンバーの由来
「マジック・ナンバー」という言葉は、1972年にベル研究所のケン・トンプソンが書いたコンパイラーのソースコードで初めて使われました。トンプソンは、あるファイルフォーマットについて、固定値を利用して判断するというアイデアを実現するため、特定の値を「魔法の数」と呼んでいたのが由来とされています。
3. マジック・ナンバーの例
プログラマであれば、マジック・ナンバーを使ったコードを書く機会が多いかもしれません。代表的な例を以下に紹介します。
3.1 ファイルフォーマットでのマジック・ナンバー
さまざまなファイルフォーマットでは、バイナリコードの先頭にある固定値を使って、そのファイルの種類を判断します。たとえば、JPEG画像は「FF D8 FF」というバイト列、PNG画像は「89 50 4E 47 0D 0A 1A 0A」というバイト列が先頭に使用されます。
3.2 特定の値を表すマジック・ナンバー
プログラム中で定数や列挙型などを定義する際に、予め決められた特定の値をマジック・ナンバーとして利用することがあります。たとえば、月を表す定数であれば「1月」は「1」、「2月」は「2」というように、予め決められた数値を使用します。
3.3 セキュリティ上の問題となるマジック・ナンバー
マジック・ナンバーによって解決する問題がある一方で、不正な入力を受け付けるセキュリティ上のリスクがあることもあります。特定の形式を期待するプログラムが、不正な入力を判断できず、予期せぬ動作を行ってしまう可能性があるためです。そのため、マジック・ナンバーの使用は適切に管理する必要があります。
コメントを残す