kinoppyd.dev

blog

products

accounts & contact

今年買って良かった入力デバイス

posted at 2016-12-19 01:26:59 +0900 by kinoppyd

このエントリーは、「ドワンゴ Advent Calendar 2016」の19日目です

今年買って良かった入力デバイス

といってもまあ、2つしか無いですが。

今年買ってよかったなぁ、と思った入力デバイスは、バーコードリーダーとErgodoxです。バーコードリーダーはとっても便利で、Ergodoxは生活の質が変わるくらい良いものです。

バーコードリーダー

自宅には、漫画と技術書を始めとする様々な本が2000冊くらいあります。小学生の頃から、基本的に買った本は売ったり捨てたりせずに本棚を増やし続けたので、蔵書の管理とか全然出来てなくて困ってました。それだけでなく、大人になって下手に可処分所得が増えると、本屋の新刊コーナーに行って「あれ、この本買ったっけ」とか思いながら、特に気にせず同じ本を二冊とか三冊買ってしまうこともあります。

加えて、ついに本棚で家が崩壊し始めたので、あまり読み返さない本などはもう売ってしまおうと思ったのですが、売りたい本の量が数百冊に及ぶとネット申し込みで荷物発送しか現実な選択肢が無く、大抵そういう買い取りサービスは売る本の目録を要求してくるので、手でリストを作るのは現実的ではありません。

なので、いい加減何の管理もできていない状態を解消したいと思い、とりあえず全部の蔵書のISBNを集めて、データベース化しようと思いました。少ない量であれば、スマホのバーコードリーダーでもいいのですが、スマホのリーダーアプリはカメラで読み取る性質上連続読み取りにあまり向いてないため、専用のリーダーを買いました

http://amzn.to/2gP78M6

やすかったのでコレにしましたが、読み取りの敏感さはまあ値段相応という感じです。

USB接続できるバーコードリーダーは、基本的にどれもキーボードとして認識されて、読み込んだバーコードの文字列と改行コードを打ち込んでくれます。なので、単純に使う場合はExcelやLibreOfficeのセルにフォーカスを合わせた状態でリーダーでピッピッと読み込んでいきます。

が、家の本棚は色んな所に分散していて(クロゼットの中だったり)、PCから届かない場所にあったりしますし、だからといってノートPCをいちいち持ち歩くのも面倒です。なので、今回は全蔵書のISBNを読み出すために、バーコードリーダーにRaspberryPiを繋げて、Wi-Fi経由で別のマシンに飛ばす方法をとってみます。実は、いま手元にC.H.I.P.という小型Linuxボードがあり、RapberryPiよりも遥かに小さい上にデフォルトでWi-Fiが乗っているので、そっちを使おうかと思いました。が、どうやらこいつよく見ると技適マークがついていないのです。下手に電源入れましたとか公の場所で言うとアレなことになるため、今回は使っていません。

RaspberryPiにWi-Fiドングルの接続をし、設定が終わっている前提で進めていきます。また、たぶんUSBからの給電不足何だと思いますが、リーダーから出る音が凄い変です。変ですが、一応動くので無視して進めます。

img_2022

RaspberryPiにバーコードリーダーを取り付けて読み取れるようにはなりましたが、なんか不便なので、適当なスクリプト書いてWi-FiでSIBNを飛ばすようにします。

require 'uri'

class Client
  def initialize(uri)
    @uri = uri
  end

  def send(isbn)
    # お好みの通信方法
    `curl -X POST #{@uri}/isb/#{isbn}`
  end
end 

client = Client.new(URI.parse("http://192.168.0.19"))

while line = STDIN.readline.chomp
  exit if line == 'exit'
  puts "SEND: #{line}"
  Thread.new { client.send(line) }.run
end

標準入力から受け取ったISBNを、ひたすらCURLでローカルのどっかに飛ばすスクリプトです。流石にこのサンプルは簡略化しすぎているので、実際はもうちょっと真面目にClientクラスを実装したり、画面になんか表示したりするわけですが、そこは適宜読み替えてください。

あとはRaspberryPi上でコレを起動しておけば、接続されたバーコードリーダーが読み取ったISBNを、ひたすらローカルのマシンに送りつけます。サーバー側は、超テキトウにこんな感じでしょうか。

require 'sinatra'

post '/isbn/:isbn' do
  isbn = params['isbn']
  # お好みの保存処理
  do_something_to_register_isbn(isbn)
  200
end

これをどっかのマシンで起動しておけば、RaspberryPiからISBNが送られるたびに、お好みの do_something_to_register_isbn メソッドを使って、ActiveRecordなりなんなりでISBNをどこかに保存できます。実際はもうちょっと真面目にエラー処理とか書いてますが、ややこしいのでこんな感じで。

こうして、家中のISBNを集めたので、さて蔵書のISBNのDBは完成しました。ひとまず、いまは全部のISBNから、Amazon Product Advertising APIをいつかって、本のタイトルや著者を取得しています。

ゆくゆくは、これらのデータを読書メーターなどに一括でインポートしようと思いますが、今はなんの蔵書管理サービスを使うか検討中です。場合によっては、自分専用の蔵書管理システムをさくっと作ったほうが自由にできて良いかもしれないと思っているので、これは来年の目標です。

こんな感じに、さくっと簡単にいろんなバーコードを読み込めて、さくっと飛ばせるシステムがあるといろいろ楽です。バーコードリーダーは、本当に買ってよかった入力デバイスです。

Ergodox

Ergodox(リンクはErgodox ex)は、今年特に各地で話題にのぼったキーボードで、パッと検索しただけでもこれだけのエントリが出てきます(検索結果の先頭を拾ってきただけで、実際にはわんさか出てきます)

ErgoDoxを購入して人生がバラ色になった

Ergodox EZ を使ってみよう

はじめてのErgoDox EZ購入ガイド

ErgoDoxはイイぞ

キーボードを新しくした話(ErgoDox)

いずれも今年の初めから夏頃までに書かれたエントリで、どれか一つは目にしたことがあるのではないでしょうか。

また自分でも、あまりの値段の高さ(約三万ちょっと)に購入をためらっていた頃、 ErgoDox users meet up という割と頭のおかしいイベントに出てきて、Ergodoxの魅力を握力王に熱く語ってもらいながら(実際は筋肉の話ばっかりだったけど)購入熱を高めていき、9月に会社の同僚と一緒に共同購入しました。その時の様子がこちらです。

img_1909

Ergodoxを買って使った感想は、これはもう最高です。素晴らしい部分を箇条書きにしてみました。

いろいろと良い点はありますが、やはり最も大きいのは、キーのカスタマイズでしょう。

キーのカスタムに関しては、 ErgoDox EZ カスタマイズ情報のまとめ のエントリがかなり詳細にまとまっていて、参考になります。先述の ErgoDox users meet  up でも、かなりイカれたLTをやっていて印象的だった方です。

私のErgodoxのキーバインドは、今のところこんな感じです

https://github.com/kinoppyd/qmk_firmware/blob/e259498d95b1eaf675e2bbb90c26f20eb535ba21/keyboards/ergodox/keymaps/kinoppyd/keymap.c

キーマップのポイントとしては、次のような感じです

それ以外は、割と普通の配置です。レイヤー2もデフォのままです。そもそもレイヤー2はめったに使いませんが。

他に、今現在の課題としてこういうものがあるので、順次いい感じにキー配列を変更していこうと思います。

いろいろErgodoxを褒めちぎりましたが、問題もあります。Erogoxの問題点は、次の通り

とまあ、いろいろと問題があります。特にキーが縦一列分足りないのは結構大きな問題だとは思っていますが、それでもセパレートとキーカスタムできる小さなキーボードの魅力には抗えません。

まとめ

今年買ってよかったものを紹介しました。特にErgodoxはとても良いものなので、みなさんぜひ年末年始の消費の熱に浮かれてポチってみてください。いらなくなったら私が回収するので安心してください。回収は無料です。