ErgoDoxキーボードを買って、親指シフトに入門した話

もう半年くらい前のことになるが、nippondanjiさんymotongpooさんのブログ記事をきっかけにエンジニア界隈で話題になった「ErgoDox EZ」というキーボードを購入した。このErgoDoxというのは、写真のように本体を左右に分離できて、キー配列を自由にカスタマイズすることができるキーボードである。キー配列のカスタマイズが便利なのは分かるとして、左右に分離できるとなぜ嬉しいかというと、左右の位置を自分の肩幅に合わせることで自然な姿勢で作業することが出来るようになるのだ。このキーボードを使い始めてから、実際に肩こりが減ったし、考えてみると今まで使っていた普通のキーボードでは無理な姿勢になってしまっていたんだなと思う。

レイアウトのカスタマイズ

ErgoDoxを手にして最初に誰もが驚くと思うのだが、標準のキー配列はとても使いにくい。これに慣れようとするのは時間の無駄なので、ErgoDoxが届いたらすぐにカスタマイズすることをお薦めする。私もブラウザ上からGUIでカスタムファームウェアを生成できるツール「ErgoDox EZ Configurator」を使ってすぐに変更した。しかし、すぐにもっと細かいカスタマイズがしたくなり、GitHubで公開されているqmk_firmwareで自分専用のレイアウトを作成し、ビルドして使うようになった。いろいろと試行錯誤した結果、最終的に設定しているキー配列は以下のような感じになった。

MacBook Pro本体のキーボードを使うときに違和感がないように、基本的にUS配列のキーボードから大きく外れないようなレイアウトにしている。ErgoDoxの素晴らしいところは、キー配列を単純に入れ替えるだけでなく、1つのキーに複数のキーの組み合わせを登録したり、キー単押しと他のキーと同時に押す時でキーを変えたりできる点だ。例えば、左側下段の「F1 / Alt」キーは、単押しでF1(iTerm2のショートカットキーに割り当てている)になり、他のキーと同時に押すことでOptionキーになる。
また、マクロを定義することでさらに柔軟な設定が可能になる。左下に「Paste/Copy/Cut」というのがあるが、これは単押しでペースト、少し長押しでコピー、長押しでカットという意味である。このマクロを定義している部分のソースコードは以下で、キーを150ms以上押すとCmd+C、400ms以上でCmd+Xが実行されるようにしている。

const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
    switch(id) {
        case 1:
            if (record->event.pressed) {
                key_timer = timer_read();
            }
            else {
                if (timer_elapsed(key_timer) < 150) {
                    return MACRO( D(LGUI), T(V), U(LGUI), END  );
                }
                else if (timer_elapsed(key_timer) > 400) {
                    return MACRO( D(LGUI), T(X), U(LGUI), END  );
                }
                else {
                    return MACRO( D(LGUI), T(C), U(LGUI), END  );
                }
            }
            break;
    }
    return MACRO_NONE;
};

赤い色で示されているのは、Karabinerというソフトを使ってカスタマイズしているキーである。Karabinerを使って左Cmdを「英数」、右Cmdを「かな」キーにするのはMacBookで英語キーボードを使っている人なら定番のカスタマイズだと思う。キーボードをErgoDoxにしたのを機に親指シフトという日本語入力方式に入門したのだが、これもこのソフトで実現している(後で説明する)。

他にはCapsLockキーが押されたら赤いLEDが点灯するようにしている。標準だと選択されているレイヤーによって対応するLEDが点灯するのだが、私が使っているレイヤーは3つなのでLEDは2つで足りてしまう。なので一番左のLEDをCapsLock用にした。以下がそのソースコードなんだけど、こんなカスタマイズも簡単にできる。

void matrix_scan_user(void) {
    uint8_t layer = biton32(layer_state);

    ergodox_board_led_off();
    ergodox_right_led_1_off();
    ergodox_right_led_2_off();
    ergodox_right_led_3_off();

    switch (layer) {
        case 1:
            ergodox_right_led_2_on();
            break;
        case 2:
            ergodox_right_led_3_on();
            break;
        default:
            break;
    }

    // Turn the caps lock led on
    if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
        ergodox_right_led_1_on();
    }
};

親指シフトに入門

実は思うところがあって、数ヶ月前から日本語入力をローマ字入力からかな入力に移行しようと練習していた。当然、ErgoDoxでもかな入力にしようとしたのだけれど、キーの数が少ないため、なかなか快適なレイアウトを見つけることができなかった。そこで、以前から気になっていた親指シフトを試してみたら、これがとても相性がよさそうではないか。いい機会なので親指シフトに入門してみることにした。

親指シフトを身につけるにあたって、私がした練習方法がこちら。

  1. WikipediaのNICOLA配列図を印刷してモニタの下など見やすい場所に貼る。
  2. NICOLA派宣言のSection 3を最初は配列図を見ながら、最終的に手元を見ないで打てるようになるまで練習する。
  3. 同様にSection 4から8までを順に練習する。入力スピードは問題ではないので、とにかく遅くても配列を覚えたら次に進む。
  4. 最後にSection 9をスムーズに打てるようになるまで、ひたすら練習する。
親指シフト - Wikipedia

このNICOLA派宣言の例文テキストがよくできていて、だいたい1週間くらいで遅いながらも配列は覚えることができた。40代のおじさんで1週間なので、若い人だったらもっと早く覚えられるんじゃないだろうか。最初は自分のできなさに発狂しそうになるが、Section 9の練習まで到達できれば、後はどんどん上達していくので楽しくなってくる。大切なのは30分でも15分でもいいから毎日練習することと、ある程度打てるようになった時点でなるべく早く実戦投入することだと思う。

結果的に、かな入力を捨てて親指シフトに挑戦してみてよかったと思う。かな入力と比べて、使用するキーが少なく、無理に上段を使う必要はないし、文字の配置もはるかに楽だ。また、親指シフトキーを最適な場所に設定できるErgoDoxとも非常に相性がいい。僕はPCでの日本語入力が日本人の生産性が低い理由の一つだと考えていて、親指シフトを標準の日本語入力方式にするべきだと思っている。

ErgoDoxの購入方法について

さて、親指シフト派や一日中PCで作業をして肩こりに困っている人に特にオススメのErgoDoxキーボードだが、日本国内のお店から直接購入できないため、入手する方法が少々面倒くさい。海外から完成品を個人輸入するか、部品だけ購入して自分で組み立てる必要がある。

しかし、先人が沢山いて、

に購入方法が纏まっているのでこれを参照すれば難しくはない。迷うのは、Cherry MX互換スイッチをどの軸にするかだと思う。こればかりは個人差があるので、他の人のレビューを参考にして自分で決めるしかない。私はErgoDox EZとFalbaTech製のErgoDoxを持っているが、ErgoDox EZがワンストップで購入できてクオリティ的にも間違いないのではないかと思う。

こんな感じで、出張にも持って出かけている。

SoftBankのiPhone 6sを無料でSIMロック解除した

先日、SIMフリーのiPhone 7を注文した。予約当日に申し込んだにもかかわらず、色をジェットブラックにしてしまったために発売から2週間近く経っても全く発送される気配がない。近々、海外に行く予定があって、その前には届くだろうと楽観的に考えていたのだが、このままだとどうやら間に合いそうにない。使っているのはSoftBank回線なので、アメリカであればそのまま無料で使えるので何も気にしないのだけれど、残念ながら今回の行き先はアメリカではない。

仕方がないので、今使っているiPhone 6sに現地でプリペイドSIMを購入して使うために、SoftBankショップで数千円程度のお金を払ってSIMロックを解除してもらおうかと調べてみた。すると、今はMy Softbankからオンラインで手続きをすれば、手数料は無料でショップにも行く必要がないらしい。数年前にお金を払って解除してもらったこともあるが、とても便利になったものだ。

というわけで、早速試してみることにした。

1. 事前に用意するもの

  • SoftBank以外のSIMカード

今回は毎月500MBまで無料の0 SIM by So-netのSIMが手元にあったので、これを利用した。アクティベーションの際に必要なだけなので、知り合いに一時的に借りたものでもOK。

2. My SoftBankにアクセス

「契約確認」のアイコンをタップする。

「SIMロック解除対象機種の手続き」をタップする。

3. IMEI番号の入力

iPhoneの製造番号(IMEI番号)を入力する画面が表示される。

これは設定画面からコピーすると簡単。

[設定] - [一般] - [情報]からIMEI番号を探して、番号を長押しするとコピーできる。
入力したら「解除手続きをする」をタップする。

4. SIMを差し替えてアクティベーション

SIMカードを差し替えて再起動すると以下の画面が表示されるので、Apple IDとパスワードでサインインする。

しばらく待って、docomo(自分が挿したSIMカードのキャリア)の電波を認識すれば完了。

 

当然ながら、元のSoftBankのSIMカードに戻しても問題なく使える。対応しているのは2015年5月以降に発売された機種で購入後180日経過している必要があるものの、無料で出来て手間もかからないので、海外でSIMカードを差し替える予定のある人は時間のある時に解除しておくといいかもしれない。

sshrcで環境を汚さずにサーバ上の .bashrc .vimrc 等をカスタマイズ

複数人で管理している本番サーバの環境をオレオレカスタマイズしてる人はいないと思うが、デフォルトのままだと使いにくいので、ぎりぎり許せる最大公約数的な設定をしているという管理者は多いのではないだろうか。
それでも、tmux や screen のプリフィックスは人によって通常使っているキーが違ったりして、これが異なるだけで非常に使いにくかったりする。自分はログインする度に以下のようなコマンドを打ちこんでいた。実に面倒くさい。

$ tmux set-option -g prefix C-t

この件についてtwitterで聞いてみたところ、皆さんサーバ上に個人用の設定ファイルを用意して、ログイン時にそれを読み込んだりしているようだった。

複数人で管理してるサーバの tmux.conf / .screenrc を個人用にカスタマイズすべきじゃないと思うんだけど、デフォルトのままだと使いにくい。みんなどうしてるんだろう?

で、これを何とかしようと思って少し調べてみた結果、以下の sshrc を使うのが便利という結論に至った。

https://github.com/Russell91/sshrc

特徴としては、

  • sshログイン時に毎回流し込むので環境を汚さない
  • いちいちサーバに設定ファイルをコピーする必要がないので、管理するサーバの台数が多くても安心
  • ローカルの設定ファイルだけメンテナンスしておけば、常に同じ環境で作業ができる
  • サーバ上の .bashrc も今まで通り読み込まれる

 

Macの場合は、Homebrewからインストールできる。

$ brew install sshrc

次に設定ファイルを用意する。

~/.sshrc
tmux() {
  local TMUXDIR=/tmp/.yamashita-tmux
  if ! [ -d $TMUXDIR ]; then
    rm -rf $TMUXDIR
    mkdir -p $TMUXDIR
  fi
  rm -rf $TMUXDIR/.sshrc.d
  cp -r $SSHHOME/.sshrc $SSHHOME/bashsshrc $SSHHOME/sshrc $SSHHOME/.sshrc.d $TMUXDIR
  SSHHOME=$TMUXDIR SHELL=$TMUXDIR/bashsshrc `which tmux` -f $SSHHOME/.sshrc.d/.tmux.conf -S $TMUXDIR/tmuxserver $@
}

export VIMINIT="let \$MYVIMRC='$SSHHOME/.sshrc.d/.vimrc' | source \$MYVIMRC"
export SHELL=`which bash`

# alias etc... as you like
alias ll='ls -l'
alias la='ls -A'

tmux関数は re-attach するためのおまじないで、これを利用することで他の人とセッションを共有しなくなる。

次に ~/.sshrc.d/ というディレクトリを作って、.tmux.conf や .vimrc を置けば設定は完了。また、ローカルでzshを使っている人は「compdef sshrc=ssh」を追加しておくと補完が効いて幸せになれる。

.sshrc
.sshrc.d/
 ├── .tmux.conf
 └── .vimrc

それでは、早速サーバに接続してみよう。普段使っている ssh コマンドの代わりに sshrc コマンドを使う。中身はシェルスクリプトで書かれたsshのラッパーなので、オプション等はそのまま利用できる。

$ sshrc username@servername
$ la
.bash_history  .bash_logout  .bash_profile  .bashrc  .ssh
$ tmux

自分の .tmux.conf が反映され、使い慣れた環境が再現されているはず。うん便利。

次に通常のsshでログインしてみると、

$ ssh username@servername
$ la
-bash: la: コマンドが見つかりません
$ ls -A
.bash_history  .bash_logout  .bash_profile  .bashrc  .ssh

当然 alias は設定されておらず、余計なファイルも全く作られていない。

ひとつ注意点としては、バリバリにカスタマイズせずに最低限にしておいたほうがよいということ。特にtmux-powerlineなどで魔改造しているような人は、サーバ管理用の専用設定を用意したほうがよい。ログイン時にファイルを転送する必要があるので、作者の方も64KB以下を推奨している。

読書メモ『東京どこに住む?住所格差と人生格差』速水健朗

完全にタイトルに釣られて購入した本。内容に関しては、書かれていることを全て鵜呑みにするのではなく、こういう意見もあるのだなくらいに受け取っておくのがよいと思うが、住む場所というのは人生を左右するとても重要な問題であり、大変興味深く読ませてもらった。

東京どこに住む? 住所格差と人生格差 (朝日新書)
速水健朗
朝日新聞出版 (2016-05-13)
売り上げランキング: 977

「西高東低」から「都心回帰」へ

東京で人気があるのは西側で、東側よりも西側の方が家賃相場が高いのが定説。戦後の持ち家政策によって東急線や中央線沿線に作られた郊外のニュータウン団地が人気だったため。しかし、最近は「西高東低」から「都心回帰」の動きが出てきている。

これは完全にそうだと思う。東京の郊外は既に広範囲に開発されてしまっていて、今から新築一戸建てを購入しようと思っても、都心から遠く離れた駅だったり、さらに駅までも徒歩数分とは言えないような場所になってしまう。また、これから確実に人口が減少していく中で、郊外の土地価格は下落することが予想される。それだったら、たとえ狭くて庭がなくても都心のマンションを購入した方が便利だし、資産価値も下がりにくいのではないかという考えは理にかなっている。

なぜ世界的に大都市に人口が集中しているのか

大都市部への一極集中は日本のみならず、世界中で同時に進行している。経済学者のロバート・ルーカスは、「他人の近くにいること」に対して金を払っている人達と指摘する。
同じく経済学者のティム・ハーフォードは、「他人の近くにいること」で得られる効用は「頭が良くなること」であると指摘する。なぜ、頭が良くなるのか。それは、人は近くにいると「お互いに学びあう」からだという。

優秀な人が都市に集まるからではなく、都市に住むと人は「頭が良くなる」から生産性が高くなるらしい。これに関しては、インターネットの発達により都市でなくても知的な生活は可能であり、そうとも言えなくなってきているのではないかと思った。

移動する能力の有無によって人生の可能性が大きく左右される時代

完全に同意。職業は何であれ、うまくいっている都市に移住すれば経済的恩恵を被ることができるとのこと。ITエンジニアはシリコンバレーに行けば新卒でも年収1000万円以上だ。シリコンバレーだからといって仕事の内容は大きく変わらない。ただし、その分だけ物価も高いわけだけど。

シリコンバレー(最近はサンフランシスコ)に限らず、地方から東京に出てくるだけで世界はガラっと変わる。自分もある時期に地方配属の仕事を辞めて東京に出てきたわけだが、東京では勉強会が頻繁に開催され、優秀な人が集まっていて刺激を受けたのを覚えている。

本書に記されている調査によると、日本人の生涯移動回数は平均4〜5回とアメリカの4分の1らしい。大企業がいとも簡単に傾いたり、日本の先行きも不透明な変化の大きい時代において、一つの土地に縛られるというのはチャンスを逃すことに繋がる。

先日、こんな興味深い記事もあったので、ここに紹介しておく。
日本人が「移動」しなくなっているのはナゼ? 地方で不気味な「格差」が拡大中 大都市と地方の、幸福と不幸 | 賢者の知恵 | 現代ビジネス [講談社]

「最近、恵比寿行かない」という30,40代の女性が増えている

そりゃそうだ。30,40代にもなると友人達も家庭を持ちはじめ、小さな子供がいる場合はお互いの家の近くで会う方が効率的だ。合コン等も目に見えて少なくなるので飲食店しかない恵比寿に行く用事はほとんどなくなる。著者とほぼ同世代である僕も、最近は近場で居心地のいいお店に行くことが多い。
これをもって恵比寿は終わった、今は墨田のバルがトレンディー(死語)だというのには無理がある。広く20代女性の意見も聞いてみるべきだと思う。

個人店もあってチェーン店もある街が住みやすい説

チェーン店の持つ自分が誰か問われない「匿名性」と、個人店の持つ地元に「根付いて暮らす」感覚、この両者を併せ持った場所が、今時の住みたい場所の理想型ではないだろうか。

これもよく分かる。人は生活していく上で、無意識のうちに複数の顔を使い分けている。職場の顔、家庭の顔、趣味の仲間うちでの顔といった具合に。何処で聞いたのか忘れてしまったが、複数の群れに同時に所属するというのは野生の動物にはできず、これが他の動物とは違う人間たる所以らしい。
SNSが流行っては廃れていくのは、ここに問題があるからだと思う。現状のSNSでは、複数の顔を使い分けることができない。特定のSNSがある程度流行ってユーザ数が増えてくると、同僚、家族、旧友などが一緒くたになるので、急に居心地が悪くなってしまう。アメリカの若者がFacebookを避けて、Snapchatに行くのも分かる気がする。誰だって自分の投稿を親には見られたくないものね。さらに親が空気を読まずにコメントなどしてきた日には…
ちょっと話がそれたけど、ガチガチの村社会ではなく、ある程度の匿名性があると居心地が良いというのはよく分かる。

「コンピュータの発達によって、人は都市に住まなくなる」というアルビン・トフラーの予言は外れた

予想が外れたと著者は言い切っているが、これはこれから起こることだと思う。リモートワークのインフラはまだまだ進化している途中である。前述の「人は都市に住むことによって頭が良くなる」がインターネット上で仮想的に実現できれば、ちょっと郊外で今より余裕のある生活をすることが可能になるはずである。
この”ちょっと郊外”というのがポイントで、全米で最も住みやすい都会の例としてポートランドが挙げられているが、ポートランドは適度な大きさのコンパクトシティなんだそうである。日本も東京一極集中が解消され、人口減少により30万人規模の地方都市が注目される時代がこれから来るかもしれない。個人的にも将来的に様々な問題が解消されたら、もっと自然が多い土地に住みたいと思っている。うちの妻はあまり乗り気ではないけれども…

 

ちなみに、僕は社会人になってから10回ほど引っ越しをしている(今数えてみた)。それぞれ思い返してみると、職場までの距離と住居自体の使い勝手が満足度の大部分を占めているような気がする。職場まで自転車や徒歩圏内にも住んでみたが、不思議なことに単純に近ければよいというわけでもなく、電車で数駅のほうが逆に住みやすいことが多かった。どこに住むのが幸せかについては、個々人によるパラメータが多すぎて一様にこれが正解と言えるようなものではないので、自分で考えるかもしくは家族で話し合う必要があるように思う。ただ一つ言えるのは、若いうちはいろいろな場所に住んで自分の肌で感じてみるのがよいということだ。

というわけで、さらっと読めていろいろなことを考えさせられるので、この本はお勧めです。