Linux で画像をスキャンしたいと思ったことはありませんか? もしそうなら、たぶん
スキャナドライバパッケージの多さに当惑するかもしれません。
これを書いている時点で、少なくとも 14 の Linux 用スキャナドライバパッケージが
存在します。個々のパッケージは高品質ではあるものの、どのドライバパッケージを
どのスキャナに使えばよいのか分からないことがよくあります。
おまけに、あるパッケージはコマンドライン・インタフェース、別のは tcl/tk ベー
スのグラフィカル・フロントエンドがある、さらに完全武装のグラフィカル・フロン
トエンドを持ったものもあるという具合です。バラエティは生活を豊かにするとは
言うものの、この場合はかなり大きな頭痛の種です。
SANE はこのジレンマを解決するために作られました。基本的なアイデアは単純です。
つまり、汎用的でよく出来た API(Application Programming Interface) があれば、
スキャナドライバから独立したアプリケーションを書くのは容易です。
従って、新しいスキャナドライバの作者は、ドライバ用のアプリケーションを書く
ことを心配しなくてよいのです。さらにアプリケーション・プログラマにとっても
SANE は汎用的なので、いずれは制御されるであろうデバイス
と独立してアプリケーションを書くことが出来るという利点があるのです。
10 の異なるデバイスをサポートするために、5つのアプリケーションが欲しいと
します。古いアプローチでは、5×10=50 で 50 ものプログラムを書かなければ
なりません。SANE では 5+10=15 で 15 のプログラムを書くだけでよいのです。
SANE はユーザにもメリットがあります。ユーザは自分が最も気に入ったアプリ
ケーションを選択する自由が得られ、それをユーザがアクセス可能な全ての画像取込み
デバイスを制御するために使用できます。つまり SANE は、使用中の特定のデバ
イスに一貫したインタフェース独立性を与えてくれるのです。
もちろん SANE がこのような汎用インタフェースの最初の試みではありません。
TWAIN, PINT, Linux hand-scanner というインタフェースを耳にしたことがあるかも
しれません。問題なのは,これらの古いインタフェースには、アプリケーションから
デバイスへの(またはその逆の)インタフェースが不足していることです。
例えば、PINT は本当にいくぶん原始的なカーネルレベルのインタフェースであり、
hand-scanner インタフェースは文字どおりハンドスキャナに限定されています。
対照的に SANE はラスター画像を取り込むデバイスをサポートするのに一般には充分
です。SANE に最も近いのは、たぶん TWAIN です。
SANE と TWAIN の韻は偶然の一致ではないことは事実ですが、それは別の話です。
TWAIN が SANE ではない主な理由は、TWAIN がアプリケーションに代わってドライバ
の中にデバイスを制御するためのグラフィカル・ユーザインタフェースを置くことで
す。これは スキャナが動作しているマシンとは別のマシンでアプリケーションが動
いているといった Linux またはネットワーク環境には適していません。SANE はこれ
と対照的に、実際のドライバとそれを制御するアプリケーションの厳密な分離を強要
します。実際、現在の SANE ディストリビューションにはネットワーク経由でのスキャ
ンがサポートされています。