リファレンス実装(リファレンスじっそう、: reference implementation)は、なんらかの機能を実現するハードウェアまたはソフトウェアであり、他者がそれを参考にして独自に実装することを助ける目的で作られたものを言う。参考実装(さんこうじっそう)とも呼ばれる。

概要

編集

ハードウェアやソフトウェアの仕様は何らかの動く実例があった方が理解しやすい。リファレンス実装の一般的な目的は、開発者に対してその仕様を少しでも知ってもらうことである。純粋に学究的目的で提供されることもあるが、より実用的なリファレンス実装の場合は市場での知名度を上げることを目的としており、場合によってはそのリファレンス実装を買ってもらうか、リファレンス実装を提供したハードウェアもしくはソフトウェアを商用に実装してもらうことが狙いである。

リファレンス実装は一般にある仕様を実装することによって定義を決定するのに使用される。認証試験を開発する際に以下の点で信用できる実装が各インターフェイスに必須である。(1)仕様の間違いや不正確さを発見するため。(2)試験プログラムにバグがないことを確認するため。[1]
リファレンス実装の特徴は以下の通りである。
  • 仕様およびテストと並行して開発される。
  • 仕様が実装可能かどうか確認するのに使われる。
  • テストプログラム自体をテストすることができる。
  • 他の実装との比較基準とすることができる。
  • テストプログラムでは評価できない仕様の詳細を明確化できる。[2]

ハードウェアでの例

編集

NVIDIAAMDは自社のGPUを拡販するために、グラフィックスカードメーカーに対してリファレンス実装を提供し、グラフィックスカード開発に協力している。

ソフトウェアでの例

編集

リファレンス実装は製品レベルの品質でない場合もある。フラウンホーファーMP3のリファレンス実装はLAMEのような他の実装に比較して品質が低い。一方X Window SystemX.Org Foundationによるリファレンス実装は十分実用的であるだけでなく、現在のオープンソースUNIXオペレーティングシステムでも使われ続けている(これは、X.Org が人気のあったXFree86から派生させてリファレンス実装を宣言したことに端を発している)。

リファレンス実装は商用ライセンス利用を防ぐ目的で使用されることもある。サン・マイクロシステムズJava EEアプリケーションサーバのリファレンス実装は、Java EEを学ぶ目的では使用可能であるが、製品として商用利用することはできないライセンスになっていた。しかし、サンのアプリケーションサーバ製品はリファレンス実装と全く同じ機能を有していて、ライセンスだけが異なっていた。

脚注

編集
  1. ^ Dalci, Eric; Fong, Elizabeth; Goldfine, Alan (2003). Requirements for GSC-IS Reference Implementations. National Institute of Standards and Technology, Information Technology Laboratory. [1]
  2. ^ Curran, Patrick (2003). Conformance Testing: An Industry Perspective. Sun Microsystems. [2]

📚 Artikel Terkait di Wikipedia

Portable Document Format

com/content/dam/Adobe/en/devnet/pdf/pdfs/adobe_supplement_iso32000_1.pdf  ^ [1]Implementation Guide for the Portable Document Format Healthcare ^ [2] ISO 14289 の販売ページ

Fortress

(プログラミング言語) Project Fortress Active Timeline of Specification and Reference Implementation The Fortress Language Specification (Latest version is 1.0, March

ISO 639

639-4:2010 Codes for the representation of names of languages -- Part 4: Implementation guidelines and general principles for language coding(実装のためのガイドライン)

JPEG XL

2021年12月30日時点のオリジナルよりアーカイブ。2021年2月19日閲覧。 ^ “libjxl/libjxl: JPEG XL image format reference implementation” (英語). GitHub. 2022年5月22日時点のオリジナルよりアーカイブ。2022年6月5日閲覧。 ^ “FLIF -

Scheme

移植性が問題になっていた。そこで実装間の統一をとるため、コミュニティ内の議論を集約しているのが「Scheme Requests for Implementation (SRFI)」である。SRFI ではライブラリ仕様、言語拡張仕様などがインデックス化されており、SRFI

RIPEMD

A Strengthened Version of RIPEMD (RIPEMD-160 specification and reference implementation) RIPEMD-160 Ecrypt page RIPEMD-160 (Rosetta Code 各言語での RIPEMD-160

基数木

in the Linux Kernel Java implementation of Radix Tree, by Tahseen Ur Rehman Patricia Trie C++ template class implementation, by Radu Gruian Crit-bit trees

XPCOM

XPCOMリファレンス まじらもじら:埋め込み用API dW:XPCOM 第1回 XPCOM入門 dW:XPCOM 第2回 XPCOMコンポーネントの基本 dW:XPCOM 第3回 XPCOMのセットアップ dW:XPCOM 第4回 dW:XPCOM Part 5: Implementation(英語)