Vialは、QMKで動く自作キーボード・メカニカルキーボードのキー配列やマクロを、パソコンの画面から書き換えるための無料のオープンソースソフトです。キー割り当ての変更はその場でキーボードに保存され(マクロ・タップダンス・コンボはSaveを押した時点で保存)、ファームウェアを作り直す必要はありません。なお英単語の vial は薬剤を入れる小瓶(バイアル)の意味で、この記事で扱うのはキーボード用のソフトです。
以下は2026年9月時点の最新版v0.7.5を前提に、公式ドキュメントとソースコードで確かめた内容です。
まとめ:Vialの要点
- 正体:QMKのフォーク「vial-qmk」(ファームウェア)と設定アプリ「vial-gui」の組み合わせ。ライセンスはGPL-2.0で、ソフトは無料です。
- 使い方:Vial対応ファームのキーボードをUSBでつなぎ、画面上段のキーを選んで下段から割り当てを選ぶだけ。キー割り当ては即座に、マクロなどはSaveでキーボードへ保存されます。
- Web版:vial.rocks をChrome・Chromium・Edgeで開けば、インストールなしで同じ操作ができます。
- VIAとの違い:Vialはキーボードの定義をファームに内蔵するので、中央リポジトリへの登録を待たずに使えます。タップダンス・コンボ・キーオーバーライドもGUIで設定できます。
- 注意点:VIA用ファームのままでは動かないか機能が限られます。Vial対応ファームへの書き換えが前提です。
Vialの正体:vial-qmkとvial-guiの2層構成
Vialは1本のソフトではなく、キーボード側とパソコン側の2つで成り立っています。公式サイト(get.vial.today)の説明は「Windows・Linux・Mac対応のGUIと、キーボードをリアルタイムに設定するためのQMKフォーク」です。
| 構成要素 | 役割 | リポジトリ |
|---|---|---|
| vial-qmk | キーボードに書き込むファーム | vial-kb/vial-qmk(vialブランチ) |
| vial-gui | デスクトップ版とWeb版の設定アプリ | vial-kb/vial-gui |
| vial.json | キーの物理配置の定義(ファームに内蔵) | 各キーボードの keymaps/vial |
アプリの最新版はv0.7.5(2025年8月2日公開)で、ダウンロードページでは今も「beta」と表示されています。直前のv0.7.4(2025年7月12日)でCaps Word・Layer Lock・PDF(layer)などのキーコードと、QMK設定のFlow Tap・Chordal Holdが加わり、v0.7.5ではColemak DH配列の表示が追加されました。2026年9月時点でv0.7.5より新しいリリースは出ていません。
VIA・ZMK Studioとの違い
VIAとの違い:定義JSONの置き場所とGUIで触れる機能
VialとVIAの差は「キーボードの定義をどこに置くか」に集約されます。VIAは、キーボードのソースがQMK本家にマージされ、keymaps/viaがVIA側のユーザースペースにマージされ、定義JSONをVIAのリポジトリへプルリクエストする、という3条件を満たして初めて自動認識されます。Vialは vial.json をファームに埋め込むため、キーボードをつなげばアプリが配置を読み取ります。
| 項目 | Vial | VIA |
|---|---|---|
| 設定アプリ | デスクトップ版+Web版 vial.rocks | Web版 usevia.app |
| ファーム | vial-qmk(QMKフォーク) | QMK本家 |
| キー配置の定義 | ファームに内蔵 | VIAのリポジトリに登録 |
| タップダンス・コンボ | GUIで設定可 | 公式説明に記載なし |
| セキュリティロック | あり | 公式説明に記載なし |
| ライセンス | GPL-2.0 | GPL-3.0(Webアプリ) |
VIAのWebアプリもGPL-3.0で公開されているので、オープンソースかどうかは両者の違いになりません。VIAの公式説明が挙げる機能はキーマップ・マクロ・RGB設定で、Vialはそこにタップダンス、コンボ、キーオーバーライド、Alt Repeat Key、QMK Settings、マトリクステスターのタブが加わります。VIA用の定義JSONは vial.json の作成元として利用できますが、公式ガイドは内容の確認・編集と、Vialアプリの「Load dummy JSON」による表示確認を案内しています(QMKの info.json は流用できません)。
ZMK Studioとの違い:無線対応と設定可能な機能
分割型の無線キーボードでよく使われるZMKにも、再書き込みなしでキーマップを変える「ZMK Studio」があります。ZMKはZephyr RTOS上のMITライセンスのファームで、無線を前提に設計されています。ZMK StudioはUSBとBluetooth(BLE接続はLinuxのWeb版とネイティブアプリのみ)で編集できますが、公式の機能表ではタップダンス・マクロ・コンボの設定は「Planned(予定)」のままです。
有線のQMK系キーボードでタップダンスやコンボまでGUIで詰めたいならVial、nRF52840などの無線マイコンで組むならZMKです。VialはQMKのフォークなので、ZMKのキーボードでは使えません。
Vialの使い方:アプリ版とWeb版の始め方
アプリ版のダウンロードと起動(Windows・macOS・Linux)
公式のダウンロードページに、Windowsのインストーラーとポータブル版、macOSのdmg、LinuxのAppImageが並んでいます。WindowsとmacOSは実行するだけです。LinuxではAppImageに実行権限を付けてから起動します。
chmod +x ~/Downloads/Vial*.AppImage
~/Downloads/Vial*.AppImage
起動後にVial対応キーボードをつなぐと自動で検出され、上部に Keymap・Layout・Macros・Lighting・Tap Dance・Combos などのタブが並びます。タブはキーボードのファームが対応している機能の分だけ表示されます。
Web版vial.rocksの対応ブラウザ
Web版のvial.rocksは、ブラウザからUSB機器と通信するWebHIDを使います。ページには最新のChrome・Chromium・Edgeを推奨すると書かれており、WebHIDに対応していないブラウザでは「Start Vial」を押してもエラーになります。会社のPCでアプリをインストールできない場合や、一度だけ設定を変えたい場合はWeb版で足ります。
Linuxで認識されないときのudevルール
LinuxではキーボードのHIDデバイスに一般ユーザーが書き込めず、Vialが検出しないことがあります。公式マニュアルは、Vialファームだけに一致するudevルールを /etc/udev/rules.d/59-vial.rules に書く方法を案内しています。
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{serial}=="*vial:f64c2b3c*", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
sudo udevadm control --reload
sudo udevadm trigger
以前のマニュアルはファイル名を 99-vial.rules としていましたが、systemd側の変更(systemd issue #39056)に合わせて 59-vial.rules に改められました。以前の手順で設定して最近認識されなくなった場合は、ファイル名の番号を変えてください。
日本語配列(JIS)への表示切り替え
初期状態のキーの表示はUS配列です。メニューの「Keyboard layout」から「Japanese (QWERTY)」を選ぶと、記号キーの表示がJIS配列の刻印に合わせて変わります。変換・無変換・円記号も、それぞれ KC_HENK・KC_MHEN・KC_JYEN として割り当てられます。OSの入力設定がJISなのにVialの表示がUSのままだと、記号キーの割り当てを取り違えやすくなります。
キーマップの編集とレイヤー切り替えキー
編集は、上段のキーボード図で変えたいキーをクリックし、下段のパレットから割り当てるキーを選ぶだけです。変更はすぐキーボードに書き込まれ、保存ボタンはありません。設定一式は File メニューの「Save current layout…」で .vil ファイルに書き出せます。ファームを書き直す前や別のPCへ移る前に保存しておくと、「Load saved layout…」で元に戻せます。
レイヤーは既定で4枚まで使えます(ファームの設定で最大32枚)。上部の番号でレイヤーを切り替えて編集し、下段パレットの Layers タブから切り替えキーを割り当てます。
| キーコード | 動作 |
|---|---|
| MO(n) | 押している間だけレイヤーnを有効化 |
| TG(n) | 押すたびにレイヤーnをオン・オフ |
| TO(n) | レイヤーnだけを有効にし他を無効化 |
| TT(n) | 長押しでMO、5回タップでTG |
| OSL(n) | 次の1キーだけレイヤーnを有効化 |
| LT n (kc) | 長押しでレイヤーn、タップでキーkc |
| DF(n) | 既定レイヤーを変更(電源断で戻る) |
| PDF(n) | 既定レイヤーを変更(電源断後も保持) |
| Layer Lock | MO・LT・OSL・TTで入ったレイヤーを固定 |
レイヤーは重ねた状態で複数同時に有効になり、番号の大きいレイヤーが優先されます。下のレイヤーへ戻るキーはMOではなくTOで作るのが原則です。▽の表示は「透過」で、下のレイヤーの割り当てがそのまま使われます。LM(レイヤー, 修飾キー) のようにパレットにないキーコードは「Any key」機能で直接入力できます。
マクロ・タップダンス・コンボ・キーオーバーライドの設定
マクロ:既定16個、記録機能は下書き用
Macros タブで M0〜M15 の16個(既定値)を編集できます。右下の「Add action」でキーの押下・タップ・解放・待ち時間を並べるか、「Record macro」でキーボードから直接記録します。公式マニュアル自身が記録は「あまり信頼できない」と書いているので、記録したものを Add action で整える使い方が確実です。編集後は Save を押すまで反映されません。作ったマクロは、キーマップ画面で下段の Macro タブから割り当てます。
タップダンス:1キーへの4動作の割り当て
Tap Dance タブの各スロットに、On tap(タップ)、On hold(長押し)、On double tap(2回タップ)、On tap + hold(タップ後に長押し)の4動作と、タップと長押しを分ける時間 Tapping term を設定します。たとえばタップでWindowsキー、長押しでレイヤー1という割り当てができます。設定後にSaveを押し、Keymap画面で対象の物理キーを選んで、下段のTap Danceから設定したスロットを割り当てます。スロット数はマイコンのEEPROM容量から自動で決まります。
コンボ(同時押し):最大4キーで1つの動作
Combos タブでは、最大4つのキーの組み合わせに1つの出力を割り当てます。コンボ判定時間(combo term)内に全キーが押されると発動し、キーマップのどこかに割り当てる必要はありません。「A+SでEsc」「=とBackspaceでDelete」のように、手の位置を動かさずに使う記号やEscを作るのが定番です。判定時間は QMK Settings の Combo 項目で変えます。Combosタブの編集後はSaveを押して設定を保存します。
キーオーバーライドとAlt Repeat Keyの動作例
Key Overrides は「修飾キー+キー」の組み合わせを別の組み合わせに置き換える機能で、Shift+1で「!」以外を出す、といった変更ができます。Alt Repeat Key は直前のキーの「逆の動作」を出すキーで、Ctrl+Shift+→(次の単語を選択)の後に Ctrl+Shift+← を出すような定義ができます。Alt Repeat Keyの設定画面はv0.7.4で加わりました。
QMK Settingsで調整するタイミング
QMK Settings タブでは、Tapping term などのタップ・ホールド設定、Auto Shift、コンボ、ワンショットキー、マウスキー、Grave Escape、Magicキーの細かい値を変えられます。「長押しのつもりがタップになる」「速く打つと修飾キーが誤爆する」といった症状は、キーマップより先にここの値を疑ってください。
Vial対応ファームの確認と書き込み
対応状況の確認:keymaps/vialフォルダの有無
自分のキーボードがVialに対応しているかは、vial-qmkリポジトリの keyboards/ 以下で、そのキーボードに vial という名前のkeymapフォルダがあるかで判断できます。公式のルールでVialへ移植したkeymapは必ず vial と名付けるので、名前で一意に探せます。GitHubのコード検索では、vial-qmkに vial.json が528件あります(2026年9月27日時点)。フォルダが無い場合も、メーカーが独自に配布していることがあるので販売ページを確認してください。
書き込み方法:マイコンごとの使い分け
書き込み手順はVialではなくキーボードのマイコンとブートローダーで決まります。
| マイコン・ブートローダー | 書き込み方法 |
|---|---|
| ATmega32U4(Pro Micro・Caterina) | QMK Toolbox か qmk flash |
| STM32(DFU) | QMK Toolbox か qmk flash |
| RP2040(UF2) | ドライブとして見える領域へ .uf2 をコピー |
| Vial専用ブートローダー(vibl) | Vialアプリの Firmware updater で .vfw |
QMK ToolboxはWindowsとmacOS向けのアプリです。VialアプリのFirmware updaterタブは、vibl搭載のキーボードをつないだときだけ表示されます。RP2040は Raspberry Pi Pico W にも載っているマイコンで、BOOTSELボタンを押しながらUSBを挿すとUF2ブートローダーに入ります。リセットのダブルタップで入れるのは、ファームでその機能を有効にしたボード(Pro Micro RP2040は既定で有効)だけです。リセットボタンが無いキーボードでも、ファームでBootmagicが有効なら、マトリクスの[0,0](多くはEsc)を押しながらUSBを挿すとブートローダーに入れます。
自作キーボードをVialに対応させる手順(vial-qmkでのビルド)
ビルド環境の準備:QMK本家とは別フォルダにclone
まずQMK本家の手順でQMK CLIを入れます。WindowsはQMK MSYS、macOSとLinuxは curl -fsSL https://install.qmk.fm | sh です。そのうえでvial-qmkを本家の qmk_firmware の外側にcloneします(中に入れ子にすると不具合が出ると公式が明記しています)。Git が必要です。
git clone https://github.com/vial-kb/vial-qmk
cd vial-qmk
make git-submodule
qmk doctor
make vial_example/vial_atmega32u4:default
qmk doctor で「upstream が設定されていない」という警告が出るのは、本家リポジトリではないためで問題ありません。ビルドは qmk compile ではなく make を使ってください。qmk compile を別の場所で実行すると本家QMKのファームがビルドされます。qmk env の QMK_HOME が vial-qmk を指しているかも確認し、違えば qmk config user.qmk_home=<vial-qmkのパス> で直します。
keymaps/vialに置く4つのファイル
既存の keymaps/default をそのまま keymaps/vial にコピーし、次の3ファイルを足します。
# keymaps/vial/rules.mk
VIA_ENABLE = yes
VIAL_ENABLE = yes
/* keymaps/vial/config.h */
#pragma once
#define VIAL_KEYBOARD_UID {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX}
#define VIAL_UNLOCK_COMBO_ROWS { 0, 2 }
#define VIAL_UNLOCK_COMBO_COLS { 0, 13 }
- rules.mk:2行とも必須で、VIA_ENABLEを消してはいけません。キーボード直下の rules.mk には書かず、keymaps/vial 側に書きます。
- config.h:UIDは vial-qmk の直下で
python3 util/vial_generate_keyboard_uid.pyを実行して生成します。UIDは機種ごとに1つで、個体ごとに変える必要はありません。UNLOCK_COMBOは解除に使うキーの行・列で、上の例は公式ガイドの配列におけるEsc[0,0]とEnter[2,13]です。座標は機種ごとに異なるため、自分のキーボードのマトリクスに合わせて置き換えてください。 - vial.json:キーの物理配置の定義です。VIA用の定義JSONを流用できます。
最後に make <キーボードのパス>:vial でビルドし、前章の方法で書き込みます。
「firmware is too large」への対処
Vialは既定で全機能を有効にするため、Pro MicroのようなAVRマイコンではフラッシュやEEPROMが足りなくなりがちです。公式の例では The firmware is too large! 30768/28672 (2096 bytes over) と表示されます。削る候補は次のとおりです。表のconfig.h向け設定は略記で、実際には各行の先頭に #define を付けます(例:#define DYNAMIC_KEYMAP_LAYER_COUNT 2)。x は希望するスロット数の整数に置き換えてください。
| 設定 | 書く場所 | 削れるもの |
|---|---|---|
| LTO_ENABLE = yes | rules.mk | コードサイズ(最適化) |
| QMK_SETTINGS = no | rules.mk | サイズ・RAM・EEPROM |
| DYNAMIC_KEYMAP_LAYER_COUNT 2 | config.h | EEPROM |
| DYNAMIC_KEYMAP_MACRO_COUNT x | config.h | EEPROM |
| VIAL_TAP_DANCE_ENTRIES x | config.h | EEPROM |
| VIAL_COMBO_ENTRIES x | config.h | EEPROM |
| TAP_DANCE_ENABLE = no など | rules.mk | 機能ごと無効化 |
QMK_SETTINGSを切るとタップ・ホールドの時間などをGUIで変えられなくなり、Vialの利点の多くを失います。先にLTOと使わない機能の無効化を試してください。最後の手段としてPro Microの標準ブートローダーCaterina(約3,500バイト)を512バイトのnanoBootに替える方法もありますが、ISPライターが必要で、配布先の利用者も同じ交換を強いられます。
vial-qmkが追従しているQMKの版
vial-qmkは本家QMKを定期的に取り込むフォークです。コミット履歴を見ると、vialブランチに最後に統合された取り込みは2025年6月21日時点の本家(作業ブランチ merge-2025-06-21、2025年7月12日統合)です。2025年12月28日時点の本家を取り込む merge-2025-12-28 ブランチは、2026年9月27日時点でvialブランチより445コミット先行したまま統合されていません。QMK本家は2025年8月以降も破壊的変更を入れているため、本家の最新版向けに書かれたキーボード定義をコピーするとビルドが通らないことがあります。公式ガイドもQMKの版に合わせた修正が要る場合があると注意しています。
セキュリティロックの仕組みとVIAL_INSECUREを避ける理由
Vialには、悪意のあるソフトが入ったPCにキーボードのファームやマクロを勝手に書き換えられないための「ロック」があります。キーボードはロック状態で起動し、アプリの Security → Unlock を選ぶと、config.hで指定したキーを数秒間押し続けるよう求められます。ロック中は次の操作ができません。
- マクロの変更
- ブートローダーへの切り替え(ファームの書き換え)
- RESETキーコードの割り当て
解除中はPCを信頼している前提になるため、監視ソフトが入った会社のPCでは解除しないよう公式が注意しています。再ロックはキーボードの抜き差しか Security → Lock です。
rules.mkに VIAL_INSECURE = yes を書けばロック自体を無効にできますが、この設定のキーボードはvial-qmkの本体リポジトリに受け入れられません。解除キーの設定が面倒という理由だけでINSECUREにするのはやめるべきです。公式ガイドは、解除キーを2つ以上にし、複数レイアウトのキーボードではどのレイアウトにも存在するキーを選ぶよう求めています(例はEscとEnter)。
認識されない・書き込めないときの切り分け
| 症状 | まず疑う原因 | 対処 |
|---|---|---|
| アプリにキーボードが出ない | VIA用・通常QMKのファーム | Vial対応ファームを書き込む |
| Linuxだけ出ない | hidrawの権限 | 59-vial.rulesを置く |
| Web版だけ動かない | WebHID非対応ブラウザ | Chrome・Edgeで開く |
| マクロが保存できない | ロック中 | Security → Unlock |
| ビルドで容量超過 | 全機能が有効 | LTO・機能の削減 |
| 書き込みツールが検出しない | ブートローダーに入っていない | リセットかBootmagic |
光り方を変えたいのにLightingタブが出ない場合は、ファームの照明機能とvial.jsonのlighting設定を確認してください。RGB制御が有効でも、Vial側の設定が不足している場合があります。PC側からキーボード以外のRGB機器とまとめて制御したい場合は OpenRGB のような別系統のツールを使います。
よくある質問
Vialは無料ですか?対応OSは?
無料です。GPL-2.0のオープンソースで、アプリはWindows(インストーラー・ポータブル版)、macOS(dmg)、Linux(AppImage)向けに配布されています。Web版のvial.rocksはOSを問わず、WebHID対応ブラウザで動きます。
VIA対応キーボードはそのままVialで使えますか?
公式マニュアルによると、VIA用ファームのままではVialに認識されないか、一部の機能しか使えません。デスクトップ版には File → Sideload VIA JSON や Download VIA definitions といったVIAの定義を読み込むメニューがありますが、タップダンスなどVialの機能を使うにはVial対応ファームへの書き換えが必要です。対応ファームはメーカーの配布物か、vial-qmkの keymaps/vial から入手します。
Vialで変更した設定はどこに保存されますか?
キーボード本体に保存されます。キー割り当ては即座に保存されますが、マクロなどの編集にはSave操作が必要です。保存済みの配列は別のPCにつないでも保持されます。バックアップとして File → Save current layout で .vil ファイルに書き出しておけば、ファームを書き直した後に読み込んで戻せます。
Vialのweb版(vial.rocks)の使い方は?
Chrome・Chromium・Edgeで vial.rocks を開き、「Start Vial」を押して表示されるデバイス一覧からキーボードを選びます。キーマップ編集などの画面はアプリ版と同じです。違いは、最初にブラウザへUSB機器へのアクセスを許可することと、VIA定義の読み込み(Sideload VIA JSONなど)がデスクトップ版にしかないことです。
Bluetoothの無線キーボードでもVialは使えますか?
Vialが使えるのは、Vial対応のQMKファーム(vial-qmk)で動くキーボードです。無線の自作キーボードで多いZMKファームには使えず、その場合はZMK Studioでキーマップを変えます。