FlashEditor システム基本仕様書

概要

FlashEditorは、Windows向けの軽量かつポータブルなテキストエディターです。 「思考を妨げないクリーンなUI設計」と「作業効率を最大化する機能」を両立し、インストール不要で即座に使用できることを目的としています。

システム構成と動作環境

  • プラットフォーム: Windows 10 / 11
  • フレームワーク: .NET 9.0 (Windows Forms)
  • 開発言語: C# 13.0
  • アーキテクチャ: イベント駆動型、ポータブルアプリケーション(レジストリ不使用)

画面・UI仕様 (UI/UX Design)

  • メインフォーム (MainForm)
    • ツールバー: ウィンドウ上部に配置。フラットデザインのアイコンを採用。
    • テキスト領域: 画面の大部分を占めるリッチテキストまたは標準テキスト入力エリア。
  • テーマ対応 (ThemeManager)
    • OS設定(System)、Light、Darkの3種類。
    • CustomToolStripRenderer を用いた完全なダークモード対応(タイトルバー、ボーダー、ツールバー領域、コンボボックス等)。
  • スケーラブルアイコン仕様
    • サイズ変更時に劣化しないプログラム描画型モノラインフラットアイコン。
    • 20x20 の基本仮想座標系を使用し、ユーザー設定(Small: 32px, Medium: 40px, Large: 48px)に応じて動的にスケール。

機能仕様 (Functional Specifications)

テキスト編集・履歴管理 (Undo / Redo)

  • スタックベース履歴管理 (HistoryManager):
    • 差分チェック(文字数変更・行数変更)によるしきい値判定を用いたヒストリー記録。
    • 自動遅延タイマーを使用し、ある程度入力がとまった時点でスナップショットを取得。
  • ショートカット対応: Ctrl + Z (Undo), Ctrl + Y (Redo)

データの自動保存 (Auto Save)

  • クラッシュ耐性や保存漏れを防ぐため、「保存ボタン」を配置せず自動保存を徹底。
  • アプリケーション終了時に現在のテキスト内容を memo.txt として保存。
  • バックグラウンドで非同期保存 (SaveMemoAsync) を行い、作業中の中断リ​​スクにも対応。

Web検索連携機能 (Search Integration)

  • ユーザーがテキストを選択し、検索ボタン押下(または右クリックメニュー)で既定のWebブラウザを起動。
  • Google検索のURLにクエリ文字列として渡してWeb検索を実行。

タイムスタンプ・区切り線挿入

  • 1クリックで現在の日時(システム時間)と区切り線を入力カーソル行に挿入。

最前面表示 (Top Most)

  • 📌ピン留めボタンにより、ウィンドウの TopMost プロパティをOn/Off。

多言語仕様 (Internationalization – i18n)

  • 外部JSONベース (lang/*.json)
    • UI(メニュー、ツールチップ、ダイアログ等)のテキストを外部ファイル化。
    • 起動時に CurrentUICulture に応じてデフォルト言語(英語、日本語、中国語、韓国語、欧州言語等)を決定しフォールバック処理を実施。
    • ユーザーの言語設定に応じて、適した標準フォント(例: 🇯🇵Yu Gothic UI, 🇰🇷Malgun Gothic 等)を自動適用。

データ保存仕様

アプリの実行ファイルと同一ディレクトリに保存し、ポータビリティを実現。 設定とデータはテキストベースで管理。

config.json

アプリケーションの設定状態をJSON形式でシリアライズ。

  • Theme: システム連動/ライト/ダーク
  • ToolButtonSize: アイコンサイズ (Small/Medium/Large)
  • Language: 言語設定コード
  • FontName, FontSize, FontStyleValue: フォント設定
  • IsTopMost: 最前面固定フラグ
  • WindowX, WindowY, WindowWidth, WindowHeight: ウィンドウ座標とサイズ

memo.txt

エディター本体に入力されたテキストデータを UTF-8 エンコーディングで保存。

error.log

フェイタルエラー発生時の例外情報や自動保存の失敗ログを追記。

コメントを書く

メールアドレスは公開されません。