• #日記
  • #vscode
  • #vue
  • #github-copilot
  • #リアクティビティ
daily-log

2026年1月18日の開発日記

VS CodeでCopilotのコミットメッセージ生成をショートカットで呼び出したいと思い調査したところ、既知のバグに遭遇。また、tax-assistantのCF Viewerに仕訳のチェックボックス機能を実装した際、Vue.js 3のSet型リアクティビティに関するハマりポイントがあった。

今日やったこと

1. VS CodeのCopilotコミットメッセージ生成ショートカット問題

ソース管理パネルにある「コミットメッセージの自動生成」ボタン(スパークルアイコン)をキーボードショートカットで呼び出したかった。毎回マウスクリックするのが面倒だったため。

主な成果:

  • Ctrl+K G などの競合しにくいショートカットパターンを調査
  • github.copilot.git.generateCommitMessage にキーバインドを設定
  • 設定後、ボタンにホバーするとショートカットが表示されるようになった
  • しかし、実際にショートカットを押しても動作しない

原因: VS CodeのGitHub Issue(#204301, #210346)で報告されている既知のバグ。VS Codeチームが「bug」ラベルを付け、再現確認済みのステータスにしている。修正時期は不明。

詳細: VS CodeのCopilotコミットメッセージ生成にショートカットが効かない問題【既知のバグ】


2. CF Viewer 仕訳チェックボックス機能の実装

キャッシュ・フロー計算書ビューアに、仕訳を個別に選択/解除できるチェックボックス機能を追加した。選択した仕訳だけを精算表に反映させることで、学習時に「この仕訳を入れたらどうなるか」を確認できるようになる。

主な成果:

  • Vue.js 3 Composition APIでのチェックボックス機能実装
  • IDベースの仕訳管理(checkedEntryIds をSetで管理)
  • 精算表との連動計算(filteredEntries computed を使用)
  • 一括チェック/解除ボタンの追加

ハマりポイント: Vue.js 3でSetをrefで管理する場合、set.add()set.delete() を呼んでもリアクティビティが発動しない。新しいSetを作成してrefに再代入するパターンが必要。

// NG: 変更が検知されない
checkedEntryIds.value.delete(entryId);

// OK: 再代入で検知される
const next = new Set(checkedEntryIds.value);
next.delete(entryId);
checkedEntryIds.value = next;

詳細: Vue.js 3でSet型のリアクティビティを確保する方法【CF Viewer チェックボックス機能】


今日の学び

  • VS Codeの拡張機能コマンドはキーバインドが効かないケースがある - Issue報告があるか確認してから深追いする
  • Vue.js 3のSetリアクティビティは再代入パターンで解決 - reactive() を使う方法もあるが、refと統一した方がシンプル
  • 競合しにくいショートカットパターン: Ctrl+K X 形式(コードシーケンス)か Ctrl+Shift+Alt+X 形式(3修飾キー)

関連記事