# 注目の機能: コマンド ライン インターフェイス (CLI) の統合 **私の大切な友人、ルブに捧げます** 新しい FastAPI ベースのコマンド ライン インターフェイス (CLI) は、ローカルまたはリモート シェルから実行中のコア テキスト処理サービスと対話するクリーンな同期方法を提供します。これは、コア ロジックをシェル環境に統合するように設計された堅牢なソリューションです。 --- ## 1. アーキテクチャと同期 CLI の概念 このサービスは **Uvicorn/FastAPI** サーバーを利用しており、カスタム エンドポイント (`/process_cli`) を使用して、本質的に非同期のファイルベースのバックグラウンド プロセスから同期 (ブロッキング) 結果を配信します。 ### 待機して読むポーリング戦略 1. **一意の出力オーバーライド:** API はリクエストごとに一意の一時ディレクトリを作成します。 2. **プロセスの開始:** `process_text_in_background` を呼び出して、非ブロッキング スレッドでコア ロジックを実行し、その結果をその固有のフォルダー内の `tts_output_*.txt` ファイルに書き込みます。 3. **同期待機:** API 関数は出力ファイルが作成されるかタイムアウトに達するまで、一意のフォルダーを**ブロック**し、ポーリングします。 4. **結果の配信:** API はファイルの内容を読み取り、必要なクリーンアップ (ファイルと一時ディレクトリの削除) を実行し、最終的に処理されたテキストを JSON 応答の `result_text` フィールドに返します。 これにより、CLI クライアントはテキスト処理の完了「後」にのみ応答を受信するようになり、信頼性の高いシェル エクスペリエンスが保証されます。 ## 2. リモート アクセスとネットワーク ポート マッピング Lub の端末のようなリモート クライアントからのアクセスを許可するには、利用可能な外部ポートが限られているという一般的な制約に対処する、次のネットワーク構成が必要でした。 ### 解決策: 外部ポートのマッピング このサービスは内部的に **ポート 8000** で実行されており、ネットワーク環境では外部アクセスが特定のポート範囲 (例: `88__-8831`) に制限されているため、ルーター (Fritz!Box) に **ポート マッピング** を実装しました。 |エンドポイント |プロトコル |ポート |説明 | | :--- | :--- | :--- | :--- | | **External/Public** | TCP | `88__` (Example) |クライアント (Lub) が使用する必要があるポート。 | | **Internal/Local** | TCP | `8000` | FastAPI サービスが実際にリッスンするポート (`--port 8000`)。 | ルーターは、外部ポート (「88__」) 上の受信接続をホスト マシンの内部ポート (「8000」) に変換し、コア サーバーの構成を変更せずにサービスにグローバルにアクセスできるようにします。 クライアントは、パブリック IP アドレス、外部ポート、および正しい API キーを使用して構成されている必要があります。 __CODE_BLOCK_0__