================================================================================
                        ﾒﾓｶﾚﾝﾀﾞー v1.0
                    組織対応メモ・カレンダーシステム
================================================================================

┌──────────────────────────────────────────────────────────────────────────────┐
│                                                                              │
│  ▲ ご利用前に必ずお読みください ▲                                   		　　　      │
│                                                                              │
│  以下のセクションには重要な情報が含まれています。                           		           │
│  本ソフトウェアをご利用になる前に、必ず一読してください。               	　　　　		　　　      │
│                                                                              │
│    ・【ライセンスについて】.............. 試用期間と製品版の説明         		           │
│    ・【重要：配置場所について】.......... EXEの配置場所に関する制限          		       │
│    ・【注意事項（重要）】................ データ消失を防ぐための禁止操作   		           │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘


【目次】
--------
  1. 概要
  2. 主な機能
  3. 動作環境
  4. インストール方法
  5. ライセンスについて .................. ▲重要
  6. 重要：配置場所について .............. ▲重要
  7. 初期設定
  8. 使用方法
  9. サーバー設定
 10. データパス設定（カスタムパス）
 11. 運用構成
 12. EXE実行時のキャッシュファイル
 13. アンインストール方法
 14. トラブルシューティング
 15. 既知の不具合
 16. バージョン履歴
 17. 著作権情報
 18. お問い合わせ


================================================================================
1. 概要
================================================================================

ﾒﾓｶﾚﾝﾀﾞーは、組織内でのスケジュール管理とメモ共有を行うための
イントラネット向けWebアプリケーションです。
Windows環境で単体実行可能なEXE形式での配布に対応しており、
XAMPPなどのWebサーバー環境がなくても簡単に導入できます。


================================================================================
2. 主な機能
================================================================================

■ 多言語対応（日本語/英語）
  - 初回セットアップ時に言語選択
  - ヘルプ画面から言語切り替え可能
  - 各ユーザーの通知言語設定

  【英語版に関する注意事項】
  英語版は日本語版をベースにUI表示部分を翻訳したものです。
  簡単な動作確認のみ実施しており、詳細な動作確認は未実施です。
  英語版で問題が発生した場合は、日本語版をご利用ください。

■ カレンダー・メモ管理
  - ユーザーごとのカレンダー表示
  - 日付ごとのメモ登録・編集・削除
  - メモの重要度設定（重要マーク）
  - 月間メモ一覧表示
  - 印刷用表示

■ 組織管理
  - 階層型組織構造（親組織・子組織）
  - 組織ログイン機能
  - 組織パスワード設定
  - 組織ポリシー設定（カレンダー共有範囲など）
  - 組織メンバー管理

■ ユーザー管理
  - 4段階の権限設定（管理者/副管理者/組織管理者/一般構成員）
  - ユーザー登録・編集・削除
  - パスワード管理
  - ユーザープロファイル

■ メッセージ・通知
  - ユーザー間メッセージ送信
  - メモブロードキャスト（管理者→全ユーザー）
  - 掲示板機能

■ ウェブログ（日報・共有ボード）
  - 共通ウェブログ（全ユーザー向け）と組織専用ウェブログ
  - 記事投稿（タイトル・本文・画像・添付ファイル対応）
  - 画像グリッド表示（最大9枚）
  - コメント機能
  - 投稿者検索（組織図・階層プルダウン・ユーザー選択）
  - 権限に基づく記事管理（投稿・編集・削除）

■ ファイル管理
  - ファイル送信機能（大容量ファイル対応）
  - 組織内ファイル共有

■ その他
  - Excelエクスポート機能
  - メール通知設定（SendGrid/SMTP対応）
  - カレンダー配色カスタマイズ
  - メモ難読化機能（保存ファイルの内容保護）


================================================================================
3. 動作環境
================================================================================
■ Windows 10/11
  - 特別なソフトウェアのインストール不要
  - memo_calendar.exe を実行するだけで動作

■ ファイルロック機能
  本プログラムは、データファイルへの同時アクセスによるデータ破損を
  防ぐため、ファイルロック機構を実装しています。
  複数のユーザーが同時に操作を行っても、データの整合性が保たれます。

  【未確認事項】
  マルチサーバー環境（複数のサーバーインスタンスが同一データディレクトリを
  共有する構成）での同時アクセステストは、テスト環境がないため未確認です。
  ネットワーク共有フォルダ（NAS等）でのファイルロックはOSやファイル
  システムの実装に依存するため、完全な保護は保証されません。

■ 重複起動防止機能
  同一のEXE配置に対して複数のサーバーインスタンスが起動することを
  防止する機能を実装しています。

  【ポート使用チェック】
  起動時に設定されたポートが既に使用中かどうかを確認します。
  使用中の場合はエラーメッセージを表示して起動を中止します。

  【ロックファイル方式】
  ログフォルダ（memo_calendar_log）に「.memo_calendar.lock」ファイルを
  作成し、排他ロックを取得することで同一EXEの重複起動を検出します。
  - 初回起動時：ロックファイルを自動生成してロックを取得
  - 2回目以降：既存ロックファイルへのロック取得を試行
  - ロック取得失敗時：同じEXEが既に起動中と判断してエラー終了
  - 異常終了後：次回起動時にロック取得可能（ファイル残存は問題なし）

  【別配置のEXEでの同時起動】
  別の場所に配置したEXEファイル（別のポート設定）であれば、
  同時に起動することが可能です。この場合、それぞれのEXE配置が
  独自のロックファイルを持つため、互いに干渉しません。

  【データフォルダの共有】
  別配置のEXEが同一のmemo_calendar_Dataフォルダを共有することも可能です。
  データファイルの整合性は既存のファイルロック機能により保護されます。


================================================================================
4. インストール方法
================================================================================

1. ZIPファイルを任意のフォルダに展開
2. memo_calendar.exe をダブルクリックで起動
3. ブラウザが自動で開き、初期設定画面が表示されます
4. 画面の指示に従って初期設定を完了してください


================================================================================
5. ライセンスについて　▲重要▲
================================================================================

■ ライセンスの単位
  本プログラムの管理者（adminアカウント）として使用するユーザー1人につき
  1ライセンスが必要です。
  
  例：
    - 1人の管理者が複数PCで運用 → 1ライセンス
    - 2人の管理者がそれぞれ別のPCで運用 → 2ライセンス

■ 注意事項
  ﾃﾞｰﾀｰ改ざんによる不正利用の試行が検出された場合、動的ﾌｧｲﾙが
  消失する可能性があります。

■ 試用版
  本ソフトウェアは初回起動から30日間の試用期間が設けられています。
  試用期間中はすべての機能を制限なくご利用いただけます。

  ●試用期間の表示
    - ログイン画面に残り日数が表示されます
    - 管理者メニューでもライセンス状態を確認できます

  ●試用期間中の機能
    試用期間中は、製品版と同じ全ての機能をご利用いただけます：
    - カレンダー表示・メモ作成
    - 組織管理・ユーザー管理
    - ファイル送信・共有
    - バックアップ・エクスポート
    - システム管理機能
    - 多言語対応（日本語・英語）

  ●試用期間終了後の制限
    試用期間（30日間）終了後は、以下の制限が適用されます：
    
    【重要】
    - システムへのアクセス不可
      ログイン画面およびカレンダー画面にアクセスできなくなります
    
    - ライセンス登録画面のみ表示
      「試用期間が終了しました」というメッセージが表示され、
      ライセンス登録画面への案内が表示されます
    
    - ユーザーデータの削除
      試用期間終了後、memo_calendar_Dataフォルダ内のデータが
      自動的に削除されます
      ※システム設定（memo_calendar_confフォルダ）は保持されます
    
    【データ削除についての注意】
    試用期間終了後にライセンスを購入・登録した場合、
    システム設定（管理者設定、メール設定など）は保持されていますが、
    ユーザーデータ（ユーザー情報、組織情報、メモデータなど）は
    削除されているため、再度作成する必要があります。
    
    試用期間終了前にライセンスを登録することを強くお勧めします。

■ 製品版（ライセンス認証）
  ライセンスキーを登録することで、無期限でご利用いただけます。

  ●認証方式
    - オフライン認証（インターネット接続不要）
    - メールアドレス + ライセンスキーで認証

  ●ライセンスキー形式
    XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX（32文字）

  ●ライセンスキーの取得方法

    【銀行振込で購入の場合】
      以下の口座にお振込み後、メールでご連絡ください。

      振込先：ゆうちょ銀行 三一八支店 普通 0793024
      口座名義：ウシロ　リョウタロウ
      金額：9,800円（税込）

      お振込み後、以下の情報を support@rushiro.help までお送りください。

      件名: memo_calendar ライセンス申請
      本文:
        ・振込日
        ・振込名義
        ・ライセンス登録用メールアドレス

      通常1〜3営業日以内にライセンスキーをお送りいたします。

    【ベクターシェアレジで購入の場合】
      お申し込み時、「利用者連絡欄」に
      ライセンス登録用メールアドレスを必ずご記入ください。
      ご入金確認後、ライセンスキーをお届けします。

      ※「利用者連絡欄」への記入を忘れた場合
        以下の情報を support@rushiro.help までお送りください。

        件名: memo_calendar ライセンス申請（シェアレジ）
        本文:
          ・お申込番号（Vectorから届くメールに記載）
          ・ライセンス登録用メールアドレス

        通常1〜3営業日以内にライセンスキーをお送りいたします。

    【Boothで購入の場合】
      Boothでご購入後、以下の情報を support@rushiro.help までお送りください。

      件名: memo_calendar ライセンス申請
      本文:
        ・ご注文番号（Boothの注文確認メールに記載）
        ・ライセンス登録用メールアドレス

      通常1〜3営業日以内にライセンスキーをお送りいたします。

  ●登録手順（試用期間中）
    1. memo_calendarを起動
    2. 管理者としてログイン
    3. 管理者メニュー → 「ライセンス登録」をクリック
    4. 購入時に登録したメールアドレスを入力
    5. 発行されたライセンスキーを入力
    6. 「ライセンスを登録」ボタンをクリック

  ●登録手順（試用期間終了後）
    試用期間終了後はログインできないため、以下の手順で登録します。
    1. memo_calendarを起動
    2. 「試用期間終了」画面に表示される「ライセンス登録画面へ」ボタンをクリック
    3. 購入時に登録したメールアドレスを入力
    4. 発行されたライセンスキーを入力
    5. 「ライセンスを登録」ボタンをクリック

■ ライセンス情報の保存先
  - memo_calendar_conf/license.tsv
  - memo_calendar_Data/.system_info（バックアップ）

■ 注意事項（重要）
  【禁止操作】
  - memo_calendar_conf/license.tsv の削除、移動、
    またはこれらと同等のファイル操作は絶対に行わないでください
  - 上記操作を行うと、初回起動から30日以上経過している場合、
    データが消失します（製品版ライセンス認証済みでも同様）
  
  【その他の注意】
  - ライセンス情報ファイルの内容を編集しないでください
  - 改ざんが検出されると、試用期間はリセットされません
  - 別PCへの移行時は、設定ファイルとともに移行してください
  - 製品版ライセンスは移行先PCでも有効です

■ ポータブル使用（持ち運び）
  製品版（ライセンス認証済み）のmemo_calendarは、USBメモリや
  外付けHDDに入れて異なるPCで使用できます。

  ●準備
    1. ライセンス認証を完了する
    2. 以下のフォルダを外部メモリにコピー：
       - memo_calendar.exe（または実行ファイル一式）
       - memo_calendar_conf/（ライセンス情報を含む）
       - memo_calendar_Data/（ユーザーデータ）
       - memo_calendar_log/（任意）

  ●別のPCでの使用
    1. 外部メモリをPCに接続
    2. memo_calendar.exe を直接実行（インストール不要）
    3. ライセンス認証済みの状態で起動
    4. 作業終了後、EXEを終了してから外部メモリを取り外す

  ●注意点
    - 同じ外部メモリを複数PCで同時使用しないでください
    - 必ずEXEを終了してから外部メモリを取り外してください
    - memo_calendar_log/ は起動時に自動生成されるため
      コピーしなくても動作します

■ 別環境への移行（サーバー入替等）
  サーバー機の入替や環境変更時に、データを維持したまま
  プログラムを移行する手順です。

  ●移行手順
    1. バックアップ取得
       管理者メニューから設定フォルダ・データフォルダの
       バックアップをダウンロードします。

    2. カスタムパスの初期化（カスタムパス使用時のみ）
       データ保存先設定でカスタムパスを使用している場合は、
       「初期の保存先に戻す（データ移動）」を実行します。
       これにより、外部パスのデータがmemo_calendar_Dataに
       移動され、移行準備が完了します。
       ※カスタムパス未使用の場合は手順3へ進んでください。

    3. ファイル一式の退避
       以下のフォルダを相対的位置関係を保持したままコピー：
       - memo_calendar.exe（または実行ファイル一式）
       - memo_calendar_conf/（設定・ライセンス情報）
       - memo_calendar_Data/（ユーザーデータ）
       - memo_calendar_log/（任意）

    4. 移行先への配置
       手順3でコピーしたファイル一式を、移行先の任意の
       書き込み可能なフォルダに配置します。

    5. 動作確認
       プログラムを起動し、設定やデータが正常に移行されて
       いることを確認します。

  ●移行に失敗した場合
    手順1で取得したバックアップファイルを展開し、
    memo_calendar_conf/とmemo_calendar_Data/を再配置して
    プログラムを再起動してください。

  ●注意事項
    - ライセンス情報はmemo_calendar_conf/に含まれるため、
      正しく移行すれば再認証は不要です
    - 移行先で改めてカスタムパスが必要な場合は、
      移行完了後にデータ保存先設定から設定してください


================================================================================
6. 重要：配置場所について　▲重要▲
================================================================================

本プログラムは、書き込み可能なフォルダに配置してください。

■ 推奨される配置場所
  - デスクトップ
  - ドキュメントフォルダ
  - 任意のドライブ直下（例：D:\memo_calendar\）
  - ユーザーフォルダ内の任意の場所

■ 避けるべき配置場所
  - C:\Program Files\
  - C:\Program Files (x86)\
  - C:\Windows\
  - その他、管理者権限が必要なシステムフォルダ

■ 理由
  本プログラムは初回起動時に以下のフォルダを自動生成します：
  - memo_calendar_conf/  （設定ファイル）
  - memo_calendar_Data/  （ユーザーデータ）
  - memo_calendar_log/   （ログファイル）

  書き込み禁止のフォルダに配置すると、これらが生成できず
  正常に動作しません。

■ Program Filesに配置したい場合
  データパス設定機能を使用して、データフォルダを書き込み可能な
  場所（例：C:\ProgramData\memo_calendar\）に変更してください。
  詳細は「10. データパス設定」セクションを参照してください。


================================================================================
7. 初期設定
================================================================================

初回起動時に以下の設定を行います:

  1. システム言語の選択（日本語/英語）
  2. 管理者パスワードの設定
  3. システム名の設定
  4. ポート番号の設定（デフォルト: 8080）
  5. アクセス範囲の設定（ローカルのみ/LAN内アクセス可）

※ LAN内アクセスを有効にする場合、Windowsファイアウォールで
   該当ポートの受信を許可する必要があります。
※ 言語設定は後からヘルプ画面で変更できます。


================================================================================
8. 使用方法
================================================================================

■ 起動とアクセス

  ●基本アクセス方法（主ポート直接）
    初期設定では、主ポートに直接アクセスします：
      http://127.0.0.1:8080/
      または
      http://localhost:8080/
    ※初回起動時はブラウザが自動で開きます。

  ●監視ポート経由のアクセス（マルチポート構成時）
    監視ポートを設定している場合は、監視ポート経由でアクセスすることを推奨します：
      http://127.0.0.1:8000/  （監視ポートを8000に設定した場合）
    
    監視ポートにアクセスすると、自動的に最適な作業ポートにリダイレクト
    されます。主ポートがビジー状態の場合は、代替ポートに自動振り分けされます。

  ●ネットワークアクセス（同一LAN内の他のPCから）
    1. サーバー設定で「アクセス範囲」を「ネットワーク」に変更
    2. サーバーPCのIPアドレスを確認（コマンドプロンプトで ipconfig）
    3. 他のPCのブラウザから以下のURLでアクセス:
         http://[サーバーPCのIPアドレス]:8080/  （直接アクセス）
         または
         http://[サーバーPCのIPアドレス]:8000/  （監視ポート設定時）
         例: http://192.168.1.100:8080/

  ●IPアドレスの確認方法
    1. Windowsキー + R → 「cmd」と入力 → Enter
    2. ipconfig と入力 → Enter
    3. 「IPv4 アドレス」の値を確認（例: 192.168.1.100）

  ●Windowsファイアウォールの設定
    ネットワークアクセスを有効にするには、該当ポートの受信許可が必要です。
    1. 「Windows セキュリティ」→「ファイアウォールとネットワーク保護」
    2. 「詳細設定」→「受信の規則」→「新しい規則」
    3. 「ポート」→「TCP」→ 使用するポート番号を指定（例: 8080,8081,8082）
    4. 「接続を許可する」を選択して完了

  【セキュリティに関する注意】
    本システムはイントラネット（組織内ネットワーク）での使用を想定しています。
    インターネットに直接公開することは推奨しません。
    外部からのアクセスが必要な場合は、VPNの使用を検討してください。

  【メモ難読化機能】
    ユーザー設定でメモの保存形式を選択できます。

    ●難読化する（推奨・デフォルト）
      メモ内容をエンコードして保存します。
      保存ファイル（.log, .txt, .tsv）を直接テキストエディタで開いても、
      メモの内容を読み取ることができません。

    ●平文で保存
      メモ内容をそのままテキストで保存します。
      保存ファイルを直接開いて内容を確認できます。

    ●対象となるメモ
      - 簡易メモ（月メモ）
      - 日別メモ（本文および見出し）
      - 自由メモ（タイトルおよび本文）
      - ノートブック（タイトルおよび本文）

    ●後方互換性
      - 既存の平文データは難読化設定に関わらず正常に読み込み可能
      - 設定変更は新規保存分から適用（既存データは自動変換されない）
      - Excel出力時は自動的に復号化されて出力

    ●設定方法
      ユーザー設定画面（user_settings.pl）の「メモの難読化」セクションで設定

■ マルチポート構成（オプション）

  本システムはシングルスレッドで動作するため、1つのポートで大容量ファイルの
  アップロード中はそのポートへの他のリクエストを処理できません。
  この制限を補うため、複数のポートで同時に動作するマルチポート構成を
  設定できます。

  【初期設定について】
    初期状態では主ポート（8080）のみが有効です。
    監視ポート・代替ポートは未使用のため、必要に応じて設定してください。

  ●ポート構成（設定例）
    8000  : 監視ポート（ヘルスチェック・自動リダイレクト）※オプション
    8080  : 主ポート（通常時に優先使用）※必須
    8081-8083 : 代替ポート（主ポートビジー時に使用）※オプション

  ●各ポートは独立したプロセスで動作
    主ポートで大容量ファイルアップロード中でも、
    監視ポートや代替ポートは正常に応答できます。

  ●監視ポートの動作（設定時のみ）
    1. ユーザーが監視ポートにアクセス
    2. JavaScriptが各作業ポートにヘルスチェックを実行
    3. 主ポートが応答可能であれば主ポートにリダイレクト
    4. 主ポートがビジー（アップロード中等）の場合、代替ポートにリダイレクト

  ●遅延が発生した場合（マルチポート構成時）
    作業中に画面の応答が遅い場合は、新しいタブで監視ポートにアクセスしてください。
    自動的に利用可能な代替ポートにリダイレクトされます。

  【ヒント】
    マルチポート構成を使用する場合、ブックマークには監視ポートのURLを
    登録することを推奨します。これにより、常に最適なポートで作業を開始できます。

■ ログイン
  - ユーザー一覧からユーザーを選択
  - パスワードを入力してログイン
  - 組織ログインの場合は組織を選択

■ カレンダー操作
  - 日付をクリックしてメモを入力
  - 「重要」チェックで重要マークを付与
  - 月/年の切り替えで期間を移動

■ 管理者機能
  - ログイン後、左フレームの「管理者メニュー」から各種設定


================================================================================
9. サーバー設定
================================================================================

memo_calendar_conf/server_config.tsv で設定可能:

  port          ... 主作業ポート番号（必須）
  monitor_port  ... 監視ポート番号（空白で未使用）
  alt_ports     ... 代替ポート番号（空白で未使用）
  scope         ... アクセス範囲（local/network）
  auto_browser  ... 起動時にブラウザを自動で開く（1/0）

例（シンプル構成）:
  port	8080
  monitor_port	
  alt_ports	
  scope	local
  auto_browser	1

例（マルチポート構成）:
  port	8080
  monitor_port	8000
  alt_ports	8081-8083
  scope	local
  auto_browser	1

■ 各設定項目の詳細

  ●主ポート番号（port）
    サーバーが待ち受ける主ポート番号を指定します（必須）。
    通常時はこのポートが優先的に使用されます。
    範囲: 1〜65535（1024未満は管理者権限が必要な場合あり）
    複数指定やハイフンによる範囲指定も可能（例: 8080,8085-8087）

  ●監視ポート番号（monitor_port）
    ヘルスチェックと自動リダイレクトを行う監視ポートを指定します。
    このポートにアクセスすると、利用可能な作業ポートに自動転送されます。
    空白にすると監視ポートは使用されません（初期設定は空白）。

  ●代替ポート番号（alt_ports）
    主ポートがビジー時に使用される代替ポートを指定します。
    カンマ区切りで複数指定可能、ハイフンで範囲指定も可能（例: 8081-8083）
    空白にすると代替ポートは使用されません（初期設定は空白）。

  ●アクセス範囲（scope）
    local   : サーバーを起動したPC自身からのみアクセス可能
    network : 同一LAN内の他のPCからもアクセス可能
    ※networkの場合、Windowsファイアウォールでポートの受信許可が必要

  ●ブラウザ自動起動（auto_browser）
    1 : EXE起動時にブラウザを自動で開く（デフォルト）
    0 : ブラウザを自動で開かない（手動でURLを入力）
    ※バックグラウンド運用やリモートアクセスのみの場合は「0」が便利

■ ポート競合時の対処

  作業ポートが他のアプリケーションで使用中の場合、
  server_config.tsv で別のポート番号に変更してください。

  例: すべてのポートを9000番台に変更
    port	9080
    monitor_port	9000
    alt_ports	9081-9083

■ 管理者メニューからの設定変更
  管理者としてログイン後、管理者メニューの「内蔵サーバー設定」から
  GUIで設定を変更できます。変更後はサーバーの再起動が必要です。

■ サーバー動作方式について
  本システムの内蔵サーバーはシングルスレッド方式で動作しています。
  ただし、各ポート（8080, 8081, 8082, 8083）は独立したプロセスとして
  起動するため、あるポートで大きなファイルをアップロード中でも、
  他のポートは正常に応答できます。

  【大容量ファイルアップロード時の動作】
    リクエストA（ポート8080で大きなファイルアップロード）開始
      ↓
      （数分間、ポート8080はこのリクエストを処理中）
      ↓
      この間、ポート8080への新規リクエストは待機状態
      ↓
      しかし、ポート8081, 8082, 8083は正常に応答可能
      ↓
      監視ポート（8000）経由でアクセスすれば、
      自動的にポート8081等にリダイレクトされる
      ↓
    リクエストA 完了、ポート8080も通常状態に戻る


================================================================================
10. データパス設定（カスタムパス）
================================================================================

データフォルダ（memo_calendar_Data）の保存場所を変更できます。

■ 設定方法（推奨：管理者メニューから）
  管理者メニューの「バックアップ」→「データ保存場所設定」から
  変更できます。この方法では既存データが自動的に移動されます。

■ 設定方法（手動編集）
  1. memo_calendar_conf フォルダ内の data_path.conf を開く
  2. コメント行の下に、データフォルダのパスを記載
  3. ファイルを保存してEXEを再起動
  ※手動編集の場合、既存データは自動移動されません

  例: data_path.conf
    # データパス設定
    D:\memo_calendar_data

■ 注意事項
  - パスは絶対パスで指定
  - 日本語を含むパスも使用可能
  - 設定フォルダ（memo_calendar_conf）は移動不可

■ ネットワーク共有フォルダの指定
  NASやファイルサーバーなど、ネットワーク上の共有フォルダを
  データ保存先として指定できます。

  Windows : ネットワークドライブとして割り当てたドライブ文字で指定
            例: N:\shared\memo_data

  ※ ネットワーク共有フォルダを使用する場合は、OSの機能で事前に
     マウントまたはドライブ割り当てを行ってください。
  ※ Windows の UNCパス（\\192.168.1.100\share 形式）は非対応です。
     必ずドライブ文字に割り当ててから指定してください。


================================================================================
11. 運用構成
================================================================================

本システムは、用途や規模に応じて以下の運用構成を選択できます。

■ シングルサーバー構成（1台運用）

  1台のサーバーPCでmemo_calendar.exeを実行し、
  同一LAN内の複数クライアントPCからアクセスする構成です。

  ●構成図
    [サーバーPC]
        └── memo_calendar.exe
        └── memo_calendar_conf/
        └── memo_calendar_log/
        └── memo_calendar_Data/
              ↑
    [クライアントPC] ──── ブラウザでアクセス

  ●メリット
    - 設定がシンプルで導入が容易
    - データの一元管理が可能
    - 1台のPCで完結するため管理が容易

  ●デメリット
    - サーバーPCの障害時はシステム全体が停止
    - サーバーPCの処理能力に依存

  ●推奨ケース
    - 小〜中規模の組織（50名程度まで）
    - 同時アクセス数が限定的な環境
    - シンプルな運用を希望する場合

■ マルチサーバー構成（複数台運用・データ共有）

  複数のサーバーPCでmemo_calendar.exeを実行し、
  ネットワーク共有フォルダ上のmemo_calendar_Dataを共有する構成です。

  ●構成図
    [ファイルサーバー/NAS]
        └── memo_calendar_Data/  （共有データ）
              ↑    ↑    ↑
    [サーバーPC-A] [サーバーPC-B] [サーバーPC-C]
        └── exe     └── exe       └── exe
        └── conf/   └── conf/     └── conf/
        └── log/    └── log/      └── log/
              ↑           ↑            ↑
    [クライアント群A] [クライアント群B] [クライアント群C]

  ●設定方法
    1. 各サーバーPCにmemo_calendar.exeを配置
    2. ファイルサーバー/NASに共有データフォルダを作成
    3. 各サーバーPCでネットワークドライブを割り当て
       例: N:\shared\memo_calendar_Data
    4. 各サーバーの data_path.conf で共有フォルダを指定
    5. 各サーバーでmemo_calendar.exeを起動
       ※サーバーPCが異なればIPアドレスが異なるため、ポート番号は同じでも可
       ※同一PC上で複数起動する場合のみ、異なるポート番号が必要

  ●メリット
    - 負荷分散が可能（クライアントを複数サーバーに分散）
    - サーバー障害時も他のサーバーで継続運用可能
    - 拠点ごとにサーバーを配置し、地理的分散が可能
    - スケールアウトが容易

  ●デメリット
    - ファイルサーバー/NASが必要
    - 設定が複雑になる
    - ネットワーク共有フォルダのファイルロックはOS/ファイルシステム依存
      （完全な同時アクセス保護は保証されない）

  ●推奨ケース
    - 中〜大規模の組織（50名以上）
    - 高可用性が求められる環境
    - 複数拠点での利用

  ●注意事項
    - 各サーバーの memo_calendar_conf は個別に管理されます
    - admin_config.tsv 等の設定は各サーバーで同期が必要
    - ファイルサーバー/NASの障害時はシステム全体に影響

  ●ライセンスについて
    マルチサーバー構成で複数のPCからプログラムを起動する場合、
    各PCでそれぞれライセンス認証が必要です。
    - 同一のシステム管理者が運用する場合：同一のライセンスキーを使用可能
    - 異なるシステム管理者が運用する場合：それぞれ個別のライセンスが必要


================================================================================
12. EXE実行時のキャッシュファイル
================================================================================

EXE版を実行すると、PAR::Packerによりキャッシュファイルが生成されます。
このキャッシュには、EXEに内蔵されたPerlモジュールやスクリプトが展開されます。

■ キャッシュファイルの生成場所（Windows）
    %TEMP%\par-ユーザー名\cache-ハッシュ値\
    例: C:\Users\username\AppData\Local\Temp\par-username\cache-abc123def\

    ※ %TEMP% は通常 C:\Users\ユーザー名\AppData\Local\Temp を指します

■ キャッシュの役割
  - EXE内蔵ファイルの展開先として機能
  - 2回目以降の起動を高速化
  - プログラム実行に必要なモジュール・スクリプトを格納

■ キャッシュの管理
  - 通常、ユーザーが手動で管理する必要はありません
  - EXEを更新した場合、新しいキャッシュが自動生成されます
  - ディスク容量が逼迫した場合は、古いキャッシュを手動削除可能
  - キャッシュを削除しても、次回EXE起動時に再生成されます

■ 環境変数による制御
  PAR_GLOBAL_TEMP環境変数を設定することで、
  キャッシュの生成場所を変更できます。

  例（Windows コマンドプロンプト）:
    set PAR_GLOBAL_TEMP=D:\par_cache
    memo_calendar.exe

  例（Windows PowerShell）:
    $env:PAR_GLOBAL_TEMP = "D:\par_cache"
    .\memo_calendar.exe


================================================================================
13. アンインストール方法
================================================================================

本ソフトはレジストリを使用しないため、関連フォルダを削除するだけで
アンインストールが完了します。

■ アンインストール手順

  1. memo_calendar.exe が起動中の場合は、先に終了してください。

  2. 以下のフォルダ・ファイルを削除してください。
     （すべて memo_calendar.exe と同じ場所に生成されます）

     memo_calendar/          ... EXE内部フォルダ（内部設定・スクリプト）
     memo_calendar.exe       ... 実行ファイル本体
     start_memo_calendar.bat ... 起動スクリプト（Windows用・自動生成）
     start_memo_calendar.sh  ... 起動スクリプト（Linux/macOS用・自動生成）
     memo_calendar_conf/     ... 設定ファイル（管理者設定等）
     memo_calendar_Data/     ... ユーザーデータ（メモ・ファイル等）
     memo_calendar_log/      ... サーバーログ
     memo_calendar_cache/    ... PAR::Packerキャッシュ

  3. PAR::Packerのシステムキャッシュを削除してください。
     （起動用バッチ/シェルで memo_calendar_cache/ に変更している場合は
       手順2で削除済みのため、この手順は不要です）

     Windows:
       エクスプローラーのアドレスバーに %TEMP% と入力してEnter
       → par-ユーザー名 フォルダを削除

     Linux/macOS:
       /tmp/par-ユーザー名 フォルダを削除

■ 注意事項
  - memo_calendar_Data/ にはユーザーが保存したメモやファイルが含まれます。
    必要に応じて削除前にバックアップを取ってください。
  - memo_calendar_conf/ には管理者設定やライセンス情報が含まれます。
    再インストールの予定がある場合は保存しておくことをお勧めします。


================================================================================
14. トラブルシューティング
================================================================================

■ ポートが使用中で起動できない
  → 他のアプリケーション（XAMPP等）を停止するか、
     別のポート番号を設定してください。

  【手動でポート番号を変更する方法】
  初回起動時にポート競合でサーバーが起動できない場合、
  設定ファイルを手動で編集できます。

  1. memo_calendar.exe と同じフォルダにある
     memo_calendar_conf フォルダを開く
  2. server_config.tsv をメモ帳などで開く
  3. port の行を見つけ、8080 を別の番号に変更
     例: port	8081
  4. ファイルを保存してEXEを再起動

  ※ファイルが存在しない場合は、一度EXEを起動して終了すると
    自動生成されます。

■ LAN内の他のPCからアクセスできない
  → server_config.tsv の scope を network に設定
  → Windowsファイアウォールでポートを許可
  → アクセス元PCでサーバーPCのIPアドレスを正しく指定

■ 文字化けが発生する
  → ブラウザのエンコーディングをUTF-8に設定


================================================================================
15. 既知の不具合
================================================================================

■チャンク分割アップロード時の進捗表示の誤差
  項目	内容
  現象	大容量ファイルのアップロード時、進捗が100%を超えて表示されることがある（例：101%）
  発生条件	チャンク分割アップロード使用時、ネットワーク再送が発生した場合
  影響	表示のみ。実際のファイルには影響なし
  対応状況	軽微な表示上の問題のため、現バージョンでは修正予定なし
  詳細説明
  この現象は、進捗表示用の変数（uploadedBytes）の計算誤差によるものです。 ネットワークの一時的な不安定さにより同じチャンクが再送された場合、表示上のバイト数が二重にカウントされることがあります。

  実際のファイルが正常な理由：

  サーバー側では各チャンクをファイル名（chunk_0, chunk_1...）で管理
  重複チャンクは上書きされるだけで、データは正確に保持
  結合時はチャンク番号順に正しく結合
  ダウンロードされるファイルは元のファイルと完全に同一
  [クライアント側（表示用）]
  uploadedBytes = 5.39GB  ← 再送により誤差が発生（表示のみ）

  [サーバー側（実データ）]
  chunk_0.tmp (50MB) ─┐
  chunk_1.tmp (50MB) ─┼─→ 結合 → 完成ファイル (5.36GB) ← 正確
  chunk_2.tmp (50MB) ─┤
  ...                 ┘
  ファイルの整合性に問題はありませんので、そのままご利用ください。

不具合を発見された場合は、著作権者までご報告ください。
報告時には、以下の情報をお知らせいただけると迅速な対応が可能です：
  - 発生した現象の詳細
  - 再現手順
  - ご使用の環境（OS、ブラウザ等）
  - エラーメッセージ（表示された場合）


================================================================================
16. バージョン履歴
================================================================================

v1.0 (2026-01)
  ■ 多言語対応
    - 日本語/英語バイリンガル対応
    - 初回セットアップ時の言語選択機能
    - ヘルプ画面に言語切り替えドロップダウン追加
    - 英語版ヘルプマニュアル完全翻訳

  ■ ファイル送信機能
    - 大容量ファイルアップロード対応（チャンク分割方式）
    - ストリーミングダウンロード（メモリ効率化）
    - アップロード進捗表示・キャンセル機能

  ■ マルチポート構成
    - 主ポート＋代替ポート＋監視ポートのアーキテクチャ
    - ヘルスチェック・自動リダイレクト機能
    - ビジー状態管理（大容量アップロード時の負荷分散）

  ■ 管理機能
    - システムタイマー（定期タスク自動実行）
    - ログローテーション・容量監視
    - 電子掲示板設定

  ■ 組織・ユーザー管理
    - 組織階層構造対応
    - 組織専用ユーザー・組織共通ユーザー機能
    - 副管理者の同格操作制限

  ■ 基盤機能
    - EXE単体実行対応
    - 日本語パス完全対応
    - データパス設定（カスタムパス）機能


================================================================================
17. 著作権情報
================================================================================

Copyright (C) 2025 後 遼太朗 (USHIRO Ryotaro)
All Rights Reserved.

本プログラム「memo_calendar」は、後 遼太朗の著作物です。

■ 利用条件

1. 本プログラムの著作権は、後 遼太朗に帰属します。

2. 本プログラムを使用、複製、改変、再配布する場合は、
   著作権者の許可が必要です。

3. 本プログラムは現状有姿（AS IS）で提供されます。
   著作権者は、本プログラムの使用によって生じた
   いかなる損害についても責任を負いません。

4. 本プログラムに関するお問い合わせは、著作権者までご連絡ください。


================================================================================
18. お問い合わせ
================================================================================

本プログラムに関するご質問・ご要望・バグ報告等は、
著作権者までお問い合わせください。


================================================================================
