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がワンストップで購入できてクオリティ的にも間違いないのではないかと思う。

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

MacBook Pro 15インチのバッテリー交換

DSC01007

トラックパッドが押せなくなるほど膨らんでしまって危険だったMacBookのバッテリーを交換した。ずっと交換しようと思ってたんだけど、ROWA JAPANの互換バッテリーが品切れ中で今まで放置していた。しかし、先日ちょうど在庫が復活しているのを見つけてすかさず購入。税込6,450円也。

Core i7 2.66GHz, Mem 8GB, SSD 256GB というスペックで、まだまだ会社のインターンの子とかに使ってもらうには充分そう。

Mac で特定のドメインだけ別の DNS サーバを参照する設定

LAN 内でだけで参照するDNS サーバを立てることはよくあると思いますが、諸般の事情によりDHCPサーバの設定をいじれない場合に特定のドメインだけ別のDNSサーバを参照させる方法です。

1. /etc/resolver というディレクトリを作成

% mkdir /etc/resolver

2. 例えば *.intra を特定の DNS サーバで検索させたい場合は、1.で作成したディレクトリに intra というファイルを作成し、中に nameserver のIPアドレスを記述します。

% vi /etc/resolver/intra
nameserver 192.168.1.250
search_order 1

クライアントPCのDNS設定を変更してもいいのですが、モバイル環境で接続するネットワークが頻繁に変わる場合などにいちいち設定を変更するのが面倒なので、僕はこのように設定しています。

iTerm2 を Visor のように使う方法

Visorと聞いて、お!と思った人もいるかと思いますが、Palm の名機 Handspring Visor の話ではありません。

かつて Mac OS Xのターミナル用プラグインとして Visor というのがありました(今もあると思います)。Visor は、画面上部を覆うようにしていつでもターミナルを呼び出せるようにしてくれる便利なソフトウェアでした。あの QuickSilver と同じ人が作ってたらしいです。iTerm2が便利なので自分は使っていなかったのですが、iTerm2でも同様の設定ができることに最近気づきました。

設定方法は簡単です。

1. Profiles の Window -> Style を"Top of Screen"、Space を "All Spaces"に変更します。また、Setting for New Windows -> Rows が表示されるウィンドウの高さになります。

2. Keys にて Hotkey をお好きなものに設定します。僕はF1キーに割り当てています。

これでF1キーを押せばいつでもどこにいてもターミナル画面が最初のスクリーンショットのように表示されるようになります。便利。

OS X Lion から Linuxサーバに Time Machine バックアップ

自分は Linux サーバを Time Machine のバックアップ先として利用しているのですが、OS X Lion にしてから、SMB経由での「Time Machine」バックアップ機能が使えなくなってしまいました。Sambaが独自開発のものに置き換えられてしまったのも影響していると思うんですが、不便なのでLinuxサーバにAFP経由でバックアップできるように設定しました。

なお、自分の環境は CentOS 5.6 なのでソースからインストールしましたが、超最新なディストリビューションの場合はパッケージを使って楽できるかもしれません。

手順を以下に示します。

(1)コンパイルに必要なライブラリをインストール
% sudo yum install avahi-devel libgcrypt-devel openssl-devel
(2)Oracle Berkeley DB をインストール

Oracle Berkeley DB Downloads からファイルをダウンロード

% tar zxvf db-5.2.28.tar.gz
% cd db-5.2.28/build_unix/
% ../dist/configure --with-uniquename
% make
% sudo make install
(3)Netatalk をインストール

Netatalk は AFP 3.3 に対応した Netatalk 2.2 をインストールする必要があります。
netatalk.sourceforge.net からファイルをダウンロード

% tar jxvf netatalk-2.2.0.tar.bz2
% cd netatalk-2.2.0
% ./configure --enable-redhat --enable-zeroconf --with-bdb=/usr/local/BerkeleyDB.5.2
% make
% sudo make install

/usr/local/etc/netatalk/AppleVolumes.default を編集して、デフォルトのパーミッションを設定します。

# The line below sets some DEFAULT, starting with Netatalk 2.1.
:DEFAULT: options:upriv,usedots cnidscheme:dbd dperm:0700 fperm:0600 ea:sys

また、Time Machine 用のディレクトリをマウント出来るようにエクスポートしておきます。自分の場合は、/mnt/NAS/TimeMachine をバックアップ用として指定しています。

# The "~" below indicates that Home directories are visible by default.
# If you do not wish to have people accessing their Home directories,
# please put a pound sign in front of the tilde or delete it.
~
/mnt/NAS/TimeMachine "Time Machine" options:tm
(4)Netatalk および avahi-daemon の起動

最後にNetatalk が自動起動するように設定して起動します。もし、ファイアウォールの設定をしている場合は、ポート 548 も忘れずに開けておきます。

% sudo /sbin/chkconfig netatalk on
% sudo /sbin/service netatalk start
% sudo /sbin/chkconfig avahi-daemon on
% sudo /sbin/service avahi-daemon start

以上で、Time Machineの設定画面から見えるようになるはずです。あとは普通に Mac 側で設定するだけ。

Netatalk 2.2のリリースに関してはひと悶着あったようですが、個人ユーザとしては継続して公開してもらえるのは嬉しいところです。

Mac OS X LionでイーモバイルのUSBモデムを使う

Lionはしばらく様子見のつもりだったのですが、そんなに大きな不具合も出ていないようなのでアップグレードしてしまいました。Spacesの動作が遅くなって使いにくい以外は、まずまずな感じです。しかし、今日になってイーモバイルのUSBモデム(D22HW)が使えなくなってしまっていること気づいて困りました。

イーモバイルで提供されているMac OS X用のドライバは、未だに64bit環境に対応していないらしくそのままでは利用できませんでした。一部のブログなどでOSを32bitモードで起動して利用する方法なども紹介されていますが、64bitモードのまま使えるようにする方法を紹介します。

以下のサイトから、ドライバをダウンロードしてインストールします。

http://ask3.three.co.uk/mbbdocs/drivers/apple_drivers.html
(Huawei dongles のほうです)

途中、「3Connect Setup Assistant」なるものが起動してくるのですが、これは必要ないので終了します(Dockから)。

次にUSBモデムをUSBポートに挿します。
少しして認識された後に、[システム環境設定]-[ネットワーク]を開くと「HUAWEIMobile-Modem」というのが追加されています。これをクリックして接続先の設定を行います。

電話番号:*99***1#
アカウント名:em
パスワード:em

あとは「接続」をクリックするだけです。必要に応じて、「メニューバーにモデムの状況を表示」にチェックをしておくと便利かもしれません。

corega の USB シリアルケーブルを Mac OS X でも使えるようにする

最近、自分が関わっている某プロジェクトで使うために、USBシリアルケーブルを買ってきました。ヨドバシカメラで一番安かった corega の CG-USBRS232R という製品なんですが、家に帰ってきてから Mac に対応してないことに気づきました…

というわけで、以下 Mac でも使えるようにしたのでメモ。

調べてみると、この製品は Prolific 社の PL2303 というチップが使われていることが分かりました。幸いなことに OS X 用のドライバを公開してくれているので、下記のドライバを試してみました。

md_PL2303_MacOSX10.6_dmg_v1.4.0.zip

解凍してインストールしましたが、当然ながらチップが同じだけで日本メーカーのものは認識してくれません。

これを認識させるには、
/System/Library/Extensions/ProlificUsbSerial.kext/Contents/Info.plist
を編集して、以下の記述を追加します。

<key>07aa_002a</key>
<dict>
        <key>CFBundleIdentifier</key>
        <string>com.prolific.driver.PL2303</string>
        <key>IOClass</key>
        <string>com_prolific_driver_PL2303</string>
        <key>IOProviderClass</key>
        <string>IOUSBInterface</string>
        <key>bConfigurationValue</key>
        <integer>1</integer>
        <key>bInterfaceNumber</key>
        <integer>0</integer>
        <key>idProduct</key>
        <integer>42</integer>
        <key>idVendor</key>
        <integer>1962</integer>
</dict>
次に kext キャッシュを削除するために以下のコマンドを実行して再起動。
sudo touch /System/Library/Extensions

USBシリアルケーブルを挿すと無事、目的のブツに繋がるようになりました。

% screen /dev/tty.usbserial 115200

Texas Instruments X-Loader 1.4.4ss (Mar  8 2011 - 08:51:11)
Beagle xM
Reading boot sector
Loading u-boot.bin from mmc


U-Boot 2010.03 (Feb 20 2011 - 20:15:58)

OMAP3630/3730-GP ES2.1, CPU-OPP2, L3-165MHz, 
OMAP3 Beagle board + LPDDR/NAND
I2C:   ready
DRAM:  512 MB
NAND:  0 MiB

Macを買ったら/再インストールしたら最初にする設定

Mac を使うようになって5年くらい経ちましたが、時代の移り変わりとともに利用するソフトウェアも変わってきています。特に最近は多くの作業が Web で行えるようになっているので、インストールしているソフトウェアもだいぶ少なくなりました。

ちょうど先日、OS Xをクリーンインストールしたので、次回のために再インストールしたソフトウェアや設定などを書き留めておこうと思います。自分が使っているのは、MacBook Proなので少し偏りがあるかもしれませんが。

1. StartupSound.prefPane

自分がまず最初にする設定はこれです。起動時のジャーンていう音を消してくれます。外で使う時に鳴ってしまうと恥ずかしいのと大人のマナーとして。

ダウンロード

2. Expose & Spaces

(1)Expose

画面右上のコーナーにカーソルを持って行くと起動するようにしています。

(2)Spaces

昔はこの仮想デスクトップ機能がなかったので VirtueDesktops というソフトを使っていたのですが、Leopard から標準機能となりました。自分は一つの画面を Ubuntu 専用に確保して切り替えています。

3. キーボード設定

(1)ファンクションキーを有効にする

デフォルトでは特殊機能のほうが優先になっているので、これを F1〜F12が使えるようにします。F9でExposeとかF12でダッシュボードを表示できるようになります。

設定は、[システム環境設定]-[キーボード]から

(2)caps lock → Ctrl

自分の MacBook は、USキーボードなので Ctrl キーがおかしな場所にあります。Caps Lockは使わないので、Ctrlに変更します。これは基本ですね。

設定は、[システム環境設定]-[キーボード]-[修飾キー]から

(3)Spotlightのショートカットを無効化

デフォルトで、Ctrl+スペースが Spotlight に設定されています。Emacs使いとしてはこれはあり得ないので無効にします。

設定は、[システム環境設定]-[キーボード]-[キーボードショートカット]から

4. KeyRemp4MacBook

標準の設定ではできないようなさらに細かい設定はこちら。Webブラウザの新しいタブで開く時や文字列をペーストするさいにマウスの真ん中ボタンをの使えなくなってしまいました。これらを直すためのソフトです。

自分はソースをダウンロードしてきて、自分専用の設定を追加してコンパイルして利用しています。特にMiddleClickが使えるのと使えないのでは、効率が雲泥の差です(当社比)。

・Command_L と Option_L を入れ替え
・Command_R をかな/英数トグル
・Option_R を MiddleClick

のように設定しています。

ダウンロード

5. Witch / WindowFlow

Mac の Command+Tab によるアプリケーション切り替えはなぜかウィンドウごとでなく、アプリケーションごとなので一つのアプリで複数ウィンドウ開いている時に不便です。Windows のようの Alt+Tab で切り替えられるようにしています。

Witch はいつからか有料になってしまったのですが、昔ダウンロードしたバージョンを今も使っています。今だけ期間限定で無料の WindowFlow でもいいかもしれません。

ダウンロード

6. Dockを右側に配置

完全に好みですが、MacBookは横長画面で縦方向が狭いので左右どちらかに配置した方が画面を広く使えます。自分はなぜか右派。

設定は、[システム環境設定]-[Dock]から

7. Activity Monitor

コンピュータを使っているときは、CPUの利用率が常に見えていないと不安です。これを解消するために Dock の見える場所に常に表示しておきます。

[アプリケーション]-[ユーティリティ]-[アクティビティモニター]から起動して、Dock上のアイコンを右クリックして[Dockアイコン]から"CPUの履歴を表示"にチェックしておきます。また、次回から自動で起動するように[オプション]から"ログイン時に開く"にもチェックしておくと良いでしょう。


8. Deep Sleep

MacBook の電源を落とすことってまずなくて、蓋を閉じてスリープさせておくことが多いと思います。しかし、これはいわゆるサスペンド状態なので、外出時などそのまま持ち歩いているとバッテリーを消費しています。このウィジェットを使うと、クリックひとつでハイバネート状態にまで落とすことができます。移動時などしばらく起動する必要がない時などに重宝しています。

ダウンロード


9. Fraise

以前は Smultron という名前だったオープンソース&無料のテキストエディタです。あまり使うことはないですが、標準のテキストエディットでは寂しすぎるので。

ダウンロード

10. LimeChat

IRCだけでなく、Twitterクライアントとして利用しています。CSSで自分の好きなように見た目をカスタマイズできます。細かい設定方法などはまた別のエントリで書きます。

ダウンロード

11. iTerm2

自分はプログラミングなどの黒い画面を使った開発作業は、ほぼ VMware Fusion 内の Ubuntu で行っているのですが、たまに使ったりするのでインストールしておきます。

ダウンロード

12. QuickSilver

アプリケーションランチャーです。今は、Spotlight でも充分かもしれませんが昔からの名残で使っています。

ダウンロード

13. Growl

説明が必要ないくらい有名なポップアップ通知してくれるソフトウェア。Ubuntu のようにOSの標準機能して欲しいくらい。

ダウンロード

14. VMware Fusion / VirtualBox

最初の頃は OS X 上に Web 関係の開発環境を用意して使っていたのですが、今は開発環境は VMware 内の Ubuntu に移してしまいました。最近は Homebrew のお陰で良くなっていると思いますが、MacPortsだといちいちコンパイルが必要だったり、OS X に最初から入っているソフトウェアと重複したりとOS X特有のノウハウが必要なのが面倒になりました。

Web関係のサーバはだいたい Linux なので、OS X上で動いていたものが本番環境に持って行って動かなかったりするのは避けたいです。また、Mac が壊れたり、買い替えたりしてもVMイメージをコピーするだけで、すぐに新しいマシンの上で慣れ親しんだ環境を使い始めることができます。

Mac OS X の Firefox で Command の替わりに Ctrl を使う

自分のメインブラウザは Firefox です。いつの間にか Chrome や Safari といった WebKit 勢に追われる身になっていますが、Delicous BookmarksFireMobile Simulator など便利な拡張機能の存在が大きく、なかなか手放せません。

で、自分は会社では Windows、プライベートでは Ubuntu か Mac OS X という環境で Firefox を使っているのですが、困ったことに OS X だけ Firefox が Ctrl ではなくて Command ベースのキーバインドなんですよね。新規タブが Command+T とか、タブを閉じるのが Command+W とかに割り当てられいます。せっかく Ctrl キーが A の隣にあるのに、これでは台無しです。なんでわざわざ押しにくいキーを押さなければいけないのかと小一時間…

というわけで、けっこう前から Command の替わりに Ctrl を使う方法を探してたのですが、最近になってやっと方法が分かったのでメモ。

about:configで、

ui.key.accelKey の値を 17 に設定して Firefox を再起動する。

これだけでした。これだけで、修飾キーを Ctrl に替えることができて Ctrl+L,K,F,G といったキーバインドが使い放題になりました。

ショートカットキーをWebページに乗っ取られないように ui.key.generalAccessKey=0 も設定しておくといいかも。

MacBookのファームウェア・パスワードを解除する

知り合いが、MacBookのファームウェア・パスワードを忘れてしまって起動できないと相談に来ました。試しに起動してみると、たしかに下のような画面が表示されて起動できません。

アップルのサイトによると、Open Firmware Password Protection はインストールディスクの /Applications/Utilities/ に収録されていて次のように各種操作が無効になるらしい。

Intel ベースの Macintosh で Open Firmware Password Protection をオンにすると、次のように動作します。
  • 「C」キーを使って CD-ROM ディスクから起動する機能を無効にします。
  • 「N」キーを使って NetBoot サーバから起動する機能を無効にします。
  • 「T」キーを使って (この機能を利用できるコンピュータ上で) ターゲットディスクモードで起動する機能を無効にします。
  • 「D」キーを使ってインストール DVD の Diagnostic ボリュームから起動する機能を無効にします。
  • 起動時に「command」キーと「S」キーを同時に押してシングルユーザモードで起動する機能を無効にします。
  • 起動時に「command」、「option」、「P」、「R」の各キーを同時に押してパラメタ RAM (PRAM) をリセットする機能を無効にします。
  • 起動時に「option」キーを押して「Startup Manager」にアクセスするときにパスワードを要求します。

パスワードが分からないので、本当にDVDからのブートもPRAMクリアさえもできない…
なかなか手強いなぁと思いつつ、しばらく格闘し続けること数十分、最終的に以下の方法でリセットすることができました。

  1. メモリを1枚抜いて、メモリ搭載量を変更する。
  2. 「command」、「option」、「P」、「R」の各キーを同時に押して起動する。
  3. ずっと押しっぱなしにしていると、画面が黒くなって再起動する。
    これを3回繰り返す(この間ずっと押しっぱなし)。

メモリの搭載量を変えるところがポイントみたいで、今回は2枚刺さってたので1枚抜いたらOKでした。1枚しか刺さっていない場合は、別途メモリを追加する必要があるようです。
ついでにHDDも容量の大きい物に交換して作業完了。問題なく動作してるようでホッとしました。というわけで、今回の教訓は、「BIOS(EFI)パスワードをかけたくらいで安心してはいけません」ということ。

# ちなみにThinkPadは専用のセキュリティチップを積んでいてもっと手強いんだけど、マザーボードの配線をショートさせるとリセットできるらしい(危険)。