PC周辺機器の1つにイメージスキャナがあります。
イメージスキャナは、主に紙面上の文字や画像などを走査することによってデジタルデータに変換し、パソコンなどで利用できるようにするものです。
その構造によっていろいろ種類があり、一般的なコピー機のように平らな寝具のベッド状の機器上面の大部分がフタとなっており、上方に開けると透明のガラス張りなどになっており、写したい面を下にして走査することで読み込むフラットベッドタイプ、プリンタ兼スキャナもありますが、プリンタのように1枚ずつ紙を送り出すコンパクトタイプ、または、連続紙送り可能な電話一体型FAX兼コピー機のようなシートフィードタイプ、バーコードスキャナのようなハンディタイプのスキャナなどもあります。
オフィスや家庭用としては、フラットベッドタイプスキャナが多いのではないでしょうか。
スキャナやプリンタもだいぶ前からUSB接続のものが主流となっており、WindowsやMac OS/Mac OS Xなど製品としてのスキャナが対応を謳っているものは、一般に付属のCD/DVDなどの媒体やインターネットを介して当該スキャナ用のデバイスドライバを明示的にインストール、場合によっては、接続すれば、自動的にインストールされ、即利用できるケースも多いことでしょう。
一方、*BSD/PC-UNIX/LinuxなどでもGNOMEやKDEなどの(X Window System+ウィンドウマネージャ+)統合デスクトップ環境を導入している場合には、必要なパッケージをインストールすれば、それだけで利用可能となりますが、デスクトップ環境を(X Window System+)ウィンドウマネージャで実装したり、デスクトップ環境を実装しない環境でコマンドラインから操作するといった場合、スキャナを利用するには、往々にして、少なくとも執筆時点では、ちょっとしたプラスアルファの作業が必要になります。
BSD/PC-UNIX/Linuxなどでスキャナを使いたい場合、SANE/Scanner Access Now Easy(スキャナアクセスも(もはや|今や)簡単)というパッケージソフトウェアを利用するのが、簡単で便利なようです。
Linuxでは、Fedoraのようにほんのちょっと手間がかかったり、スキャナ用にキャラクタデバイスをmkdirする必要がある場合もあるようですが、BSD、少なくともNetBSDでは、その必要はなく、コンソールから利用できるバックエンド、X上で利用できるフロントエンド用のSANEをインストールすれば、そのまま、または、1つ2つ構成ファイルを編集するだけで利用可能になります。
ここでは、NetBSDでEPSON GT-7600U(GTシリーズ?GT-7シリーズ?GT-7000シリーズ?GT-7600シリーズ?)を使用する例を挙げます。
EPSON GT-7600Uは、USB接続タイプのフラットベッドスキャナで確か10数年前にPCと共に購入した相当古いものですが、Windows 98 SE、(Windows XPも持ってます|ましたが、XP自体ほとんど使わずじまいでXPでスキャナを使ったことはないものの、)Windows Vistaでも何の問題もなくちゃんと動いている代物です。
検証、動作確認は、Windows Vistaマシン上で仮想化ソフトウェアであるVMware Player 3.1.6で作成した仮想マシンにNetBSD 6.1.4を[Full Install]した状態でWindows経由ではなく、NetBSDに直接スキャナを接続して行いました。
NetBSD でスキャナーを使うにもSANEを使うと書いてありますが、簡潔すぎるので「NetBSD i386 scanner」をキーに検索してNetBSD Wikiに辿りついたものの、若干微妙だったのでmanを頼りにやってみることにしました。
何れにしろ、まずやるべきことは、SANEのインストールとスキャナの電源を入れ、(VMWare Playerでは自動認識されましたが、もちろんスキャナはNetBSDマシンに接続し、)スキャン対象物を置いておくことです。
NetBSDでは、[sane-backends]、[sane-frontends]という2つのパッケージが用意されているのでrootアカウントでpkg_addを使ってインストールします。
pkgsrcからmake installしても構いません。
調べてみるとフロントエンドには、[xscanimage]というのがあるとのことなので取り敢えず実行してみます。
すると「識別可能なスキャナが見当たらない」と云った旨のメッセージの中に併せて「[sane-find-scanner]を試してみるといいよ」とあります。
そこで[sane-find-scanner]を実行してみると「/dev/uscanner0というデバイス上にベンダと品名が不明なUSBスキャナが見つかった」とあり、続くコメント行を見ても'UNKNOWN vender and product' と出る場合には、「スキャナ自体は認識されている」とあるので取り敢えず順調なようです。
その後、Linuxうんぬんとありますが、今回はNetBSDを使っているので該当しません。
(ここで後述のスキャナ用キャラクタデバイスのパーミッションを666などにしておかないと、たとえデバイスが検出されるはずの状態でもデフォルトではパーミッションが600となっている為、rootアカウント以外では見つかりません。)
そこで[man]コマンドで[sane]を調べてみると同一機種はともかく近い機種は動作確認できている模様、また、「おかしいなと思ったら[PROBLEMS]という項を見てみるといいよ」とあり、そこを読んでみると「SANEライブラリがちゃんとインストールされているかどうかを試してみる方法もあるよ」とのこと。
早速、試してみるとEPSON GT-7600Uが反応したのでSANEパッケージもちゃんと入っているようで、やはり、順調な様子。
が、よく読むと「[test]は、あなたのバックエンド名(your backend's name)にする」とあり、「ん?」と思いつつ、(後述のdll.confにある名称を当てるようで)[epson]としてみると、これまた、EPSON GT-7600Uが反応したので、やはり、順調な様子。
更に読み進めると「[scanimage -L]とやってみてもスキャナが見つからないようなら[/usr/pkg/etc/sane.d/dll.conf]という構成ファイルに使用可能なスキャナベンダの一覧があるけど、中には、コメントアウトされているものもあって場合によっては、コメントを外すとうまくいくかもよ」とあり、更にそのdll.confのあるディレクトリには、"backend".confファイルがあるようなことも書いてあります。
実際に接続しているスキャナは、EPSON製なので、これが有効になっているかを確認してみると[epson]と[epson2]があって[epson]の方はコメントアウトされています。
EPSON GT-7600Uは古いわけで2があるということは[epson]の方は古い製品用なんだろうし、先のxscanimageで見つからなかったということは、このコメントアウトされた[epson]を有効にすれば見つかる可能性があるなと高をくくって[epson]のコメントを解除しました。
先の"backend".confの"backend"部は、[epson]や[epson2]なんだろうと思って確認してみるとありました。
[epson.conf]の中身を見てみるとUSBスキャナのデバイスを指定する部分がありますが、コメントアウトされています。
USB接続のスキャナを使用するので、ここでデバイス名を指定しておく必要がありそうです。
というわけで、ここには、先程、sane-find-scannerで見つかった/dev/uscanner0というデバイスを設定すればよいんだろうと高をくくり、追記してみました。
更に、今回、別件検索中に流れで読んでいたらたまたま似たような機種を例にしたLinux+sane+EPSON GT-7500解説ページに辿りつき、実は、このページ、NetBSDドキュメントを見る以前にsaneの存在を気づかせてくれるに至ったわけですが、ここでキャラクタデバイスはchmod 666としておくとよいというのがあり、ここでは、そのキャラクタデバイスは/dev/uscanner0であり、確認してみると600となっており、確かにroot以外のアカウントでも使える方がよいので踏襲してみました。
これでスキャナを利用できるようになったはずなので一般ユーザーアカウントに戻って改めて[xscanimage]を実行してみると、少し間があって。。。画面が開きました。
起動後の操作は軽快です。(2度め以降は、なぜか起動も早くなった気がします。)
表示は英語ですが、[Scan Mode]でLinear(リニア・線形)やGray(グレースケール・白黒2色)、Color(カラー)を選択可能、[Scan]ボタンをクリックすると(USB接続のEPSON GT-7600Uで)スキャンでき、[Preview Window]ボタンでプレビュー用画面が開き、そこにある[Acquire Preview]ボタンでスキャンした内容が表示されました。
この時、epson.conf内のそれ以前のscsi行などは有効でも無効でもUSBスキャナは利用可能です。
また、epson2.confで[usb]とある行を[usb /dev/uscanner0]としてもUSBスキャナは利用できない一方、[man sane-usb]を見るとepson2.confの[usb]行には、[usb 0x055f 0x0006]のようにベンダIDと製品名に当たる10進数か16進数の値を設定する模様。
適切に設定すれば、epson2でもいけるのかもしれませんし、何れにしてもやはり、epson2は比較的新しいスキャナ用なのかもしれませんが、それについては確認する術がないのでわかりません。
というわけでメニューに追加したり、デスクトップアイコンにxscanimageを関連付けておき、USBスキャナを接続した後、これを選択したり、ダブルクリックするなりすれば、デスクトップ上で普通にスキャナが利用できるということになります。
尚、更に[man sane-usb]を読み進めるとBSD系では、デバイスが、/dev/ugen*で適切なパーミッション設定が必要とあり、そう言えば、確か、USB接続のプリンタでは、NetBSDが自動認識したデバイスが/dev/ugen0だったような。。。
実際には、/dev/uscanner0と自動認識され、うまくいきましたが、もしかすると、このデバイス名を使用しておけば、自動認識させて接続した時だけデスクトップアイコンを表示させたいといった場合などに使える?と思いつつ、今回はこれでよしとします。
一方、どうもsaneは、デジカメも認識するようなことが書いてあった気が・・・xcamっていうのが使えそう、別途gphoto2っていうのもあって、これはデジカメ画像転送に使うコマンドラインクライアントらしい。。。接続してHDDに画像をコピーする時に使えるってこと?。。。というわけで、つづきは、デジカメ(Konica Digital Revio KD-310Z)、また、印刷については、プリンタ(HP DeskJet 970Cxi)での日本語出力で。