当サイトはアフィリエイトプログラムによる収益を得ています。

SwitchBotをWindowsタスクバーにまとめてみた|1つのアイコンから照明・カーテン・換気扇を操作

WindowsのタスクバーからSwitchBotの照明・カーテン・換気扇メニューを開くイラスト

以前、SwitchBot APIを使って、テレビの入力切り替えをWindows 11のタスクバーから実行できるようにした。毎日のように使う操作なので、今も「TV入力切替」は単独のアイコンとして残している。

その後、照明やカーテン、換気扇もWindowsから操作したくなった。ただし、操作の数だけショートカットを並べると、今度はタスクバーがアイコンだらけになる。

そこで今回は、WindowsタスクバーのSwitchBotアイコンをクリックし、照明・カーテン・換気扇から使いたい操作を選ぶランチャーを作った。ChatGPTと相談して仕様を決め、Codexに実際のファイル作成と修正を任せた体験をまとめる。

スポンサーリンク

完成形は「TV入力切替」と「SwitchBot」の2アイコン

Windowsタスクバーから開いた照明・カーテン・換気扇のSwitchBotランチャー
タスクバーの1アイコンから、照明4・カーテン2・換気扇2の操作を選べる。

完成後の使い方はシンプルだ。Windowsのタスクバーにある赤いSwitchBotアイコンをクリックすると、小さなメニューが開く。そこから「くつろぎ」「カーテンを開ける」「換気扇をOFFにする」といった操作を選ぶ。

つまり普段の操作は、タスクバーのSwitchBotアイコンをクリック → 照明・カーテン・換気扇から目的のボタンを選ぶ → SwitchBotのシーンが実行される、という3段階だけになった。

最初にこの完成形を決めたことで、作るべきものが「SwitchBotの全機能を扱うアプリ」ではなく、「自分がWindowsで使う8操作だけの小さな入口」だとはっきりした。

TV入力切替だけは単独で残した

タスクバーを整理するなら、TV入力切替も同じメニューへ入れる方法はある。それでも今回は独立させた。使用頻度が特に高く、メニューを開かず1クリックで実行したかったからだ。

何でも1つへ詰め込むのではなく、使用頻度を基準に「最優先の1操作」と「まとめてよい8操作」を分けた。最終的なタスクバーは、イメージどおり [ TV入力切替 ] [ SwitchBot ] の2アイコンになった。

8個を並べるより探しやすい

照明だけでも4操作あり、カーテンと換気扇を合わせると8操作になる。これらを個別にタスクバーへ置くと場所を取り、似たアイコンの中から目的の操作を探すことになる。

ランチャーでは「照明」「カーテン」「換気扇」の見出しで分かれている。ボタン数は同じでも、種類ごとにまとまっているので、どこを押せばよいか判断しやすい。タスクバーの占有は1アイコン分だけで済む。

ChatGPTとCodexに既存環境を確認してもらった

既存のTV入力切替ファイルと新しいランチャーフォルダがあるSwitchBotフォルダ
正常動作しているTV入力切替を残し、新機能は別のランチャーフォルダへ追加した。

今回、自分で一からプログラムを書いたわけではない。すでにTV入力切替で使っていたSwitchBotフォルダをCodexに確認してもらい、その構成を壊さない条件で新しいランチャーを追加した。

既存のTV入力切替は変更しない

元のフォルダには、tv-input.ps1、tv-input.vbs、TV入力切替用のショートカットがある。これらは正常に動いており、普段から使っているため、変更しないことを最初の条件にした。

Codexには作業対象を新しい「ランチャー」フォルダへ限定し、既存ファイルの認証方法や起動方法だけを参考にしてもらった。動いている仕組みを直接書き換えず、新機能を別フォルダへ分けたことで、問題が起きたときも切り分けやすい。

要望は普段の言葉で伝えた

ChatGPTには、「TV入力切替は独立させたい」「黒いPowerShell画面は出したくない」「別の場所をクリックしたら閉じてほしい」といった希望をそのまま伝えた。

プログラムの専門用語へ置き換えなくても、使い方と困っている動作を具体的に説明すれば、必要な条件へ整理できた。整理した内容をCodexへ渡し、実際のファイル作成、構文確認、メニュー表示の確認を進めた。

前回のTV入力切替を作った手順は、次の記事にまとめている。SwitchBot APIの準備や、PowerShellからシーンを実行する土台を知りたい場合はこちらが前編になる。

今回は、その環境を持っている状態から複数の操作を1つへまとめる第2弾だ。

ランチャーは使う8シーンだけに固定した

照明4・カーテン2・換気扇2を文字メニューで整理した8シーンの説明図
Windowsから使う8シーンだけを、照明・カーテン・換気扇の3グループへ整理した。

ランチャーへ登録したのは、SwitchBotにあるすべてのデバイスやシーンではない。Windowsから実行する目的があり、実際に使う次の8シーンだけに絞った。

照明・カーテン・換気扇の3グループ

照明には「くつろぎ」「シーリング ON」「シーリング OFF」「シーリング 全灯」の4操作を登録した。カーテンは「開ける」「閉める」、換気扇は「ON」「OFF」の各2操作だ。

操作名を見ただけで結果が分かるため、説明の長いボタンは必要なかった。よく使う明るさの「くつろぎ」を残し、単純なON・OFF以外も自分の生活に合わせて選んでいる。

シーンを決める前には、CodexへSwitchBot APIの一覧を読み取り専用で確認してもらった。そこで実際の登録名と一致する8シーンを選び、動作確認後はランチャーのボタンを固定した。

表示と実行を別の処理に分けた

ランチャーを開く処理は、固定された8ボタンを表示するだけにした。起動時にはシーン一覧の取得、名前の照合、認証情報の読み込みを行わない。

実際にボタンを押した時だけ、保存済みのシーン情報と既存の認証情報を読み、SwitchBot APIへ実行リクエストを送る。メニューを表示する処理と、家電を操作する処理を分けた構成だ。

Tokenや内部IDは記事へ出さない

SwitchBotのTokenやSecretは新しいファイルへ複製せず、必要になった時だけ既存ファイルからメモリ上へ読み込む構成にした。sceneIdやdeviceIdも、本文・画像・ログへ表示しない。

AIに既存環境を確認させる場合でも、秘密情報をチャットへ貼り付ける必要はない。作業フォルダを限定し、出力してはいけない情報を最初に指定することが重要だった。

使って気になった動作を追加で直した

起動時は文字メニューを表示しボタン選択後にAPIを実行する流れの説明図
起動時は固定メニューだけを表示し、API通信はボタンを押した後へ分離した。

最初の試作が動いた時点で作業を終わらせず、実際にタスクバーから何度か開いて操作感を確認した。そこで気になったのが、表示までの待ち時間と、メニューの閉じ方だった。

起動時のAPI通信を外した

初期版は、ランチャーを開くたびにSwitchBot APIへ接続し、シーン一覧を取得して名前とsceneIdを照合していた。正しく動く一方、アイコンをクリックしてからメニューが開くまでの待ちが気になった。

そこで、「8ボタンは固定でよい」「起動時にはSwitchBot関連の取得や照合をしない」「ボタンを押した後にだけ必要な処理をする」と変更を依頼した。

API通信とJSON解析を起動経路から外しても、PowerShell 5.1とWinFormsの初期化により、こちらの環境では表示まで約1秒かかった。完全な一瞬にはならなかったが、ネットワーク状態によって表示時間が変わる要因は取り除けた。

別の場所をクリックしたら閉じるようにした

もう1つの不満は、一度開いたメニューが画面に残り続けたことだ。デスクトップ、Chrome、別のタスクバーアイコンなどへ移ったら、自動的に閉じてほしかった。

そこで、ランチャーがアクティブではなくなった時に閉じる動作を追加した。内部のボタンを押した場合は、シーン実行用の処理を開始してからランチャーを閉じる。別の場所を押した時だけ消えるため、Windowsのポップアップメニューに近い感覚になった。

不満を説明して再調整できた

この作業で便利だったのは、不満をプログラム用語へ翻訳しなくてもよかったことだ。「開くのが少し遅い」「別の場所を押したら閉じてほしい」と伝え、計測結果を見ながら構成を変更できた。

AIが最初から完成形を一発で出したわけではない。試作を使い、自分の操作感に合わない部分を見つけ、追加で直した。この往復まで含めて、自分専用ツールを作る方法だと感じた。

作成されたファイルとタスクバーへの配置

表示・実行・設定用ファイルが入ったSwitchBotランチャーフォルダ
表示用と実行用を分けたファイル一式。普段はタスクバーのショートカットだけを使う。

ランチャーフォルダには、画面表示、シーン実行、キャッシュ更新、ショートカット作成など、役割ごとにファイルが分かれている。普段すべてを開くわけではなく、日常的に使うのはタスクバーのSwitchBotショートカットだけだ。

表示用と実行用を分離した

SwitchBotLauncher.ps1は固定8ボタンの小さな画面を表示する。SwitchBotLauncher.vbsは、黒いPowerShell画面を出さずに表示用スクリプトを起動する入口だ。

シーンを選んだ後はSwitchBotAction.ps1が動き、キャッシュと既存の認証情報を読み込んでAPIへ送る。表示と実行を別ファイルにしたことで、ランチャーを閉じてもシーン実行処理は続けられる。

タスクバーへ置くのはショートカット1個

作成されたSwitchBotショートカットをWindows 11のタスクバーへピン留めすれば準備は完了だ。以後は、赤いアイコンをクリックして8ボタンから選ぶだけでよい。

元のTV入力切替ショートカットはそのまま残しているので、使用頻度に合わせた2アイコン構成を維持できる。今後ボタンを増やす場合は、自動検出ではなく、その時点で必要なシーンだけを手動で追加する方針にした。

AIが作ったスクリプトは内容を確認する

AIがファイルを作ったからといって、そのまま無条件で実行してよいわけではない。操作対象、読み書きする場所、外部通信先を確認し、既存ファイルを変更しない条件を付けたうえで試した。

特にスマートホーム操作では、テストで照明やカーテンが実際に動く。実行テスト前に対象シーンを確認し、意図しない操作を送らない進め方が必要だ。

また、正常に動いているtv-input.ps1とtv-input.vbsは触らず、追加ファイルを別フォルダへまとめた。新しいランチャーに問題があっても、従来のTV入力切替まで巻き込まないためだ。AIへ作業を任せる場合も、変更してよい場所と残す場所を先に分けておくと確認しやすい。

実際に使って便利だった点と向いている人

SwitchBot操作をタスクバーの1つの入口へまとめる3つの利点を示す説明図
タスクバーを増やさず、照明・カーテン・換気扇を種類ごとに選べるようにした。

タスクバーを増やさず操作をまとめられる

実際に使って便利だったのは、タスクバーを占有しないことと、操作の入口が毎回同じことだ。SwitchBotアプリを開いて部屋やデバイスを探さなくても、Windowsを使っている最中ならタスクバーから呼び出せる。

照明、カーテン、換気扇がカテゴリーで分かれているため、8ボタンでも迷いにくい。よく使うTV入力切替だけを別に残した判断も、自分の使用頻度には合っていた。

すでにSwitchBotシーンを使っている人に向く

この方法は、SwitchBotアプリでシーンを作成済みで、Windows PCを日常的に使う人に向いている。既存のシーンを呼び出す小さな入口なので、複雑なスマートホーム管理画面を新しく作る必要はない。

一方、スマートフォンだけで操作が完結している人や、Windowsから実行したい操作が1つしかない人には、ここまでのランチャーは必要ない。自分の操作数と使用頻度に合わせて、単独ショートカットとランチャーを使い分けるのがよいと思う。

小さな「わがまま」を形にしやすかった

今回一番面白かったのは、SwitchBotをWindowsから操作できたことだけではない。「TV入力切替だけは単独」「その他8個は1つへ格納」「起動時には通信しない」「別の場所を押したら閉じる」という、かなり個人的な希望まで調整できたことだ。

以前なら、ここまで自分好みにするには自分でプログラムを書く必要があり、途中で諦めていたと思う。今回はChatGPTと仕様を相談し、Codexに既存環境を確認してもらい、実際に使った感想を追加の修正へつなげられた。

もちろん、AIへ一度頼めば最初から完璧なものが出てくるわけではない。それでも、小規模な自分専用ツールなら、プログラムレベルの細かな「わがまま」を普段の言葉で相談しながら形にしやすくなったと感じている。