日本語入力をできるだけホームポジションで行いたい

# はじめに

プログラミング中は日本語を使うことは少なくても、仕様を書くなど、プログラミングの周辺で日本語入力する機会は多いです。

私の場合、ホームポジションを意識してタッチタイプしますけれど、`[BackSpace]` などの離れたキーを押した後、ホームポジションが崩れがちでした。
そうならないよう、ひとつ前の記事を書くついでに練習してみました。


## 想定読者

* Windows で日本語入力する人[^1]
* MS-IME、または Google 日本語入力の MS-IME レイアウトを使う人[^2]

[^1]: Qiita で記事を書くには対象が広すぎますけれど、プログラミング周辺ということできっと良いはず。

[^2]: ATOK はここ5年ほど使っていなくて、レイアウトを忘れてしまいました。同じようにホームポジションがでだいたいできるはずです。

## TD;LR

![layout-jis-large.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118172/476e22a9-4b22-d7b6-72a6-a408f6d02ea2.png)

![layout-jis-ime-large.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118172/331d95aa-e25e-ab53-185b-9f2076445e1d.png)

* `[半角/全角]` は押しづらく、IME オン/オフ のトグル切り替えなら `[英数]`、モード指定なら `[無変換]` `[変換]` がおすすめ
* `[BackSpace]` `[Enter]` `[F6]-[F10]` は押しづらく、`[Ctrl]` と組み合わせた同じ効果のショートカットを使うことをおすすめ
* 画像の濃い黄色から順にショートカットを覚えていくと、そのうち日本語入力をホームポジションでだいたい完結できるようになります


# 日本語入力中に使うショートカット

個人的なおすすめ度を、3段階で書きます。

|おすすめ度|キーの色|
|---|---|
|◎ とくにおすすめ|濃い黄色|
|○ おすすめ|薄い黄色|
|△ 可能|白|

## IME オン/オフ 切り替え

|おすすめキー入力|他のキー入力|コマンド|おすすめ度|
|---|---|---|---|
|`[英数]`|`[半角/全角]`|IME オン/オフ 切り替え|◎|
|`[無変換]`|-|IME オフ|◎|
|`[変換]`|-|IME オン|◎|

日本語入力が主な人は、IME オン/オフ 切り替えに `[英数]` がおすすめ。`[半角/全角]` より押しやすいです。

よく日本語入力と英語入力を切り替える人は、`[無変換]` キーを IME オフ、`[変換]` キーを IME オンに割り当てて、英語を入力するときは `[無変換]` を先に押す癖を付けることをよりおすすめします。しかし標準設定ではありませんし、慣れが必要です。

* Microsoft IME (Windows 10 Ver.2004 以降) の場合:
  * [Windows の設定] > [キーとタッチのカスタマイズ] を開く
  * 無変換の割り当てを IME オフ にする
  * 変換の割り当てを IME オン にする
* [Google 日本語入力 – Google](https://www.google.co.jp/ime/) の場合: 
  * Google 日本語入力のプロパティから、キー設定の選択を編集
  * 以下のように設定

|モード|入力キー|コマンド|
|----|----|----|
|入力文字なし|Muhenkan|IMEを無効化|
|入力文字なし|Henkan|ひらがなに入力切替[^3]|
|直接入力|Henkan|ひらがなに入力切替|
|変換前入力中|Muhenkan|IMEを無効化|

[^3]: 「IMEを無効化」に対応しそうなのは「IMEを有効化」の方です。しかし、前回の日本語入力モードが全角カタカナや全角英数だったときに、そのモードになります。確認せず、常にひらがなの方が便利だと思います。

## 確定系

|おすすめキー入力|他のキー入力|コマンド|おすすめ度|
|---|---|---|---|
|`[Ctrl]+[M]`|`[Enter]`|確定|◎|
|`[Ctrl]+[N]`|`[Ctrl]+[↓]`|1つ確定|○|
|`[Ctrl]+[Z]`|`[Esc]`|キャンセル|△|

確定のために `[Enter]` を入力するとホームポジションが崩れがちです。`[Ctrl]+[M]` への乗り換えはとくにおすすめです。

1つ確定は、長い文章を一気に漢字変換しようとして、一部だけ変えたいときに使うことがあります。昔よりは使わなくなっています。

キャンセルは、英語を入力したいときにうっかり IME オンで入力を始めてしまったときに使うことがあります。一般的な元に戻すショートカットで分かりやすいです。でも、`[Ctrl]+[T]` で半角英語にすれば十分なことが多いです。

## 削除系

|おすすめキー入力|他のキー入力|コマンド|おすすめ度|
|---|---|---|---|
|`[Ctrl]+[H]`|`[BS]`|左を削除|◎|
|`[Ctrl]+[G]`|`[Del]`|右を削除|△|

うっかりタイプミスしたときに、`[BS]` を使います。そうするとホームポジションが崩れがちで、次のタイプミスに連鎖しかねません。手の届きやすい `[Ctrl]+[H]` への乗り換えはとてもおすすめです。

`[Del]` はカーソルが右端のままだと使えませんから、使用頻度は `[BS]` より低いです。

`[Ctrl]+[G]` と `[Ctrl]+[J]` はキーボード中央の隣同士です。`[H][J]` の間にある文字をどちら側から消すか、のような位置関係になっています。

## 文字種を変更

|おすすめキー入力|他のキー入力|コマンド|おすすめ度|
|---|---|---|---|
|`[Ctrl]+[T]`|`[F10]`|半角英数|○|
|`[Ctrl]+[U]`|`[F6]`|かな|○|
|`[Ctrl]+[I]`|`[F7]`|全角カナ|○|
|`[Ctrl]+[O]`|`[F8]`|半角|△|
|`[Ctrl]+[P]`|`[F9]`|全角英数|△|

ファンクションキーを押すとホームポジションを崩しがちです。対応するショートカットを使うのをおすすめです。だいたいファンクションキーの2つ下のキーが対応します。 `[F10]` だけは左手に引っ越します。

半角と全角英数が△なのは、半角カナと全角英数はプログラミング的にはトラブルのもとで、あまりお世話になりたくないという理由です。


## カーソル・移動

|おすすめキー入力|他のキー入力|コマンド|おすすめ度|
|---|---|---|---|
|`[Ctrl]+[K]`|`[Shift]+[←]`|文節を縮める|○|
|`[Ctrl]+[L]`|`[Shift]+[→]`|文節を伸ばす|○|
|`[Ctrl]+[A]`|`[Ctrl]+[←]`<br/>`[Home]`|左端に移動|△|
|`[Ctrl]+[S]`|`[←]`|左に移動|△|
|`[Ctrl]+[D]`|`[→]`|右に移動|△|
|`[Ctrl]+[F]`|`[Ctrl]+[→]`<br/>`[End]`|右端に移動|△|
|`[Ctrl]+[E]`|`[↑]`<br/>`[Shift]+[Space]`<br/>`[Shift]+[Tab]`|前候補|△|
|`[Ctrl]+[X]`|`[↓]`<br/>`[Space]`<br/>`[Tab]`|次候補|△|
||`[Shift]+[↑]`<br/>`[PgUp]`|前候補ページ||
||`[Shift]+[↓]`<br/>`[PgDn]`|次候補ページ||

カーソルキーを使いたくなるときは、誤入力したまま漢字変換を始めた、というくらいで少ないと思います。たまに文節の伸縮をしたくなるくらい。

記号を入力したいときなど、1ページ目に変換候補が出てこないことがあります。このページ切り替えでホームポジションが崩れるのは難しそうです。

## ショートカットのまとめ

![layout-jis-ime-large.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118172/331d95aa-e25e-ab53-185b-9f2076445e1d.png)

再掲。ホームポジションでだいたい行えそうです。


# おまけ

## おまけ 1. Google 日本語入力の記号入力

![layout-jis-ime-z-large.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118172/5a4edcd3-bbb3-be56-87f6-4ec636d12723.png)

Z は、ざ行の入力のほか、記号入力の入り口にもなっています。私が良く使うのはこちら:

|キー|出力|
|---|---|
|ZH|←|
|ZJ|↓|
|ZK|↑|
|ZL|→|
|Z/|…|

ローマ字テーブルの編集から確認・編集できます。このカスタマイズを頑張ると

* 他のよく使う記号を空いている場所に登録したい
* 長音 ー はよく使う割には押しづらい場所にあるから `[;]` に割り当てたい  
* 「うん」 などよく現れるのに運指が難しいものについては、別のコンボでも入力できるようにしたい

みたいなこともできます。今回の記事では取り上げません。

## おまけ 2. 絵文字パネルでの記号入力

![emoji-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118172/9266b5db-3e20-2fd1-fac3-2147c3529090.png)

![emoji-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118172/129b30ec-4bec-25a5-3570-8a7c2373a77d.png)

Windows 10 Ver.1809 から `[Win]+[.]` で絵文字パネルを出せます。絵文字以外の記号も選べます。「きごう」で漢字変換して100個以上の候補から目当てのものを探す、ということをしているなら、このパネルから探す方が早いです。

検索はこれを書いている Windows 10 Ver.20H2 時点ではできません [^4]。「≠」を入力するのに「きごう」を漢字変換するよりは `[Win]+[.]` の方が早いですが、「ふとうごう」を漢字変換する方がより早いです。

[^4]: Slack でおじぎの絵文字をよく本文中に `:bow:` :bow: と書いて埋め込んでいます。絵文字パネルだと今のところ探しにくく、気軽には埋め込めません。

* 参考: 
[Windows 10 キーボードのヒントとコツ](https://support.microsoft.com/ja-jp/windows/windows-10-%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E3%83%92%E3%83%B3%E3%83%88%E3%81%A8%E3%82%B3%E3%83%84-588e0b72-0fff-6d3f-aeee-6e5116097942)

## おまけ 3. 絵素材作成

今回の絵素材は TypeScript で作りました。

<p class="codepen" data-height="265" data-theme-id="light" data-default-tab="js,result" data-user="hossie" data-slug-hash="zYNzMGQ" data-preview="true" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Drawing JIS Keyboard">
  <span>See the Pen <a href="https://codepen.io/hossie/pen/zYNzMGQ">
  Drawing JIS Keyboard</a> by hossie (<a href="https://codepen.io/hossie">@hossie</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>