マクロパッドのコスパ比較|エンジニアが選ぶならどれ

ガジェット

※この記事にはプロモーションが含まれます

MacBook Air(M2)にAnkerのUSB-Cハブをつないで外部モニターを使っているんですが、ショートカットをもっと楽に押したくなってきて、マクロパッドを調べてみました。

調べ始めると、液晶ボタン付きのStream Deck系から、QMK/VIAで中身をいじれる自作キーボード寄りのもの、Pythonで動くものまで種類がかなり多いです。「エンジニアがコスパ重視で選ぶならどれか」という視点で、自分用に整理しておきます。

この記事でわかること

  • エンジニア向けマクロパッド4モデルの違いと、それぞれ向いている人
  • 「ソフト常駐型」と「QMK/VIA型」の違い(会社PCで使えるかどうかに関わる)
  • Pythonで動くマクロパッドのコード例
  • レイヤーの仕組みをPythonで再現したサンプル

マクロパッド比較:今回選んだ4モデル

モデル名 主な違い 向いている人
Elgato Stream Deck Neo 液晶キー8個+タッチポイント2つ。専用アプリで設定する。キーにアイコンが出る マウス操作でサクッと設定したい人。最初の1台を探している人
Keychron Q0 Max テンキー型でQMK/VIAに対応。ワイヤレス接続にも対応した金属筐体のモデル テンキーのないノートPCを使っていて、テンキーとマクロを1台で済ませたい人
DOIO KB16 16キー+ノブ3つ+小型ディスプレイ。VIA対応で、スイッチをホットスワップできる キーもノブもたくさん欲しい人。打鍵感までこだわりたい人
Adafruit MacroPad RP2040 12キー+ロータリーエンコーダー+OLED。CircuitPythonでプログラムを書いて動かす Pythonが書けて、マクロの中身を自分で作りたい人

価格はセールや為替で変わるので表には入れていません。ざっくり言うと、Stream Deck Neoは発売当時1万円台前半くらいとされています。Adafruit MacroPadは海外レビューだと完成キットが49ドル、ベアボーンが34ドルとして紹介されていました。Keychron Q0 Maxは金属筐体なので4つの中では高めです。

マクロパッド選びの重要なポイント:ソフト常駐型 vs QMK/VIA型

調べていて一番大事だと思ったのがここです。マクロパッドは大きく2タイプに分かれます。

  • ソフト常駐型:PCに専用アプリを入れて、そのアプリがボタン入力を受け取って動作を実行する(Stream Deckなど)
  • ファームウェア型(QMK/VIAなど):キーマップを本体に書き込む。PCからは「普通のキーボード」に見える

ソフト常駐型は、アプリ起動・URLを開く・プラグイン連携など、できることがとにかく多いです。ただ、アプリが動いていないと何もできません。会社のPCで勝手にソフトを入れられない環境だと、ここが引っかかるかもしれません。

ファームウェア型は、一度設定を書き込めば別のPCにつないでもそのまま動きます。VIAならブラウザから設定できるものもあるようです。そのかわり、送れるのは基本的に「キー入力」なので、ショートカットや文字列入力までが得意分野です。

個人的には、エンジニアの用途(IDEのショートカット、よく打つコマンド)だとファームウェア型で十分なことが多いと思っています。ただ、「ボタンにアイコンが出る」のは想像以上に便利だというレビューも多いので、どちらがいいかは人によりそうです。

マクロパッドでよく使われるレイヤーの仕組み

QMK系のマクロパッドを調べると必ず出てくるのが「レイヤー」です。特定のキーを押している間だけ、ほかのキーの役割が切り替わる仕組みですね。キー数が少ないパッドでも、レイヤーを使えば実質的に倍以上の操作を割り当てられます。

QMKの「透過キー(そのレイヤーで未定義なら下のレイヤーの動作を使う)」の考え方を、Pythonでざっくり再現してみました。

KEYMAP = [
    {"K1": "cmd+shift+p", "K2": "ctrl+`", "K3": "cmd+k cmd+s", "K4": "MO(1)"},
    {"K1": "git status", "K2": "docker compose up -d", "K3": None, "K4": "MO(1)"},
]

def resolve(key, active_layers):
    # 上のレイヤーから順に見て、None(透過)なら下に落ちる
    for layer in sorted(active_layers, reverse=True):
        action = KEYMAP[layer].get(key)
        if action is not None:
            return action
    return None

for held in ([0], [0, 1]):
    print(f"layers={held}")
    for k in ("K1", "K2", "K3"):
        print(f"  {k} -> {resolve(k, held)}")

実際に実行した結果
▲実際にこのブログの裏側で実行してみた結果です

K4(MO(1))を押している間はレイヤー1が有効になって、K1・K2がgitやdockerのコマンドに変わります。K3はレイヤー1では未定義なので、レイヤー0の動作がそのまま使われる、という流れです。実際のQMKはもっと複雑で、レイヤーの状態をビットで管理していたりするんですが、イメージとしてはこれで合っているはずです。

エンジニアにおすすめのマクロパッド4モデル

Elgato Stream Deck Neo

「マクロパッド」と聞いて一番に名前が挙がるのがStream Deckシリーズだと思います。Neoはその中の入門向けモデルで、2024年4月に発売されています。液晶キーが8個あり、2つのタッチポイントの間にある「Infobar」でキーのページを切り替えられます。

レビューでは「小さいのに液晶がきれい」「配信者じゃなくても日常作業で便利」という声が多いです。設定は専用アプリにアクションをドラッグ&ドロップするだけなので、ハードルはかなり低いです。

エンジニア的には、ターミナルを開く・特定のリポジトリをエディタで開く・AWSコンソールのURLを開くなど、「アプリを起動する系」の操作と相性がいいと思います。逆に、前の章で書いたとおり常駐アプリが必要なので、会社PCで使う予定の人は事前に確認したほうがよさそうです。

Keychron Q0 Max

Keychronのテンキー型パッドで、QMK/VIAに対応しています。海外のマクロパッドガイドでは、「普段はテンキー、レイヤーでマクロパッド」という使い方ができるハイブリッド型の代表として紹介されていました。

MacBook Airにはテンキーがないので、数字入力とマクロを1台で済ませられるのはありがたいです。Maxシリーズはワイヤレス接続にも対応しているので、USBハブのポートを1つ空けられるのも地味に助かります。自分の環境だと、ハブのポートはわりとすぐ埋まるので……。

気になるのはサイズと重さです。アルミ削り出しの筐体なので高級感はありますが、ちょっとしたマクロパッドとしてはしっかりした大きさです。自分の机は奥行き60cmで、キーボードの横に置くと横幅はけっこう取られそうです。

DOIO KB16

16キー+ノブ3つ+小型ディスプレイという、「全部入り」に近い構成のマクロパッドです。VIAに対応していて、ブラウザからキーマップを変えられます。ホットスワップ対応なので、キースイッチを好きなものに差し替えられるのもポイントです。

国内のおすすめ記事では「カスタム重視の高コスパモデル」として紹介されていることが多く、自作キーボード界隈でも定番っぽいと言われています。ノブが3つあるので、1つは音量、1つはエディタのズーム、1つはタブ切り替え……のように分けられます。

このあたりを調べていると「キースイッチを変えると打鍵感が全然違う」という話が次々に出てきて、キースイッチ沼の入口が見えてきます。財布のためにも、深入りしすぎないよう気をつけたいところです。

Adafruit MacroPad RP2040

今回いちばん「エンジニア向け」だと思ったのがこれです。RP2040(Raspberry Pi Picoと同じマイコン)を積んだ12キーのパッドで、ロータリーエンコーダー、128×64のOLED、キーごとのRGB LEDがついています。そして何より、CircuitPythonでマクロの中身を書けるのが特徴です。

海外のガイドでも「市場で一番ハックしやすいマクロパッド」という評価があるようです。KMK(CircuitPythonで動くキーボード用ファームウェア)を入れてQMK風に使うこともできるらしいです。

公式ライブラリ adafruit_macropad を使うと、だいたいこんな感じで書けるようです(実機がないと動かないコードです)。

from adafruit_macropad import MacroPad

macropad = MacroPad()
last_position = macropad.encoder

while True:
    event = macropad.keys.events.get()
    if event and event.pressed:
        if event.key_number == 0:
            macropad.keyboard.send(
                macropad.Keycode.COMMAND, macropad.Keycode.SHIFT, macropad.Keycode.P
            )
        elif event.key_number == 1:
            # ここ注意: キーボードレイアウトはUS配列前提。JIS環境だと記号がずれることがある
            macropad.keyboard_layout.write("git status\n")

    position = macropad.encoder
    if position != last_position:
        code = (
            macropad.ConsumerControlCode.VOLUME_INCREMENT
            if position > last_position
            else macropad.ConsumerControlCode.VOLUME_DECREMENT
        )
        macropad.consumer_control.send(code)
        last_position = position

「キーを押したら文字列を送る」がPythonの1行で書けるのは、Python使いとしてかなり魅力的です。条件分岐も自由に書けるので、「1回押しと長押しで動作を変える」「OLEDに今のモードを表示する」みたいなことも自分で作れます。

ただ、JIS配列のMacで keyboard_layout.write() を使うと記号が化けるかもしれない点は、正直まだちゃんと調べきれていません。JIS用のレイアウト定義を自分で用意する必要がありそうです。国内だと取り扱っているお店が限られるようなので、そのあたりも少しハードルになるかもしれません。

エンジニアなら何をマクロパッドに割り当てるか

買う前に「何を割り当てるか」を考えておかないと、机の上の飾りになりがちだという話もよく見かけます。自分の普段の作業から考えると、候補はこんな感じです。

  • エディタのコマンドパレット(cmd+shift+p)
  • ターミナルの表示・非表示
  • git status や git diff などのよく打つコマンド
  • docker compose up -d / down
  • uv run 系のコマンド
  • Claude Codeなどで定型の指示をよく使うなら、その文字列入力

コマンドを丸ごと文字列として送る場合は、最後に改行を入れるかどうかで迷います。改行まで入れると押した瞬間に実行されるので便利ですが、本番環境につながったターミナルで誤爆したら怖いです。破壊的なコマンドは割り当てない、くらいのルールは決めておいたほうがよさそうです。

まとめ:マクロパッドのコスパ重視での選び方

  • 手軽さとアイコン表示を重視するなら Elgato Stream Deck Neo
  • テンキーとマクロを1台で済ませたい・ワイヤレスがいいなら Keychron Q0 Max
  • キーとノブの数を重視するなら DOIO KB16
  • Pythonでマクロの中身を作りたいなら Adafruit MacroPad RP2040

コスパという意味では、「何をしたいか」によって答えが変わるな、というのが調べてみての感想です。自分は今のところAdafruit MacroPadにかなり惹かれていますが、JIS配列まわりがクリアになるまではもう少し調べるつもりです。

タイトルとURLをコピーしました