ErgoDox EZを買った

ずいぶん時間が経ってしまったのですが、ErgoDox EZについて書いておこうと思います。

注文

2018/1/1にergodox-ez.comで注文しました。構成は以下です。

  • 1x Tilt/Tent Kit - White for $25.00 each
  • 1x The Wing: Custom ErgoDox EZ Wrist Rest - White for $30.00 each
  • 1x ErgoDox EZ Original Standalone - Blank / White / Cherry MX Silent Red for $240.00 - Shipping : $30.00 USD

総額は$325.00 USDでした。

f:id:yskoht:20180415145947p:plain
注文画面

受け取り

2018/1/20に到着しました。

カスタマイズ

キーキャップの交換

真っ白は味気なかったのでKBDfansでキーキャップを買い、既に持っていたキャップと混ぜて使いました。

キー刻印も欲しくなったのでBAROCCO MD600のキーキャップを外して付けました。

f:id:yskoht:20180415161232j:plain
キーキャップカスタマイズ後の見た目

キースイッチの交換

キースイッチはCherry赤軸のサイレントで注文しました。使ってみると軽いタッチ感でとても静かにタイピングできるのはとても良かったのですが、クリック感のないリニア軸なのでどこで入力されたのかが分かりずらく、キーの底まで力を入れて叩いてしまい指が痛くなってしまうので交換することにしました。

公式サイトを見てみると、2018年の1月からCIY featureがデフォルトで組み込まれたそうなので、付属のKeycap pullerを使って簡単に取り外せました。

f:id:yskoht:20180415163836j:plain
Keycap pullerのピンセットみたいになっているほうでスイッチの爪を押しながら引き抜くと簡単に外せます

代わりに使うスイッチはTALP KEYBOARDでGateronの茶軸を購入しました。

さすがにGateron茶軸は赤軸サイレントに比べればタイピング音が大きいので、職場で使うのは断念しましたが、好みの打鍵感になりました。

f:id:yskoht:20180415163843j:plain
Gateron茶軸に交換

キーマップのカスタマイズ

こんな感じで落ち着いています。下段と親指周りのキーがうまく活用できていない感があります。

f:id:yskoht:20180415171058p:plain
BASEレイヤー

f:id:yskoht:20180415171102p:plain
LOWERレイヤー

f:id:yskoht:20180415171654p:plain
RAISEレイヤー

感想

  • BAROCCO MD600やLet's splitでは右手側Bキーを割り当てる余裕がなかったのですが、Ergodoxはキーが多くて良いです。ただ少し大きすぎる感があり、机の上を圧迫します
  • 親指付近のキーはホームポジションから遠いのでほとんど使えてないです
  • キーキャップのカスタマイズは楽しいですが、必要なのが1u, 1.5u. 2uで集めるのが少し大変かもしれません

QMK Firmwareのkeymap.cからアスキーアートを出力するスクリプトを作った

Keymapviz

Keymapviz: https://github.com/yskoht/keymapviz

導入

Python3で動きます。

$ pip3 install keymapviz

使い方

レイヤーごとにアスキーアートを出力します。ファイルパスにキーボードの文字列があればそこからキーボードを特定します。 現状はergodox(ergodox_ez)lets_splitにしか対応していませんが…

以下のキーボードレイアウトに対応しました。(2018/08/01)


$ keymapviz.py qmk_firmware/keyboards/ergodox_ez/keymaps/default/keymap.c

/*
 *
 * .---------------------------------------------. .---------------------------------------------.
 * |  EQL  |  1  |  2  |  3  |  4  |  5  | LEFT  | ! RGHT  |  6  |  7  |  8  |  9  |  0  | MINS  |
 * !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
 * | DELT  |  Q  |  W  |  E  |  R  |  T  |TG(SYMB| !TG(SYMB|  Y  |  U  |  I  |  O  |  P  | BSLS  |
 * !-------+-----+-----+-----x-----x-----!       ! !       !-----x-----x-----+-----+-----+-------!
 * | BSPC  |  A  |  S  |  D  |  F  |  G  |-------! !-------!  H  |  J  |  K  |  L  |LT(MD|GUI_T(K|
 * !-------+-----+-----+-----x-----x-----!ALL_T(K! !MEH_T(K!-----x-----x-----+-----+-----+-------!
 * | LSFT  |CTL_T|  X  |  C  |  V  |  B  |       | !       |  N  |  M  |COMM | DOT |CTL_T| RSFT  |
 * '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
 *  |LT(SYM|QUOT |LALT(|LEFT |RGHT |                             ! UP  |DOWN |LBRC |RBRC | FN1  |
 *  '------------------------------'                             '------------------------------'
 *                               .---------------. .---------------.
 *                               |ALT_T(K| LGUI  | ! LALT  |CTL_T(K|
 *                       .-------+-------+-------! !-------+-------+-------.
 *                       !  SPC  ! BSPC  | HOME  | ! PGUP  |  TAB  !  ENT  !
 *                       !       !       !-------! !-------!       !       !
 *                       |       |       |  END  | ! PGDN  |       |       |
 *                       '-----------------------' '-----------------------'
 */
(以下略)


Keyboard Layout Editorで使えるjsonファイルも出力できます。 -oで指定されたファイル名に含まれる{}が添え字に置換されてレイヤーごとにファイルになります。

$ keymapviz.py qmk_firmware/keyboards/lets_split/keymaps/default/keymap.c -t json -o 'lets_split{}.json'
$ ls lets_split*.json
lets_split0.json  lets_split1.json  lets_split2.json  lets_split3.json  lets_split4.json  lets_split5.json

このjsonをKeyboard Layout Editorにアップロードします。

f:id:yskoht:20180225204057p:plain
Keyboard Layout Editorにjsonをアップロード

すると以下のような感じで画像にしてくれます。

f:id:yskoht:20180225204222p:plain


QMK FirmwareのKeycodesと凡例の関係はlegends.pyで変更できます。 この辞書に書いていないものは接頭辞のKC_を取り除いたものになります。

legends = {
    'XXXXXXX': '',
    '_______': '',
    'KC_TRNS': '',
    'KC_NO': '',
    'LCTL(KC_Z)': 'UNDO',
    'LCTL(KC_Y)': 'REDO',
    'LCTL(KC_C)': 'COPY',
    'LCTL(KC_V)': 'PASTE',
    'LCTL(KC_X)': 'CUT',
    'KC_PSCREEN': 'PSc',

   # (以下略)
}

感想

  • keymap.cを絵にするんじゃなくてKeyboard Layout Editorからkeymap.cを作れるようにすべきだったのかもしれない
  • 結局アスキーアートだすのもjson出すのもテンプレートを作っておかないといけないのがめんどくさい
    • MATRIX_ROWS, MATRIX_COLSがあるんだから自動でいい感じのレイアウトを作れるのかもしれない
  • keymapviz.py自体がpngやらjpegやらを作るわけでもないのにvizと名付けたのは大仰だったかもしれない

Ruby on Rails チュートリアル 第14章をやったメモ

Ruby on Rails チュートリアル:実例を使って Rails を学ぼうRails 5.1(第4版)

14章はユーザーのフォロー。

  • 気合で終わらさせた。特に詰まったところはなかった。
  • 11章でできなかったherokuでのメール送信のためにSendGridのインストールを試したけどできなかったので、サポートにチケット出した
    • スパム認定されてブロックされていたらしい。アンブロックしてもらって、すんなりインストールできた

感想

  • rails testでfailureした時の絶望がすごい
    • たいていはタイポか、編集するファイルが間違っていたかだったけど
    • 最初は全部コピペでよいかもしれない。ホントに必要になったらもう一回やればいいわけですし
  • Rails, AWS, Heroku一通り触れてよかった
  • 演習の解答をまとめてくれてるサイトがありがたかった。理解が深まった
  • やり遂げるためのモチベーションが辛い
    • このブログにメモを書いていたから最後までできたと思う。メモの内容が他の人の役に立つかどうかはさておき

Let's split ビルドログ

Let's split を作りました

Let's split: qmk_firmware/keyboards/lets_split at master · qmk/qmk_firmware

今回はRGB Underglowなし、リセットスイッチなしで作りました。

ケースはサンドイッチプレート1です。サンドイッチプレートでも強度の面で 特に不安は感じませんが、どうせならv2-case2で作れば良かったかなとも思います。

参考にしたビルドログ

作成にあたって以下の記事を参考にさせていただきました。

いくつかの些細なこと

上記のビルドログを参考に組み立てればなんの問題もないのですが、 いくつかの些細なことを確認しておくとトラブルを回避できるかもしれません。

pro micro の動作確認

pro micro は初期不良があったりするらしいので、組み立て前に書き込みできるか確認しておきました。

pro micro のモゲ対策1

USBケーブルの抜き差しによりpro micro側の端子が取れてしまうことがあるようなので、取り付け前にグルーガンで端子の両側を補強しておきました。

f:id:yskoht:20180212001057j:plain
pro microのモゲ対策1

スペーサが入らない…

今回使ったパーツだけの問題だったのかもしれませんが、pro microの隣にスペーサを取り付ける際にアクリル側の穴とPCBの穴の中心がずれていたので、自分が用意した厚みのあるスペーサは取り付けられませんでした。なのでここだけ家にあった別のスペーサを使ってナットで固定しています。事前に注意しておくと焦らずに済むかもしれません。

f:id:yskoht:20180212002420j:plain
わかりずらいですが、アクリルの穴とPCBの穴の中心がずれている

f:id:yskoht:20180212002427j:plain
肉厚の薄いスペーサを取り付けてナットで固定

pro micro のモゲ対策2

AliExpress.com | ケーブルマグネット充電

モゲ対策にマグネットで取り外しできるケーブルを買いました。このケーブルのマグネット部分は上下を逆にしても取り付けできるようになっているのですが、どちらか一方はデータ通信はできないようです(充電は上下どちらでもできる)。それから、Let's splitのdefaultのキーマップでは左手側にケーブルを刺さないとキーマップが左右反転したようになってしまうみたいです。公式ビルドログのトラブルシューティングに似たようなことが書かれていました。

f:id:yskoht:20180212003549j:plain
ケーブルマグネット

ダイオードのつけ忘れ

作り終えた後にキーマップをいじっていると、反応しないキーが1つありました。 最初はファームを疑っていたのですが、defaultのキーマップでも反応しないので、 どうもHWが問題っぽく、基板をよく見てみるとダイオードを1つ付け忘れていました。 Let's split では48のダイオードを使うので、事前に数えてからつけ始めれば防げるミスでした。 付け忘れたダイオードは他のダイオードとは別の面に実装することになってしまい、少しかっこ悪いのですが無事に動作しました。

キーマップ

f:id:yskoht:20180212012900p:plain
yskoht配置

ほどんどdefaultのままです。配列沼は深そうなのでこれから変わるかもしれませんが、現状は以下のような感じです。

  • ESCTABに変更。TABを2回押すとESCになる(Tap Dance)
    • TABQの隣にあってほしいけど、ESCも左上に欲しい。ESCを押すときは大体2回ぐらい叩いている気がするので問題ないけど、TABを連打できないのは辛いかもしれない
  • Aの隣はCtrl
  • 左手下段はAdjustを削除。SpaceShiftに置き換え。どうやら自分は右手親指でしかSpaceを押さないらしい
    • 左手親指のShiftはかな/英字切り替えをShift+Spaceに割り当てているため
  • EnterキーはタップでEnter、ホールドでShift
    • Enterの押しっぱなしができなくなるけど連打でカバー
  • Lowerレイヤー, Raiseレイヤーはdefaultのまま

あと、なぜかKC_LALTGUIキーと認識されていて、KC_GUIが’Altキーと認識されているっぽい?これは自分の環境のせいだと思うけど…

写真

f:id:yskoht:20180212015514j:plain
ダイオードとTRRSジャック取付後の写真。D24の付け忘れがばっちり写っていました

f:id:yskoht:20180212015547j:plain
なんでルパンなんですか?

f:id:yskoht:20180212015716j:plain
スイッチがつくとテンションが上がってきます

f:id:yskoht:20180212022935j:plain
完成。完成したその日が砲雷撃戦よーいの日だったので「たまもち屋」さんで頒布されていた時雨ちゃんキーキャップを付けてみました

Ruby on Rails チュートリアル 第13章をやったメモ

Ruby on Rails チュートリアル:実例を使って Rails を学ぼうRails 5.1(第4版)

13章はマイクロポストの実装。


Ruby on Rails チュートリアル 第12章をやったメモ

Ruby on Rails チュートリアル:実例を使って Rails を学ぼうRails 5.1(第4版)

12章はパスワードを忘れたときのためにメールで再設定できるようにする。

モチベーションが結構つらくなってきたのでさくっと終わらせた。 11章に引き続き、まだ本番環境でメールの送信ができてない。


Ruby on Rails チュートリアル 第11章をやったメモ

Ruby on Rails チュートリアル:実例を使って Rails を学ぼうRails 5.1(第4版)

11章はアカウントを有効化するためのメールを送れるようにする。

  • 11.3.2
    • できないと思ったら、authenticated?をミスっていた。
 def authenticated?(attribute, token)
    digest = send("#{attribute}_digest")
    return false if digest.nil?    # remember_digestのままになっていた
    BCrypt::Password.new(digest).is_password?(token)
  end
  • 11.3.3

    • &&演算子の方がandよりも優先順位が高い
      • 括弧つけたほうが良いように見える
  • 11.4

    • クレジットカードを登録したのにアプリケーションにアドオンを追加するのができなかった
      • address is not permitted to install ~~みたいなことを言われた
    • クレカ登録し直してみるかと思って、いったんリムーブしたら次に登録するには2/1まで待たないといけないらしい…