﻿==================================================
　なんでも文字起こし(AI議事録用)by169
　技術仕様書（詳しい方向け）
==================================================
対象バージョン：v1.000
作者：169（開発は Claude（Anthropic）と共同。レビュー・試験の一部は ChatGPT（OpenAI））

この文書は、ソフトウェアや音声処理に詳しい方に、中身を確かめて改善の提案を
いただくためのものです。ふだん使うだけなら、読む必要はありません。
ご指摘・ご提案は、15章の「連絡先」へお寄せください。
ソースコードは同じフォルダにあります（MITライセンス）。


■ 目次
--------------------------------------------------
　1. 全体の構成
　2. 処理の流れ
　3. 二重記録（スピーカーの音をマイクが拾う）対策
　4. 長時間運転・スリープ・休止
　5. 画面・テキスト処理
　6. AIへの依頼文とコピーの形式
　7. 設定.ini の全項目
　8. 診断ログの読み方（log=1）
　9. 作られるファイルの一覧
　10. 性能と測り方
　11. 設計上の判断と、まだ迷っている点（ご意見歓迎）
　12. 試験用の調整（開発者向け）
　13. 会議画面スクショ
　14. 会議の控えと［過去の会議］
　15. 連絡先
　付録1. 開発の記録（全部の版の変更）
　付録2. 設計に関わる変更の要点


■ 1. 全体の構成
--------------------------------------------------
　言語・API：C++17、Win32 API（MFC・.NET・Pythonなし）。Linux上で MinGW-w64 によりクロスコンパイル
　動作環境：Windows 10 / 11（x64）。管理者権限不要。レジストリは使わない
　通信：なし（このソフトからネットワークへは送信しない）

　ソースの構成
　・main.cpp …… 画面、設定、音声の取り込み（WASAPI）、画面側の後処理、保存
　・mixer.h …… 取り込んだ音を、Windowsが付けた時刻（QPC）どおりに共通の時間軸へ並べる
　・engine.cpp/.h …… 認識エンジン（無音検出 → 分割 → 認識 → 再認識 → 数字変換 → 置き換え）
　・numconv.cpp/.h …… 漢数字 → 算用数字（十八歳 → 18歳。一緒・十分などは除外）
　・defaults.h …… 定型の依頼文（v0.76からアプリの中だけ）、自作の依頼文と用語登録のひな形
　・app.rc / app.manifest / app.ico …… バージョン情報、PerMonitorV2、UTF-8、アイコン

　使っている部品
　・sherpa-onnx v1.13.8（C API、共有ライブラリ）＋ ONNX Runtime
　・音声認識モデル ReazonSpeech k2-v2（Zipformer transducer、int8量子化。約160MB）
　・発話検出 Silero VAD
　・sherpa-onnx-c-api.dll はリンクせず、起動時に exe と同じフォルダから LoadLibraryEx で読み込む
　　（SetDefaultDllDirectories で読み込み先を限定。bcrypt.dll はシステムフォルダから）
　・モデル encoder.int8.onnx は、初回起動時にサイズと SHA-256 を確かめる（main.cpp の kEncoderSha256）


■ 2. 処理の流れ
--------------------------------------------------
　(1) 取り込み
　　・マイク：既定の録音デバイス（eCapture / eConsole）
　　・PC音：既定の再生デバイスのループバック（eRender）。Bluetoothヘッドセット対策として、
　　　既定の「通信」デバイスが別の機器なら、その音も足し込む
　　・WASAPI 共有モード（AUDCLNT_SHAREMODE_SHARED）、バッファ1秒、イベントではなく約20msごとのポーリング。
　　　スレッドの優先度は通常（MMCSSは使わない）
　　・「自分の声を文字にする」のチェックを外しても、取り込みは続ける（二重記録の判定に使うため）。
　　　文字にしないだけで、機器の開け閉めはしない
　　・各パケットは GetBuffer の QPC 時刻で共通の時間軸に置く（mixer.h）。機器ごとの時計の狂いは
　　　100万分の80まで想定し、72時間の模擬試験でマイクとPC音のずれは最大0.09秒
　(2) 変換：48kHz など → 16kHz モノラル。窓付き sinc を表にして線形補間（旧実装比 約6倍速）
　(2b) 小声補正（v0.974。マイクだけ。設定.ini の 小声補正=0 で切れる）：VAD・認識の手前で、自動で音量をそろえる
　　・目標はピーク約-12dB。利得は1倍（0dB）〜8倍（+18dB）。雑音の底（直近5秒の20msごとの音量の最小）は-50dBより上げない
　　・「声らしい所」（雑音の底より約16dB大きい20ms）だけで大きさを測り、言葉の間・無音では利得を変えない
　　　（間で利得を上げる作りでは、雑音が持ち上がって区間がつながり、言葉が丸ごと消えることを試験で確認したため）
　　・下げるのはその20msの頭から（音割れを防ぐ）、上げるのは20msごとに差の5%ずつ
　　・状態はいつも20ms（320サンプル）ちょうどの単位で進める。届いた音の20msに満たない端数は次回へ持ち越し、
　　　停止時の最後の端数には、状態を進めずに今の利得だけをかける。届く塊の区切り方（0.05秒ごと・不揃い）で
　　　結果が変わらない（1サンプルずつ・不規則な長さで渡しても、補正後の音がサンプル単位で同じことを試験で確認。v0.975）
　　・開始直後は約+12dBを目標に始め、最初の約5秒の声は速く（2秒で20dB）、その後は10秒で20dB合わせる
　　　（開始直後の第一声が小声でも効くように）
　　・Windowsのマイク音量は変えない。メーターは補正前の音。二重記録の判定（3章(A)）も補正前の音で行う
　　　（補正で音量の形が変わり、相手の声に自分の声が重なったとき判定値が0.52→0.64に上がって自分の発言まで
　　　捨てることを試験で確認したため）
　(3) 発話検出（Silero VAD）：threshold 0.5、無音0.6秒で区切る、最大20秒
　　・話し続けても約12秒ごとに、直前4〜0.8秒で一番音の小さい所で先に区切って表示（早出し）
　(4) 認識：modified_beam_search（幅4）、num_threads=1
　　・8秒（早出しの区間は4秒）を超える区間は、音の小さい所で2.5〜6秒に分けて認識
　　・各区間の前0.3秒・後0.4秒の実音声と、前後0.5秒の無音を付けて認識
　　　小声補正がオンのマイクは、前を最大1.0秒に（v0.974）。0.3秒を超えて伸ばす分は、前の区間の終わり＋0.4秒
　　　（前の区間の後ろに足した所）より前には伸ばさない。最低の0.3秒は以前どおり優先するので、区間の間が0.7秒未満の
　　　ときは前の区間の後ろと少し重なる（以前の版と同じ）。話し始めの小さな声の後に間があると、そこがVADの区間から外れるため
　　・取りこぼし対策：認識した最後の文字の時刻（モデルは約0.3秒早めに付く）より後ろに1秒以上の音声が
　　　残り、そこに声があれば、残りだけを再認識してつなげる（最大3回）
　　・用語登録は sherpa-onnx のホットワード（強さ2.0）
　(5) 後処理：漢数字の変換（v0.71から初期はオフ。numbers=1 で有効）、句読点、用語登録の「誤 → 正」の置き換え
　(6) 表示：[HH:MM:SS] 名前（マイク音）：本文 ／ [HH:MM:SS] 相手（PC音）：本文
　　・同じ話者の行が約150文字を超えたら、文の切れ目で新しい行にする
　　・行の時刻＝取り込み開始の時刻＋区間の開始位置（QPCでそろえた時間軸）
　・音声データは処理に必要な直近の数十秒だけメモリに置き、古い分から捨てる。ファイルには書かない


■ 3. 二重記録（スピーカーの音をマイクが拾う）対策
--------------------------------------------------
　二段構えです。

　(A) エンジン側（音で判定）
　　・マイクの区間と、同じ時間帯のPC音の「音量の包絡線」の相関を、±1.0秒のずれを探して計算
　　・相関 0.6 以上 → 相手の声を拾っただけとして捨てる（kEchoThreshold）
　　・実測：拾っただけの区間 0.65〜0.98／自分だけ 0.1〜0.2／同時に話した区間 0.25〜0.66

　(B) 画面側の後片付け（文字で判定。v0.54で方式を変更）
　　・(A)をすり抜けたマイクの行を、直近30秒の相手の行と比べる
　　・消す条件（すべて満たすとき）
　　　- その区間の相関が 0.3 以上（kEchoLineMin。ヘッドホン使用時や復唱は消さない）
　　　- 相手の発言を文（。？！と行末）に区切り、続いたいくつかの文をつないだものと、
　　　　マイクの行が、句読点・空白を除いて完全に一致（「下さい／ください」はそろえる）
　　　- 文の途中から始まる・途中で終わる一致は消さない
　　・1文字でも違えば残す。認識の揺れで少し違う二重記録は残るが、AIへの依頼文でまとめる
　　・経緯：v0.41〜v0.53は「似ていれば消す」方式で、数字・否定を守る工夫を重ねたが、
　　　「社外／社内」「実施／中止」「佐藤／加藤」のように1〜2文字で意味が変わる発言が消える例が
　　　残ったため、完全一致に切り替えた（付録2のv0.54）

　・エコーキャンセラー（AEC）は使っていない（11章）


■ 4. 長時間運転・スリープ・休止
--------------------------------------------------
　・文字起こし中は SetThreadExecutionState と PowerSetRequest（ExecutionRequired）でスリープを防ぐ
　・WM_POWERBROADCAST でスリープを知ったら一時停止し、復帰後に自動で再開
　・休止の検出：取り込みの Flush（0.05〜0.1秒ごと）が10秒以上呼ばれなければ、アプリごと止められていたと判断。
　　その間の無音は渡さずに区切り直し、止まっていた時刻の範囲を画面に出す
　　（Surfaceなどのモダンスタンバイでは PBT_APMSUSPEND が来ないため）
　・日付が変わったら（または約26時間ごと、最長30時間）、無音のときに内部を区切り直す
　　（sherpa-onnx の VAD は区間の開始位置を int32 で数えるため、約37時間で桁あふれする）
　・処理待ちが30秒を超えたら、3秒未満に戻るまで認識を飛ばし、画面で知らせる
　・画面の文字が100万文字を超えたら、古い約25万文字をメモフォルダの「文字起こし_保管_日時.txt」へ移す


■ 5. 画面・テキスト処理
--------------------------------------------------
　・文字欄は EDIT コントロール。ふだんは読み取り専用、［文字起こしを修正］で書き換え可（新しい行は末尾に続く）
　・名前の欄（v0.61）：自分の名前・相手の名前を「、・,，／/」で区切る（空白は区切りにしない）。
　　マイクの行の名前は、1人ならその名前、2人以上なら「自分たち」、空欄なら「自分」。PCの行はいつも「相手」。
　　名前の一覧はコピーの見出しに「マイク側の参加者」「PC側の参加者」として1回だけ書く
　・自分の名前を変えると、過去の行のラベルも置き換える（[hh:mm] と [hh:mm:ss] の両方）
　・名前の欄（v0.63）：入力もできるコンボボックス（CBS_DROPDOWN）。会議名に貼り付けるときは、改行・タブを空白1つにまとめ、前後の空白を
　　取ってから入れる（PasteOneLine。WM_PASTE・Ctrl+V・Shift+Insert。選択部分を置き換え・Ctrl+Zで戻せる・60文字を超える分は入れず知らせる。v0.970。切り詰めて空になったら置き換えない・一覧を閉じても本文が同じなら入れ直さず Ctrl+Z を残す。v0.971）。［新しい会議］で空にする（起動はいつも空。会議ごとの値は会議の控えに残る＝14章）。
　　全文コピー・保存が成功したときの欄の文字を、自分・相手それぞれ新しい順・重複なしで10件まで設定.iniに覚えて一覧に並べる。
　　空欄にクリックかTabで入ったときだけ一覧を自動で開く（画面の切り替えで戻ったとき・文字があるときは開かない）。
　　一覧を開いたまま打ち始めたら一覧を閉じ、打った文字をそのまま残す（Enterで候補に置き換わらないように）。
　　一覧から選んだときは、その場で過去の行のラベルもそろえる
　・名前の欄の長さ（v0.74）：自分・相手の名前は1,000文字まで（CB_LIMITTEXT。候補・会議名ごとの記録も同じ長さで切る）。会議名は60文字。
　　一覧の幅は欄より広く（420 論理px）。欄に収まらない名前は、ツールチップ（TTF_SUBCLASS、入力部分に付ける）で
　　区切りごとに1人1行、25人まで表示し、残りは「…ほかN名」
　・会議名も同じ候補つきの欄（v0.64）。候補はオーナードロー（CBS_OWNERDRAWFIXED｜CBS_HASSTRINGS）で描き、
　　ピン留め（項目データ1）の先頭に★、ピン留めと最近の間に線。欄に入る文字は名前だけ（★は描画だけ）。
　　ピン留めは欄ごとに最大30件（v0.68で10→30）で、最近の10件とは別枠（押し出されない）。右クリックの［いちばん上へ］で並べ替え（v0.69）。一覧に一度に見えるのは約20件
　　一覧（ComboLBox）と入力部分を SetWindowSubclass で横取りし、右クリック → メニュー［ピン留め／外す］［候補から消す］、
　　一覧を開いているときの Shift＋Delete → 候補から消す（閉じているときの Shift＋Delete は通常の「切り取り」のまま）。
　　メニューを出す前に一覧を閉じ、入力中の文字を戻してから、操作後に一覧を開き直す。
　・画面の並び（今）：上から リボン（メモフォルダ・スクショフォルダ・過去の会議┆用語登録・依頼文┆AI活用のコツ・使い方・？）→ 会議名・名前 →
　　会議画面スクショ（手動のキー・自動・範囲）と最小化で通知領域へ → 開始 → 声の選択（チェック・機器名・音量）→ 状態 → 文字起こし →
　　AIへの依頼・形式 →［全文コピー］［文字起こしを保存］［スクショをPDF保存］［新しい会議］。
　　Tabの順は、リボンを最後に回す。［使い方］［AI活用のコツ］［？］は1画面（660×700）で読める長さの言い切りにした（v0.65）
　・リボンの見た目（v0.66）：WM_PAINT で薄い灰色の帯（RGB 243,244,246）と下線・区切り線を描き、8つのボタンはオーナードロー
　　（平ら。マウスが乗ると薄い青、押すと濃い青。SetWindowSubclass＋TrackMouseEvent で乗った・離れたを知る）。
　　アイコンは Segoe MDL2 Assets の文字（E8B7 フォルダー／E8B9 写真／E81C 履歴／E82D 辞書／E70F 鉛筆／EA80 電球／E736 本）。フォントが無ければ文字だけ。
　　幅が足りないときは余白を詰め、それでも足りなければアイコンを省く。ハイコントラストではWindowsの色。最初の画面の幅は740（96dpi換算）
　・会議名ごとの名前（v0.64）：コピー・保存のとき、会議名に対してそのときの自分・相手の名前を覚える。
　　v0.65から依頼の名前と形式も覚え、会議名を選んだら切り替えて状態欄で知らせる（依頼文を編集して名前が見つからなければ今のまま）。
　　会議名を一覧から選んだら、名前の欄が空か、前に自動で入れた文字のまま（手で直していない）なら、その会議の名前に入れ替える。
　　手で入れた・直した名前は変えない。候補から消えた会議名の分は削除する
　・画面の位置（v0.64）：終了時（WM_CLOSE・WM_ENDSESSION）に GetWindowPlacement の通常の位置と最大化を保存し、
　　起動時に SetWindowPlacement で戻す。タイトルバーの左側がどの画面の作業領域にも入らないときは、はじめの位置（真ん中）。
　　通知領域から戻すときは、最小化していたときだけ SW_RESTORE（最大化のまま戻す）
　・日付が変わった最初の行の前に日付の行を入れる
　・自動保存：文字が出るたびに「メモ\自動保存\自動保存_YYYY年MM月.txt」へ追記（v0.69で日ごと→月ごと・専用フォルダ。
　　［開始］の行には、自動保存にだけ「（会議名：…）」を添える）。一度でも失敗したら、［文字起こしを保存］で保存できるまで状態欄で知らせる
　・「保存していない」の目印（g.dirty）は v0.969 で撤去。終了・［新しい会議］・過去の会議を開くときの確認は、
　　会議の控えに書けなかったときだけ（ConfirmSwitch。13章。v0.967）
　・行の頭「[時刻] 名前：」は std::wstring で組み立てる（v0.75。v0.74までは128文字の固定長で、1,000文字まで入る名前に追いついていなかった）
　・文字起こし中の［新しい会議］（v0.965）：止めるかを確かめ、止めてから切り替える（v0.75〜v0.964は止めずに続けていた）
　・前回の画面（v0.80〜v0.964）：終了時に画面を「メモ\前回の画面.txt」に書き、起動時に戻していた。v0.965で廃止
　　（起動はいつも新しい空の会議、会議は控えへ＝14章）。古い前回の画面.txt の控えへの引き継ぎ（v0.965〜v0.968）は、試作版専用のため v0.969 で削除
　・二重起動の防止：名前付きミューテックス Local\NandemoMojiokoshi_by169。2つ目は、先に動いているのが同じexeなら画面を前に出して終了、
　　別のパスのexe（前の版など）なら「ほかの版が動いています」と知らせて終了（v0.962）
　・前の版からの引き継ぎ（v0.70）：設定.ini がまだないときだけ、exe のフォルダの親の親から2段下（二重フォルダ・内側だけの両方）と
　　「なんでも文字起こし.exe」と 設定.ini がある場所のうち 設定.ini が最も新しいものを提案。
　　［はい］で メモ（まるごと、同名は残す）→ 用語登録.txt → 自作の依頼文（v0.76）→ 旧形式の依頼文の控え → 設定.ini（最後）の順にコピーし、1つずつ成否を確かめる。
　　失敗があれば一覧を表示し、設定.ini はコピーせず migratePending=1 を書く（次の起動で、設定.iniがあってももう一度提案。やり直しは同名を
　　上書きしないので安全）。
　　メモの同名ファイル（v0.75）：中身をバイト単位で比べ、同じなら引き継ぎ済みとして飛ばす。違えば上書きせず
　　「元の名前_前の版から.拡張子」（あれば _前の版から2 … 50まで）で残し、既に同じ中身の控えがあれば作らない
　　（やり直しの前に新しい版で同じ月の自動保存ができた場合など。両方残り、やり直しても増えない）。残した数は状態欄で知らせる。
　　依頼文は新しい版のものを使い、前の版の依頼文は メモ\バックアップ に控える。
　　候補が複数なら TaskDialog のラジオボタンで選ぶ（版は exe のバージョン情報、最後に使った日時＝設定.iniの更新日時の新しい順、最大8件）。
　　［いいえ］でも 設定.ini（migrateAsked=1）ができるので、次からは聞かない。
　　フォルダの外に「前回の場所」は書かない（USBメモリで持ち歩く使い方のため）
　・通知領域：起動時に NIS_HIDDEN で1回だけ登録し、しまう／戻すで表示を切り替える
　・待機中の既定機器名は、2秒ごとに別スレッドで取得（音声の仕組みが詰まっても画面が固まらない）
　・exe のフォルダに書き込めないときは、起動時に知らせて、フォルダごと移してもらう（保存しないモードでの起動も選べる）
　・想定外の例外で終わるときは、メモフォルダに「エラー記録.txt」を残し、控え・自動保存に残っている場合があると案内する
　　（保存しないモードでは記録を書かず、保存していないと案内する。v0.969）


　・用語登録のしやすさ（v0.79）：
　　① 文字起こしの欄を SetWindowSubclass で横取りし、右クリック（WM_CONTEXTMENU）のメニューを自前で出す。
　　　言葉を選んでいれば「置き換えに登録…」「用語に登録」、ほかに 切り取り／コピー／貼り付け／すべて選択。
　　　置き換え：小さな入力欄（モーダルの自前ウィンドウ）で正しい言葉を聞き、用語登録.txt の最後に「誤 → 正」を足す。
　　　v0.81：同じ置き換え元（読み込みと同じ決まりでそろえて比べる。矢印の書き方・前後の空白・全角英数字）の行があれば、
　　　確認なしで最初の行を書き換え、残りの同じ置き換え元の行は消す。読み込み時も、同じ置き換え元は最後に書いたものだけを使う
　　　（メモ帳は開かない。書く前に バックアップ へ控える。文字コードは読み直してUTF-8で書き直す）。
　　　すぐ LoadTerms で反映し、画面の同じ文字もすべて置き換える。直す言葉に元の言葉が含まれる場合は登録しない（毎回くり返し付くため）。
　　　用語：「置き換え」の見出しの前に足す（見出しが無い古い形なら最後）。用語として使えない文字だけなら、そう知らせる
　　③ 名前の欄（自分・相手）の名前を区切り（、・／ と空白）で分け、2文字以上のものを、その会議のあいだ用語に足す
　　　（用語登録.txt には書かない。SyncNameLabels のたびに名前が変わっていれば SetTerms をやり直す。件数の表示は用語登録.txt の分）
　　② 用語登録.txt のはじめの内容を短く：右クリックの登録・名前の欄の案内と、「用語」「置き換え」の2つの見出し


■ 6. AIへの依頼文とコピーの形式
--------------------------------------------------
　・定型と自作（v0.76）：
　　定型7種類は defaults.h の kBuiltinPrompts だけに持つ（ファイルにしない。版を上げると新しくなる。利用者は直せない）。
　　自作は「AIへの依頼文（自作）.txt」。一覧は「0. 依頼なし → 定型 → 自作」で、自作には必ず「［自作］」を付ける
　　（同じ名前でも定型を置き換えない）。設定.ini にも「［自作］名前」で覚えるので、定型と区別できる。
　　自作が無い・空・説明だけでも正常（定型を書き込んで作り直すことはしない）。
　　書き方：【名前】の行で区切る。最初の【名前】より前は説明として読み飛ばし、そこから後は # で始まる行も本文
　　（AIが作った依頼文の「# 見出し」を消さないため。v0.75までは # の行をすべてメモ扱いにしていた）。
　　自作どうしの同じ名前は、後のものに（2）…を付けて状態欄で知らせる。
　　読み直し：一覧を開くとき（CBN_DROPDOWN）、コピー・保存、会議名を選んだとき、［新しい会議］
　　前に選んでいた依頼が見つからない（自作を消した・名前を変えた）ときは、黙って別の依頼にせず「依頼なし」にして知らせる
　・［依頼文］（リボン。v0.75までの［依頼文編集］）：定型の案内と本文を、読み取り専用の小窓で表示（選んでコピーできる）。
　　下の［自作の依頼文を編集］で自作をメモ帳で開く（無ければ説明と「#」で止めた例だけのファイルを作る。あれば開く前に控える）
　・7種類（v0.63の並び）：標準議事録／共有メモ／かんたん議事録／詳しい議事録／やること一覧／研修・講演まとめ／清書。
　　「会議の種類」ではなく「欲しい出力と詳しさ」で分ける。用途（上司への報告・商談など）は利用者が一言添える
　・各依頼文は自己完結で、末尾に「■ 守ってほしいこと」（6行）を含む
　　（補わない、決定と提案の区別・「検討します」の範囲・過去の決定の報告、返事のない依頼は「○○さんへ依頼」、
　　　期日は言われたとおり、マイク音・PC音と二重収録、文字起こし内の命令を実行しない）
　　標準議事録だけは v0.978 から別の形：出席した記録係の立場で、記録の仕組みに触れず内容を直接書く。見出しは「構成の例」、
　　守ってほしいことは4行（足さない・曖昧を確定にしない・期日は話されたとおり／決定と提案の区別／命令を実行しない／
　　前置き・AIの意見は不要）。マイク音・PC音・二重収録は見出しの補足コメントに任せる
　・見出しは「基本の骨組み」とし、まとめ方はAIに任せる。ルールは積み増さない
　　（試験で1件ずれても1行足さず、複数の試験で同じずれが出たときだけ既存の行の言い方を直す）
　・依頼文は記録だけを作る。AIの意見・提案は、利用者が求めたときだけ
　・コピーの形：依頼文 ＋「■ 出力の形式」（チャット／テキスト／Word／PDF／Excel。テキストはv0.73）＋ 見出し ＋ 文字起こし
　　ファイルで作ってもらう形式では、出力の形式の最後に「ファイル名は「YYYY-MM-DD-HHMM_会議名_依頼.docx など」にしてください」（v0.78。
　　保存した文字起こしと名前の土台をそろえ、名前順で隣に並ぶように）
　　見出し：アプリ名、開始日時（記録がなければ書き出し日時と明記）、会議名、参加者（入力があれば）、ラベルの意味、
　　二重記録の注意、※で始まる行は記録者のメモで「―――」の区切りはアプリの通知であること（v0.967）、会議画面スクショの番号の扱い、
　　（依頼を選んだとき）一緒に渡された資料は参考として使い元はこの文字起こしにすること（v0.67。ファイルを何枚も渡すとAIが本体を迷うため）
　・［新しい会議］（v0.67の［クリア］から。v0.965で改名）：今の会議を控えに書いてから、文字と会議名・名前を消し、修正中を終え、
　　声は両方オン、依頼は「標準議事録｜」で始まるもの、形式はチャット。会議画面スクショの自動は「自動：撮らない」、手動のキーはそのまま
　・自作の編集の前に「メモ\バックアップ」へ控える（直近5つ。前の控えと同じなら増やさない）
　・選んだ依頼は名前で覚える。見つからなければ、名前の「｜」より前（種類）で今の依頼へ引き継ぐ（kKindMap）。
　　対応表にない種類（上司への報告・経営会議・商談・面談・アイデア整理・要件と仕様など）は標準議事録へ
　・依頼文の試験：架空の会議でAIに出力を作らせ、別のAIが確認して改良した（v0.60は朝礼・Web会議・報告だけの会議・研修の4本）
　　（結果は同梱の開発ストーリー、試験方法はご要望があれば公開します）


■ 7. 設定.ini の全項目
--------------------------------------------------
　場所：exe と同じフォルダ（書き込めないときは起動時に知らせ、フォルダごと移してもらう。v0.961〜）
　書式：「名前=値」の行、UTF-8（[main] の下に書く形で作られます）。消すと初期設定で起動します

　画面で変わる項目（アプリが書き込む）
　　meetHist=…／nameHist=…／themHist=…　　会議名・自分の名前・相手の名前の最近の候補（新しい順に10件まで。タブ区切り。v0.63〜）
　　meetPin=…／namePin=…／themPin=…　　　同じくピン留め（最大30件。タブ区切り。v0.64）
　　meetNames=…　　　 会議名ごとの設定（「会議名<US>自分<US>相手<US>依頼の名前<US>形式の名前」をタブ区切り。US＝U+001F。v0.64、依頼・形式はv0.65）
　　window=x,y,幅,高さ,最大化　　画面の位置と大きさ（v0.64。消すと真ん中で開く）
　　migrateAsked=1　　 前の版の引き継ぎを聞いて［いいえ］だった（v0.70）
　　migratePending=1　 引き継ぎが途中で失敗した（次の起動でもう一度提案。v0.71）
　　　　　　　　　　　　※会議名・名前そのものは設定.iniには保存しない（起動はいつも新しい空の会議。会議ごとの値は会議の控えに残る）。（v0.62までの name= の読み替えは v0.969 で削除）。
　　mic=1　　　　　　　自分の声を文字にする（0で文字にしない。取り込みは続く）
　　loopback=1　　　　 相手の声（PC音）を文字にする
　　tray=0　　　　　　 最小化で通知領域へ（しまう）
　　promptName=…　　　選んでいるAIへの依頼の名前（自作は「［自作］名前」。v0.76）
　　prompt=1　　　　　 同じく番号（以前の版との互換用）
　　formatName=…　　　出力の形式の名前（v0.73から名前で覚える。v0.72までの format=番号 は、初回起動時に読み替えて消す）
　　slideHotkey=0　　　手動で撮るキー（0＝撮らない、1＝Ctrl+Alt+S、2＝Alt+Shift+S、3＝Ctrl+Alt+Shift+S。v0.95）
　　pdfCompress=1　　　［スクショをPDF保存］で最後に選んだ圧縮（0＝なし、1＝圧縮、2＝高圧縮、3＝超圧縮。無い・範囲外は1。v0.976。段階の中身は v0.977 で変えた＝13章）
　　pastW=…／pastH=…　［過去の会議］の一覧の大きさ（v0.964）

　画面にない項目（手で書き足す）
　　log=1　　　　　　　診断ログを残す（8章）。既定は0
　　numbers=1　　　　　漢数字を算用数字に変える（v0.71から既定は0＝変えない。人名・地名を変えることがあるため）。
　　　　　　　　　　　　万・億・兆は残して区切りごとに変える（一億二千万円 → 1億2000万円。v0.70までは 100002000万円 になる不具合）
　　autoCalmSecs=1　　会議画面スクショの自動：変わってから何秒落ち着いたら撮るか（1〜10。v0.962）
　　autoMotionSecs=120　同じく、画面全体が動き続けるときに何秒ごとに撮るか（10〜600。v0.962）
　　小声補正=1　　　　　マイクの小声補正（2章(2b)・前1.0秒）。0で切る＝v0.973と同じ処理。次の開始から反映（v0.974）


■ 8. 診断ログの読み方（log=1）
--------------------------------------------------
　設定.ini の [main] に log=1 と書くと、メモフォルダの「診断ログ.txt」に1行ずつ追記します。
　音声は保存しません。ただし、画面から消した行の先頭20文字は含まれるので、人に渡す前に確認してください。

　echo score=0.76 len=9.9s -> drop
　　マイクの区間ごとの二重記録の判定。score は3章(A)の相関、len は区間の長さ。
　　0.6以上は drop（捨てた）、未満は keep（文字にした）
　screen: removed mic line echo=0.53 （先頭20文字）
　　3章(B)の画面側の後片付けで消した行と、その区間の相関
　button: start (by mouse)
　　開始・停止ボタンの操作元（keyboard / mouse / touch / pen / unknown）。
　　タッチ・ペンは GetMessageExtraInfo の印（0xFF515700）で判定
　capture: gap 15s (sleep etc.) -> resync
　　取り込みが止まっていた秒数（4章の休止の検出）
　worker error: …
　　認識処理で起きた例外
　quiet boost: on
　　開始したときの小声補正のオン・オフ（v0.974）
　mic seg 12.3-14.5s raw=-46dB level=-31dB peak=-12dB gain=+15.0dB pre=1.0s boost=on
　　マイクの区間（VADの区間そのもの。前後に足した分は含まない）の大きさ。raw＝補正前、level・peak＝補正後、
　　gain＝同じ区間の補正後と補正前の比（その区間で実際にかかった増幅量）、pre＝前に足した実音声の長さ（v0.975）。
　　gain がいつも+18dB（上限）に近いなら、マイクの入力がかなり小さい（Windowsの音量・マイクとの距離を見直す）
　volume notice: mic=30 pc=100,50
　　音量の知らせを出したときの、Windowsの音量（(mute)＝ミュート、PC音の2台目はカンマの後ろ。v0.974〜）
　volume start: mic 60 / pc 35(mute)
　volume change: mic 60->49 / pc 35(mute)
　　文字起こし中に、Windowsのマイク・出力の音量／ミュートが変わった時刻（v0.976）。start は開始して音量を読めた最初の値、
　　change は前の値->新しい値（変わらなかった側はそのまま）。?＝読めない、PC音の2台目はカンマの後ろ（無いときは書かない）。
　　画面の更新（約0.1秒ごと）で読んだ値を比べる。アプリは音量を変えないので、変えたのはほかのソフトか利用者（どのソフトかは分からない）。
　　例：Web会議のソフト（ブラウザのMeetなど）のマイク自動調整。Meetを開かずにこのアプリだけで変わらないかを見ると切り分けられる
　・診断ログ.txt が5MBを超えたら、次の開始で「診断ログ_前.txt」に名前を変えて新しく始める（前のものは上書き。v0.974）

　使い方の例：スピーカー使用時に「自分の発言が消えた」「二重に残った」ときは、その時刻の
　echo score と screen の行を見ると、どちらの段で判定されたかがわかります。


■ 9. 作られるファイルの一覧
--------------------------------------------------
　exe のフォルダ（書き込めないときは「保存しないモード」で起動でき、そのときは何も作らない）
　・設定.ini ／ 用語登録.txt（無ければひな形で作る）／ AIへの依頼文（自作）.txt（［自作の依頼文を編集］を押したときに作る）
　メモフォルダ
　・自動保存\自動保存_YYYY年MM月.txt …… 文字が出るたびに追記（修正・名前の変更は反映されない。v0.68までは メモ\自動保存_YYYY-MM-DD.txt）
　・YYYY-MM-DD-HHMM_［会議名_］依頼（形式向け）.txt …… ［文字起こしを保存］で保存したもの（v0.78。v0.95から保存先を選べる）
　　日時は文字起こし開始日時（記録がなければ書き出した時刻）。依頼は「｜」より前、自作も「［自作］」は付けず10文字まで。
　　依頼なしは YYYY-MM-DD-HHMM_［会議名_］文字起こしのみ.txt（v0.77は 会議名_文字起こし_日時（依頼・形式向け）.txt）
　・文字起こし_保管_日時.txt …… 100万文字を超えたときに移した古い部分
　・会議の控え\YYYY-MM-DD-HHMM_［会議名］.txt …… 会議ごとの控え（14章）
　・スクショ\YYYY-MM-DD-HHMM\スクショNNNN_手動|自動_YYYY-MM-DD-HHMMSS.jpg …… 会議画面スクショ（13章）
　・YYYY-MM-DD-HHMM_［会議名_］会議画面スクショ（手動|全部）［_N日目］.pdf …… ［スクショをPDF保存］（圧縮を選び、保存先を選ぶ。
　　圧縮はPDFの中の画像だけを作り直し、スクショフォルダの元の画像は変えない。v0.976。v0.977から名前の末尾に段階
　　「_圧縮なし／_圧縮／_高圧縮／_超圧縮」。日ごとに分けるときは …_N日目_高圧縮.pdf）
　・診断ログ.txt …… log=1 のときだけ
　・エラー記録.txt …… 想定外の終了のとき
　・バックアップ\AIへの依頼文（自作）_日時.txt、用語登録_日時.txt …… 編集前の控え（各5つまで）
　・バックアップ\AIへの依頼文（自作）_前の版から.txt …… 引き継ぎで新しい版にもう自作があったときの、前の版の自作
　※ 音声ファイルは作りません。削除はフォルダごと消すだけです（レジストリは使いません）
　書き方：全体を書き直すファイル（［文字起こしを保存］、右クリックで登録したときの用語登録.txt、会議の控え、設定.ini、PDF）は、
　同じフォルダの一時ファイルに全部書いて、書けたことを確かめてから置き換える（途中で書けなくなっても前の中身が残る）。
　［文字起こしを保存］と用語登録.txt は v0.979 から（WriteUtf8Replace。失敗したら元のファイルには手を付けない）。
　設定.ini だけは、置き換えに失敗したとき（ほかのソフトがつかんでいるとき）直接書き直す（失っても設定だけのため）。
　自動保存・エラー記録は追記。BOM の書き込みも成否を確かめる（v0.979）


■ 10. 性能と測り方
--------------------------------------------------
　・精度：JSUT での文字誤り率 6.6%（モデルの公開値。参考：Whisper large-v3 7.2%）。
　　このソフトでの会議音声の実測ではありません
　・早口（約1.35倍速・約55秒）の試験音声で、文字になった割合：工夫前 28% → 工夫後 99%
　・連続BGMつき音声の取りこぼし：32% → 20%（取りこぼし再認識の効果）
　・速さ：1分の音声を約3秒（CPU 1コア、実時間の約20倍速）。話が途切れてから表示まで約1秒
　・軽さ：会議中のCPU使用率 約10%（Core i5-7300U・2コアの事務用ノートでの参考値）、メモリ 約350MB
　・二重記録：ノートPCのスピーカーで動画約7分（本人は無言）、拾った相手の声65件をすべて除去（v0.40時点、主に3章(A)）
　・小声補正（v0.975で測り直し）：作者の読み上げ（iPhoneで録音、約100秒・21発話）を同じ処理に通し、抜け・誤りの文字の割合
　　（オフ→オン）：そのまま 8.4%→0.0%、音量1/2 17.5%→0.0%、1/4 29.9%→0.0%、1/8 72.1%→3.2%。
　　VADが作った区間の数（21発話中。オフ→オン）：そのまま 20→21、1/4 18→21、1/8 7→20（小さい音では、VADの取りこぼしと、
　　区間の中で頭が欠ける・文字にならない分の両方がある）。
　　モデル付属のニュース音声5文：普通 7.6%→5.1%（かな・漢字の書き方の違いを含む）、開始から小さい声 5.6%→0.5%。
　　合成の雑音（キーボード音・空調音のような音、無音。各90秒）で余計な文字はオフ・オンとも0字。CPU時間は約2〜13%増。
　　本物の雑音・近くの席の人の声での確認は、まだ（作者の実機で確認中）
　・会議画面スクショの大きさ（v0.976。作者の会議の画像を、同じ処理（libjpeg・面積平均で縮小）で作り直して測った値。
　　WICの画質の数値は libjpeg の quality と同じ量子化表になることを、作者の画像で確認）：
　　1枚（画面のまま・画質0.90）：Meetのウィンドウ 1938×1075 で約295KB、縦長のウィンドウ 約1390×1817 で約345〜415KB、
　　画面全体 2736×1889 で約883KB。同じ画面を v0.975 の自動（幅1600・画質0.75）にすると約1.5〜3.4分の1
　　PDFの圧縮（v0.977の段階。元の大きさに対する割合。上記の4枚）：圧縮（幅1600・0.70）0.27〜0.65、
　　高圧縮（幅1280・0.60）0.16〜0.52、超圧縮（幅1024・0.50）0.10〜0.33。元が小さい画像ほど縮まない
　　（作り直して大きくなる画像は元のまま入れる）。作者の会議で v0.975 が撮った画像40枚（幅1600・0.75）では
　　圧縮 0.91・高圧縮 0.55・超圧縮 0.34（同じ画像を作者の Windows の v0.976 で作ったPDFは、幅1600・0.70 が 0.91、
　　幅1280・0.60 が 0.52 で、この再現とほぼ同じ。WIC の画質0.70・0.60 も libjpeg の quality 70・60 と同じ量子化表だった）
　・試験音声：合成音声（文・遠い声・早口・BGMつき・連続）と、モデル付属のニュース音声。
　　認識エンジンを変えたときは、同じ試験セットで前の版と出力を比べている
　※ 数値は作者の環境での測定です


■ 11. 設計上の判断と、まだ迷っている点（ご意見歓迎）
--------------------------------------------------
　判断したこと
　・録音しない：音声はメモリ上の直近数十秒だけ。安心して使えることを優先し、聞き直しはできない
　・消すより残す：二重記録の後処理は、完全一致のときだけ消す。重複はAIがまとめられるが、
　　消えた発言はAIにも戻せないため
　・エコーキャンセラー（WebRTC AEC など）は使わない：処理が重くなり、認識精度への影響も読めないため、
　　軽さを優先して相関判定にした
　・話者分離（人ごとの区別）はしない：精度と重さの釣り合いが取れないため。「自分（マイク）」と「相手（PC音）」の2つだけ
　・CPU 1スレッド：2スレッドより CPU 時間が約半分で速さは同じだった
　・議事録はこのソフトで作らない：AIに任せ、依頼文の品質に力を入れる
　・電子署名なし：個人で使える安価な手段が現状ないため

　まだ迷っている点・改善したい点
　・二重記録：相関0.6と0.3のしきい値、±1.0秒の探索幅は、手元の数台での実測で決めた。
　　機器や部屋の響きによる差を、よりよく吸収する方法があれば知りたい
　・同時に話した区間（相関0.25〜0.66）の扱い：今は0.6以上を捨てるため、相手の声が大きいと
　　自分の声ごと捨てることがある
　・停止時、処理待ちの消化を待つため、画面が一時的に固まる可能性がある
　・処理待ちの上限：30秒を超えたら飛ばす方式でよいか
　・漢数字の変換規則（numconv.cpp）の除外の考え方
　・依頼文（共通ルール）の書き方。AIによって守り方に差がある


■ 12. 試験用の調整（開発者向け）
--------------------------------------------------
　-DTESTING を付けてビルドした試験版だけ、環境変数で調整値を変えられます（配布版では無効）。
　　HWS（ホットワードの強さ）、BEAM（ビーム幅）、BLANKP（blank penalty）、THREADS、GREEDY（greedy_search）
　　MAXS（VADの最大秒数）、MINSIL（区切る無音の秒数）、THR（VADのしきい値）
　　CHMAX / CHMIN / CHTRIG（分割の最大・最小・対象の秒数）、TAILGAP（取りこぼし再認識の条件）
　　EARLY / ETRIG（早出しの秒数・分割の目安）、ECHODBG / EARLYDBG（判定の表示）
　ビルド方法は同じフォルダの「ビルド手順.txt」をご覧ください。


■ 13. 会議画面スクショ（v0.90〜。今の仕様）
--------------------------------------------------
　目的：講義のスライドや仕様確認中の図面を確実に残し、文字起こしと結びつけてAIに渡す（作者の方針：撮り逃さない＞枚数を減らす、シンプルに）
　画面：開始ボタンの上の行「会議画面スクショ：［手動：撮らない▼］［自動：撮らない▼］　☐最小化で通知領域へ」、リボン［スクショフォルダ］、
　　　　下の段［スクショをPDF保存］
　撮る時：文字起こし中だけ（v0.965）。StartRec で見張り（slidecap::Recorder のスレッド）と手動のキー（RegisterHotKey、MOD_NOREPEAT）を動かし、
　　停止（REC_USER・REC_SLEEP）でキー解除 → SlideStop（スレッドの終了を待ち、撮れた分の知らせ WM_APP_SLIDE を本文へ）→ 控えを書く。
　　内部の区切り直し（日付・機器の付け直し）では止めない（Recorder::Running で判定）
　手動：キーは「撮らない／Ctrl+Alt+S／Alt+Shift+S／Ctrl+Alt+Shift+S」から選ぶ（設定 slideHotkey。選ぶと説明を出す）。
　　押した瞬間の最前面のウィンドウ（自分のプロセス・デスクトップ・タスクバー・最小化ならマウスのある画面全体）を、要求ごとにキューへ（最大8件。
　　あふれたら知らせる）。幅3840まで・画質0.90（v0.976から自動も同じ）。待たずに新しい番号で撮り、自動の判定の基準は、同じ範囲を撮ったときだけ更新。
　　知らせ：画面右下の小さな札（白いカプセル・青い枠・カメラと赤い点・番号。WS_EX_LAYERED＋角丸、フェード約1.5秒、クリックを通す、
　　WDA_EXCLUDEFROMCAPTURE で写らない）と、タスクバー・通知領域のアイコンの色の反転（1.5秒）。音は出さない
　　自動（v0.980）：新しく保存できたとき（Capture）だけ、同じ札を緑の枠・緑のカメラ（赤い点はそのまま）で、撮っているもの
　　（ウィンドウ・画面）があるモニターの同じ位置に出す。アイコンの色の反転・状態欄の知らせはしない。再表示では出さない
　　札を出す条件（v0.980）：Windows 10 のビルド19041（2004）以降で、SetWindowDisplayAffinity(WDA_EXCLUDEFROMCAPTURE) が成功したときだけ。
　　それより前の Windows ではこの指定が WDA_MONITOR と同じ動き（画面共有に黒い四角で写る）になるため、手動・自動とも札を出さない
　　v0.981：出すたびに、透明度0を決めてから指定し、失敗したら見えないまま画面外に出してもう一度。GetWindowDisplayAffinity が 0x11 か確かめる。
　　出せないときは、状態欄に「撮りました（手動／自動）」と理由の番号（1回目の失敗コード-2回目-読み戻した値）を一度だけ出す
　自動：選択欄（自動：撮らない／画面全体／ウィンドウ。g_autoSel。隠されたウィンドウ DWMWA_CLOAKED・画面外は除く。一覧を開くたびに作り直し、
　　選んでいたウィンドウが無ければ「撮らない」へ）。確定は選んで閉じたとき。「撮らない」から選んだときだけ3行の注意。
　　撮っていたウィンドウが閉じられたら「自動：撮らない」に戻して知らせる（画面全体へは広げない）。
　　毎秒、160×90の白黒に縮め（slide_detect.h）、16×9のマス目で前に撮った画面と比べる。
　　・大きな変化（2割以上）は calmSecs（1秒。設定 autoCalmSecs）落ち着いたら撮る。書き足し（背景だった所への追加）は3秒、その他の小さな変化は8秒
　　・何秒も変わり続けるマス目は数えない。画面全体が動き続けるときは forceSecs（120秒。設定 autoMotionSecs）ごとに1枚
　　・前に撮った画面と同じなら撮らず「〔会議画面スクショNNNNを再表示〕」。撮った画像を書き換えることはない（v0.94で差し替えを廃止）
　　・枚数の上限はない（v0.976で「1時間120枚」を廃止。上限の知らせが1枚ごとに出直し、本文に何度も入る不具合もあった）。
　　　画像は手動と同じ幅3840まで・画質0.90（v0.93〜v0.975は幅1600まで・画質0.75）
　　・自動で見張っている間は、このアプリを写さない（SetWindowDisplayAffinity WDA_EXCLUDEFROMCAPTURE）
　保存：メモ\スクショ\開始日時\スクショNNNN_手動|自動_YYYY-MM-DD-HHMMSS.jpg（4けたの通し番号）。画像の下の帯と本文の行
　　「〔会議画面スクショNNNN・手動|自動〕」に同じ表記。保存できたときだけ番号を確定（自動は判定を戻して10秒後に撮り直し、手動は撮り直さず案内）
　PDF：［スクショをPDF保存］→「手動だけ／全部／スクショフォルダを開く（閉じない）／キャンセル」→ 圧縮（AskPdfLevel。v0.976）→
　　保存先を選ぶ（最初はメモフォルダ）。撮った日がまたがれば日ごとに分け、既存ファイルは上書きを確かめる。作れなかった日を知らせる。
　　1枚ずつ読んで書き出す（WritePdf）。圧縮の段階（slidecap::kPdfLevels。v0.977）：0＝そのまま、1＝幅1600・画質0.70、
　　2＝幅1280・0.60、3＝幅1024・0.50（v0.976は 1920・0.80／1600・0.70／1280・0.60。作者の試用で、1段ずつ強くした）。1〜3は WIC で読み → IWICBitmapScaler（Fant）で縮め → JPEG にしてメモリへ（CreateStreamOnHGlobal）。
　　作り直せない・作り直すと大きくなる画像は元のまま入れる。元の jpg は読むだけ。画面の目安（v0.977）：全体から均等に最大6枚を
　　実際に作り直して元との割合を測り、全体の大きさに掛ける（EstimatePdfBytes。待つ間は砂時計。大きな画像でも1秒ほどの見込み）。
　　画面には「約○MB（元の約○%）・幅○まで・画質○」と用途を出す。v0.976 の「画素数×決まった大きさ」は、軽い画面で
　　大きく出すぎた（作者の会議の画像40枚で、幅1280・0.60 の実際 約0.55 に対し、その方式の目安は 0.77）
　　作るのは別のスレッド（v0.976。画面は固まらない）。IoMutex は1枚を読む間だけ持つ（撮影の保存と交互に進む）。進み具合は状態欄、
　　作っている間は［スクショをPDF保存］を押せず、閉じようとすると待ってもらう。結果の知らせに段階と大きさ（例「超圧縮・4.5MB」）
　見出し（AIへ）：〔会議画面スクショ番号〕の意味、手動は利用者が選んだもの（理由は推測しない）、PDFに入っていない番号もある（推測しない）
　試験：判定の合成試験28場面（claude/スライド記録_試作/test_detect.cpp。開発用）、Wine の自己試験（SLIDE_SELFTEST。12章）
　版ごとの変更：付録1

■ 14. 会議の控えと［過去の会議］（v0.963〜。今の仕様）
--------------------------------------------------
　起動：いつも新しい空の会議（v0.965）。古い「前回の画面.txt」は使わない（試作版専用の引き継ぎは v0.969 で削除）
　控え：メモ\会議の控え\YYYY-MM-DD-HHMM_会議名.txt（meeting・name・them・start・slidedir・slides・本文。直した内容を含む）。
　　ファイル名は最初に書いたときに決め、その会議の間は同じファイルを書き直す（g_archivePath）。控えのある会議は本文が空でも書く。
　　控えが無く本文も空（起動直後）なら作らない。書く時：停止・閉じる・［新しい会議］・別の会議を開く前・1分ごと（本文・会議名・名前の
　　ハッシュが変わったとき。書けなかったら次も試す）。書けない間は状態欄で知らせ、終了時に書けなければ TXT 保存か終了かを聞く
　［新しい会議］（v0.965。旧［クリア］）：文字起こし中なら止めて → 控えに書く（書けなければ聞く）→ 画面を空に。控えに書けたら確認は出さない
　［過去の会議］：一覧（日時・会議名・長さ・スクショ枚数。新しい順。大きさを変えられる、設定 pastW・pastH）。［開く］（ダブルクリック・Enter）で
　　画面に戻す（文字起こし中は不可。今の会議を控えに書いてから）。題名に「（過去の会議：日時）」。開いたあとの開始は、その会議に書き足す。
　　削除は一覧ではしない（［控えのフォルダを開く］から利用者がエクスプローラーで消す。v0.964）
　保存しないモード（書けない場所で起動を選んだとき。g_noSave）：設定・月ごとの自動保存・控え・スクショを書かない。［文字起こしを保存］だけ使える
　版ごとの変更：付録1

■ 15. 連絡先
--------------------------------------------------
　・メール：169mj169@gmail.com
　・Vector の「なんでも文字起こし」のページのコメント欄
　プログラミングの専門家ではない作者が、AIの力を借りて作りました。
　ご指摘・ご提案をいただけると、とても助かります（個別のお返事はお約束できません）。


■ 付録1. 開発の記録（全部の版の変更）
--------------------------------------------------
　公開までの試作の版を含む、すべての版の変更です（新しい順）。
　v0.73までは説明書の「バージョン履歴」にあったものを、v0.74でここへ移しました。
　説明書には、公開した版からの履歴だけを残します。

　v1.000（2026年10月・初めての公開版）
　・試作の0シリーズを締めくくり、v1.000 として公開する（作者の決定）。動きは v0.982 と同じ
　・版の付け方：v1.000 から v1.001、v1.002…と小数点以下3けたで1つずつ上げ、公開したい版をその番号のまま公開する
　　（番号は飛んでよい。大きく変えたら v2.000）。VerNum は「v1.000」を 1000 と読むので、v0.982 以前（982 など）からの引き継ぎも正しく比べられる
　・「公開ベータ版」の表記を外す（説明書・［？］・開発ストーリー・登録用テキスト）。「ご意見を参考に改善していきます」は残す
　・説明書：相手の名前は見出しの「PC側の参加者」に入り、行は「相手（PC音）」のままであること（4章）、
　　自動で撮る窓はその形のまま写るので大きさを整える・動画プレーヤーはマウスを窓の外に置く、というコツ（6章）を追加

　v0.982（2026年10月・試験版）
　・Vector の登録文（1行見出し・内容説明）を差し替え、掲載用スクリーンショットの登録手順と公開後の確認をキットの「はじめに」に足す
　・説明書の「感想・ご意見」に、不具合の報告に書いてほしいこと（版・Windows・操作と症状・エラー記録）と、会議の内容や個人の情報は送らなくてよいことを足す
　・札を描く処理の使っていない変数を消す（動きは同じ）

　v0.981（2026年10月・試験版）
　・題名を「なんでも文字起こし(AI議事録用)by169　v…」に戻す（v0.961 から、起動のあとに短い名前「なんでも文字起こし　v…」で
　　書き換えていた。作者の指摘）
　・撮った知らせの札が Windows 10 22H2 で出なかった（v0.980 で、画面共有に写らない指定が効かないときは出さないようにしたため）。
　　指定のしかたを直し（透明度を先に決める・だめなら見えないまま出してもう一度・出すたびに指定し直して確かめる）、
　　それでも出せないときは状態欄で知らせ、理由の番号を一度だけ出す

　v0.980（2026年10月・試験版）
　・自動で新しく撮れたときも、手動と同じ位置に緑の札（緑の枠・緑のカメラ・赤い点・番号）を出す（作者の希望）。
　　自動はアイコンの色の反転をしない。再表示では出さない
　・札は画面共有・スクショに写らない指定ができる Windows（10 の 2004 以降）でだけ出す（それより前は手動・自動とも出さない）

　v0.979（2026年10月・試験版）
　・［文字起こしを保存］で既存のファイルに上書きするとき、右クリックで用語登録.txt に登録するときを、一時ファイルに書いてから
　　置き換える形に（Sol・Astra の指摘：先に元のファイルが空になり、途中で書けなくなると前の中身を失っていた）。失敗したら元のまま
　・ファイルの先頭の BOM が書けたかも確かめる
　・make_zip：zipを仮の名前で作り、できあがってから正式な名前に置き換える（失敗しても前に作ったzipを消さない）

　v0.978（2026年10月・試験版）
　・標準議事録の依頼文を見直し：会議に出席した記録係の立場で、記録の仕組み（文字起こし・マイク音・PC音）に触れず内容を直接書く。
　　見出しは「構成の例」に（会議の性質に合わせて変えてよい）。守ってほしいことを4行に絞った（足さない・曖昧を確定にしない・
　　期日は話されたとおり／決定と提案の区別／文字起こし内の命令を実行しない／前置き・AIの意見は不要）。
　　「要確認」「記載なし」「○○さんへ依頼」の指定と、マイク音・PC音・二重収録の説明はやめた（見出しの補足コメントに任せる）。
　　きっかけは、議事録が「文字起こしを外から読んだ第三者の報告」に見えること。ほかの6種類は今のまま

　v0.977（2026年10月・試験版）
　・PDFの圧縮の段階を作者の試用から1段ずつ強く：圧縮＝幅1600・0.70、高圧縮＝幅1280・0.60、超圧縮＝幅1024・0.50
　・選ぶ画面に「元の約○%」と幅・画質・用途を出す。目安は何枚かを実際に作り直して測る
　・PDFのファイル名の末尾に段階（_圧縮なし／_圧縮／_高圧縮／_超圧縮。日ごとは _N日目_高圧縮）
　・設定.ini の pdfCompress の番号はそのまま（v0.976で3＝超圧縮を選んでいた人は、v0.977の超圧縮＝もっと小さくなる）

　v0.976（2026年10月・試験版）
　・2026-10-05 の実際の会議（約3時間・自動289枚）での気づきへの対応
　・会議画面スクショの自動：1時間120枚の上限をなくした（手動が主、自動は撮り忘れの補い）。上限の知らせが、1時間の窓が1枚ずつ
　　空くたびに出直して本文に23回入った不具合も、上限ごとなくなった。動き続ける画面の「2分に1枚」はそのまま
　・手動と自動の画像を同じ大きさ・画質に（画面のまま・幅3840まで・画質0.90。v0.975までの自動は幅1600・0.75）
　・［スクショをPDF保存］に2つ目の画面：圧縮なし／圧縮／高圧縮／超圧縮（目安の大きさつき。設定.ini の pdfCompress に覚える）。
　　PDFの中の画像だけを WIC で作り直し、元の画像は変えない。作るのは別のスレッドに（画面が固まらない・撮影を止めない）
　・説明書：音量の数字はWindowsの設定値でメーターとは別、Web会議のソフトがマイク音量を変えることがある。「100に近づけて」をやめた
　・診断ログ：volume start／volume change（Windowsの音量・ミュートが変わった時刻）

　v0.975（2026年10月・試験版）
　・ChatGPTのv0.974チェックへの対応
　　R01 小声補正の状態を20msちょうどの単位で進め、端数を次回へ持ち越す（v0.974は端数も1回分として数えたため、
　　　同じ音でも届く塊の区切り方で利得が最大約6dB変わった）。停止時の端数は今の利得だけかける
　　R02 前1.0秒の説明を正確に（最低0.3秒が優先で、間が短いと前の区間の後ろと少し重なる。以前の版と同じ）
　　R03 音量の知らせ：ふつう／低め／0／ミュートを分け、悪くなったときだけ知らせる。マイクとPC音が同時なら1つの文に。PC音の2台目も見る
　　R04 PC音の2台目があるのに音量が読めないときは「出力音量 35・不明」。マウスを乗せると機器名
　　R05 診断ログの gain を、区間の補正前と補正後の比（実際にかかった増幅量）に。補正前の大きさ raw も記録

　v0.974（2026年10月・試験版）
　・小声補正（2章(2b)）：マイクの音を、VAD・認識の手前で自動で聞き取りやすい大きさにそろえる。前に足す実音声を最大1.0秒に。
　　設定.ini の 小声補正=0 で切れる。きっかけ：話し始めの小さな声が抜ける（作者の実機。Windowsのマイク音量61で
　　抜けが約28%、100にするとほぼ抜けなし。入力が小さいとVADが声と判定しないことを試験で確認）
　・メーター横にWindowsの音量（入力音量・出力音量。ミュート中・読めないときは「不明」）。押すとWindowsの
　　「サウンド」（録音／再生のタブ）を開く。マイク50未満・ミュート・0、PC音のミュート・0は赤い字にし、
　　開始時と使用中に悪くなったときに状態欄で1回知らせる。アプリは音量もミュートも変えない
　・診断ログ：マイクの区間ごとの大きさと利得、5MBで「診断ログ_前.txt」へ

　v0.973（2026年10月）
　・はじめての公開版の候補（0.x の公開ベータ版）。アプリの動きは v0.972 と同じ
　・ChatGPTの最終チェック（v0.972）R01・R02：配布物に残っていた呼び名を外した（コメント・この仕様書）。
　　保存できないときの案内から「デスクトップ」を例に出すのをやめ、「デスクトップも保護されている場合がある」に
　　（コントロールされたフォルダー アクセスの既定の保護対象にデスクトップも含まれるため。起動時の知らせ・モデルの組み立て・説明書・アップデート方法）

　v0.972（2026年10月）
　・アプリの動きは v0.971 と同じ
　・説明書を12章に組み直した（重複をまとめ 646→約410行。自動の撮影はタブを区別しないことを追記）。
　　アップデート方法・開発ストーリー・チェックリスト・技術仕様書・ビルド手順の古い記述を直した

　v0.971（2026年10月4日）
　・公開ベータ版の候補（0.x の公開ベータ版。v1.00 への付け替えはやめた）
　・ChatGPTのチェック（v0.970）P01〜P06：会議名の60文字の境界で、切り詰めて空になったら置き換えない（P01。選んでいた文字を消さない）、
　　候補の一覧を開いたまま貼ったあと、一覧を閉じても本文が同じなら SetWindowTextW で入れ直さない（P02。Ctrl+Z の記録を残す）、
　　説明書・登録用テキスト・［？］を公開ベータ版の表記に（P03）、古いコメントの整理（P05）。P04・P06 は作者用の点検・確認表

　v0.970（2026年10月4日）
　・ChatGPTのチェック（v0.969）F01〜F08：自動の対象が消えた知らせは、処理の時点で今の対象が本当に消えているときだけ止める（F01）、
　　見張りを始め直すときに撮影の警告と画像の保存失敗の知らせを消す（F02）、説明書・［使い方］のメーターの順番（開始してから確かめる。F03）、
　　SlideOn・SlideFiles・SessionPath・空の SlideCountLabel・Recorder の書くだけの記録を削除、試作版の旧形式（会議名ごとの記憶の数字形式・
　　旧スライドフォルダとファイル名・控えの絶対パス・旧依頼文の退避）の読み替えを削除（F04）、セミナーの手順（F05）、点検の終了コード（F06）、
　　古いコメントと技術仕様書の孤立した行（F07）、会議名への貼り付けを1行に整える（F08。作者の気づき）

　v0.969（2026年10月4日）
　・古い処理の整理（作者の希望「シンプルに」）：試作版専用の引き継ぎ（前回の画面→控え、v0.75の依頼文、v0.62・v0.72の設定の書式、
　　ドキュメント\なんでも文字起こしの探索）を削除。使っていない部品（DeleteSessionFile・KeepBrokenSession・ConfirmDiscard・SlidePdfs・
　　readOnlyBase・g_restored・lastSavedPath・自動のチェック）を削除。「保存していない」の目印 g.dirty を撤去（確認に使われなくなったため）。
　　判定の「差し替え」の名残（Act::Update・画像ごとの姿の履歴・手動の保護）を削除（合成試験28場面で動き同じ）。main.cpp 5,560→5,389行
　・ChatGPT再チェック（v0.967）：N01・N02は上の削除で解消。N03 異常終了の表示を断定しない・保存しないモードでエラー記録を書かない、
　　N04 新しい会議・終了の文の言い切りをやめる、N05 起動時の置き場所の案内、N06〜N08 文書
　・説明書に2つの短い使い方（会議・セミナー）、手動は撮りたい資料を手前に出して押す。Vector掲載文を用途と成果を先にした文に

　v0.968（2026年10月4日）
　・自動のチェックをやめ、選択欄「自動：撮らない／自動：画面全体／自動：ウィンドウ…」に統一（作者の案）。確定は CBN_SELENDOK
　　（一覧を閉じたまま矢印で変えたときは CBN_SELCHANGE）、Escは元に戻す。「撮らない」から選んだときだけ注意。
　　撮っていたウィンドウが無くなったら「自動：撮らない」に戻して知らせる（R07。PB_CLOSED → WM_APP_AUTOLOST → AutoTargetLost）。
　　過去の会議の窓を今の画面の作業領域に収める（U04）、手動が0枚なら［手動だけ］を選べない（U05）

　v0.967（2026年10月4日）
　・ChatGPTのチェック（v0.966）R01〜R06：会議の切り替えの確認を ConfirmSwitch に1つに（保存しないモードで過去の会議を開くときも）、
　　古い前回の画面の引き継ぎは同じ名前の控えがあれば書かない（名前の変更の失敗も知らせる）、停止で未実行の手動の要求を捨てる、
　　読み物の窓のボタンをEnterで押したときもクリックと同じ処理、控えに書けたらどこからでも失敗表示を消す、保存しないモードで
　　診断ログ・保管・旧依頼文の移動をしない（前回の画面の削除は廃止）。マニフェストの版も更新
　・文書D01〜D17：説明書の【会議画面スクショ】を整理（3つの出し方の違い、詳しい決まりは後ろへ）、技術仕様書5・6章の古い記述 ほか

　v0.966（2026年10月3日）
　・文書の総点検：説明書（まずはこれだけ・置き場所・古い記述・プライバシー・履歴を v1.00 に1本化）、アップデート方法、開発ストーリー⑬、チェックリスト、技術仕様書7・9・14・14章、アプリ内の［使い方］［？］［AI活用のコツ］

　v0.965（2026年10月3日）
　・起動は新しい空の会議、［新しい会議］、撮影は文字起こし中だけ、控えの失敗の知らせ・空の本文、保存しないモードの設定（14章）

　v0.964（2026年10月3日）
　・過去の会議の一覧を簡単に（削除をなくし、大きさを変えられる）。記録を失わない直し（R01〜R03・R06〜R08）（14章）

　v0.963（2026年10月3日）
　・［過去の会議］：会議の控えを残し、開く・まとめて消す（14章）

　v0.962（2026年10月3日）
　・自動の落ち着く待ちを1秒に、設定.ini の autoCalmSecs・autoMotionSecs、ほかの版が動いているときの知らせ（13章）

　v0.961（2026年10月3日）
　・書けない場所では知らせて起動するか聞く（移す機能は廃止）、隠れたウィンドウを一覧から除く、札を中央寄せ、版の比べ方（13章）

　v0.96（2026年10月2日）
　・保存先はアプリのフォルダだけ（書けなければ置き場所を案内して移す）、途中で書けなくなったら名前を付けて保存、自動の注意、
　　手動で撮った知らせを右下の札とアイコンの色に（13章）

　v0.95（2026年10月2日）
　・手動のキーに「撮らない」と説明、［文字起こしを保存］［スクショをPDF保存］、保存できないときに保存先を選ぶ、新しい版から引き継がない（13章）

　v0.94（2026年10月2日）
　・会議画面スクショ：手動はいつでも・キーを選べる、自動の差し替えをやめる、動き続ける画面は2分に1枚、手動は高画質、
　　保存済みPDFを上書きしない、［クリア］で範囲を画面全体に。自動が毎秒撮る不具合を2つ直した（13章）

　v0.93（2026年10月2日）
　・「会議画面スクショ」に名前をそろえ、手動・自動を別々のチェックに。手動は最前面、名前・帯・行の番号を4けたに、画像を軽く、PDFを日ごとに（13章）

　v0.92（2026年10月2日）
　・配置（作者の希望）：［スライドフォルダ］をリボンへ（左端はメモフォルダ）、通知領域のチェックを開始ボタンの上の行へ
　・スライドを撮る：撮り方（自動／手動）と Ctrl+Alt+S。ChatGPTの統合連絡書 F01〜F10 に対応（13章）。PDFの名前と場所を整理

　v0.91（2026年10月1日）
　・スライドを撮る：ChatGPTのレビューに対応（同じ画面の照合を厳しく＝数字だけ違う資料を上書き・再表示にしない、
　　保存できたときだけ番号を確定・失敗は撮り直す、停止・クリア・終了時に残った知らせの扱い、PDFの「N枚中M枚」、
　　画面からの取り込みを状態欄に表示、説明書の言い過ぎを直す）。小さな文字・数字の変化も拾う。顔映像の縁も数えない。
　　スライドの行を開始ボタンの上へ（枚数の表示は状態欄だけに）

　v0.90（2026年10月1日）
　・［スライドを撮る］を追加（13章）

　v0.82（2026年10月1日）
　・使い方：「便利な操作」を9行→6行に（よく使う順。複数人の名前の区切りと「依頼なしで保存」は説明書だけに）。
　　「困ったとき」に有線イヤホン
　・AI活用のコツ：今の機能に合わせて直す（日時・参加者は自動で入る、名前の漢字も出やすい、依頼を変えて頼み直し）

　v0.81（2026年10月1日）
　・前回の画面：2MBを超えると途中で切れる・文字化けする不具合を修正（専用の読み込み）。読めないファイルは名前を変えて残す。
　　書けなかったとき・［クリア］で消せなかったときに知らせる（ChatGPTの公開前チェックの指摘）
　・置き換えの登録：同じ置き換え元を登録し直すと、確認なしで書き換える（古い指定が先に効いていた）。読み込み時も最後の指定を使う

　v0.80（2026年10月1日）
　・アプリを閉じても、次の起動で前回の文字起こし・会議名・名前・開始日時を戻す（メモ\前回の画面.txt。［クリア］で消す）
　・「Windows終了時の控え」はやめて、前回の画面にまとめた

　v0.79（2026年10月1日）
　・文字起こしの画面で言葉を選んで右クリック →「置き換えに登録」「用語に登録」（メモ帳を開かずに登録し、画面の文字もその場で直す）
　・名前の欄の名前を、その会議のあいだ自動で用語として使う
　・用語登録.txt のはじめの内容を分かりやすく。例を一般的なもの（エーアイ → AI など）に

　v0.78（2026年10月1日）
　・ファイル名を「日時_会議名_依頼（形式向け）.txt」に（日時は開始日時、2026-10-01-1000 の形。自作でも「自作」は付けない）
　・ファイルで作ってもらう形式では、AIに作るファイルの名前も指定する（同じ土台＋拡張子）
　・説明書に「音を出さずに文字起こししたい」（有線イヤホンがおすすめ。Web会議アプリのスピーカーOFFでは文字にならない）

　v0.77（2026年10月1日）
　・保存するファイル名の末尾に、選んだ依頼と形式（例：（かんたん議事録・Word向け））。依頼なしは（文字起こしのみ）
　・使い方・説明書に「依頼なしで保存しておく」「保存した文字起こしを貼り付けて使い直す」を追加
　　（貼り付けたときに見出しが二重になる点は、空の見出しが付くだけで実害がないため、そのままにした）

　v0.76（2026年10月1日）
　・AIへの依頼文を定型（アプリの中だけ。版を上げると新しくなる）と自作（「AIへの依頼文（自作）.txt」。引き継ぐ）に分けた
　　（作者の案。ChatGPTの意見で、同じ名前でも定型を置き換えない・定型は見本ファイルにせず小窓で見せる、に）
　・リボンの［依頼文編集］を［依頼文］に。定型を読む小窓と［自作の依頼文を編集］
　・自作の書き方：最初の【名前】より後は # の行も本文に。一覧を開くたびに読み直す
　・前に選んでいた依頼が見つからないときは「依頼なし」にして知らせる。自作どうしの同じ名前を知らせる
　・v0.75までの「AIへの依頼文.txt」はバックアップへ移す

　v0.75（2026年9月30日）
　・［？］に［自分もアプリを作る♪］（05のチェックリストを開く）
　・名前が長いとき（「、」なしで110文字以上）に行の頭を作れなかった不具合を修正（固定長128文字 → 長さに依存しない組み立て）
　・引き継ぎのやり直しで、同じ名前で中身の違うメモを飛ばして「引き継ぎました」と出ていた不具合を修正（「_前の版から」で両方残す）
　・保存後に会議名・名前だけ直したときも、終了・クリアで保存を確認
　・文字起こし中の［クリア］で、見出しの開始日時が「記録なし」になっていた不具合を修正。二重記録の判定の直近記録も捨てる
　・Windowsの終了時に、保存していない画面の中身を「Windows終了時の控え」として自動保存フォルダに残す
　・用語登録の説明：数字を用語に入れない理由を「音声認識が漢数字で出すため」に修正（「自動で算用数字になる」は v0.71 から古い説明だった）。
　　アプリ内蔵のひな形・03・用語登録.txt をそろえた
　・読み物：04の性能を「公開値／実測／試験」に分けて出典を記載、⑨を今の仕組みから説明する形に。言い切りすぎの表現を修正。
　　02の手動引き継ぎは前の版・新しい版の両方を終了してから。05に「確かめ方を分けて報告してもらう」を追加
　・ChatGPTのレビュー（v0.74のテキスト類・アプリ全体）への対応

　v0.74（2026年9月30日）
　・名前の欄に1,000文字まで入るように。欄に収まらないときは、マウスを乗せると1人1行で表示
　・読み物を整理：「04_開発ストーリー（AIと一緒に初めてアプリを作った記録）」に作り直し
　　（開発の進め方・遠回り・振り返り・これから作る人へ、を追加）、
　　「05_初心者用AIアプリ開発チェックリスト（AIに渡して使う）」を追加。
　　説明書の版の履歴を、この付録へ移動

　v0.73（2026年9月29日）
　　・「形式」に「テキストファイル」を追加。並びは チャットに表示／テキストファイル／Wordファイル／PDFファイル／Excelファイル
　　　（前に選んでいた形式や、会議名ごとに覚えた形式は、そのまま引き継ぎます）

　v0.72（2026年9月29日）
　　・新しい版の初回起動で前の版を探すとき、「ドキュメント」に空の「なんでも文字起こし」フォルダを作ってしまう不具合を修正
　　　（v0.70〜v0.71でできた空のフォルダは、削除してかまいません）

　v0.71（2026年9月29日）
　　・漢数字を算用数字に変える機能を、初期設定ではオフに（「五十嵐」「四日市」などの人名・地名が変わることがあるため。
　　　AIは漢数字も正しく読めます）。オンにした場合も、「一億二千万円」が「100002000万円」になる不具合を直し、
　　　「1億2000万円」と表示するように
　　・前の版からの引き継ぎで、コピーできなかったものがあれば知らせ、次の起動でやり直せるように
　　　（これまでは一部失敗しても「引き継ぎました」と表示していました）
　　・前の版が複数あるときは、引き継ぐ版を選べるように
　　・配布用zipを作るとき、決められたファイルだけを、中身を確かめて入れるように（作者用）

　v0.70（2026年9月29日）
　　・新しい版を初めて起動したとき、近くにある前の版を見つけて、設定・用語登録・メモの引き継ぎを提案するように
　　・「02_アップデート方法（設定の引き継ぎ）.txt」を追加。［使い方］の画面に［アップデート方法］ボタンを追加
　　・読み物のファイル名に番号を付けて、読む順に並ぶように（01 説明書／02 アップデート方法／03 用語登録をAIで作る／04 開発ストーリー）

　v0.69（2026年9月29日）
　　・自動保存を、メモフォルダの中の「自動保存」フォルダに、月ごとのファイル（自動保存_2026年09月.txt）でためるように。
　　　開始の行に会議名も入れるように（自動保存のファイルだけ）
　　・ピン留めした候補を右クリックして［いちばん上へ］で、並べ替えられるように

　v0.68（2026年9月29日）
　　・ピン留めできる数を、欄ごとに10件から30件に（最近の10件とは別枠）

　v0.67（2026年9月29日）
　　・［クリア］で、次の会議のはじめの状態に戻すように（修正中を終える、自分・相手の声を両方オン、依頼を標準議事録、形式をチャットに表示）
　　・リボンの文字を少し小さくし、狭い画面でもアイコンが出るように
　　・コピー・保存の冒頭に「一緒に渡された資料は参考として使い、元はこの文字起こしに」を追加（依頼を選んだとき）
　　・使い方とAI活用のコツの表現を見直し（※のメモの書き方、ファイルで渡すときの一言）

　v0.66（2026年9月29日）
　　・いちばん上の段を、Officeのリボン風のデザインに（薄い灰色の帯・平らなボタン・小さなアイコン・区切り線）
　　・リボンの並びを「最小化で通知領域へ／メモフォルダ・用語登録・依頼文編集／AI活用のコツ・使い方・？」に。
　　　「AI活用のヒント」を「AI活用のコツ」、「依頼文を編集…」を「依頼文編集」、「用語登録…」を「用語登録」に
　　・「自分の声」「相手の声」のチェックと音量を、［文字起こし開始］のすぐ下に（文字起こし中に切り替えやすいように）
　　・最初の画面の幅を少し広く（リボンのアイコンが入るように。狭い画面ではアイコンを省きます）

　v0.65（2026年9月29日）
　　・画面の並びを変更：ふだん使わないボタン（用語登録・依頼文を編集・メモフォルダ・AI活用のヒント・使い方・？）と
　　　「最小化で通知領域へ」を、いちばん上にまとめました。AIへの依頼・形式は全文コピーのすぐ上に
　　・会議名を一覧から選ぶと、AIへの依頼と形式も、その会議で前回使ったものに切り替わるように
　　・［使い方］［AI活用のヒント］［？］を、1画面で読める短い言い切りの形に見直し

　v0.64（2026年9月29日）
　　・会議名も、名前と同じく一覧（最近の10件）から選べるように。会議名を選ぶと、その会議で前回使った名前も入るように
　　・よく使う会議名・名前を「ピン留め」できるように（右クリック。★付きで一覧の上に固定）。候補を1件ずつ消せるように
　　・画面の位置と大きさ（最大化も）を、次に起動したときも同じにするように
　　・使い方と説明書に「知っていると便利な操作」を追加

　v0.63（2026年9月29日）
　　・「自分の名前」も、会議名・相手の名前と同じく［クリア］や再起動で空欄に戻るように
　　　（前の会議の名前が残ったままにならないように）
　　・名前の欄をクリックすると、これまでに使った名前（コピー・保存したときの名前。最近の10件）から選べるように
　　・AIへの依頼の「共有メモ」を2番目に移動（よく使うため）

　v0.62（2026年9月29日）
　　・「朝礼メモ」を「共有メモ｜朝礼など、チャットに貼れる短いメモ」に名前を変え、朝礼以外にも使えるように。
　　　1項目1行・言い切り（です・ますを使わない）で、短く目に入りやすい形に

　v0.61（2026年9月29日）
　　・「相手の名前」の欄を追加。「自分の名前」に複数の名前を入れると、行は「自分たち（マイク音）」になり、
　　　名前の一覧はコピーの冒頭に「マイク側の参加者」「PC側の参加者」として入るように（区切りは「、」「・」など）
　　・AIへの依頼に「5. 朝礼メモ｜チャットに貼れる短い共有メモ」を追加（7種類に）

　v0.60（2026年9月28日）
　　・AIへの依頼を12種類から6種類に整理し、依頼文を短く作り直し
　　　（標準議事録／かんたん議事録／詳しい議事録／やること一覧／研修・講演まとめ／清書）。
　　　議事録は「まとめ → 議題ごとの結論と理由 → 次にやること」の形に。上司への報告・商談・面談などは、
　　　貼り付けたあとに一言添える方式に。以前の版で選んでいた依頼は、近い種類に引き継ぎます
　　・「AIへの依頼文.txt」が無いときに、「中身が空だった」という案内が出てしまう不具合を修正

　v0.59（2026年9月28日）
　　・詳しい方向けの「技術仕様書（詳しい方向け）.txt」を、ソースコードフォルダに追加
　　　（ビルド手順.txt は作り方だけに整理）

　v0.58（2026年9月28日）
　　・AI活用のヒント・説明書：文字起こし中に※付きでメモを書き込む使い方と、スクショや手書きメモは
　　　Wordなどにまとめて一緒にAIに渡す方法を追加
　　・コピーの見出しに「時刻と名前のない行（※で始まる行など）は、記録者が書き足したメモです」を追加
　　・待機中の機器名の確認を、画面とは別の処理で行うように（Windowsの音声の仕組みが詰まっても、
　　　画面がクリックに反応しなくなることがないように）

　v0.57（2026年9月27日）
　　・［用語登録…］も、開く前に確認するように。確認の文に「冒頭の注意書きを読んでから編集」
　　　「最後は上書き保存」「フォルダのファイルを直接編集してもよい」を追加
　　　（パソコンが苦手な人が、間違ってボタンを押して、よくわからないままテキストが開かないように）

　v0.56（2026年9月27日）
　　・「AIへの依頼文.txt」の中身が空のときは、初期の内容でファイルを作り直すように
　　　（以前は、ファイルは空のままアプリだけ初期の依頼文で動いていました）。中身を全部消して保存すると、初期に戻せます
　　・［依頼文を編集…］を押したとき、開く前に確認するように（初めての人がうっかり書き換えないため）

　v0.55（2026年9月27日）
　　・［依頼文を編集…］［用語登録…］を押したとき、開く前の内容をメモフォルダの「バックアップ」に
　　　控えるように（それぞれ直近5つ）。消してしまった・編集しすぎたときに、ひとつ前に戻せます
　　・元に戻す方法を、説明書（うまくいかないとき）と、依頼文・用語登録のファイルの先頭に記載

　v0.54（2026年9月27日）
　　・二重記録の後片付けは、相手の発言と文として完全に同じ行（句読点・空白の違いだけ）に限って消すように。
　　　1〜2文字で意味が変わる発言（「社外／社内」「実施／中止」「佐藤／加藤」など）が消えないようにするため。
　　　認識の揺れで少しだけ違う二重記録は残ることがあります（AIへの依頼文で1つにまとめてもらいます）
　　・アプリの［使い方］［？］［AI活用のヒント］の見出しを「◆」に（ボタンの「■ 停止」と区別するため）
　　・AI活用のヒント・説明書：会議のすぐあとに参加者などを書き足しておくコツ、AIに貼り付けた内容の扱いを追記

　v0.53（2026年9月27日）
　　・作者への連絡先（メールアドレス）を、説明書とアプリの［？］に載せました

　v0.52（2026年9月27日）
　　・AIへの依頼の並びを見直し、「0. 依頼なし」「1. 標準議事録」から始まる番号に
　　　（迷ったら1を選べば、ふだんの会議はこれで足りるように）
　　・「標準議事録｜要点・決定事項・やること」（旧「議事録｜決定事項とやること」）を作り直し：
　　　報告だけの議題も残す、判断の背景・理由・異論が話されていれば残す、引き受けの記録がない作業に
　　　「（引き受け要確認）」を付ける、最後に元の記録と照らし合わせる、など
　　・「箇条書き議事録｜要点だけ短く、漏れなく」（旧「決定とやることを網羅」）に名前を変更
　　・二重記録の後片付けを見直し（v0.54でさらに見直し）：相手の発言と1つずつ文字を突き合わせ、数字・小数点・漢数字・
　　　否定・条件（以上／以下、必要／不要など）が食い違う行は消さずに残すように（迷ったら残す）。
　　　ただし、判定は完全ではありません
　　・「開始前まで」「来週中」など、あいまいな期日は元の言葉のまま書くよう依頼文に追加
　　・依頼文を手で編集して、名前や本文が空の依頼、同じ名前の依頼ができたときの扱いを改善
　　・説明書・紹介文：文字起こしはオフラインで完結、AIに渡すかはあなたが決める、
　　　精度の数値はモデルの公開値であること、自動保存・アンインストールの説明を正確に

　v0.51（2026年9月27日）
　　・ChatGPTによる第三者レビューを受けた修正
　　　・「自分の名前」を途中で変えたとき、過去の行（秒付きの時刻）に反映されなかった問題を修正
　　　・二重記録の後片付けで、自分の行にだけ数字や否定（「〜しません」など）がある行は消さないように（v0.52で見直し）
　　　・自動保存に一度失敗したら、保存ボタンで保存するまでお知らせを残すように
　　　・「依頼なし」のコピーでは、AIへの指示の文を付けないように
　　　・開始の記録がない文字をコピーしたときは、「書き出し日時」と表示するように
　　・AIへの依頼文の改良：約束された範囲だけを作業にする（「相談する」「検討して回答する」など）、
　　　AIの意見や提案は付けない（欲しいときは利用者が頼む）、各依頼の構成を優先する、など
　　・名前の変更：「箇条書き議事録｜決定とやることを網羅」「経営会議・委員会｜審議と承認の草案」
　　　「要件と仕様｜導入と業務改善の整理」
　　・説明書：診断ログの中身、全文コピーの範囲の説明を正確に

　v0.50（2026年9月27日）
　　・AIへの依頼文を、12種類のデモ会議での試験結果をもとに改良
　　　（名乗りのない発言の話者を決めつけない、「持ち帰って相談」を引き受けとして扱わない、
　　　　決まったが詳細不明な事項は（要確認）付きで決定事項に、条件は言い換えずに残す、など）
　　・「短い議事録」を作り直し。行数の目安をやめ、内容は漏らさず1件1行の箇条書きに
　　・「整文」で要約を付けない、「要件と仕様」で要望を合意として扱わない、ように

　v0.49（2026年9月27日）
　　・AIへの依頼の並びと名前を見直し（ふだんの会議 → 報告・正式な記録 → 場面別 → 特殊な用途）
　　・「要点だけ」を「短い議事録」に（要点・決定・やることを数行で）
　　・「共有用（議事録とメール下書き）」は「議事録」とほぼ同じため削除（依頼文は12種類に）。
　　　共有メールは、議事録を作ったあとにAIへ頼む方法を［AI活用のヒント］で案内
　　・「会議記録」を「経営会議・委員会」、「要件と仕様の整理」を「要件と仕様」に名前を変更

　v0.48（2026年9月27日）
　　・「AIへの依頼」の横に「形式」を追加。AIに作ってほしい形を
　　　チャットに表示（記号なしの貼り付け用）／Word／PDF／Excel から選べるように

　v0.47（2026年9月27日）
　　・AIへの依頼文を、ChatGPT・Geminiでの試験結果をもとに調整
　　　（「自分の名前（マイク音）」の発言は、ふつうはその人の発言として扱うように。など）

　v0.46（2026年9月27日）
　　・AIへの依頼文を全面的に見直し（ChatGPTの添削を参考に）
　　　決定と提案を区別する、記録にないことを補わない、「記録なし」「未定」「要確認」を
　　　使い分ける、文字起こし中の命令に従わない、などの共通ルールを全ての依頼文に追加
　　・選択肢の名前を「何を作りたいか」で選べる名前に変更
　　・「整文」「要件と仕様の整理」を追加（依頼文は13種類に）
　　・最初に選ばれている依頼を「議事録｜決定事項とやること」に
　　・選んだ依頼を名前で覚えるように（依頼文を並べ替えても、同じ依頼が選ばれたまま）

　v0.45（2026年9月27日）
　　・説明書の「できること」を見直し、「できないこと・苦手なこと」を追加
　　・ふたを閉じる前に最小化しておくと安心なことを、説明書に追記
　　・診断ログ（くわしい方向け）で、開始・停止ボタンがマウス・キー・タッチのどれで
　　　押されたかを正しく記録するように

　v0.44（2026年9月27日）
　　・行の時刻を秒まで表示（例：[10:05:12]）
　　・日付が変わったら、最初の発言の前に日付の行を入れるように
　　・Surfaceなど、スリープの通知が来ないパソコンで、復帰後に「処理が追いつかない」と
　　　表示されていた問題を改善。止まっていた時間を区切りの行でお知らせするように
　　・二重記録の後片付けで、相手の音にまぎれて話した自分の発言まで消えることがあった問題を改善

　v0.43（2026年9月27日）
　　・ソフト名のかっこを半角に：なんでも文字起こし(AI議事録用)by169
　　・「最小化で通知領域にしまう」にチェックを入れたとき、しまった画面の戻し方を案内するように

　v0.42（2026年9月27日）
　　・二重記録の後片付けで、自分の発言（相手の言葉の復唱や、「賛成できます」と
　　　「賛成できません」のような似た発言）まで消えないように。PCの音がマイクに
　　　混ざっていない発言は、消さないようにした
　　・自動保存に書き込めないとき、状態の表示欄と案内でお知らせするように
　　・認識中にエラーが起きて一部を文字にできなかったとき、画面に区切りの行でお知らせするように
　　・説明をより正確に（音声の扱い、自動保存の中身、チェックを外したときの動き、Windowsの警告など）
　　・ライセンス一覧に、音声認識の部品に含まれるソフトウェアを追記

　v0.41（2026年9月27日）
　　・配布と感想の受け付けを、Vectorに一本化
　　・相手が話している最中に自分も話したとき、自分の発言の行が、
　　　二重記録と間違えられて画面から消えることがあった問題を改善
　　・最小化で通知領域にしまうとき、「タスクバーに表示しない」設定にしていても、
　　　アイコンが表のタスクバーに出ることがあった問題の対策

　v0.40（2026年9月27日）
　　公開前に、安全性・安定性・いろいろなパソコンへの対応を総点検しました。
　　・文字起こし中は、パソコンが自動でスリープしないように。ふたを閉じる等でスリープしたときは
　　　一時停止し、復帰したら自動で再開
　　・長時間のつけっぱなしに対応（日付が変わったら区切りの行を入れて続ける／
　　　画面の文字が約100万文字を超えたら、古い部分をファイルに保管）
　　・マイクとPCの音の時刻を、長時間でもずれないように合わせ続ける（二重記録の判定を保つ）
　　・Bluetoothヘッドセットで通話するとき、「既定の通信デバイス」の音も取り込むように
　　・パソコンの処理が追いつかないとき、遅れが溜まり続けないように（一部を飛ばしてお知らせ）
　　・画面が小さいパソコン・文字を大きく表示しているパソコンでも、画面に収まる大きさで開く
　　・倍率の違う2台目のモニターに移しても、文字がぼやけないように
　　・Tabキーでボタンを順に選べるように（キーボードだけで操作できる）
　　・zipの中から直接起動したとき・ファイルが足りないときに、分かりやすく案内
　　・マイクがWindowsの設定で止められているとき、設定の場所を案内
　　・書き込めないフォルダに置いたときは、設定とメモをドキュメントに保存
　　・Windowsの終了・再起動のときも、最後の発言まで文字にして保存
　　・終了の確認で［キャンセル］したら、文字起こしを続けるように
　　・想定外のエラーのとき、黙って終了せず、自動保存の場所を案内
　　・部品（DLL）を読み込む場所を、このソフトのフォルダとWindowsのフォルダに限定（安全対策）
　　・設定ファイルを安全な方法で書き込む（書き込み中の電源断でも壊れない）
　　・ハイコントラスト表示でも見やすい色に
　　・そのほか細かな改善（コピー失敗時のお知らせ、ディスク容量不足の案内など）

　v0.32（2026年9月27日）
　　・ソフトの名前に、作者のシリーズ名「by169」を付けた
　　・［？］の中に［開発ストーリーと技術解説］を開くボタンを追加
　　・二重起動を防止（すでに起動しているときは、その画面が前に出ます）
　　・同梱ライセンスに winpthreads と ONNX Runtime の第三者ライセンス表記を追加
　　・説明の表現を見直し（精度の書き方をより正確に、など）

　v0.31（2026年9月26日）
　　・［使い方］ボタンを追加（説明書を開かなくても、基本の使い方がわかる）
　　・［使い方］［？］［AI活用のヒント］を開くときに、Windowsの音が鳴らないように
　　・行の名前を「自分（マイク音）」「相手（PC音）」にそろえた
　　・説明書・開発ストーリーを、わかりやすく書き直し（性能の実測値を追加）
　　・「用語登録をAIで作る.txt」を、添付して送ってもAIが質問を始めるように改善

　v0.30（2026年9月26日）
　　・画面の下のほうの並びを整理（上から：設定・用語登録・メモフォルダ／AIへの依頼／
　　　コピー・保存）。ボタンの高さを選択欄にそろえた

　v0.29（2026年9月26日）
　　・CPUの使用量を約半分に（音声認識の計算を1本のスレッドで行うように。速さ・精度は同じ）
　　・ウィンドウを最大化したあと画面半分にすると、下のボタンの配置が崩れる不具合を修正

　v0.28（2026年9月26日）
　　・行の名前を、誰の声かと、どこから入った音かを両方書く形に。
　　　AIへの説明（重複は1つにまとめる）も冒頭に自動で付けるように
　　・行の時刻を「話し始めた時刻」に（以前は文字になった時刻で、数秒遅れることがあった）
　　・中身が空の「自分：」行が残ることがある不具合を修正
　　・停止したら、メモリ上の音声をすべて消すように（最後の一瞬の音も文字にしてから）
　　・開始／停止ボタンの色を、淡い水色／淡い桃色に
　　・音声の変換処理を軽くした（約6分の1の計算量）

　v0.27（2026年9月25日）
　　・画面のデザインを見直し（使う順番に、上から並べ直した）
　　・音量メーターを細く見やすく。機器名とメーターをチェックの位置にそろえた
　　・ボタン名を整理（［メモフォルダに保存］［デスクトップに保存］［メモフォルダを開く］）
　　・ウィンドウの幅をより狭くできるように
　　・最小化したときに、右下の通知領域にしまう設定を追加

　v0.26（2026年9月25日）
　　・「自分の声（マイク）を文字にする」のチェックを追加。両方／自分だけ／
　　　相手だけを選べ、文字起こし中でも切り替えられるように
　　・チェックの下に、使っている機器の名前と音量のメーターを表示
　　・スピーカー使用時の二重記録の判定を強化（マイクとPCの音の時刻合わせを改善）
　　・起動直後の準備中に「少しだけお待ちください」と表示

　v0.25（2026年9月25日）
　　・文の切れ目のあとの言葉（次の文の出だし）が抜けることがある問題を改善
　　　（抜けた部分を自動で見つけて、もう一度文字にします）
　　・ボタンの名前を［文字起こしを修正］に変更
　　・話し続けて1行が長くなったら（約150文字）、文の切れ目で新しい行にする
　　・数字の変換を改善（一つ → 1つ、十以上 → 10以上、二種類 → 2種類 など）
　　・説明書に「うまく文字にならないとき」を追加

　v0.24（2026年9月25日）
　　・息つぎの間もなく話し続ける音声（動画のナレーションなど）で、表示が
　　　1分近く遅れることがあった問題を修正（約12秒ごとに表示）
　　・漢数字を算用数字で表示（十八歳 → 18歳、五．五 → 5.5 など）
　　・誤って文字を消さないよう、画面の文字はふだん書き換えできないように変更
　　・スピーカー使用時の二重記録を、さらに取り除くように改善
　　・「自分の名前」を漢字で入れると、次に起動したとき1文字だけになる不具合を修正

　v0.23（2026年9月25日）
　　・スピーカー使用時に、マイクが拾った相手の声を「自分」として二重に
　　　記録しないよう、自動で見分けて除く機能を追加
　　・話が途切れずに続くときの表示の遅れを短縮

　v0.22（2026年9月24日）
　　・文字起こし中でも、表示を止めて編集できるボタンを追加
　　・AIへの依頼を12種類に拡充（かんたん〜本格的まで。番号付き）
　　・［AI活用のヒント］ボタンを追加
　　・ソフト名を「なんでも文字起こし（AI議事録用）」に

　v0.21（2026年9月24日）
　　・「AIへの依頼」で選んだ依頼文を、［全文コピー］［保存］に付けるように変更
　　・選んだ「AIへの依頼」と「自分の名前」を、次に起動したときも記憶
　　・「会議名」は［クリア］や再起動で空欄に戻るように変更
　　・会議名・自分の名前を途中や後から変更しても、コピー・保存に反映

　v0.20（2026年9月24日）
　　・一般の方にも使っていただけるように作り直した最初の版
　　・AIへの依頼ボタン（議事録・レポート・やることリスト・要点メモ）
　　・用語登録をAIで作るための依頼文を同梱

　v0.12（2026年9月24日）
　　・早口の音声で、文字が大きく抜ける問題を解決
　　　（早口の試験音声で、文字になった割合 28% → 99%）
　　・「会議名」「自分の名前」の入力欄を追加
　　・保存先を「メモフォルダ」と「デスクトップ」から選べるように

　v0.11（2026年9月23日）
　　・用語登録を追加（登録した言葉を優先して認識／「誤 → 正」で自動修正）
　　・話の途中で行が分かれる問題を改善（「〜ので」「〜は」などは次の発言とつなぐ）
　　・「〜ですか」で終わる発言に「？」を付ける
　　・語尾が欠ける問題を改善

　v0.10（2026年9月23日）
　　・最初の版
　　・マイク（自分）とPCの音（相手）を、別々に文字起こし
　　・日本語の音声認識AI ReazonSpeech（完全ローカル・CPUだけで動作）
　　・開始／停止、全文コピー、保存、クリア、自動保存（音声は保存しない）


■ 付録2. 設計に関わる変更の要点
--------------------------------------------------
　v0.25　長い区間の分割（2.5〜6秒）と、後ろの取りこぼしの再認識を再調整
　v0.26　Windowsが付けた時刻（QPC）でマイクとPC音の時間軸をそろえる
　v0.40　スリープ対策、長時間の区切り直し、100万文字での保管、既定の通信デバイスの足し込み、
　　　　 DLLの実行時読み込みと読み込み先の限定、処理遅れ時に認識を飛ばす
　v0.41　画面側の後片付け：相手と重ならない部分が8文字以上続く行は残す（同時に話した行を守る）。
　　　　 通知領域アイコンを NIS_HIDDEN で1回だけ登録
　v0.42　画面側の後片付けは相関0.3以上の行に限る、照合は直近30秒の相手の発言に限る。
　　　　 自動保存の失敗・認識エラーを画面で知らせる。一時ファイルを CREATE_NEW で作る
　v0.43　診断ログに画面側で消した行を記録
　v0.44　時刻を秒まで、日付の行、休止の検出（モダンスタンバイ対策）。重ならない部分を3文字組で判定
　v0.45　診断ログにボタンの操作元（メッセージループで直前の入力を記録）
　v0.46　AIへの依頼文を全面改訂、選択を名前で覚える
　v0.48　出力の形式（チャット／Word／PDF／Excel）
　v0.51　画面側の後片付けで、自分の行にだけある数字・否定語を守る。名前変更の秒付き時刻対応。
　　　　 自動保存の失敗を保存まで知らせ続ける
　v0.52　画面側の後片付けを、相手の行1つずつとの文字の突き合わせに変更（数字・否定・条件の文字の食い違いは残す）。
　　　　 依頼の並びを「0. 依頼なし／1. 標準議事録」に
　v0.54　画面側の後片付けを「文として完全一致のときだけ消す」に変更（3章(B)）
　v0.55〜v0.57　依頼文・用語登録の編集前バックアップ、空ファイルの作り直し、開く前の確認
　v0.58　待機中の機器名の取得を別スレッドに。コピーの見出しに「記録者のメモ」の説明
　v0.59　この技術仕様書を追加
　v0.60　AIへの依頼を12種類→6種類に整理（引き継ぎは種類ごとの対応表で）。依頼文のファイルが無いときに「空だった」と案内する不具合を修正
　v0.61　相手の名前の欄、複数名のときの「自分たち（マイク音）」、見出しの参加者の行。朝礼メモを追加（7種類）
　v0.62　朝礼メモを「共有メモ」に改名し、1項目1行・言い切りの形に（旧名は引き継ぎ）
　v0.63　自分の名前も起動時・クリアで空に。名前の欄を一覧つき（最近の10件）に。共有メモを2番目に
　v0.64　会議名も候補つきに（選ぶと前回の名前も入る）。候補のピン留め・削除（右クリック・Shift＋Delete）。画面の位置を覚える
　v0.65　画面の並びを変更（上にリボン、依頼・形式はコピーの上）。会議名を選ぶと依頼・形式も切り替え。使い方・ヒント・？を短く
　v0.66　リボン風のデザイン、リボンの並べ替えと名前の変更（AI活用のコツ・依頼文編集・用語登録）、声の選択を開始ボタンの下へ
　v0.67　［クリア］で次の会議のはじめの状態に。リボンの文字を9ptにして狭い幅でもアイコン。見出しに資料の扱いの1文
　v0.68　ピン留めの上限を10→30件に
　v0.69　自動保存を月ごと・専用フォルダに（開始の行に会議名）。ピン留めの右クリックに［いちばん上へ］
　v0.70　前の版からの引き継ぎ（初回だけ、親の親から2段下と ドキュメント\なんでも文字起こし を探す）。読み物のファイル名に番号。［使い方］に［アップデート方法］
　v0.71　漢数字の変換を初期オフに（億を含む金額の不具合も修正）。引き継ぎの成否確認・やり直し・複数候補から選択。配布zipは一覧とハッシュで作る
　v0.72　前の版を探すとき、ドキュメント\なんでも文字起こし を作らないように（調べるだけ）
　v0.73　形式に「テキストファイル」を追加（2番目）。形式を名前で覚える（設定.ini・会議名ごとの記録とも。旧番号は読み替え）
　v0.74　名前の欄を1,000文字まで・ツールチップで全員表示。読み物を整理（04を作り直し、05チェックリストを追加、説明書の版の履歴をこの付録1へ）
　v0.75　行の頭をstd::wstringで組み立て。引き継ぎの同名ファイルは中身を比べ、違えば「_前の版から」で両方残す。名前・会議名の手修正でg.dirty。クリア中の開始日時。WM_ENDSESSIONで控えを保存
　v0.76　依頼文を定型（kBuiltinPrompts）と自作（ファイル）に分離。一覧は［自作］付きで定型の後。CBN_DROPDOWNで読み直し。選択が見つからなければ依頼なし
　v0.77　保存ファイル名に依頼・形式（SaveTag）
　v0.78　ファイル名 FileBase（開始日時_会議名_依頼）。形式の指示にAIのファイル名
　v0.79　右クリックから用語登録（MainEditProc・InputBox・AddTermsLine）。名前の欄を用語に（ApplyNameTerms）
　v0.80　前回の画面（WriteSession／RestoreSession）。起動時に名前を空にする決まり（v0.63）を、前回の画面で戻す形に
　v0.81　ReadSessionFile（厳密なUTF-8・64MB）、WriteSessionの成否、AddOrUpdateRepl・ParseTermsLine、置き換え元の重複は最後を使う
　v0.82　使い方・AI活用のコツの文の見直し
　v0.965　MigrateOldSession（RestoreSession は削除）、g_archiveFail、WM_CLOSE と［新しい会議］の順番、IniSet の g_noSave、RequestManual の戻り値
　v0.964　ArchiveSig・ArchiveIfChanged・ArchiveBeforeSwitch・UpdateTitle・PastLayout（PastDelete・DeleteDirTree は削除）、Recorder の manualQ_・ClearManual
　v0.963　WriteArchive・g_archivePath、ShowPastMeetings・PastFill・PastOpen・PastDelete・DeleteDirTree、リボンに IDC_PAST
　v0.962　calmSecs=1、Recorder::Configure、二重起動でexeのパスを比べる
　v0.961　g_noSave（MoveAppAndRestart・AskMoveApp は削除）、IsCloaked、VerNum を小数で、札の中央寄せ
　v0.96　MoveAppAndRestart・AskMoveApp（ChooseDataDir 等は削除）、ShotToastShow・ToastProc・FlashAppIcon・InvertIcon、MemoDir の逃げ先を削除
　v0.95　SlideKeyExplain・SlideManualOn・AskSavePath・SlidePdfCommand・ChooseDataDir・Read/WriteChosenDataDir・VerNum。リンクに comdlg32 を追加
　v0.94　kSlideKeys・SlideEnsure・SlideHotkeyApply・Recorder::AutoMode、手動の回数・画質、差し替えの廃止（additiveCalmSecs は新しい画像に）、forceSecs 120、small の条件
　v0.93　SlideManual・ManualTarget・ShotNo・ShotDate・SlidePdfs（日ごと）・UpdateSlideControls、RequestManual(Target)、ManualCapture(sameView)、名前と帯の形式
　v0.92　ManualCapture・additiveCalmSecs・前の姿では書き換えない・上限明け。Recorder の判定の引き継ぎ・手動キー・IoMutex。WritePdf の逐次書き出し。SlideDirRel／SlideDirResolve。SetStatusFlash
　v0.91　Similar を minorFrac 未満に、MatchesEarlier、Detector::Reject／retrySecs、strongThr、移動範囲の膨張。Event::gen・SlideDrain・PB_FALLBACK・WritePdf の skipped
　v0.90　スライドを撮る：slide_detect.h（判定）・slide_capture.h（取り込み・JPEG・PDF）。〔スライドN〕の行、前回の画面に slidedir
