Tech Blog

グローバルな家族アプリFammを運営するTimers inc (タイマーズ) の公式Tech Blogです。弊社のエンジニアリングを支える記事を随時公開。エンジニア絶賛採用中!→ https://timers-inc.com/engineering

とあるPHPエンジニアのキーボード設定 --Mac編--

はじめに

キーの中には押しやすい配置と押しにくい配置があります。基本的にキー配列というのは英語の文章を効率よく入力するために考えられていて、それが必ずしもキーボードを扱う他の作業に適しているとは限りません。プログラミングもその一つ。プログラムでは普段の文章入力では使うことのないいくつかの記号があり、それが入力をほんの少し妨げています。

今回は、PHPを書く上で頻繁に押すキーを簡単に押せるようにして仕事を1%効率化しよう。という内容を書きます。

遅くなりましたがサーバーエンジニアの浦野です。よろしくお願いします。

使うもの

なぜ日本語配列なのか

エンジニアの中には「なぜ日本語配列なのか?」と感じる方が多いでしょう。理由はシンプルで、キーの数が英語配列よりも2つ多いから。配列が気に入らなければ自分で変えてしまえばいいのでキーの数は多いに越したことがない。という考え方です。

変更前、変更後

まず最初に変更前と変更後の配列を。

変更前
f:id:timers-tech:20160321220850p:plain

変更後

f:id:timers-tech:20160321220858p:plain

基本的には小指の遠いところにあるキーを親指周辺や普段の手の配置で押せるようにする。という考え方です。...では完成形が分かった上で、ここからはこれに至るまでのやり方を説明します。

Karabinerの設定方法には2種類あります

既存の設定を使わせてもらう

Karabinerには最初から用意されている設定項目があります。チェックボックスを入れるだけなのでとっても簡単。

自分でカスタマイズした設定を使う

Karabinerは最初から用意されている設定とは別に、自分でXmlファイルを書いて設定することができます。/Library/Application\ Support/配下に設定ファイルがあります。

$ cat ~/Library/Application\ Support/Karabiner/private.xml
<?xml version="1.0"?>
<root>
</root>

一般的な設定内容

Slack専用設定

今やどこの会社でも利用しているチャットツール、Slack. この操作性を少しだけ上げてみます。Slackって実はキー操作でチャンネルの移動ができるんですね。Optionを押しながらの上下キーで上下のチャンネルに移動、それに地味に便利なのがOption+Shift+下で未読のチャンネルへの移動です。

でも矢印キーなんて押したくないので変更します。Ctrl+Nで下のチャンネル、Ctrl+Pで上のチャンネル、Ctrl+Wで未読のチャンネルに飛ぶ設定がこちら。Vimmerなのですがカーソル移動はEmacsが好きなのでこうしています。

押すキー 入力される文字
Ctrl+P 上のチャンネルに移動
Ctrl+N 下のチャンネルに移動
Ctrl+W 未読のチャンネルに移動
<appdef>
	<appname>SLACK</appname>
	<equal>com.tinyspeck.slackmacgap</equal>
</appdef>
<item>
	<name>For Slack CTRL+N=move next channel, CTRL+P=move previous channel, CTRL+W=move unread channel</name>
	<identifier>private.app_slack_move_channel_with_ctrln_ctrlp</identifier>
	<only>SLACK</only>
	<autogen>__KeyToKey__ KeyCode::N, ModifierFlag::CONTROL_L, KeyCode::CURSOR_DOWN, ModifierFlag::OPTION_L</autogen>
	<autogen>__KeyToKey__ KeyCode::P, ModifierFlag::CONTROL_L, KeyCode::CURSOR_UP, ModifierFlag::OPTION_L</autogen>
	<autogen>__KeyToKey__ KeyCode::W, ModifierFlag::CONTROL_L, KeyCode::CURSOR_DOWN, ModifierFlag::OPTION_L, ModifierFlag::SHIFT_L</autogen>
</item>

SemicolonをEnterに

Enterって頻繁に押す割に若干遠くに配置されているんですよね... 思い切ってEnterには右手の小指を割り当てましょう。

しかし単純に変更してしまうとSemicolonが入力できなくなるので以下のように変更します。

押すキー 入力される文字
Semicolon Enter
Ctrl+Semicolon Semicolon
Shift+Semicolon Plus
<item>
	<name>Semicolon to Return plus</name>
	<appendix>(+ Control+Semicolon to Semicolon, + Shift+Semicolon to plus)</appendix>
	<identifier>remap.semicolon2return_controlsemicolon2semicolon_plus</identifier>
	<autogen>--KeyToKey-- KeyCode::SEMICOLON, VK_CONTROL, KeyCode::SEMICOLON</autogen>
	<autogen>--KeyToKey-- KeyCode::SEMICOLON, VK_SHIFT, KeyCode::SEMICOLON, VK_SHIFT</autogen>
	<autogen>--KeyToKey-- KeyCode::SEMICOLON, KeyCode::RETURN</autogen>
</item>

ちょっと変わったもの

CtrlをEscapeに

Vimmerにとって恩恵の大きい設定になります。左手の小指の一つ左のキーを、単体で押したらEscape, 何かと組み合わせて押したらCtrlになるようにします。設定方法は簡単。既に用意されているのでチェックボックスを入れるだけです。

押すキー 入力される文字
Ctrl Esc
Ctrl+何か Ctrl+何か
+ Change Control_L Key (Left Control)
  v Control_L to Control_L
    (When you type Control_L only, send Escape)

SpaceをShiftに

地味に押しにくい割に頻繁に押すキーであるShiftを入力しやすくします。これも設定方法は簡単。既に用意されているのでチェックボックスを入れるだけです。単体で押すとSpace, 何かと組み合わせて押したらShiftになります。

押すキー 入力される文字
Space Space
Space+何か Shift+何か
+ Change Space Key
  v Space to Shift_L
    (When you type Space only, send Space)

PHPじゃないとありえないもの

PHPじゃないと...と言いつつ、実際は Ctrl/Shift + 英数/かなは汎用的に使える4パターンになっています。PHPを使うならあの気持ち悪い矢印を設定してしまうといいのではないでしょうか。

私は | \ -> => の4つを割り当てています。OR記号、特殊文字のエスケープ、クラス、Array対策ですね。Pythonみたいに遠い記号を使わなくて済むならこの4つをもっと上手く使えるのに...

押すキー 入力される文字
Ctrl+英数 ->
Shift+英数 =>
Ctrl+かな
Sfhit+かな \
<item>
	<name>Control_L KANA to |</name>
	<identifier>controll_kana_to_pipe</identifier>
	<autogen>--KeyToKey-- KeyCode::JIS_KANA, VK_CONTROL, KeyCode::JIS_YEN, VK_SHIFT</autogen>
</item>
<item>
	<name>Control_L EISUU to -></name>
	<identifier>controll_eisuu_to_arrow</identifier>
	<autogen>--KeyToKey-- KeyCode::JIS_EISUU, VK_CONTROL, KeyCode::MINUS, KeyCode::DOT, VK_SHIFT</autogen>
</item>
<item>
	<name>Shift_L KANA to \</name>
	<identifier>shift_kana_to_backslash</identifier>
	<autogen>--KeyToKey-- KeyCode::JIS_KANA, VK_SHIFT, KeyCode::VK_JIS_BACKSLASH</autogen>
</item>
<item>
	<name>Shift_L EISUU to =></name>
	<identifier>controll_eisuu_to_arrow2</identifier>
	<autogen>--KeyToKey-- KeyCode::JIS_EISUU, VK_SHIFT, KeyCode::MINUS, VK_SHIFT, KeyCode::DOT, VK_SHIFT</autogen>
</item>

おわりに

いかがでしたか?こんなマニアックな設定をする人はほとんどいないと思いますが、Karabinerは色んな設定ができて面白いのでぜひ試してみてください:)

KarabinerはMac限定なので、次はWindows編やります。

    • -

子育て家族アプリ[Famm](http://famm.us)、カップル専用アプリ[Pairy](http://pairy.com/)を運営する [Timers inc.](http://timers-inc.com) では、現在エンジニアを積極採用中!急成長中のサービスの技術の話を少しでも聞いてみたい方、スタートアップで働きたい方など、是非お気軽にご連絡ください!
採用HP : http://timers-inc.com/engineerings

Timersでは各職種を積極採用中!

急成長スタートアップで、最高のものづくりをしよう。

募集の詳細をみる