Open10

macでAZIK/AZITを試してみる

SLMNLLSLMNLL

https://zenn.dev/vim_jp/articles/neo-azik-for-you

こちらの記事で興味が湧いて、AZIKデビューしてみました。

もともとコードのコメントは英語で書くようにしているし、日本語で文字を入力する回数は他の人にくらべて多いほうではないと思います。ただ、慣れない入力方法で常に脳にすこし負荷がかかっているのが心地よく、1週間ほど使い続けています。

USキーボードでもストレスなく入力できるようKarabiner-Elementsの設定したので、備忘録がてら共有。

SLMNLLSLMNLL

いまの自分のKarabiner-Elementsの設定はこんな感じ。

  • 左cmdは「英数」 -> 入力ソースをMac標準のABCに切り替える
  • 右cmdは「かな」 -> 入力ソースをAquaSKKに切り替えつつ、ひらがな入力に / すでにAquaSKKが有効なら、StickyKeyとして働く
  • Caps Lockは、AquaSKKのStickyKeyに
  • 右Shiftは、AquaSKKのKanaToggleを発火するために使う

Caps Lock右cmdの役割が重複しているが、しばらく使ってどちらが押しやすいかを判断してから整理したいです。

{
	"description": "AquaSKK // cmdをIME言語切り替えに、caps_lockをStickyKeyに変更",
	"manipulators": [
		{
            "description": "cmd(left) -> 英語",
			"type": "basic",
			"from": {
				"key_code": "left_command",
				"modifiers": { "optional": ["any"] }
			},
			"parameters": { "basic.to_if_held_down_threshold_milliseconds": 100 },
			"to": [
				{
					"key_code": "left_command",
					"lazy": true
				}
			],
			"to_if_alone": [
				{
					"key_code": "japanese_eisuu"
				}
			],
			"to_if_held_down": [{ "key_code": "left_command" }],
			"conditions": [
				{
					"type": "input_source_if",
					"input_sources": [
						{
							"input_source_id" : "jp.sourceforge.inputmethod.aquaskk"
						}
					]
				}
			]
		},
		{
            "description": "cmd(right) -> 日本語 / if AquaSKK is ON",
			"type": "basic",
			"from": {
				"key_code": "right_command",
				"modifiers": { "optional": ["any"] }
			},
			"parameters": { "basic.to_if_held_down_threshold_milliseconds": 100 },
			"to": [
				{
					"key_code": "right_command",
					"lazy": true
				}
			],
			"to_if_alone": [
				{
					"key_code": "comma",
					"modifiers": ["control", "left_alt", "shift"]
				}
			],
			"to_if_held_down": [{ "key_code": "right_command" }],
			"conditions": [
				{
					"type": "input_source_if",
					"input_sources": [
						{
							"input_source_id" : "jp.sourceforge.inputmethod.aquaskk"
						}
					]
				}
			]
		},
		{
            "description": "cmd(right) -> AquaSKK + 日本語かな / if AquaSKK is OFF",
			"type": "basic",
			"from": {
				"key_code": "right_command",
				"modifiers": { "optional": ["any"] }
			},
			"parameters": { "basic.to_if_held_down_threshold_milliseconds": 100 },
			"to": [
				{
					"key_code": "right_command",
					"lazy": true
				}
			],
			"to_if_alone": [
				{
					"key_code": "japanese_kana"
				},
				{
					"key_code": "close_bracket",
					"modifiers": ["control", "left_alt", "shift"]
				}
			],
			"to_if_held_down": [{ "key_code": "right_command" }],
			"conditions": [
				{
					"type": "input_source_if",
					"input_sources": [
						{
                            "input_source_id": "com.apple.keylayout.ABC",
                            "language": "en"
						}
					]
				}
			]
		},
		{
            "description": "caps_lock -> StickyKey",
			"type": "basic",
			"from": {
				"key_code": "caps_lock",
				"modifiers": { "optional": ["any"] }
			},
			"to": [
				{
					"key_code": "comma",
					"modifiers": ["control", "left_alt", "shift"]
				}
			],
			"conditions": [
				{
					"type": "input_source_if",
					"input_sources": [
						{
							"input_source_id" : "jp.sourceforge.inputmethod.aquaskk"
						}
					]
				}
			]
		},
		{
            "description": "right_shift -> kanaToggle",
			"type": "basic",
			"from": {
				"key_code": "right_shift",
				"modifiers": { "optional": ["any"] }
			},
			"to": [
				{
					"key_code": "grave_accent_and_tilde",
					"modifiers": ["control", "shift"]
				}
			],
			"conditions": [
				{
					"type": "input_source_if",
					"input_sources": [
						{
							"input_source_id" : "jp.sourceforge.inputmethod.aquaskk"
						}
					]
				}
			]
		}

	]
}
SLMNLLSLMNLL

Caps Lockは促音(っ, ッ)を入力するためか、ひらがなカタカナ切り替えに使う方が良さそう。

SLMNLLSLMNLL

AquaSKK側のkeymap.confはこんな感じ。元々の設定と同じ箇所は割愛。
SKK_JMODEStickyKeyTaggleKanaは、Karabiner-Elementsで処理したショートカットを受け取っている。

###
### keymap.conf
###

# ======================================================================
# event section
# ======================================================================

SKK_JMODE		shift::ctrl::alt::]

# ======================================================================
# attribute section(for SKK_CHAR)
# ======================================================================

ToggleKana		shift::ctrl::` # [で「かな/カナ」のトグルをせず、back-quoteをKarabiner-Elements経由で受け取る
# ToggleJisx0201Kana	ctrl::q # 使わない
# SwitchToAscii		shift::ctrl::alt::[ # 最初は設定していたが、Mac標準のABCを使うことにしたので不要

# ======================================================================
# handle option
# ======================================================================

StickyKey    shift::ctrl::alt::,
SLMNLLSLMNLL

StickyKeyとして使うのは右cmdの方が良さそう。
capsLockキーはかなカナ切り替えに使うことにした。

SLMNLLSLMNLL

macSKK

mac向けSKK方式のIMEとして、macSKKというOSSを発見。
https://github.com/mtgto/macSKK

以下の理由からAquaSKKから乗り換えました。

  • 頻繁にアップデートされている
  • 設定ファイルがUTF-8(AquaSKKはEUC-JP)
  • キーバインドを設定画面からいじれる[1]

macSKKでAZIKを使う

AquaSKKと違って、macSKKには設定画面にAZIKを有効化するオプションがありません。
また、探した限りではAZIK用のローマ字変換ルールを公開されている方もいないようです。
ですので、自分で用意して[2]gistを公開しました。
https://gist.github.com/slmnll/5de63180e7259022932adbd7aa6c34a6

このファイルを~/Library/Containers/net.mtgto.inputmethod.macSKK/Data/Documents/Settings/に配置すれば、即座にAZIK入力ができます。

カスタマイズをしたい場合

上記のファイルの末尾に、変換ルールを書き加えてみてください。

脚注
  1. AquaSKKはキーバインドをテキストファイルに書くのですが、いくつかのキーについてはkeycodeなどを調べる必要があり、また私の環境ではfncmdキーを使った設定が正常に動作せず…。 ↩︎

  2. AZIKのキーの組み合わせはAquaSKKのazik_us.ruleファイルをベースにしています。 ↩︎

SLMNLLSLMNLL

macSKK用のKarabiner-ElementsのComplex Modifications

右cmdキーを入力ソースに応じて、macSKKの有効化とStickyKeyの両方に使っているが、かなり便利。

その他のキーとmacSKKのキーバインド設定は以下の通り:

  • 左cmd英数キー
    • mac標準のABC入力に
  • 右cmd (ABC入力時)かなキー + fn + ctrl + \
    • macSKKを有効化
    • その後macSKKでひらがなモードにする(カタカナモードで立ち上がらないように)
  • 右cmd (macSKK入力時)fn + ,
    • macSKKでStickyKeyに設定
  • caps_lockfn + ctrl + left_alt
    • macSKKでかなカナトグルに設定

jsonは以下の通りです:

{
  "description": "macSKK // cmdをIME言語切り替え、StickyKeyに変更",
  "manipulators": [
    {
            "description": "cmd(left) -> 英語",
      "type": "basic",
      "from": {
        "key_code": "left_command",
        "modifiers": { "optional": ["any"] }
      },
      "parameters": { "basic.to_if_held_down_threshold_milliseconds": 100 },
      "to": [
        {
          "key_code": "left_command",
          "lazy": true
        }
      ],
      "to_if_alone": [
        {
          "key_code": "japanese_eisuu"
        }
      ],
      "to_if_held_down": [{ "key_code": "left_command" }],
      "conditions": [
        {
          "type": "input_source_if",
          "input_sources": [
            {
              "input_source_id" : "net.mtgto.inputmethod.macSKK.hiragana"
            }
          ]
        }
      ]
    },
    {
            "description": "cmd(right) -> 日本語 / if macSKK is ON",
      "type": "basic",
      "from": {
        "key_code": "right_command",
        "modifiers": { "optional": ["any"] }
      },
      "parameters": { "basic.to_if_held_down_threshold_milliseconds": 100 },
      "to": [
        {
          "key_code": "right_command",
          "lazy": true
        }
      ],
      "to_if_alone": [
        {
          "key_code": "comma",
          "modifiers": ["fn"]
        }
      ],
      "to_if_held_down": [{ "key_code": "right_command" }],
      "conditions": [
        {
          "type": "input_source_if",
          "input_sources": [
            {
              "input_source_id" : "net.mtgto.inputmethod.macSKK.hiragana"
            }
          ]
        }
      ]
    },
    {
            "description": "cmd(right) -> macSKK + 日本語かな / if macSKK is OFF",
      "type": "basic",
      "from": {
        "key_code": "right_command",
        "modifiers": { "optional": ["any"] }
      },
      "parameters": { "basic.to_if_held_down_threshold_milliseconds": 100 },
      "to": [
        {
          "key_code": "right_command",
          "lazy": true
        }
      ],
      "to_if_alone": [
        {
          "key_code": "japanese_kana"
        },
        {
          "key_code": "backslash",
          "modifiers": ["control", "fn"]
        }
      ],
      "to_if_held_down": [{ "key_code": "right_command" }],
      "conditions": [
        {
          "type": "input_source_if",
          "input_sources": [
            {
                            "input_source_id": "com.apple.keylayout.ABC",
                            "language": "en"
            }
          ]
        }
      ]
    },
    {
            "description": "caps_lock -> KanaToggle",
      "type": "basic",
      "from": {
        "key_code": "caps_lock",
        "modifiers": { "optional": ["any"] }
      },
      "to": [
        {
          "key_code": "backslash",
          "modifiers": ["fn", "control", "left_alt"]
        }
      ],
      "conditions": [
        {
          "type": "input_source_if",
          "input_sources": [
            {
              "input_source_id" : "net.mtgto.inputmethod.macSKK.hiragana"
            }
          ]
        }
      ]
    },
    {
            "description": "right_shift -> kanaToggle",
      "type": "basic",
      "from": {
        "key_code": "right_shift",
        "modifiers": { "optional": ["any"] }
      },
      "to": [
        {
          "key_code": "backslash",
          "modifiers": ["fn", "control", "left_alt"]
        }
      ],
      "conditions": [
        {
          "type": "input_source_if",
          "input_sources": [
            {
              "input_source_id" : "net.mtgto.inputmethod.macSKK.hiragana"
            }
          ]
        }
      ]
    }
  ]
}
SLMNLLSLMNLL

SKK + AZIKを使ってみた、ごく個人的な感想:

  • AZIK自体はとても良い。打鍵数が減ったことで万年腱鞘炎気味の手への負荷が軽くなった
  • 一方でmacの日本語入力プログラム(特にライブ変換)に慣れた自分には、SKKは手間が増えて面倒に感じられてしまった[1](ただ、ミニマムな操作でひらがなに開いた状態で単語や文節を打ち込めるのは非常によい)
  • おそらくmacの日本語入力プログラムでAZIKを使う方法は(現実的には)存在しないため、折衷案としてGoogle日本語入力でAZIKを使うのがベストな気がする。IME自体の使用感はmacの日本語入力プログラムより若干悪いが我慢するしかない[2]
  • OSSのIMEとしてはAzookey for Desktopの感触が非常によかったので、ローマ字変換ルールを設定できるようになったら乗り換えるかもしれない
脚注
  1. 使用開始1週間時点ではSKK日本語入力プログラムで速度が最低でも2, 3倍以上差が出てしまうのが最大のネックでした。もちろんこれは慣れの問題だと思いますが、個人的にはSKK日本語入力プログラムと同程度の速度を出せるまで熟達できるイメージが湧きませんでした。 ↩︎

  2. macの日本語入力プログラム(というかライブ変換)は、日本語入力における認知負荷をかなり下げてくれる設計になっているなと実感しています。Google日本語入力と比較して変換キーの打鍵数が少なくて済み、長いIME文節も誤変換を心配せず入力できる感覚があります。また、まだ発展途上とはいえ、Azookey for Desktopにも同様の印象を抱きました。こちらはM1の学生さんが作られているとのこと。すごい。 ↩︎

SLMNLLSLMNLL

しばらく色々なIMEを渡り歩きましたが、結局今はGoogle日本語入力AZITを使用しています。

理由としては、やはりIME文節のことを考えずに文章を書きたいのと、AZIKと比較してAZITは更に運指の負担が少ないからです[1]

ただ、比較的よく使う「ました」など、そこまで打鍵数が減らない組み合わせなどもあるので、そのへんはカスタマイズが必要かもしれません。

脚注
  1. AZITのページを見るとローマ字入力の法則がずらっと並んでいて一瞬怯んでしまいますが、実際に試してみると、結構直感的な配置になっており、意外とすぐに慣れます。 ↩︎

SLMNLLSLMNLL

AZITだと「zh」「zj」などのストロークで矢印が打てないのが不便に感じることもあるので、「zxh」「zxj」などのストロークを当てました。

矢印自体そんなに頻繁に使うものでもないので、一旦3打鍵で妥協。

また、冒頭で触れたNeo AZIKからも少し拝借してみました。

  • j4 → じる
  • s4 → しる

など…

ちなみにあまり知られていませんが、macでは3点リーダは元々alt + ;で出せます。特別に変換ルールを設定するのは、キーの組み合わせ的にもったいなかったりします。