以下は、Python プログラム explain_program.py の解析レポートです。

1) プログラムの動作
- 目的
  - 指定されたソースコードファイルを読み込み、OpenAI または Google Generative AI（Gemini）を用いて、日本語説明の Markdown ドキュメントを生成します。出力は同名の.mdファイルとして保存されます。
- 大まかな流れ
  - dotenv ライブラリを使って設定ファイル（.env 系）から API キー等を取得。
  - 入力ファイルを glob pattern で探索（ワイルドカード指定）。
  - 各ファイルについて、プログラムのタイプ（main／lib）を判定し、API へ投げるプロンプトを組み立てる。
  - 指定の API（openai または google）を用いてドキュメントを生成。
  - 生成結果を出力ファイルへ保存。
  - 出力ファイルの更新条件（--update／--overwrite）や、同名ファイルの既存時の扱いを制御できる。
  - 1 秒程度の待機を挟み、API レート制限を緩和。

- 主な処理の要点
  - プログラムはパターン指定のファイルを対象にループ処理。
  - ファイル拡張子に応じて言語名を language_dict で取得。サポートされていない言語の場合はスキップします。
  - プログラムのタイプはファイル名・拡張子・先頭名に応じて推定（tk で始まる場合は lib、拡張子が .pm などは lib、その他は main）。
  - プロンプトはテンプレート（main / lib）にコードとスクリプト名を差し込み、言語名も適用します。
  - 生成されたドキュメントを出力ファイルへ書き込み、必要に応じて再生成が条件付きで行われます。

2) 必要な非標準ライブラリとインストールコマンドとインストール方法
- 必要な非標準ライブラリ（環境によっては事前にインストールが必要）
  - python-dotenv
  - OpenAI 用ライブラリ: openai
  - Google Generative AI 用ライブラリ: google-generativeai
- インストール方法（一般例）
  - python-dotenv: pip install python-dotenv
  - OpenAI API ライブラリ: pip install openai
  - Google Generative AI ライブラリ: pip install google-generativeai
- 実行時の前提
  - dotenv の load_dotenv で config_path を読み込むため、環境変数として以下が必要になることが多いです。
    - OPENAI_API_KEY（OpenAI 用）
    - GOOGLE_API_KEY（Google Generative AI 用）
  - これらの API キーは環境変数として設定するか、対応する .ini/.env ファイル（translate.env など）を用意して load_dotenv で読み込みます。
- 注意
  - dotenv の import に失敗した場合、エラーメッセージと共に終了します。pip install python-dotenv を実行してください。

3) 必要な入力ファイル
- 入力ファイルの形式
  - 対象ファイルは任意のソースコードファイル（例: *.py など）。
  - ファイルは UTF-8 での読み込みを試み、失敗した場合は Shift-JIS での読み込みを試します。
- 入力ファイルの要件
  - 実行時にはワイルドカード pattern（例: '*.py'）を指定します。
  - 各ファイルには有効なソースコードが入っていることが前提です。
  - 言語が language_dict に無い拡張子の場合はスキップされます。

4) 実行後に生成される出力ファイル
- 出力ファイル名
  - --output を指定した場合は、指定名のファイルが出力されます（ただし対象ファイルが1つのみの時のみ有効）。
  - 出力ファイルを指定しなかった場合、入力ファイルごとに拡張子を .md に置換したファイル名で出力されます（例: foo.py → foo.md）。
- 出力内容
  - OpenAI または Google Generative AI によって生成された、入力コードの動作説明、依存ライブラリ、インストール方法、使用方法（Usage など）を Markdown 形式で記述したドキュメント。
- 更新挙動
  - --overwrite を 1 に設定すると既存出力ファイルを問答無用で上書きします。
  - --update を 1 に設定すると、入力ファイルより出力ファイルが新しい場合はスキップします（最新の場合のみ生成をスキップ）。
  - 何も指定せず、出力ファイルが既に存在する場合はスキップします（再生成を希望する場合は --update または --overwrite を指定）。
- 出力待機
  - 各ファイルの処理後に time.sleep(1) が入っており、API レート制限対策として1秒待機します。

5) コマンドラインでの使用例 (Usage)
- 基本的な使い方
  - 単一ファイルのドキュメントを生成
    - python explain_program.py "*.py" output.md
      - pattern に *.py を指定して、出力ファイル名を output.md に設定します。
  - 複数ファイルを処理する場合は、出力ファイル名を個別に指定せず、デフォルトの .md 名を使用します。
- 出力ファイルの更新・上書きをコントロール
  - 既存ファイルを必ず上書き
    - python explain_program.py "*.py" --overwrite 1
  - 既存ファイルを更新時のみ再生成
    - python explain_program.py "*.py" --update 1
- API の選択
  - OpenAI を使用して生成
    - python explain_program.py "*.py"
  - Google Generative AI を使用して生成
    - python explain_program.py "*.py" --api google
- プログラムのタイプ指定
  - main または lib のタイプを明示的に指定して実行
    - python explain_program.py "*.py" --program_type main
    - python explain_program.py "*.py" --program_type lib
- 出力ファイル名を個別に指定
  - 複数ファイルを処理する場合に出力名を個別指定
    - python explain_program.py "*.py" "docs_*.md"
  - 注意: 複数ファイルを対象に output を指定するとエラーになるため、 pattern ごとに1ファイルずつ実行する必要あり
- 依存・環境変数の設定
  - API キーを環境変数として設定する例（bash の例）
    - export OPENAI_API_KEY=your_openai_api_key
    - export GOOGLE_API_KEY=your_google_api_key
  - または translate.env（config_path）等のファイルを用意して load_dotenv が読み込むようにします。

補足
- 設定ファイル
  - translate.env もしくは script_name.ini 相当のファイルを読み込み、OPENAI_API_KEY および GOOGLE_API_KEY の設定を探します。
  - account_inf_path が accounts.env のデフォルトとして設定されており、こちらも dotenv で読み込み可能です。
- 言語サポート
  - language_dict による拡張子と言語名の対応が定義されています。未対応の拡張子はスキップされます（例: language が取得できない場合はエラーメッセージを表示してスキップ）。
- 依存エラー時の動作
  - dotenv が見つからない場合は実行時にインストールの案内を表示して終了