このエントリーは、「ドワンゴ Advent Calendar 2016」の19日目です
今年買って良かった入力デバイス
といってもまあ、2つしか無いですが。
今年買ってよかったなぁ、と思った入力デバイスは、バーコードリーダーとErgodoxです。バーコードリーダーはとっても便利で、Ergodoxは生活の質が変わるくらい良いものです。
バーコードリーダー
自宅には、漫画と技術書を始めとする様々な本が2000冊くらいあります。小学生の頃から、基本的に買った本は売ったり捨てたりせずに本棚を増やし続けたので、蔵書の管理とか全然出来てなくて困ってました。それだけでなく、大人になって下手に可処分所得が増えると、本屋の新刊コーナーに行って「あれ、この本買ったっけ」とか思いながら、特に気にせず同じ本を二冊とか三冊買ってしまうこともあります。
加えて、ついに本棚で家が崩壊し始めたので、あまり読み返さない本などはもう売ってしまおうと思ったのですが、売りたい本の量が数百冊に及ぶとネット申し込みで荷物発送しか現実な選択肢が無く、大抵そういう買い取りサービスは売る本の目録を要求してくるので、手でリストを作るのは現実的ではありません。
なので、いい加減何の管理もできていない状態を解消したいと思い、とりあえず全部の蔵書のISBNを集めて、データベース化しようと思いました。少ない量であれば、スマホのバーコードリーダーでもいいのですが、スマホのリーダーアプリはカメラで読み取る性質上連続読み取りにあまり向いてないため、専用のリーダーを買いました
やすかったのでコレにしましたが、読み取りの敏感さはまあ値段相応という感じです。
USB接続できるバーコードリーダーは、基本的にどれもキーボードとして認識されて、読み込んだバーコードの文字列と改行コードを打ち込んでくれます。なので、単純に使う場合はExcelやLibreOfficeのセルにフォーカスを合わせた状態でリーダーでピッピッと読み込んでいきます。
が、家の本棚は色んな所に分散していて(クロゼットの中だったり)、PCから届かない場所にあったりしますし、だからといってノートPCをいちいち持ち歩くのも面倒です。なので、今回は全蔵書のISBNを読み出すために、バーコードリーダーにRaspberryPiを繋げて、Wi-Fi経由で別のマシンに飛ばす方法をとってみます。実は、いま手元にC.H.I.P.という小型Linuxボードがあり、RapberryPiよりも遥かに小さい上にデフォルトでWi-Fiが乗っているので、そっちを使おうかと思いました。が、どうやらこいつよく見ると技適マークがついていないのです。下手に電源入れましたとか公の場所で言うとアレなことになるため、今回は使っていません。
RaspberryPiにWi-Fiドングルの接続をし、設定が終わっている前提で進めていきます。また、たぶんUSBからの給電不足何だと思いますが、リーダーから出る音が凄い変です。変ですが、一応動くので無視して進めます。
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 users meet up という割と頭のおかしいイベントに出てきて、Ergodoxの魅力を握力王に熱く語ってもらいながら(実際は筋肉の話ばっかりだったけど)購入熱を高めていき、9月に会社の同僚と一緒に共同購入しました。その時の様子がこちらです。
Ergodoxを買って使った感想は、これはもう最高です。素晴らしい部分を箇条書きにしてみました。
-
セパレートキーボード。肩に変な力がかからない自然な姿勢でタイピング可能。
-
小さい
-
ノートの場合、キーボードの間にPCを置けたりするので、普通のキーボードよりフットプリントが小さい
-
キネシスのような他のエルゴノミクスキーボードと違い、本当に持ちあるける
-
-
カスタム性が高い
-
キー配列の自由な置き換え
-
レイヤーを複数定義して、入力作業中にダイナミックにキーマッピングを入れ替えられる
-
-
打ち心地が良いCherry軸
-
置くときに自由に角度が付けられる(これはErgodox EZの話だけど)
-
寝ながら使える
-
普通のキーボードは、寝ながら使うとお腹の上に置くから手が疲れる
-
その点Ergodoxは、横になった時ちょうど腕を置く場所に置けるので自然
-
HMDや座椅子などを使うと、本当に寝ながら作業できる
-
いろいろと良い点はありますが、やはり最も大きいのは、キーのカスタマイズでしょう。
キーのカスタムに関しては、 ErgoDox EZ カスタマイズ情報のまとめ のエントリがかなり詳細にまとまっていて、参考になります。先述の ErgoDox users meet up でも、かなりイカれたLTをやっていて印象的だった方です。
私のErgodoxのキーバインドは、今のところこんな感じです
キーマップのポイントとしては、次のような感じです
-
よく使うF7F8F10は、レイヤー1に配置
-
Cmdを右下に2つ配置し、違うキーボードを使った時の指の違和感に対応
- 組み合わせによって、小指で押したり親指で押したりするので
-
左親指にはSpaceのみを割り当て、BSを誤爆する危険性を排除
-
レイヤー3に、Vimバインドのカーソルキーを割り当て、Hyperを押しながらHJKLすることでカーソル入力
- Hyperは押してる間だけ有効になる設定
-
レイヤー3にリセットボタンを設置し、細いピンでリセットボタンを押さずともファームの更新が可能に
それ以外は、割と普通の配置です。レイヤー2もデフォのままです。そもそもレイヤー2はめったに使いませんが。
他に、今現在の課題としてこういうものがあるので、順次いい感じにキー配列を変更していこうと思います。
-
家で使用しているFILCO MINILAは、レイヤー3に移動するHyper的なキーが親指のところにあるので、混乱する
-
[キーと]キーの場所が直感的ではない
いろいろErgodoxを褒めちぎりましたが、問題もあります。Erogoxの問題点は、次の通り
-
高い。EZは特に高い。
-
デフォルトのキーマップが全くダメ。デフォルトのまま使おうとすると、死ぬ
-
ジグザグにキーが配列されたQWERTYではなく、すべてのキーが縦一直線に並んでいるので、タイピングに使う指が変わる
- 具体的には、Pのキーの押し方がだいぶ変わった
-
縦一直線のキー配列にした弊害か、キーが縦一列分少ない
-
つまり、4キー分は、通常のQWERTYとは全く違う場所に置かなくてはいけない
-
自分の例だと、[,],-,があり得ない場所に置かれている
-
-
親指にキーが6個も配列されているが、現実的に考えて2個しか押せない
-
たまーにAltが押しっぱなしになる謎現象に遭遇
とまあ、いろいろと問題があります。特にキーが縦一列分足りないのは結構大きな問題だとは思っていますが、それでもセパレートとキーカスタムできる小さなキーボードの魅力には抗えません。
まとめ
今年買ってよかったものを紹介しました。特にErgodoxはとても良いものなので、みなさんぜひ年末年始の消費の熱に浮かれてポチってみてください。いらなくなったら私が回収するので安心してください。回収は無料です。