scansnapでスキャンした画像を自前で用意したプログラムで処理する

tl;dr

  • 連携するアプリケーションという設定 で、1回の取り込みが終わったタイミングで呼び出すexeファイルを指定できる
  • exeファイルは読み込んだファイルのファイルパスをコマンドライン引数で一括で渡してくれる
  • なので、コマンドライン引数を処理するプログラムをexeファイルとして固めることができれば自前のプログラムで自由に触ることができる

ということをやるプログラムを書いた

github.com

やったこと

  • nodeのプログラムをexeに固めるビルド環境の整備
  • Macでの開発環境作った
  • Windows環境のexeファイル呼び出しあれこれを調整

nodeのプログラムをexeに固めるビルド環境の整備

  • nexe をつかうだけ
  • Windows環境下で使う場合、Windowsでnexeを実行すれば何も考えずにexeファイルが作れる

Macでの開発環境作った

Windows環境でnode書くのいろいろしんどい(Macキーバインド違う、win周り疎いのでターミナル環境でハマる(素でnpx使えないのビビった))ので、Macで開発できるようにした

  • nexeの引数でwindows向けビルドを出来るように
    • -t win32-x86-10.13.0 で動いた
    • が、 win32-x86-10.13.0が何を指すのか全くわかってなくて辛い
  • バイナリをDropboxに吐き出すように調整
  • 基本的な動作確認はエントリポイントのファイルを nodeで叩けば良いので特に考える必要がない

Windows環境のexeファイル呼び出しあれこれを調整

  • PATH設定して再起動
  • exeファイル呼び出しで何もしないと実行が終わり次第ターミナルが落ちるので、readline.createInterfaceで待ち受けるようにしたり、ログをファイルに落とせるようにしたり

Macの環境作るのに一番ハマったので、我慢してwin環境で書けばよかったかも。。
やること自体はただのファイルコピーみたいなもんだし

やろうと思ってやらなかったこと

  • バイナリ公開
    • 誰得感あったのでやめた
    • cloneしてビルドコマンド叩いてもらえれば使えるしまあええやろみたいな気分
  • 対話インターフェース作って保存先調整したりしよう
    • 取り込み作業がめんどくなるのでやらんでいいかなと言う気持ちに
  • テスト・CI
    • travisがwin環境提供し始めたらしいし、exeビルドしてe2eテストとか書くと安心感あるかなと思ったけどめんどくさくて未着手
    • readline で待ち受けるところとかがね・・・
    • 気が向いたらやるかも?