安全性と守る方針
この文書の項目
1. 外部通信ゼロ方針 (No-Network Policy)
原則
配布物、アプリ本体、依存ライブラリ、関連ツール、ビルド生成物のすべてにおいて、一切のネットワーク通信を行わない設計を義務付けます。
適用範囲と無効化措置
- 自動アップデート・更新確認: 実装禁止およびコンパイルオプションで除去。
- テレメトリ・クラッシュレポート・広告SDK: 配布物に含めない。
- オンライン辞書・Web検索・翻訳: 無効化。
- LibreOffice コンパイル時:
wininet,winhttp,curl,oauth2,updatefeedなどのネットワークモジュールをカスタムパッチおよびビルドフラグで完全カット。
検証
- 静的検査ツール
safety_scansによる API 走査。 - バイナリスキャン
binary_scan.pyによるWS2_32.dll/WININET.dllなどの通信 DLL リンク検出スキャン。
2. ファイル破壊・情報損失ゼロ (Data Protection & Non-Destructive Storage)
原則
異常終了、クラッシュ、電源断、権限エラーなどの異常系が発生した場合でも、ユーザーの PDF 原本やノート、注釈データを破棄・損壊させない設計にします。
安全機構
- 原本非破壊: PDF 原本は読み取り専用で扱い、注釈は別ファイル
.clropに保存。 - アトミック書き込み (
run_atomic_write):
- 一時ファイル(.tmp)へ書き込み・検証を完了した後に、元のファイルへアトミック置換。
- Stage ガード (
_stage):
- 編集途中の状態を stage 領域に自動保存し、次回起動時に安全に自動復元・ロールバック可能。
書き込み先
- 配布 ZIP は展開して使う。設定は展開後のアプリフォルダー、作業中のPDF・ノート・注釈・自動作業保護・バックアップ・ログは、利用者が選んだワークスペース内の
__pdf_note_workspace__とその周辺で管理する。 - 出力と「一時パス」として利用者が登録した外部フォルダーは、利用者が明示して選んだ保存先として扱う。AppData、OSの一時フォルダー、起動元の作業フォルダーを暗黙の保存先にせず、書込みに失敗しても別の場所へ自動退避しない。
- Office変換の一時データと子プロセスの設定領域も、選択したワークスペース内の
__pdf_note_workspace__/__tmp__/lo/に限定する。 - ここで定めるのはファイルとして永続的に書き込むストレージの境界であり、実行中のメモリ使用は対象外とする。
3. 無音遵守 (Silent UI Policy)
原則
アプリから突然の音やビープ音を鳴らさない設計にします。入力エラーや警告は静かな視覚通知(ダイアログやステータス表示)で伝えます。
実装ルール
PlaySound、Beep、MessageBeepの使用を禁止。- メディアの自動再生を実装しない。
- Windows の「一般の警告音」が鳴る未解消の既知問題については、発生経路を特定して解消する(音量設定変更による回避は認めない)。