[StealthKey:ホットキー送信ツール] 開発記録 #1|要件定義:開発を始めたきっかけと背景

開発記録

はじめに

こんにちは、てすとです!

今回は、数年前に勢いで作ったホットキー送信ツールを、もう一度要件から考えて作り直していこうと思います。

第1回目では、開発のきっかけや要件をまとめて整理してみました。

背景と課題

きっかけは、当時なんとなく他のOSも触ってみたいなーと思ってインストールしたLinux環境で、初めてVimを触ったときでした。

キーボードだけで、ホームポジションを崩さずにカーソル操作できる便利さを知って、「普段の作業にも取り入れたいな」と思ったのが始まりです。

最初は自分のパソコンでフリーソフト(ほにゃららHotkey)を使ってホットキーを組んで使ってたんですが、そのうち職場でも使いたくなってきました。

しかし、外部ツールのインストールには申請が必要で結構めんどくさい+クローズド環境。
それなら、勉強がてら自分で作ってみるか! と思って作り始めました。
(※当時はPowerShellもC#も触ったことありません。完全に勢いです。)

今回は、当時作った PowerShell × C# 版のツールの発想をベースに、もう少し実用的に改修していきます。

要件

機能要件

  • 複数キー押下(最大3キー)に対応して、任意のホットキーが送信できること
  • ホットキーの設定は、プログラムを修正せずに外部ファイル(json)で柔軟に変更できること

非機能要件

  • タスクトレイに常駐し、邪魔にならないこと
  • 追加インストールなしで、Windows 10環境でそのまま動作すること
    ※ 動作環境については以下参照

動作環境

今回はクローズド環境での使用を想定しており、
Windows 10 22H2(64bit)の初期インストール状態を基準としています。

手持ちの環境で確認したところ、初期インストール時点での構成は以下の通りです。

  • OS:Windows 10 22H2(64bit)
    ※ まもなくサポート終了予定ですね
  • PowerShell:5.1
  • .NET Framework:4.8
    ※ PowerShell 5.1は .NET Framework に依存しているため、合わせて記載しています

技術選定

  • PowerShell × C# 構成
    Windows標準環境だけで動かしたかったため、インストール不要な組み合わせを選びました。
    仮想キー送信のような細かい操作は、C#(+Win32API)を使って対応することにしました。

構成と処理の流れ

ツールの処理の流れを、ざっくりまとめてみます。

  1. ユーザがホットキーを入力
  2. ツール(PowerShell,C#)がその入力を検知
  3. 外部ファイル(json)の設定に従って、対応するキー送信を実行

vimライクなカーソル移動のホットキー設定だと以下のようなイメージです。

【無変換】+【H】 => 【←】
【無変換】+【J】 => 【↓】
【無変換】+【K】 => 【↑】
【無変換】+【L】 => 【→】

まとめ

当時はなんとなくの勢いで作っていましたが、こうして要件を整理しながら進めてみると、めんどくさい難しいものですね。

昔はAIもなかったので、色々調べながら手探りで実装していたのを思い出しました。
今は便利になりましたね。(※AIは活用していきたい派です)

次回は「設計&実装編」になります!
それではまた!

コメント

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