TWAIN

TWAIN（トウェイン）はイメージスキャナやデジタルカメラなどからパーソナルコンピュータに画像を入力するための技術標準の一つである。
Windows や Macintosh など、パーソナルコンピュータの代表的プラットフォームにおいて、画像を取り込む API を定めている。
概要.
TWAIN は主に、画像処理ソフトウェア（グラフィックソフトウェア）と、スキャナやデジタルカメラとの間のアプリケーション・プログラミング・インタフェースとして使われている。TWAINはMicrosoft Windows、Linux、Mac OS Xでサポートされる。
TWAIN 標準仕様の初版は1992年に発行された。2005年11月28日にバージョン 2.0 がリリース、最新版は2015年にリリースされたバージョン 2.4。
TWAIN 標準仕様は、TWAIN ワーキンググループによって管理されている。
手順.
通常、スキャナや複合機などのデバイスドライバをインストールする際にTWAINドライバもインストールされる。アプリケーション側からは、インストール済みのTWAINデータソース（スキャナ）を選択すると、各機器ごとのGUIが呼び出されるため、各種の設定や操作を行い、本スキャンを指示するとアプリケーションへ画像データが渡される。
名前の由来.
TWAIN という名前は、公式には略語ではないにもかかわらず、"Technology（Toolkit）Without An（Any）Interesting（Important）Name"の略語として広く知られている。
TWAIN という語は、キップリングの詩 "The Ballad of East and West" （東と西の歌）に由来する英語の成句 "...and never the twain shall meet..." （この両者は決して出会うことはない）から取られ、当時のスキャナとパーソナルコンピュータを接続する困難さを暗示した。
ワーキンググループ黎明期の活動の中で "Technology Without An Interesting Name" というフレーズが生まれたが、これは TWAIN に略される元の名前として採用されるには至らなかった。
欠点.
TWAIN の欠点として、ユーザーインターフェイスが機器のデバイスドライバと一体不可分になっていることが挙げられる。
アプリケーションソフトウェアが機器の TWAIN ドライバを読み込むとき、機器メーカー製の GUI がどうしても付きまとう。このような形態のために、透過的なネットワークアクセスが困難になっている。（ネットワーク接続のオフィス用複合機から画像を取り込む場合、複合機内に共有ドライブを設定するか、特定のクライアントやデータサーバの共有ドライブにJPEGやPDFなどの画像ファイルとして書き込みを行った後でクライアントのアプリケーションから読ませる形を取らざるを得ない）
ただし、そのようなドライバは TWAIN 完全準拠とはいえないため、正確に言えばこれは TWAIN 仕様のせいではなく、ドライバの問題である。
TWAIN制御を行う場合は、TWAINドライバ(DLL)の先頭にある関数をエントリポイントとして使用する。関数名に依存すべきではない。
前述の関数に対し、3つの引数を渡して制御を行うため、各制御命令をトリプレットを発行すると言う。
小数値の取り扱いには注意が必要である。TWAIN内部では小数は構造体として扱うため、一般的な言語では変換が必要になる。