リファレンスコード【reference code】レファレンスコード
概要

技術の開発元や標準化団体は、仕様書の内容を忠実に再現した実装例としてリファレンスコードを提供することがある。開発者はこれを参照し、自らのソフトウェアの挙動を合わせることで、同じ規格を採用する他のシステムとの相互運用性を確保しやすくなる。
仕様書は入出力や処理の流れを規定するが、境界条件やエラー時の振る舞い、丸め処理などの細部は記述が曖昧になりやすい。リファレンスコードはこうした部分も含めて具体例を示し、複数の実装間で動作を一致させるための共通の参照先として機能する。
リファレンスコードは技術の正しい仕組みを示すことを目的に作成されるため、処理速度の高速化やメモリ使用量の削減といったチューニングは基本的に行われない。可読性や仕様への忠実性が優先され、アルゴリズムも単純で平易な記述が採用されることが多い。通常、そのままの形で製品に組み込んで運用することは想定されておらず、実用に足る性能を得るには、開発者が各自の環境に合わせて改めて最適化する必要がある場合が多い。
ソフトウェア分野では、暗号処理や通信プロトコル、データ圧縮形式などの標準化領域でリファレンスコードが提供されることが多い。同一仕様に基づく複数の実装を比較・検証する際の基準としても利用され、開発キットの公開に合わせて配布されることもある。近年ではオープンソースソフトウェア(OSS)の普及により、検証用途に留まらず、製品開発の土台として流用できる実用性の高いコードが提供される例も増えている。
ハードウェアの分野にも同様の考え方の実装例があり、半導体メーカーや電子部品メーカーが自社製品を組み込んだ応用機器の設計例(リファレンスデザイン)を提供している。これらは完成品メーカーへの売り込みを目的に制作されることが多く、動作確認済みの構成として評価や採用検討に供される。ソフトウェアのリファレンスコードとは異なり、ほぼそのまま製品として利用できる完成度を持つものも存在する。