CPコードとは二次元コードの規格の1つである。

 概説 

 概要 
CPコードは2次元コードの分類に属し、自動認識の技術である。下記にその概略の説明と歴史的な事実を記述する。
バーコードは横方向にしか情報を持たないのに対し、CPコードではX,Y基線とコーナーマークに囲まれたデータエリアにおいて、縦横のマトリックス状にデータセル情報を持つ。基本的にはデータエリアの中の一つ一つの白又は黒のデータセルのパターンによりデータをあらわす構造となっている。CPコードの最初の特許ではデータセルの形状は全ての形状を含んでおり（▼や■や★や●など）、さらにデータセルとデータセルの間に何も無い（空欄；一般的には白い部分）部分があってもよいとしている。後日出願された特許では、カラーのものも有り、データ密度を上げている。

つまり、CPコードではその画像処理において、データセルの検出方法について、その面積を計測して、ビットデータの有無を判断するのではなく、X, Y基線上のタイミングマークのそれぞれの画像の重心点を通るX, Y基線に平行な仮の線（仮想線と言う）の交点上に、白又は黒の点状（4角でも良い）のデータマーク（画像）が存在するかどうかを判別する。極論すれば、大きさを計測するような、言い換えればアナログ計測ではなくデジタル的に判断するため、CPコードが発表された当時デジタルコードと呼ばれた。

 原理的特長 
このコードの名前の由来は、Computer Purpose Codeであり、コンピューター用の読み取りやすい画像コードという観点から、1987年に発明者がそう命名した。このコードにおいてはデータ効率を重視して、位置検出用のものや角度検出用のデータを表さず、無駄なデータセルが比較的少ないため、同一コード面積あたりに格納できる情報量が多く、数字だけでなく英字や漢字やUnicodeの文字などのデータも効率よく格納できる。また、特許としては（実用化されなかったが）、非可視インクで印刷しセキュリティー性を高めたものや、カラーサンプルをデータエリアライン上のタイミングマークに擁したもので、任意のカラーでデータエリア内のセルを表したもので格段に大きな容量のデータも表せるものなどもある。また、簡単なものは印鑑やスタンプでの印字も可能である。
CPコードには、正方形状のものと長方形のモデルがある。標準は正方形状のものを用いる。標準的なものの大きさは10×10セルから文字列など情報量の大きさでエンコードソフトにより自動生成され、セル数は自動的に選ばれるが、印刷（プリンター）の精度に合わせて、コードの大きさは画像として任意に拡大縮小でき調整可能である。もちろん、別途規格を決めれば、セル数やコードの大きさはいくつかのレベルで統一は出来る。ようは、画像処理してデコード（解読）でき、画像入力手段（カメラやラインセンサーやFAXなど）の視野範囲に入れば、どんな大きさでもいいのである。もちろん人間の目に見えたに越したことは無いが、原子単位でコードを表現し、電子顕微鏡で見て解読するのも一考である。

参考までに、CPコードでは、1600Dpiのプリンターで高質紙に白黒印字した場合、数字列15桁を内蔵したコードで最小で0.5ミリ角のものが印字でき、それをCCDカメラで正確に読み取る事が開発当時でも可能であった。

 歴史 
そのプロトタイプが最初に日本で1996年後半頃から見本市で発表された。そのコードは当時テレビや新聞でも取材され、全国的に発表された。
このコードは1987年に吉田博一個人の発明として最初のものが出願されたが、事業化の為、早々に帝菱産業株式会社（本社尼崎市）に所有権が移された。その後数年間かけて、世界的に特許出願され1992年頃から順番に複数件が公告決定された。その後、帝菱産業株式会社（後年倒産）を中心にアメリカのUCバークレイ校（カルフォルニア州）の機械工学の教授や学生や卒業生の開発協力を経て、技術的な基礎が築かれた。1994年、通産省の外郭団体のVEC（ベンチャーエンタープライズセンター）の技術認定を受け、当時この技術としては国内で唯一多数の技術認定や公的な投融資を受けた。

種々の変遷を経て、1994年6月に日本とアジアの知的財産権には専用実施権が設定され、日本IDテック株式会社（本社大阪市：代表　吉田博一）がその事業化を受け継いで進めることになった。日本IDテック株式会社では（財）大阪府研究開発型企業振興財団から1996年1月に技術認定を受け、公的資金や第三者割り当ての資金を獲得して事業展開を本格化させた。また、アメリカでの技術開発は、その後もIntegrated Motions Inc(カリフォルニア州)にて継続され、次の基本技術も追加された。

例えば、せっかく印字したコードが変形したり汚れたりした場合、特別な画像処理技術が必要になる。つまり、自動エラー訂正やニューロファジー／ゆらぎ理論の画像処理の技術などに関し、CPコードではその開発に一番大きな力が注ぎ込まれた。その技術は1996年11月、通産省傘下の（財）IPAでソフト技術として認定を受けた。1999年ごろにはアメリカにおいて、SEMI（半導体協会）で、技術的な評価も含め、CPコードが話題に上り、記録にも残っていた。そのころ、東芝株式会社の子会社のTECとの非独占のライセンス契約を実施、その他数社ともライセンス契約を行った。

2000年初めに、当時日本とアジアでの事業化を進めていた日本IDテック（株）が破産したため、この技術を正式に引き継いでいるところは少ない。一方、当時アメリカにはCP Tron Inc. 英国にはDigital code communucations Limited を設立して世界のこの技術に関する特許（広告決定済）を3元管理しようとした。また、日本IDテック（株）が破産したため、標準化の流れに乗れていない。2011年現在、それらの海外の会社は休眠中である。日本における技術Venture企業の典型的な末路であろう。

 技術的特長と構成 
技術的には、CPコードはL字のX, Y基軸と反対角の3点（黒2点、白1点）のコーナーマーク、そしてX, Y基軸上の各データ位置やデータセルの位置や密度を認識するためのタイミングマークが構成要素となっている。他のコードに見られる切り出しシンボルのようなものは無く、単純な構造が特徴である。加えて、米国NASAなどがその一部の技術の無料使用を認めている技術で、リードソロモン方式のエラー自動訂正機能や独自で開発したニューロファジーを利用した画像処理技術などが取り込まれている。

また、タイミングマークを利用すると、FAXやハンドリーダーなどで、印字／読み取りした時、取り込んだ画像が大きく変形（不規則に伸びたり縮んでも）した場合でも、データセルの位置を幾何学的に演算できて、その画像処理が出来やすい。これらの画像処理技術は重要で、単なる2値化（白黒判定）しかしていない2次元コードもあるが、本質的にその程度の技術では、高密度なデータを正確に収納／読み取ることは難しいと考える。

 規格 
最近では、CPコードは概説にあるような理由でその技術の一部が生き残っているだけである。また、当時は特許権を強く主張した営業方針を採ったため、パブリックドメインではないということも、バーコードの協会などから規格化することに難色を示された一因であろう。ただし、規格化されたコードには特許権を行使しないと公言しながら、一部の用途などには特許権の行使を匂わせるようなコードが規格化されているのも実情であるので、まだ議論の余地は残っているようである。CPコードは印字／表示用のエンコードソフトと読み取り用のデコードソフトと読み取り用のハードウエア（手段）さえあれば、自由にかつ簡単に印字／表示及び読み取りができるので、あえて規格などには準拠していない。

一般的に2次元コードの場合、規格化は昔からの印刷方法で紙などへ印刷する場合に特に必要になるが、ソフト化／電子化／画像化された場合は、印字／表示とはビットイメージになるということであり、また、読み取りとは画像処理の問題となり、規格化が本当に必要かは疑問と言う声もある。ここで、印字／表示と書いたのは、コードの生成においては、例えば、液晶表示の画面や携帯の画面での表示、ひいてはレーザー光線などでビルの壁にコードを表現してそれをCCDカメラで読み取ることやプラスチック製のカードに磁気透明インクなどでコードを印字し、FAXやハンドリーダー状のライセンサーなどにて読み取ることまで、その応用技術が発展するからである。

なお近年、コードの中に文字や画像を空欄などで図形化して組み込んだものがあるが、これらの多くは自動エラー訂正能力の範囲でまたはそれを独自に応用して標準外のものを作っているものが多い。CPコードも技術的には、当然のことではあるが、一つのアプリケーションとしてこれも実行可能である。当時のCPコードの特許戦術は技術を独占すると言うよりは、ソフトを買えば、又は契約（無料でも）すれば、自由にライセンス使用できると言う方針であったが、当時の風潮ではそれが理解されず、このような特殊な応用システムへは自由に進展できにくかった。

 普遍的原理 
いかに優れた2次元マトリックスコードでも、下記の原理・定理が適合され、それは普遍性を持つことになる。

コードの形状において、一個一個のデータセルは選択された印刷方法での最小印字／表示単位より小さく出来ない。それが、そのコードの持つデータ密度の限界である。原理的には、データセルも全体の形状も正方形のものが最も効率的であるが、要は、読み取れる範囲で何個の最小印字／表示単位でデータセルを出来るだけ多く構成し、そのデータセルをX, Y方向にいくつ並べるかである。この配置がより効率的で論理的に画像処理場で優れているかが、効率の良い2次元コードであるかどうかの判定基準と言える。
データを表すデータセルの数とそれ以外のデータセルの数の比率が、そのコードの密度効率であり、唯一コード側が特記すべき特徴である。CPコードは基本的には、X. Yの基線一列ずつとタイミングマーク各一列、そして非対称性を持つ形状で、原理として数学的にそれ以上小さい奇数は無い3個（黒2、白1）という個数のコーナーマークの分のロスだけである。（データセルの形状は殆ど密度に関係ない）
正確に読み取れることは最も重要な技術であるが、それには単純にデータセルを白黒判定するものではない。全てのデータセルの重心点の位置演算方法、ニューロファジーやエラー自動訂正技術など、いわゆる優れた画像処理技術も読み取りソフトに組み込んであるかどうかである。

 主な用途 
2次元コード全般に言えることではあるが、その情報量の多さにより、単純にIDやURLを表すコードとしての機能から、文字列、文章や音楽までを表現するなど、その応用は非常に幅広く、2010年現在でもその用途が全て開発されているとはとても思えない状況である。応用については全ての高機能な2次元コードはほぼ同じような能力を発揮する。読み取りの方向指向性や小型化以外は、各コードにおいて技術的にはそう大きな差は存在しない。

極論すると、原子、分子レベルのマーキングを行い、電子顕微鏡などで読み取るなどもその独特な応用の一つである。周知のごとくDNAは4つの塩基でその鎖状構造（4ビットの組み合わせ順列）で成り立っている。もっとも基本的なCPコードは、他の2次元コードと同じように白と黒のデータセルでデータを表している。つまり前者は4のN乗であり、後者は2のN乗の情報量を内蔵するのである。従って、印字／表示の方法の選定は用途により、その読み取り方法と密接な関係が出てくる。例えば、ここからもコードのカラー化への応用の芽が芽生える。但し、カラー印刷では、掲示変化による変色が問題になるので、CPコードでは先に述べたように同時期に印字されたカラーサンプルが必要となると考えた。

携帯電話への応用は、そのハードウエアの殆どでCCDカメラが装備されているので、価格面や普及の程度から言っても大きな応用システム展開が期待されるマーケットである。 技術革新の状況を見ても、その分野での応用は今後とも有望であり、印刷や出版の分野との連携で、もっと有機的な活用が期待される。
携帯電話の中にデコード（解読）ソフトをインストールすることは必然ではない。なぜなら、ネットの速さが十分であれば、コードをそのまま画像（写真）で送り、受け取ったサーバ側で画像処理できるからである。この場合、添付ファイルでの転送に比べ、アップロード時間は短くて済む。

また、CPコードでは小型化や画像処理技術に力を注がれていたので、小型の薬ビンが高速でコンベア上を流れてくるような生産ラインで、薬コードやロットNoなどを表した5mm角程度のCPコードを読み取るステムにも導入された。また、CPコードのシステム上の特徴として、コーナーマークとタイミングマークを利用した読み取り指向性に独特のアルゴリズムを持ち（上下左右、透明居る無の場合に裏表、球形の変形に対応）、その特徴を生かしたアプリケーションが開発された。

 モジュール (Module) 
CPコードのシンボルを構成する最小の単位セル。CPコードではデータセルとも呼ぶが、その大きさ印刷技術や読み取り方法、精度に大きく関係している。CPコードではデータセルの数、すなわちコードの大きさや密度は、内蔵する情報量により自動的に変化して生成される。また、用途によっては、印刷方法の精度で（例えばDpiや何線／インチという印刷精度など）で決定され、白黒コードの場合はデータの1ビットが1モジュールに相当する。 もちろん、一旦生成されたビットイメージは、ソフト上でその拡大縮小が自由に変更可能なので、印刷の規格と読み取り性能に合わせて、コードのサイズなどを決定することは簡単である。

 型番(Version) 
基本的には、密度はX, Y機軸の上のタイミングマークの個数（m,n）で自動識別可能である。従って、エンコード（画像の生成）も入力するデータ量に応じて、考える余地も無く自動的に可変となる。従って、このm,nは情報量に応じて、10×10程度のものから理論的には無限大まで生成可能であるので、CPコードには基本的には型番は無い。生成後にマイクロソフトなどのアプリケーションのソフト上などで、画像を貼り付けた後でも、読み取れる範囲で画像的に縮小／拡大して使用すればよい。もちろん、選択した読取装置で読み取れさえすれば、任意の決定された規格のサイズに合わせて拡大／縮小するのも自由である。大雑把に言えば、通常肉眼で各データセルが見えれば読み取りは通常の光学方式で可能である。

 誤り訂正レベル (Error Correction Level) 
CPコードに汚れや傷などがあっても正確に読み取れるように、読み取り不能や読み取り間違いのモジュールを 画像処理の中で修正する。そのレベルとして、通常は復元可能値が30%に設定されているが、CPコードではエンコードソフトの中で自由に設定できる。 2次元コードにとって、この読み取りの画像処理技術がキーになっていると言っても過言ではない。