LibreOffice Calc 数式アシスタント


LibreOffice Calc の数式を素早く作成・テスト・管理するための Python ツールです。お気に入りシステム、チーム同期、多言語対応、プラグインマネージャーを搭載しています。

🚀 機能


  • 📑 60 以上の関数を収録した 4 つのタブ

  • 🌐 38 言語対応(ヒンディー語はフォントの自動インストール付き)

  • ⭐ お気に入りシステム(ローカル保存およびネットワークドライブ経由のチーム同期)

  • 🛠 チームお気に入り用管理者パネル(パスワード保護)

  • 📋 シンタックスハイライト付きのコピー可能な数式

  • ✏️ 元に戻す/やり直し対応の編集可能な出力フィールド

  • 📖 組み込みヘルプおよび関数リファレンス(言語別)

  • 💾 自動保存(JSON 形式、アトミック書き込み)

  • 🌙 ダークモード

  • 🔌 独自の数式プラグインを作成できるプラグインマネージャー

  • 🔤 RTL 対応(右から左)– 書字方向の自動検出

  • 🗄️ バックアップ&復元 – 名前とパスワードですべての設定とお気に入りを保存

  • ⌨️ ウィンドウの最小化/復元用グローバルショートカット Ctrl+F12
  • 🔍 JSON バリデーター – languages.jsonformula_explanations.json の自動チェックと修正

  • 🖥️ 使い方


    1. 入力データの設定

  • セル範囲(例:A1:A10

  • セル 1 / セル 2(例:A1B1

  • 任意パラメーター(例:テキストやインデックス)

  • 絶対参照モードの選択:A1$A1A$1$A$1

  • 2. 関数を選択する タブを選んで関数をクリックすると、数式が即座に生成されます。

    3. 数式を調整する 生成された数式は出力フィールドで直接編集できます。

    4. コピーする ワンクリックでクリップボードに転送できます(シンタックスカラー付き)。

    5. お気に入りを活用する

  • ⭐ 保存 → 現在の数式を保存(Ctrl+S)

  • 📂 読み込み → 数式を再利用

  • ❌ 削除 → Delete キーまたはボタン

  • 🕐 履歴 → 最近使用した数式

  • 📊 タブ一覧


    タブ 1 – 基本関数 + - * / ^ SUM、AVERAGE、MIN、MAX、MEDIAN、COUNT、COUNTA、SUMPRODUCT

    タブ 2 – 高度な関数 IF、AND、OR、NOT SUMIF、COUNTIF、AVERAGEIF、SUMIFS、STDEV、VAR、COUNTBLANK、LARGE

    タブ 3 – 日付とテキスト TODAY、NOW、YEAR、MONTH、DAY、DATE、DATEDIF、WEEKDAY CONCATENATE、LEN、LEFT、RIGHT、MID、UPPER、LOWER、TRIM

    タブ 4 – 検索と丸め VLOOKUP、HLOOKUP、INDEX、MATCH、INDEX+MATCH ROUND、ROUNDUP、ROUNDDOWN、INT、TRUNC、ABS、MOD、SQRT、RAND


    📖 LibreOffice ドキュメントからの数式の説明


    formula_explanations.json ファイルは、LibreOffice Calc の公式ドキュメント(https://help.libreoffice.org)から直接取得されます。

    データソースと更新


  • 説明、構文情報、例は LibreOffice の公式ヘルプサイトから取得されます
  • サポートされる言語はサイトで利用可能な翻訳によって異なります
  • ファイルには各関数について:名前、構文、説明、例、カテゴリーが含まれます
  • 追加や修正は手動で行えます(JSON バリデーターを参照)

  • formula_explanations.json の構造


    `json
    {
    "SUM": {
    "ja": {
    "syntax": "SUM(数値1; 数値2; ...)",
    "description": "セル範囲のすべての数値を合計します。",
    "example": "=SUM(A1:A10)"
    },
    "en": {
    "syntax": "SUM(Number1; Number2; ...)",
    "description": "Adds all numbers in a cell range.",
    "example": "=SUM(A1:A10)"
    }
    }
    }
    `

    | フィールド | 必須 | 説明 |
    |-----------|------|------|
    | syntax | ✅ | パラメーター付き数式の構文 |
    | description | ✅ | 関数の簡単な説明 |
    | example | ✅ | すぐに使える数式としての使用例 |
    | note | ❌ | 任意のメモ |

    💡 注意: 言語のエントリーが存在しない場合、アプリは自動的に英語版にフォールバックします。

    ---

    🔍 言語ファイル用 JSON バリデーター


    統合された JSON バリデーターlanguages.jsonformula_explanations.json の一貫性、完全性、国名の正確さをチェックして修正します。設定 → 🔍 JSON バリデーター からアクセスできます。

    チェック内容


    #### languages.json

  • ✅ 38 言語すべてが存在する(ISO 639-1 言語コード)
  • 国名と言語名が正しい(例:"ja""日本語"
  • ✅ 言語コードの重複なし
  • ✅ 必須フィールドが存在:namenative_nameflagrtl
  • ✅ RTL フラグが正しく設定(アラビア語、ヘブライ語、ペルシア語、ウルドゥー語 → "rtl": true

  • #### formula_explanations.json

  • ✅ 4 つのタブのすべての関数が登録されている
  • ✅ 必須フィールドが存在:syntaxdescriptionexample
  • ✅ 空のフィールドなし("" または null
  • ✅ 言語コードが languages.json と一致

  • 修正機能


    | エラータイプ | 自動修正 |
    |------------|---------|
    | 誤った国名 | ISO 標準に従った正しい名前に置換 |
    | 言語エントリーの欠落 | 英語のフォールバックで補完 |
    | 空の必須フィールド | 手動確認用に "[MISSING]" としてマーク |
    | 重複エントリー | 重複を削除、より完全なエントリーを保持 |
    | 誤った RTL フラグ | 既知の RTL コードに基づいて自動修正 |

    使い方


    1. 設定 → 🔍 JSON バリデーター を開く
    2. ファイルを選択:languages.json または formula_explanations.json(または両方)
    3. 🔎 チェック – 見つかった問題をすべて表示
    4. 🛠 自動修正 – 自動で修正可能なエラーをすべて修正
    5. 💾 保存 – 修正されたファイルをアトミックに書き戻し
    6. 📋 レポートをエクスポート(任意)– すべての結果をテキストファイルに保存

    ⚠️ 注意: 自動修正の前に、元のファイルのバックアップコピーが作成されます(languages.json.bak / formula_explanations.json.bak)。

    ⭐ お気に入りシステム


  • 独自の数式を保存して再利用できます

  • 個人のお気に入りとチームのお気に入りを分けて管理

  • チームのお気に入りは書き込み保護(編集は管理者のみ可能)

  • 重複エントリーを防止

  • 個人のお気に入りは自由に並び替え可能

  • ネットワークドライブ経由で同期(任意で設定可能)

  • チーム同期


    設定 → 🌐 ネットワークパス でネットワークドライブを指定できます(例:\\\\サーバー\\共有\\数式)。

  • 起動時:ネットワークのお気に入りをローカルに保存(オフライン用バックアップ)

  • 保存時:個人の数式はネットワークに書き込まれ、チームの数式は変更されません

  • 🛠 管理者パネル


    🛠 ボタンからアクセスできます。初回クリック時にパスワードを設定します(PBKDF2-SHA256、ハッシュ値のみ保存)。

  • チームの数式を追加・編集・削除

  • パスワードの変更

  • 変更内容をネットワークドライブに直接書き込み

  • 🔌 プラグインマネージャー


    プラグインマネージャー(plugin_manager.py)は、Calc2 用の独自数式プラグインを作成・管理するためのスタンドアロンツールです。Calc2.py と同じフォルダーに配置されており、Calc2.py 内の 🔌 ボタンで起動します。

    機能


  • 新規プラグインの作成 — ステップバイステップのウィザード(名前、数式、翻訳、概要)

  • 数式の追加 — 既存プラグインへの数式追加

  • 翻訳の編集 — 38 言語すべてへの数式名の翻訳

  • プラグインフォルダーを開く — ファイルエクスプローラーで直接開く

  • プラグインの削除 — 確認ダイアログ付き

  • プラグインの構造


    各プラグインは plugins/ 内のサブフォルダーとして配置され、2 つのファイルで構成されます。

    `
    plugins/
    my_plugin/
    plugin.json ← メタデータ(名前、バージョン、作者、説明)
    formulas.json ← 翻訳付き数式
    `

    plugin.json の例:

    `
    {
    "id": "my_plugin",
    "enabled": true,
    "version": "1.0",
    "author": "あなたの名前",
    "icon": "💰",
    "name": { "en": "Finance Formulas", "ja": "財務数式" },
    "description": { "en": "Useful formulas for financial calculations." }
    }
    `

    formulas.json の例:

    `
    [
    {
    "formula": "=SUM(A1:A10)",
    "name": { "en": "Sum of range", "ja": "範囲の合計" },
    "description": { "en": "Adds all values in A1:A10." },
    "category": { "en": "Basic", "ja": "基本" }
    }
    ]
    `

    重要なお知らせ(⚠️ Important Notice)


    プラグインマネージャーには ⚠️ Important Notice ボタンがあります。クリックすると、プラグインを正しく作成するためのルールを英語で記載したウィンドウが開きます。同じ内容は IMPORTANT_NOTICE.md にも記載されています。

    🌐 多言語対応


    38 言語をアプリ内で直接切り替えられます。
    🌍 ボタンから言語ウィザードを使って新しい言語を追加することもできます。

    ヒンディー語(हिंदी)に関する注意: ヒンディー語に初めて切り替えると、フォント *Noto Sans Devanagari* がシステム全体に一度だけインストールされます。この際、Windows が管理者権限を要求します。

    🔤 RTL 対応(右から左)


    右から左に書く言語は自動的に検出され、インターフェース全体がミラーリングされます:

  • アラビア語 (عربي) – RTL 自動検出
  • ヘブライ語 (עברית) – RTL 自動検出
  • ペルシア語 / ファルシー語 (فارسی) – RTL 自動検出
  • ウルドゥー語 (اردو) – RTL 自動検出

  • RTL モードで変わること: UI レイアウト全体がミラーリングされ、入力フィールドが RTL 配置を使用し、フォントが自動的に RTL 対応フォント(例:*Noto Sans Arabic*、*Noto Sans Hebrew*)に切り替わります。

    💡 注意: 生成される LibreOffice 数式は常に LTR 構文のまま変わりません。変わるのはユーザーインターフェースの方向のみです。


    🗄️ バックアップ&復元


    バックアップの作成


    設定 → 🗄️ バックアップを作成 から:

    1. 名前 – 任意のラベル(例:Backup_2025年5月
    2. パスワード – バックアップは AES で暗号化されます。パスワードなしでは復元できません
    3. 保存場所 – ローカルまたはネットワークドライブ
    4. 💾 バックアップを作成 をクリック – .calc2backup ファイルが作成されます

    内容: すべてのお気に入り、設定、チームのお気に入り(任意)、インストール済みプラグイン。

    バックアップの復元


    設定 → 📂 バックアップを復元 から:

    1. バックアップファイルを選択(.calc2backup
    2. パスワードを入力
    3. 復元の範囲を選択:お気に入りのみ / 設定のみ / すべて
    4. 🔄 復元 をクリック

    ⚠️ 復元時に既存のデータが上書きされます。復元前に現在のデータの自動バックアップが提案されます。


    💡 ヒント


  • $A$1 → 絶対参照(セルフィールド横のドロップダウンで選択)

  • Ctrl+S → 数式をお気に入りに保存

  • Ctrl+C → 数式をコピー(入力フィールドの外で)

  • Ctrl+Z / Ctrl+Y → 元に戻す/やり直し

  • Ctrl+F12 → ウィンドウを最小化/復元(Calc2 が最小化されていても機能します)

  • お気に入りリストの Delete キー → エントリーを削除

  • 数式は生成後、出力フィールドで直接調整できます

  • 📁 プロジェクト構成


    `
    Calc2.py ← メインプログラム
    plugin_manager.py ← プラグインマネージャー
    IMPORTANT_NOTICE.md ← プラグイン作成に関する注意事項
    data/
    README_de.md / README_en.md / ... ← 言語別ヘルプ
    REFERENZ_de.md / REFERENZ_en.md / ... ← 言語別関数リファレンス
    language/
    languages.json ← UI 翻訳(38 言語)
    formula_explanations.json
    services/
    language_tool.py ← ウィザード:新しい言語の追加
    settings_service.py
    auth_service.py
    favorites_service.py
    network_sync.py
    install_service.py
    backup_service.py ← バックアップ&復元
    json_validator.py ← languages.json / formula_explanations.json のチェックと修正
    plugins/ ← プラグインフォルダー(自動作成)
    my_plugin/
    plugin.json
    formulas.json
    fonts/
    NotoSansDevanagari-Regular.ttf ← ヒンディー語フォント
    NotoSansArabic-Regular.ttf ← アラビア語フォント (RTL)
    NotoSansHebrew-Regular.ttf ← ヘブライ語フォント (RTL)
    python/ ← 組み込み Python
    python.exe
    ...
    settings.json ← 自動作成
    favorites.json ← ローカルお気に入り(自動作成)
    `

    🧠 技術的なポイント


  • アトミック書き込み → 保存時のファイル破損を防止

  • サービス指向アーキテクチャ → ロジックと UI を完全に分離

  • 自動マイグレーション → 旧バージョンのお気に入り形式を検出して変換

  • 堅牢なエラー処理 → 破損したファイルがあってもクラッシュしません

  • シンタックスハイライト → 数式をカラーで表示

  • ダークモード → 完全対応

  • プラグインシステム → 独自の数式プラグインで Calc2 を拡張可能

  • RTL エンジン → RTL 言語の自動検出、適切なフォントを含む UI の完全ミラーリング

  • バックアップ&復元 → 名前とパスワードによる AES 暗号化バックアップ、選択的復元

  • JSON バリデーターlanguages.jsonformula_explanations.json の自動チェックと修正(国名と必須フィールドを含む)

  • LibreOffice ソースformula_explanations.json は LibreOffice Calc の公式ドキュメントから取得(https://help.libreoffice.org)

  • グローバルショートカットkeyboard ライブラリ経由でシステム全体に適用(バックグラウンドスレッド)

  • ライセンス


    個人・商用を問わず、自由にご利用いただけます。