分離型キーボードを使い始めた話

一般的な日本語キーボードをずっと利用していましたが、

会社でキーボードが買ってもらえない、 会社に家からキーボードを持っていくのが面倒。

ということで、分離型キーボードならかさばらないし持っていきやすいだろう と思い、分離型キーボードを使い始めました。

分離型キーボードを利用するにあたって、市販されているものと、最近では自作キーボードというのが流行りつつあるので、キットを購入して組み立てるものがあります。

市販されているもので有名なのはKeyboardioErogDox,MiSTELあたりかなと。

どちらがいいかなといろいろ見てみたのですが、せっかくなので何か新しいものを取り入れたいと思い、キットを買って組み立てることにしました。

選んだのはErgo42というキーボードです。なぜこれを選んだのかというと、キー数がそこそこ少なめであり、 格子形配列である。という点に魅力を感じたからです。

格子形配列というのが、新しいものを取り入れたいという思いに合致した形です。

また、キー数が少ないキーボードとして、昔、とても触ってみたかったFlogpadというキーボードがあります。 これは、片手ですべてのキーが打てるというキーボードでして、レイヤーと呼ばれる、ファンクションキーのすごい版みたいな考え方で設計されていました。

最近のキー数が少ないキーボードでもその考え方が採用されていて、レイヤー切り替えキーによって、キー配列が変化するという仕組みを取っているのがとても面白く、また、キー数が少ないことで結果的に指の動きを減らせるという利点があります。 通常のキーボード、F1-F12とか、1-0ですら遠くないですか?という話です。

そんなこんなでErgo42キットを購入し、キースイッチとキーキャップを購入し、組み立てて利用しています。

まだ使い始めて1か月もたっていないので、記号などの配置がなかなか身につかないですが、とりあえず使えるレベルにはなっています。 スイッチに対して、どのキーを割り当てるのかという点も自由度が高いので良さげなキー割り当てを考えていきたいなと思っています。

会社で分離キーを使い始めて、思いのほか良かったので、別の組立キーボードにもチャレンジすべくErgodash mini というキーボードのキットを入手して自宅でも分離キーボードを使い始めるべく画策中です。

今までRealforceを使っていたので、メカニカルキーボードは若干慣れないのですが、それは時間が解決してくれると信じて。

python 2 to 3 をしている話。

AWS lambda で python2なものとpython3なものが混じっていて、同一リポジトリ管理されていてlinterとかディレクトリごとに分けるのダルい、まとめてやりたい。

ということで、一念発起してpython3への移行を開始しました。

超雑に全部python3へ移行させて、実行エラーから修正するという、あんまりよろしくないやり方で進めました。

そんな中、よくあるエラーがあったのでまとめます。

urllib

urllib.request とか urllib.parse とかに分かれた。手動で適当になおしていると漏れがある。 urllibでgrepしましょう。

iterator

python2ではlistが帰ってきていたものの多くがiterableなものを返すようになったので、必要に応じてlistにする必要があります。 map, filter, reduce など、reduceはitertoolsモジュールに入ったのでそこも。 これもgrepして探しましょう。

str とbytes

厳密に区別されるようになったので、どっちを受け付けるのか、どっちを返すのかを確認しましょう。 これはわりと頑張るしかない気がします。

終わりに

python3へ移行して小学生に笑われないようにしていきまっしょい

Windows10 python3.7 で pipenvを利用しようとしたら失敗したので調べた話。

pipenv install

とやったら UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 271: invalid start byte というよく見るエラーが出ました。

出た箇所が virtualenv.py のline = line.decode(fs_encoding)で、 ははぁ、このエンコーディングがCP932じゃないとだめなのにutf-8になっているのが原因か、と調べ始めたところ、

PEP 529 -- Change Windows filesystem encoding to UTF-8 | Python.org

にたどり着き、ついで sysパッケージを見たところ、

https://docs.python.jp/3/library/sys.html#sys.getfilesystemencoding にて、python3.6で utf-8になったから、戻したい場合は sys._enablelegacywindowsfsencoding()を使いましょうとありました。

そこで、 pythonインストール場所の lib\site-packages\に sitecustomize.pyを以下の内容で作成し、事なきを得ました。

import sys
sys._enablelegacywindowsfsencoding()

sitecustomizeについては site — Site-specific configuration hook — Python 3.7.1 documentation をご覧ください。