fjFlow メインコンセプト & 設計思想 (Concept & Philosophy)
fjFlow の本質は、単なる「便利なショートカットの寄せ集め」ではありません。 キャレット追従、キーボードレイヤー、マウス拡張、UIヒント、画面画像解析という独立した技術要素を、「人間の認知摩擦...
PCを人間に合わせるのではなく、人間にPCを合わせる。
fjFlow は、PC操作に潜む「分かりにくさ」「操作しにくさ」「視覚的な邪魔」を根本から解消し、
情報と操作をユーザーが集中している場所へ集約する Windows デスクトップ拡張ユーティリティです。
[!TIP] 🎬 公式コンセプト解説動画(YouTube Full HD・約2分55秒)
本ドキュメントで解説する設計思想、3つの構造的ストレス、および各機能(Caret-First、Keyboard-First、UIヒント、スペースマウス、Smart UI、技術原則)の動作を、実機映像とナレーションで分かりやすくまとめた公式解説動画です。
目次
- 0. fjFlow のコアステートメント
- 1. 現代のPC操作が抱える「3つの構造的ストレス」
- 2. 入力位置から視線を離さずに状態を把握する方法 (Caret-First)
- 3. ホームポジションから手を離さずに操作を完結させる方法 (Keyboard-First)
- 4. 画面上のあらゆる要素をキーボードから直接クリックする方法 (UIヒント)
- 5. ウィンドウのどこを掴んでも自在に移動・拡縮する方法 (スペースマウス)
- 6. タイピング中の視覚ノイズを自動で排除する方法 (Smart UI)
- 7. 技術設計思想:APIが教えてくれないなら、画面そのものから探す
- 8. 徹底した3つの実装原則と安全性・パフォーマンス
- 9. fjFlow が目指す操作感 —— 『 Flow 』
- 10. 機能別詳細ドキュメント体系
0. fjFlow のコアステートメント
fjFlow は、PCの情報と操作を「人間が集中している場所」へ集約する。
- キャレット位置 は、常に直感的にわかる場所へ。
- IME状態・入力モード は、視線が集まる入力位置のそばへ。
- 編集・カーソル操作 は、指が静止しているホームポジションへ。
- 画面上のUI操作 は、マウスへ持ち替えずキーボードの手元へ。
- APIで取得できない情報 は、画面ピクセルそのものから探す。
人間がPCの都合に合わせて動くのではなく、PCを人間の操作と認知に合わせる。
fjFlow の本質は、単なる「便利なショートカットの寄せ集め」ではありません。
キャレット追従、キーボードレイヤー、マウス拡張、UIヒント、画面画像解析という独立した技術要素を、「人間の認知摩擦と身体負荷を削ぎ落とし、思考・操作・出力の流れ(Flow)を止めない」 という単一の設計思想で統合したデスクトップ環境拡張システムです。
graph TD
classDef root fill:#0f172a,stroke:#334155,stroke-width:2px,color:#fff;
classDef stress fill:#f8fafc,stroke:#64748b,stroke-width:2px,color:#0f172a;
classDef approach fill:#2563eb,stroke:#1d4ed8,stroke-width:2px,color:#fff;
classDef method fill:#0ea5e9,stroke:#0284c7,stroke-width:2px,color:#fff;
classDef flow fill:#10b981,stroke:#059669,stroke-width:3px,color:#fff;
classDef tech fill:#475569,stroke:#334155,stroke-width:1px,color:#fff;
Root["fjFlow<br/><b>PCを人間のいる場所へ合わせる</b>"]:::root
Root --> S1["分かりにくい<br/>(状態・位置・対象)"]:::stress
Root --> S2["操作しにくい<br/>(手や視線の遠出)"]:::stress
Root --> S3["邪魔になる<br/>(視覚的ノイズ)"]:::stress
S1 --> A1["状態を視線の直近へ"]:::approach
S2 --> A2["操作を指の手元へ"]:::approach
S3 --> A3["打鍵時に自動退避"]:::approach
A1 --> M1["Caret-First<br/>(フォーカス強調 / キャレット追従 / ズーム)"]:::method
A2 --> M2["Keyboard-First<br/>(第二の操作層 / 4層UIヒント / スペースマウス)"]:::method
A3 --> M3["Smart UI<br/>(ポインタ退避 / 打鍵時フェード / 呼吸点滅)"]:::method
M1 & M2 & M3 --> Flow["思考・操作・出力の流れ<br/><b>『 Flow 』</b><br/>(操作している感覚そのものを薄くする)"]:::flow
subgraph Tech["技術の根幹:APIの境界を越えて画面を捉える"]
T_API["APIで取得可能 ➔ Win32 API / UI Automation (高速処理)"]:::tech
T_Pixel["APIで取得不可 ➔ Pixel Caret Engine / Computer Vision (画面解析)"]:::tech
end
1. 現代のPC操作が抱える「3つの構造的ストレス」
長時間のテキスト入力やコーディング作業において、「作業リズムが乱れる」「身体が疲労する」と感じる原因の多くは、OS標準の仕様が抱える以下の3つの構造的ストレスに起因します。
1.1 状態が分かりにくい(視線の分散と探索の無駄)
複数ウィンドウを開いて作業している際、「どのウィンドウがアクティブか」「カーソル(キャレット)がどこにあるか」「日本語入力(IME)がオンかオフか」を一瞬で見分けることは困難です。
以下の画面をご覧ください。複数のメモ帳ウィンドウが並んでいる状態です。現在どのウィンドウにフォーカスがあり、キャレットがどこにあるかを即座に判別できますか?
図: Windows標準の画面 - どのウィンドウに入力フォーカスがあるかを一目で把握するのは極めて困難
フォーカス対象の判別が難しい理由は、OS標準のタイトルバーや枠線の強調が極めて控えめであるためです。
図: 【左】一番手前のウィンドウがアクティブだが判別が困難 / 【右】Windows標準のアクセントカラー設定を有効にしても境界線が細く視覚的差異が小さい
さらに、テキスト入力のカーソル(キャレット)は幅1ピクセルの細い線に過ぎず、画面内に埋もれてしまいます。Windows標準の「テキストカーソルインジケーター」機能も、WebブラウザやElectron系エディタ(VS Code等)では正しく追従しないケースが頻発します。
図: 【左】テキストキャレットが文字群の中に埋没 / 【右】Windows標準インジケーターは非対応アプリが多く万能ではない
結果として、ユーザーは入力状態を確認するために「画面の隅(タスクバーのIMEアイコン)を見る」「キーボードのCapsLock LEDを見る」「マウスで入力欄を空クリックする」という無駄な探索行動を1日に数百回も繰り返しています。
1.2 操作しにくい(ホームポジションの崩壊と手の遠出)
文字を入力する動作自体はホームポジション(F / J キー基準)で行われますが、入力に伴う周辺操作のたびに手がホームポジションから大きく吹き飛ばされます:
- カーソル移動: 矢印キーや
Home/End/PageUp/PageDownを押すために右手が大きく右下へ移動する。 - 文字の削除: 右手小指を右上の
BackspaceやDeleteへ無理に伸ばす。 - 数字の入力: テンキーへ右手を大きく移動させる、または最上段の数字キーを手探りで狙う。
- 修飾キーの同時押し:
CtrlやShiftを小指で押さえ込みながら他のキーを叩くため、手首や指の関節に強い物理的負荷がかかる。 - ボタンやリンクのクリック: キーボードから手を離し、マウスを握ってポインタを目的のUI要素へ慎重に合わせる。
これらの「手の遠出」と「デバイスの持ち替え」が、思考のスピードとタイピングの勢いを何度も中断させます。
1.3 集中を阻害する(視覚的ノイズによる思考の分断)
テキスト入力中にマウスポインタが文字の上に重なって文章が読めなくなったり、画面の補助ツールがタイピング中の視界を遮るなど、作業中の集中(Flow)を妨げる視覚ノイズが頻繁に発生します。
fjFlow は、これらの課題を「個別の便利機能」ではなく「PCと人間のインタラクション全体の再設計」として捉え、以下の4つの柱で解決します。
2. 入力位置から視線を離さずに状態を把握する方法 (Caret-First)
2.1 アクティブウィンドウを瞬時に見分ける (Focus Highlight & Dim)
複数のウィンドウが重なり合っている環境でも、キーボード入力を受け付けるアクティブウィンドウを瞬時に特定する手順です。
- 操作対象のウィンドウをクリック、または
Alt + Tabで選択します。 - 対象ウィンドウの外周に鮮やかな枠線が描画され、ウィンドウ全体に淡いアクセントティントが適用されます。現在どのウィンドウに入力されるかが視覚的に即座に確定します。
- (オプション)ディミング(背景暗転)機能を有効にします。操作対象以外のすべての背景ウィンドウが半透明のダークレイヤーで覆われ、視界から不要なノイズが完全に遮断されます。
図: 【左】Windows標準(アクティブウィンドウの判別が困難) / 【右】fjFlow フォーカス強調(枠線と背景ティントで瞬時に認識)
図: ハイライト機能(背景暗転) - 操作対象ウィンドウ以外を半透明暗転させ、視界ノイズを遮断して作業対象だけに集中する
2.2 入力カーソル直近で入力モードとロック状態を確認する (Caret Indicator)
IMEの入力モード(半角英数 / 全角日本語)や修飾キーのロック状態を、視線を1ピクセルも動かさずに確認する手順です。
- メモ帳やブラウザの入力欄にキャレットを配置します。
- キャレットの右隣に入力モードインジケーター(日本語入力時は赤色「あ」、半角入力時は青色「A」)が常時追従して表示されます。
- 修飾キーロック(CtrlLock や ShiftLock 等)が発動すると、対応するバッジアイコン(
Ctrl/Shift/Alt/Win)がキャレットの横に即座にスタック表示されます。画面隅のタスクバーや手元のキーボードLEDを見下ろす必要がなくなります。
図: キャレットインジケーター - 【左】通常表示 / 【右】キャレット直近に入力モードや修飾キーロック状態を追従表示し、視線移動を完全に排除
2.3 画面の文字や微小要素を瞬時に拡大する (Zoom)
高解像度ディスプレイ上の細かな文字や、細部を確認したいUI要素をピンポイントで拡大する手順です。
- マウスポインタまたはテキストキャレットを拡大したい位置へ配置します。
F9(または設定したホットキー)を押します。- 画面の端に帯状の拡大鏡ウィンドウが瞬時に展開され、キャレット周辺が 2.0 倍で拡大表示されます。
- キーボードの上下カーソルキー(
↑/↓)を押すと、拡大領域とソース枠がリアルタイムかつ滑らかに追従します。 - もう一度
F9を押すか、タイピングを停止して一定時間経過すると、ズーム窓が自動的にフェードアウトして消去されます。

図: キャレット周辺ズーム - F9 で現在編集中の行周辺を帯状に拡大表示し、カーソル移動に対象枠と拡大内容がリアルタイム追従
2.4 現在編集中の行を浮かび上がらせる (Active Line Highlight)
プレゼンテーション、ライブコーディング、または集中執筆時に、現在編集中の行だけを明るく残し、周囲を暗転させる手順です。
- メモ帳やエディタでテキスト編集位置にキャレットを配置します。
- キーボードの
F8(または設定したホットキー)を押します。 - キャレットが存在する行の周囲だけが明るく残り、画面の他の領域全体が半透明の黒レイヤーで暗転します。
- キーボードの上下カーソルキー(
↑/↓)を押してキャレットを移動すると、ハイライト帯がリアルタイムかつ滑らかに追従します。 - 再度
F8を押すと暗転マスクが解除され、通常のデスクトップ画面へ復帰します。

図: キャレット行ハイライト - F8 で現在編集中の行だけを明るく浮かび上がらせ、カーソルキー(↑ / ↓)によるキャレット移動にリアルタイム追従
3. ホームポジションから手を離さずに操作を完結させる方法 (Keyboard-First)
3.1 親指一本で「第二の操作層」を呼び出す (Space Shift)
既存のタイピング配列やキーバインドを一切壊さず、キーボード上に編集・移動・数値入力・ウィンドウ操作を完全に集約した「第二の操作層」を展開する手順です。
- 人間工学上最も太く自由度の高い親指で、
Spaceキーを長押し(デフォルト300ms以上)します。 - fjFlow の Space Shift (SS) レイヤー が起動し、ホームポジション周辺のすべてのキーが高機能な編集・操作コマンドへ切り替わります。
- 目的のキーを打鍵します(例:
hを押すと左矢印、;を押すとEnterが出力されます)。 Spaceキーを離します。システムは即座に基底の通常タイピングレイヤー(L0)へ復帰します。短くタップした場合は、通常のスペース文字が1文字出力されます。
flowchart TD
classDef base fill:#f8fafc,stroke:#64748b,stroke-width:2px,color:#0f172a;
classDef feat fill:#ffffff,stroke:#3b82f6,stroke-width:1.5px,color:#0f172a;
classDef group fill:#eff6ff,stroke:#93c5fd,stroke-width:1.5px,color:#1e3a8a;
classDef effect fill:#ecfdf5,stroke:#10b981,stroke-width:2px,color:#065f46;
subgraph Layer0 ["【基底レイヤー】通常のキーボード操作(L0)"]
BaseKey["<b>既存のタイピング能力を100%そのまま維持</b><br/>A〜Z・記号・日本語入力(Space短押しで通常のスペース出力)<br/><i>※ 新しいキー配列を覚える必要はありません</i>"]:::base
end
Layer0 ==>|"Space長押し(親指で保持)<br/><b>【離せば即座に元通り】</b>"| LayerSS
subgraph LayerSS ["【第二の操作層】fjFlow Space Shift レイヤー(SS)"]
direction TB
subgraph GroupInput ["テキスト編集の手元集約"]
F1["<b>カーソル移動</b><br/><code>h / j / k / l</code> ➔ <code>← / ↓ / ↑ / →</code><br/>矢印キーへの大きな手の移動をゼロに"]:::feat
F2["<b>決定・文字削除</b><br/><code>;</code>: Enter / <code>f</code>: Backspace / <code>g</code>: Delete<br/>小指の無理な曲げ伸ばしを解消"]:::feat
F3["<b>HPテンキー</b><br/><code>q〜p</code> ➔ <code>1〜0</code><br/>数字入力のために手を右端へ離さない"]:::feat
end
subgraph GroupSystem ["身体負担の解放・システム操作"]
F4["<b>ワンタッチ修飾キーロック</b><br/><code>s</code>: Shift / <code>a</code>: Alt / <code>d</code>: Ctrl / <code>z</code>: Win<br/>指を攣らせる同時押しから完全解放"]:::feat
F5["<b>ウィンドウ操作・スナップ</b><br/>画面中央配置 / 左右上下4分割スナップ<br/>タイトルバーをマウスで慎重に狙わない"]:::feat
F6["<b>スペースマウス</b><br/>Space + マウスドラッグ / ホイール<br/>どこを掴んでも即座に移動・拡縮"]:::feat
end
end
LayerSS ==> FlowEffect["<b>『ホームポジションから手が離れない』圧倒的な Flow 体験</b><br/>入力・移動・編集・修飾・ウィンドウ操作を手元だけでシームレスに完結"]:::effect
図: 第二の操作層(fjFlow Key Extension) - Spaceキー長押しにより、既存のタイピング操作を維持したままホームポジションにあらゆる操作を集約
3.2 ホームポジション周辺でカーソル移動・テキスト編集を実行する
右手を矢印キーや削除キーへ移動させず、ホームポジションに指を置いたままテキストを自在に編集する手順です。
Spaceを押しながら右手のホームキーh/j/k/lを押します。カーソルが左・下・上・右へ滑らかに移動します(Vim準拠の方向感覚)。- 行頭や行末へ一気に移動する場合は、
Spaceを押しながら<h>(左手長押し)または<l>(右長押し)します。Home/Endが送信され、行頭・行末へジャンプします。 Spaceを押しながら;を押します。小指を伸ばさずにEnterが確定送信されます。Spaceを押しながらfを押すとBackspace、gを押すとDeleteが送信され、人差し指で直感的に前後の文字を削除します。- 1行を一括削除する場合は、
Spaceを押しながらdl(Delete Line)と素早く打鍵します。現在行のテキスト全体が瞬時に全消去されます。
3.3 ホームポジション最上段から数字を入力する (テンキー機能)
ノートPCやテンキーレスキーボードでも、右手を右端へ離さずに数字を流れるように連続入力する手順です。
Spaceを押しながら、キーボード最上段のqwertyuiopを押します。- 左から順に
1234567890が出力されます。 - 郵便番号や電話番号、数値データを入力する際、ホームポジションの指配置のまま最上段を叩くだけで正確に数字が並びます。
3.4 ワンタッチで修飾キーを合成・ロックする
小指を痛める原因となる Ctrl や Shift の無理な同時押しを廃止し、ワンショットの打鍵で修飾ショートカットを実行する手順です。
Spaceを押しながらdを押します。キャレット横に青いCtrlアイコンが点灯し、CtrlLock が有効になります。- 指を離して単体の
cを押します。システムは自動的にCtrl + Cを合成して送信し、クリップボードへテキストをコピーします。送信完了と同時にロックは自動解除されます。 - 複数の修飾キーを組み合わせる場合は、
Space + d(Ctrl)➔Space + s(Shift)と連続して叩きます。両方のロックが蓄積され、次のキー(例:Enter)を押すとCtrl + Shift + Enterが安全に送信されます。
3.5 迷った瞬間にオンスクリーンキーガイドを表示する (HUD)
キーの割り当てを暗記していなくても、画面上でリアルタイムに配列を確認しながら操作する手順です。
Spaceキーを長押しします。- 設定されたガイド遅延時間(デフォルト0.5秒)が経過すると、画面中央下部に半透明のオンスクリーンキーガイド(HUD)が滑らかにフェードイン表示されます。
- 目的のキーを確認して打鍵します。
Spaceを離すと、キーガイドは瞬時に画面から消去され、作業画面が完全にクリアに戻ります。
図: Space Shift キーガイド HUD(実機デモ) - 親指でSpaceを押している間だけ画面上にキー配列ガイドがスマート表示され、離せば即座に復帰。マニュアルを見ずに直感操作が可能
3.6 通常の文字入力中に長押しや2文字コンボで記号を入力する (L0拡張)
Space を押さず、通常の日本語入力や英文タイピングの最中に、Shiftキーを押さずに記号やペア括弧を入力する手順です。
- ホームポジション長押し記号: ホーム段のキー(
asdf等)を約240ms長押しします。キーから指を離した瞬間に、対応する記号(@'"/等)が直接出力されます。短くタップした場合は通常のアルファベットが出力されます。 - 2文字シーケンスコンボ:
eqと素早く打鍵します。直ちに=が出力されます。ptと素早く打鍵します。ペア丸括弧()が出力され、キャレットが括弧の内側へ自動配置されます。br➔[]、cb➔{}も同様にワンストロークで展開されます。
4. 画面上のあらゆる要素をキーボードから直接クリックする方法 (UIヒント)
4.1 画面全体のUI要素をキーボードから直接クリックする (Omni UI Hint)
マウスに持ち替えることなく、画面上に存在するボタン、入力欄、リンク、アイコンをキーボードの1〜2打鍵で直接クリックする手順です。
Space + mを押します。- 画面上の操作可能なすべてのUI要素の上に、2文字のアルファベットヒントバッジ(
aa,ab,ac…)がオーバーレイ展開されます。 - 目的の要素に表示された2文字(例:
jq)をキーボードで入力します。 - マウスポインタが目的の要素へ超高速で自動移動し、左クリックが即座に実行されます。クリック位置に青い波紋(リップルアニメーション)が表示され、ヒントバッジは自動的に消去されます。
図: UIヒントナビゲーション(実機デモ) - Space + m で画面上の全要素に2文字ヒントが展開。2打鍵で目的の場所(例: 太字ボタン [jq])へ即座にジャンプ&クリック
4.2 密集した微小ボタンを拡大鏡グリッドでピンポイント選択する (Zoom Grid)
密集したリンクや数ピクセルの小さなチェックボックスを、誤クリックすることなく確実に狙い撃つ手順です。
Space + haまたはSpace + <m>(長押し)を押してヒントモード(操作ガイド表示)を起動し、目的のエリアのヒント2文字を入力します。- ポインタがターゲット付近へ移動し、操作ガイドが表示されます。
Spaceキーを押します。ポインタ周辺を4倍に拡大した「拡大鏡グリッド」ウィンドウがポップアップし、内部に 5×5 のアルファベットグリッド(a〜y)が展開されます。- 目的の中心位置に対応する1文字(例:
n)を打鍵します。ポインタが微小要素の中心へピンポイントで移動し、jでクリックが完了します。

図: UIヒント拡大鏡グリッド(実機デモ) - Space キーでカーソル周辺を4倍拡大鏡グリッド(5×5)として展開し、1文字打鍵で微小位置へピンポイント移動
4.3 過去にクリックした位置へワンタッチで再ジャンプする (マウスクリック履歴)
直前に作業していた画面上の位置へ、マウスを動かさずに一瞬でカーソルを戻す手順です。
Space + mhを押します。- 過去にクリックした直近26箇所の座標に、ローズ赤の円形バッジ(
A〜Z)が画面上にオーバーレイ展開されます。 - 戻りたい位置の1文字(例:
C)を打鍵します。マウスポインタが過去のクリック座標へ瞬時にテレポートジャンプします。 - 到着後は自動的に操作ガイドが表示され、
j(左クリック)またはk(右クリック)を押すだけで即座にクリック操作が完了します。

図: マウスクリック履歴(実機デモ) - Space + mh で過去のクリック位置にローズ赤バッジ(A〜Z)が展開。キーボードで1文字打鍵するだけでポインタが瞬時テレポートし、J/Kキーで即座にクリック
5. ウィンドウのどこを掴んでも自在に移動・拡縮する方法 (スペースマウス)
5.1 タイトルバーを狙わずにウィンドウを自由移動する
ウィンドウの細いタイトルバーをマウスで慎重に狙い定めるストレスをゼロにし、ウィンドウ内のどこからでも瞬時にドラッグ移動する手順です。
Spaceキーを押したままにします。- 移動させたいウィンドウの任意の場所(テキストエリアの中央や空白部分など、どこでも可)をクリックし、そのままマウスをドラッグします。
- マウスポインタが十字矢印カーソルへ変化し、タイトルバーを掴んだ時と全く同様にウィンドウが自由自在に追従移動します。
- マウスボタンを離します。ウィンドウがその位置に配置され、カーソル形状が通常ポインタへ安全に復元されます。
図: スペースマウス(実機動作デモ) - Spaceキーを押しながらウィンドウのどこ(テキストエリア中央など)をクリックしてドラッグしても自在に移動。タイトルバーを狙う摩擦をゼロに
5.2 ウィンドウを画面中央や4隅へ瞬時にスナップ配置する (UI Snap)
キーボード操作だけで、散らかったウィンドウをディスプレイの指定位置へ正確に整列させる手順です。
- 整列させたいウィンドウをアクティブにします。
Spaceを押しながらスナップコマンドを打鍵します:s;: ウィンドウを現在のモニターの完全中央へ配置します。sh/sl: 画面の左半分 / 右半分へぴったりスナップします。sk/sj: 画面の上半分 / 下半分へスナップします。su/so/sn/s.: 画面の左上 / 右上 / 左下 / 右下の4分割領域へスナップ配置します。wh/wl: マルチモニター環境で、ウィンドウを左画面 / 右画面へ瞬時に移動させます。

図: UIスナップ(実機デモ) - Space + s; で画面中央へセンタリング配置。Space + sh / sl で画面端へ瞬時スナップ
6. タイピング中の視覚ノイズを自動で排除する方法 (Smart UI)
6.1 打鍵開始時にインジケーターとポインタを自動退避させる
補助表示やマウスポインタが入力中の文字の上に被る視覚的ストレスを完全に解消する手順です。
- メモ帳やエディタで文字の打鍵を開始します。
- 1文字目のキー入力を検知した瞬間に、キャレット追従インジケーターやマウスサークルが画面から即座にフェードアウト(自動退避)します。
- マウスポインタ自体も文字入力位置から離れた位置へ退避、または非表示化され、入力中の文章や画面テキストが完全にクリアな状態に保たれます。
6.2 入力停止後に滑らかな呼吸点滅で自動復帰させる
タイピングを中断して思考に入った瞬間、必要な情報だけが自然に視野に戻る手順です。
- 文章の入力を終え、キーボードから手を止めて思考します。
- 打鍵停止から1.0秒が経過すると、インジケーターが元の位置へ滑らかにフェードイン再表示されます。
- 待機中は、インジケーターが柔らかな呼吸点滅(ブリージングアニメーション: 不透明度40〜255を1.0秒周期で往復)を行い、画面の端を凝視しなくても「今どのモードか」が周辺視野へさりげなく伝達されます。
図: スマート自動退避(実機デモ) - 待機時はキャレット横に状態(「あ」)を表示 ➔ キー入力開始でインジケーターが即座に自動退避して文字入力に集中 ➔ 入力停止後1秒で自動再表示
6.3 マウスを見失わないパルスサークル (Mouse Circle)
広いディスプレイや4Kマルチモニター環境で「今マウスポインタがどこにあるか分からない」という視覚探索の迷いをゼロにする手順です。
- マウス操作を停止して静止させます。
- 3.0秒(デフォルト)が経過すると、小さな矢印ポインタが自動的に非表示となり、現在位置を中心とする視認性の高い Orbit サークル(マゼンタの4分割円弧+Windowsブルーの中心ドット)が出現します。
- サークルは柔らかな呼吸パルス(ブリージング点滅)を行い、画面のどこにポインタが存在するかを周辺視野へさりげなく明示します。
- マウス移動による即座復帰: マウスを わずか 1px でも動かすと、サークルは瞬時に消去され、通常の矢印ポインタへ即座に復帰します。
- キー入力開始による即座自動消去: キーボードで文字入力を開始した際は、入力中のテキストや画面の邪魔にならないよう、サークルおよびマウスポインタが即座に自動非表示(完全消去)されます。

図: マウスサークル(実機デモ) - デフォルト設定(Orbit形状・半径30px)。マウス静止から3秒経過で通常ポインタが消えOrbitサークルが出現し呼吸パルス点滅 ➔ マウス移動で通常ポインタへ即座復帰 ➔ 文字の上にポインタが重なって邪魔な状態でも、キー入力を開始した瞬間にマウスポインタが邪魔にならないよう即座に自動消去(視覚ノイズゼロ)
7. 技術設計思想:APIが教えてくれないなら、画面そのものから探す
PC内部のソフトウェアには、OSの標準API(Win32 API や UI Automation)を通じて素直に内部状態を通知してくれるアプリケーションと、独自描画エンジン等により情報が遮断されたブラックボックス環境が存在します。
fjFlow は、「APIから情報を取得できない」ことを理由に、そのアプリケーションをサポート対象外にしません。
「APIが教えてくれないなら、画面そのものから探す。」
7.1 OS API と画像認識のハイブリッド空間認識
fjFlow の全方位UIヒント(Omni UI Hint)は、単一の技術に依存せず、以下の4層統合パイプラインによって画面全体を漏れなくキーボード空間化します:
- 第1層:カレントウィンドウ UI Automation(最高速): アクティブなネイティブUI要素からボタン・リンク・入力欄を構造ツリー経由で高速抽出します。
- 第2層:タスクバー & システムトレイ UIA: Windowsタスクバー上のアプリアイコンや通知領域を検出し、アプリ切り替えをカバーします。
- 第3層:Computer Vision (UIED) スクリーン認識: APIが一切効かないWebキャンバス、画像内のボタン、Electron独自UI、リモートデスクトップ(RDP)画面に対し、画面キャプチャの幾何学解析・輪郭抽出エンジンにより操作可能要素を視覚的に直接検出します。
- 第4層:全画面均等補助グリッド (Aux Grid): 要素が検出されない背景や空白領域に対しても均等グリッドヒントを展開し、画面上の任意のピクセルへキーボードから直接ポインティングを可能にします。
7.2 Pixel Caret Engine によるキャレット推定
通常のWindows APIではキャレット位置が取得できないアプリケーション(ブラウザ内の独自リッチテキストエディタ、WSLg/Linux GUI、リモートデスクトップ上の仮想環境など)に対し、画面ピクセルの点滅周期や縦線形状をリアルタイムに画像解析し、キャレットの現在座標を高速推定してインジケーターを追従させます。
7.3 Computer Vision (UIED) によるデスクトップ全要素抽出
UI Automation が要素構造を提供しない環境であっても、画像処理アルゴリズム(輪郭検出・モルフォロジー演算・コンポーネントスコアリング)により、ボタン、トグルスイッチ、テキスト入力欄を視覚的に自動認識します。
fjFlow にとって重要なのは、「アプリケーション開発者がAPIを公開しているかどうか」ではなく、「人間のユーザーが画面上で何を見て、何を操作しようとしているか」です。
8. 徹底した3つの実装原則と安全性・パフォーマンス
8.1 原則1:既存のタイピング操作を100%維持する (0ms無遅延・文字順序保証)
新しいツールを導入したことで普段のタイピングが遅くなったり、文字化けしては意味がありません。
- 通常入力時の 0ms 無遅延パススルー: 文章を連続タイピングしている最中は、FSM(状態遷移マシン)エンジンがタイマー待機を完全にバイパスし、OSネイティブのキー入力速度(0ms遅延)で文字を出力します。
- 文字順序の逆転防止:
すべてのキー拡張対象キーを直列にFSMエンジンを通過させることで、高速タイピング時におけるキーの追い越し(例:
shを打ったのにhsになる現象)を構造的に完全排除しています。 - 短押しスペースの完全保護:
Spaceキーを単体で素早く叩いた場合は、通常の半角スペース文字が確実に出力されます。普段の文字入力を妨げることは一切ありません。
8.2 原則2:完全オフライン・安全設計 (外部通信ゼロ)
キー入力を拡張するユーティリティにおいて、セキュリティとプライバシーは何よりも優先されます。
- 外部通信を一切行わないスタンドアロン設計: fjFlow はインターネット通信機能を一切含みません。入力されたキーログ、クリップボードの内容、画面キャプチャデータを外部サーバーへ送信することは技術的に不可能です。
- 機密環境でも即座に導入可能: 金融機関、セキュリティ規制の厳しいエンタープライズ企業、官公庁の開発用PCでも、ローカル完結の安心感を持って常駐させられます。
8.3 原則3:超軽量・低負荷ネイティブ動作 (CPU 0%・低メモリ)
常駐ソフトウェアがPCのリソースを消費してシステム全体を重くすることを防ぐため、極限のパフォーマンス設計を採用しています。
- 待機時CPU使用率 0.0%: イベント駆動アーキテクチャにより、キーが押されていない待機状態のCPU負荷は測定環境においてゼロです。
- メモリ消費量は数十MB: 軽量なネイティブスクリプト(AutoHotkey v2)とWin32ネイティブAPI直接呼び出しにより、重厚なWebベース常駐ツール(Electron製等)と比べて圧倒的に省メモリで動作します。
9. fjFlow が目指す操作感 —— 『 Flow 』
fjFlow が追求しているのは、単なる「ショートカットキーの増加」や「カタログスペック上の機能数」ではありません。
PCを操作する過程において、ユーザーが意識しなければならなかった以下の認知摩擦を取り除くことです:
- どのウィンドウがアクティブかを探す
- キャレットがどこにあるかを探す
- IMEが全角か半角かを手元や画面隅で確認する
- 矢印キーやテンキーへ右手を移動させる
- マウスとキーボードの間を手が往復する
- 小さなボタンへマウスカーソルを慎重に合わせる
「考える ➔ 入力する ➔ 操作する ➔ 出力される」 という一連の流れから、あらゆる探索と手の迷いを削ぎ落とす。
その結果として、「自分がいまPCを操作している」という意識そのものが消え去り、思考がそのまま画面へ直接投影される状態。
それが、fjFlow の目指す Flow(フロー) です。
fjFlow は、PCを使うために人間が動く量を減らす。
情報は人間の視線へ。
操作は人間の手元へ。
そして、邪魔なものは静かに消える。
10. 機能別詳細ドキュメント体系
各機能の具体的な操作手順、キーマッピング定義、詳細設定については、以下のドキュメントを参照してください。
| カテゴリー | 機能名 | 目的と解決する課題 | 詳細ガイド |
|---|---|---|---|
| 状態の把握 | フォーカス強調 | アクティブウィンドウの枠線・背景ハイライト | フォーカス強調ガイド |
| キャレットインジケーター | 入力位置のリアルタイム追従とIME/修飾キー状態表示 | インジケーター詳細 | |
| ズーム機能 | カーソル周辺のピンポイント拡大 | ズーム機能ガイド | |
| マウスサークル | 静止時のパルスサークル表示とポインタ即座復帰 | マウスサークル詳細 | |
| 操作の集約 | Space Shift / キー拡張 | ホームポジションに重ねる第二の操作層の完全解説 | キー拡張機能ユーザーガイド / Space Shift詳細 |
| UIヒント | 画面上の全UI要素をキーボードで直接クリック | UIヒントナビゲーション | |
| スペースマウス & スナップ | ウィンドウの自由な移動・拡大縮小・画面整列 | スペースマウス詳細 / UIスマートスナップ | |
| 設定・その他 | 初期設定 & プリセット | 5つの推奨プリセットと直感的な設定画面 | 初期設定ガイド / 設定画面ガイド |
| 技術アーキテクチャ | 決定論的3状態FSMエンジンとタイマー制御の内部仕様 | キー拡張アーキテクチャ解説 |