translate5_GUI.py の技術ドキュメント

プログラムの動作

translate5_GUI.py は、翻訳ツール translate5_com.py の強力な機能を、より直感的に操作できるグラフィカルユーザーインターフェース(GUI)を通じて提供するPythonアプリケーションです。主に、コマンドラインインターフェースに不慣れなユーザーが、複雑な設定を視覚的に行い、翻訳プロセスを簡単に実行できるようにすることを目的としています。

主な機能:

  • 入力ファイルの選択: .docx, .pptx, .pdf, .html, .md, .txt など、多様な形式の翻訳対象ファイルをGUIから簡単に選択できます。

  • HTMLテンプレートの指定: HTML形式での出力時に使用するテンプレートファイルを指定できます。

  • 翻訳モードの切り替え: 「日本語→英語 (je)」または「英語→日本語 (ej)」の翻訳方向をラジオボタンで選択できます。

  • 処理単位の設定: 翻訳の処理単位を「paragraph(段落)」「run(テキスト区間)」「md(マークダウン)」から選択できます。

  • APIとモデルの選択: OpenAI (v4/v5)、Google、Gemini、DeepLといった様々な翻訳APIと、それに対応するモデルをドロップダウンリストから選択できます。

  • 翻訳パラメータの調整: temperature、max_tokens、reasoning_effort などの詳細な翻訳生成パラメータを数値入力で調整できます。

  • 翻訳ルール設定: min_translate_length や allowed_translation_length_ratio といった翻訳の長さに関するルールを設定できます。

  • プロンプト編集: 翻訳指示プロンプト (translate_prompt) と再フォーマットプロンプト (reformat_prompt) をテキストエリアで直接編集し、カスタムの翻訳挙動を実現できます。

  • 設定の永続化: ユーザーが行ったすべての設定は translate5_GUI.ini ファイルに自動的に保存され、次回起動時に読み込まれるため、再設定の手間が省けます。

  • 非同期実行: 翻訳処理はバックグラウンドスレッドで実行されるため、GUIがフリーズすることなく、ユーザーはアプリケーションの応答性を維持したまま待機できます。

  • エラーハンドリング: 翻訳処理中にエラーが発生した場合、詳細なエラーメッセージをコピー可能なダイアログで表示し、問題の特定とデバッグを支援します。

このプログラムは、translate5_com.py が提供する柔軟な翻訳機能を、使いやすいインターフェースで利用したいユーザーにとって非常に有用です。

原理

translate5_GUI.py は、tkinter と呼ばれるPython標準のGUIライブラリを使用してユーザーインターフェースを構築し、外部モジュール translate5_com のコア翻訳ロジックと連携して動作します。

  1. GUI構築とイベント処理:

    • tkinter モジュールを用いて、ボタン、テキスト入力欄、ドロップダウンリスト、ラジオボタンなどのウィジェットを配置し、ユーザーインターフェースを構築します。

    • ThemedTk (または標準の tk.Tk) を利用して、見た目のテーマを適用し、より現代的な外観を提供します。

    • ユーザーがGUI上のボタンをクリックしたり、ドロップダウンリストから項目を選択したりすると、それに対応するPython関数が呼び出されるイベント駆動型プログラミングモデルを採用しています。

  2. 設定管理:

    • configparser モジュールを使用して、ユーザーがGUI上で設定した各種パラメータ(入力ファイルパス、API設定、翻訳モード、ウィンドウサイズと位置など)を translate5_GUI.ini という設定ファイルに保存・読み込みます。これにより、アプリケーションの再起動後も前回の設定が維持されます。

  3. 翻訳ロジックとの連携:

    • translate5_com モジュールから initializeupdate_variablesexecute の3つの主要関数をインポートします。

    • アプリケーションの起動時に initialize()update_variables() を呼び出し、translate5_com の内部設定オブジェクト (self.cfg) を初期化し、環境変数やデフォルト値で更新します。

    • ユーザーが「Run execute()」ボタンをクリックすると、GUI上の現在の設定値が self.cfg オブジェクトに反映されます。これには、選択されたAPI、モデル、各種パラメータ、翻訳プロンプトなどが含まれます。

    • その後、threading.Thread を使用して新しいスレッドを作成し、そのスレッド内で execute(self.cfg) を呼び出します。これにより、翻訳処理がバックグラウンドで実行され、GUIがフリーズすることなく応答性を維持できます。

  4. 非同期実行と状態管理:

    • 翻訳処理はネットワーク通信や計算に時間がかかるため、GUIのメインスレッドをブロックしないように、threading モジュールを使って別スレッド (_worker_run メソッド) で実行されます。

    • 翻訳の開始、完了、エラー発生といった状態変化は、GUIメインスレッドの master.after() メソッドを使ってステータスバーを更新したり、エラーダイアログを表示したりすることでユーザーに通知されます。

    • _busy フラグを使用して、同時に複数の翻訳処理が開始されないように制御しています。

  5. APIキーの取得:

    • OpenAI、Google、DeepLといった各種APIのキーは、GUI設定には直接保存されず、実行時に os.getenv() を通じて環境変数 (OPENAI_API_KEY, GOOGLE_API_KEY, DEEPL_API_KEY) から取得されます。これはセキュリティ上のベストプラクティスに基づいています。

必要な非標準ライブラリとインストール方法

translate5_GUI.py を実行するために、以下の非標準ライブラリ(およびPython標準だがOSレベルで別途インストールが必要なもの)が必要です。

  1. tkinter:

    • Pythonの標準ライブラリに含まれていますが、多くのLinuxディストリビューションやmacOSでは、Python本体とは別にTcl/Tkのライブラリや開発パッケージをインストールする必要があります。

    • Linux (Debian/Ubuntu系):

      sudo apt-get update
      sudo apt-get install python3-tk
      
    • macOS (Homebrewを使用):

      brew install tcl-tk
      

      (PythonをHomebrewでインストールしている場合、通常は自動的にリンクされます。)

    • Windows: Pythonの公式インストーラーで「tcl/tk」オプションを有効にしてインストールされていれば、追加のインストールは不要です。

  2. ttkthemes:

    • tkinter アプリケーションにテーマを適用し、見た目を改善するためのライブラリです。必須ではありませんが、推奨されます。

    • インストール方法:

      pip install ttkthemes
      
  3. translate5_com モジュール:

    • このプログラムがコアとなる翻訳ロジックをインポートしているモジュールです。これは標準のpipパッケージではなく、通常は translate5_GUI.py と同じディレクトリに配置されているか、Pythonのパスが通っている場所に存在する必要があります。

    • translate5_com.py (またはオリジナルの translate5.py)のソースコードを別途入手し、translate5_GUI.py と同じディレクトリに保存してください。

必要な入力ファイル

translate5_GUI.py は、GUIを通じて以下の種類のファイルを必要とします。

  1. 翻訳対象ファイル:

    • ファイルの種類: .docx (Microsoft Word), .pptx (Microsoft PowerPoint), .pdf (Portable Document Format), .html (HyperText Markup Language), .htm, .md (Markdown), .txt (Plain Text)。

    • 場所: GUIの「Input file」フィールドでパスを指定し、「Browse」ボタンでファイルダイアログから選択します。

    • 内容: 翻訳したい原文が含まれる文書ファイル。

  2. HTMLテンプレートファイル (オプション):

    • ファイル名: デフォルトでは template_translate.html と想定されていますが、GUIで任意のHTMLファイルを指定できます。

    • ファイルの種類: .html または .htm

    • 場所: GUIの「HTML template」フィールドでパスを指定し、「Browse」ボタンでファイルダイアログから選択します。

    • 内容: 翻訳結果をHTML形式で出力する際に、その構造やスタイルを定義するためのテンプレート。指定しない場合、translate5_com のデフォルトテンプレートが使用される可能性があります。

  3. translate5_com.py スクリプト:

    • ファイルの種類: Pythonスクリプト。

    • 場所: translate5_GUI.py と同じディレクトリ、またはPythonの sys.path に含まれるディレクトリに配置されている必要があります。

    • 内容: 実際の翻訳処理、ファイル読み書き、API通信などのコアロジックを実装しているスクリプト。

  4. translate5_GUI.ini (設定ファイル):

    • ファイル名: translate5_GUI.ini

    • ファイルの種類: INI形式のテキストファイル。

    • 場所: translate5_GUI.py スクリプトと同じディレクトリに自動的に生成されます。

    • 内容: 過去のユーザー設定(入力ファイルパス、翻訳モード、API設定、ウィンドウサイズ・位置など)が保存されており、プログラム起動時に読み込まれます。初回実行時には存在しないため、デフォルト設定で起動し、終了時に生成されます。

生成される出力ファイル

translate5_GUI.py の実行により、以下のファイルが生成される可能性があります。

  1. 翻訳結果ファイル:

    • 命名規則: 入力ファイル名に基づいて translate5_com の内部ロジックにより自動的に決定されます。一般的には、元のファイル名に _translated などの接尾辞が追加された形式になります。例えば、document.docx が入力された場合、document_translated.docxdocument_translated.html のような名前が付けられます。

    • ファイルの種類: 入力ファイルの形式や、translate5_com の出力設定(特にHTMLテンプレートの使用有無など)に依存します。多くの場合、元のファイル形式を維持するか、HTML形式で出力されます。

    • 場所: 入力ファイルと同じディレクトリ、または translate5_com の内部設定で指定された出力ディレクトリに保存されます。

    • 内容: 指定されたAPIとモデルによって翻訳されたテキストが、元のファイルの構造をできるだけ維持した形で含まれています。

  2. translate5_GUI.ini (設定ファイル):

    • ファイル名: translate5_GUI.ini

    • ファイルの種類: INI形式のテキストファイル。

    • 場所: translate5_GUI.py スクリプトと同じディレクトリに生成されます。

    • 内容: アプリケーション終了時に、GUI上でユーザーが設定した最新のパラメータ(入力ファイルパス、HTMLテンプレートパス、翻訳モード、処理単位、API、モデル、各種翻訳パラメータ、プロンプト、ウィンドウのサイズと位置など)が保存されます。これにより、次回アプリケーションを起動した際に前回の設定が自動的に読み込まれます。

コマンドラインでの使用例 (Usage)

translate5_GUI.py はグラフィカルユーザーインターフェースアプリケーションであり、通常はコマンドライン引数を受け取って動作を制御するようには設計されていません。起動するとGUIウィンドウが表示され、すべての操作はそのウィンドウ上で行われます。

基本的な実行コマンドは以下の通りです。

python translate5_GUI.py

コマンドラインでの具体的な使用例

translate5_GUI.py はGUIアプリケーションであり、コマンドライン引数を与えて直接その動作を制御する設計ではありません。そのため、具体的な引数を与えた実行例は存在しません。

上記「コマンドラインでの使用例 (Usage)」に示したコマンドを実行すると、GUIウィンドウが起動します。

実行結果の説明:

上記のコマンドを実行すると、以下のようなGUIウィンドウが表示されます。

  • ウィンドウタイトルは「translate5 GUI Runner」です。

  • 「Input / Template」セクションでは、翻訳したいファイルとHTMLテンプレートファイルを選択できます。

  • 「Mode / Options」セクションでは、翻訳方向(日本語→英語、英語→日本語)と処理単位(paragraph, run, md)を設定できます。

  • 「API」セクションでは、使用する翻訳API(openai5, openai, google, gemini, deepl)とモデルを選択し、必要に応じてエンドポイントを指定できます。

  • 「Generation Parameters」および「Translation Rules」セクションでは、翻訳の挙動を詳細に制御するパラメータ(temperature, max_tokens, reasoning_effort など)を設定できます。

  • 「Prompts」セクションでは、translate_promptreformat_prompt の内容を直接編集できます。

  • 「Run execute()」ボタンをクリックすると、設定されたパラメータで翻訳処理が開始されます。翻訳中はボタンが無効化され、ステータスバーに「Running execute() ...」と表示されます。

  • 翻訳が完了すると、ステータスバーに「Done.」と表示されます。

  • 翻訳処理中にエラーが発生した場合は、エラーメッセージを含むコピー可能なダイアログが表示されます。

  • ウィンドウを閉じると、現在のすべての設定が translate5_GUI.ini ファイルに自動的に保存されます。