テンプレートの編集 - プロジェクトの途中でカスタムスクリプトを実行する (midscripts)
熟練者のみ:Windowsのスクリプト、プログラム、サービス、およびユーザーに精通していない場合は、この手順は行わないでください。こうした経験がない場合は、ITスペシャリストなどの熟練者に依頼する必要があります。
プロジェクト内の様々なタイミングで、文書の操作などを行う独自のプログラムを実行することができます。これは、インポート前やエクスポート後のスクリプティングとは異なり、自動操作で行われます。
これらのプログラムは、インポートとエクスポートの間に実行されることから、中間スクリプトとも呼ばれます。
テンプレートが必須です:これは、プロジェクトテンプレートから作成されたプロジェクトでのみ行うことができるものです。
これを使って文書を操作した場合、中間スクリプトは次のように機能します:
- プロジェクトで何かが変化します。例えば、翻訳者が文書を納品するとき、次のユーザー (レビュー担当者1など) がドキュメントを取得する前に、ドキュメントに変更を加える場合。例えば、用語を置換したり、特定の用語が含まれるセグメントのロックを解除するなどです。様々な状況が考えられます。
- memoQは、文書をMQXLIFF形式でエクスポートします。これは、標準的なバイリンガルXML文書です。
- プログラムは、この文書全体を処理します。このプログラムは、MQXLIFFファイルを入力として取得し、やはりMQXLIFFファイルを生成する必要があります。この形式を変えることはできません。memoQはこの点に敏感です。
- memoQは、プロジェクトの文書を、変更されたMQXLIFFファイルから更新します。
一方、文書内に変更を加えるのではなく、プロジェクトの何かをチェックまたは変更したい場合があるかもしれません。例えば、翻訳メモリを他のものに切り替えたり、期限を変更することなどです。これも可能です:
- プロジェクトで何かが変化します。
- memoQは文書をエクスポートしません。ただし:
- memoQは、WebサービスAPIを通じてmemoQ TMSに接続するプログラムを実行し、プロジェクトまたは関連するリソースに変更を加えます
オンラインプロジェクトで役立ちます:中間スクリプトはローカルプロジェクトに設定することもできますが、memoQ TMSのオンラインプロジェクトで設定したときに最も役立ちます。このトピックでは、オンラインプロジェクトでどのようにして中間スクリプトを設定できるかを説明します。
まずサーバーを設定します:オンラインプロジェクトでこれが必要な場合は、まずサーバーを設定します。これは、このトピックの後半の「できること」セクションで説明されています。
プログラムを作成または入手する必要があります:memoQには、文書またはプロジェクトに必要な変更を加えるためのプログラムは用意されていません。このため、プログラムは自分で作成するか、プログラマーから入手する必要があります。あるいは、memoQビジネスサービスに依頼すれば、有償でお手伝いします。
テキストドキュメントを準備または修正するには、ビルトイン検索と置換ツールを使用します:詳細については、検索と置換スクリプトに関するトピックを参照してください。
操作手順
- リソースコンソール を開きます。
- 左側でプロジェクトテンプレート をクリックします。
-
編集したいテンプレートを選択します。
オンラインプロジェクト用のテンプレートやリソースを設定するには:オンラインテンプレートを使用します。リソースコンソールの最上部でmemoQ TMSを選択します。選択 ボタンをクリックします。
- リストの下で編集をクリックします。
- 左側で自動操作をクリックします。
- プロジェクトの自動化タブでプロジェクトのイベント(トリガ)を選択します。
- 右側の+記号をクリックします。
- このトリガに追加する動作を選択ウィンドウでカスタムコードを実行を選択します。
- 追加ボタンをクリックします。
-
カスタムコードの詳細を指定ウィンドウが表示されます。
既存の自動操作を変更するには:プロジェクトの自動化タブにカスタムコードを実行動作がすでに存在する場合は、選択済みトリガに動作を追加でこれを選択します。その隣にある設定アイコンをクリックします。カスタムコードの詳細を指定ウィンドウが表示されます。
その他のオプション
プロジェクトで実行するスクリプトはプログラムです。サーバーでは、全員がプログラムの実行を許可されているわけではありません。通常、memoQ TMSはセキュリティ上の理由からプログラムの実行が許可されていません。
オンラインプロジェクトでスクリプトを実行する前に、memoQ TMSがスクリプトを実行することを許可する必要があります。
管理者かつ熟練者である必要があります:memoQ TMSコンピュータの管理者でない場合や、実行内容を熟知していない場合は、以下の手順を行わないでください。
これはmemoQで行うことではありません。手順を完了するまで、memoQウィンドウは脇に置いておいてください。
- Remote Desktopを使って、管理者としてmemoQ TMSコンピュータにサインインします。(つまり、memoQ TMSプログラムだけでなく、マシン全体の管理者でなければなりません。)
- Control Panelを開きます。Programs and Featuresを選択します。memoQ TMSを選択します。変更をクリックします。memoQ TMSデプロイメントツールが開きます。
- DeploymentプログラムのmemoQ TMSセクションで、詳細をクリックし、続いてConfigure custom code executionを選択します。Configure custom code executionウィンドウが表示されます。
- 原則として、ここでは仮想サービスアカウントを選択します。次へをクリックします。Administratorなどのビルトインアカウントは使用しないでください。このアカウントラジオボタンで特定のアカウントを使うことができます。しかし、その他のことに一切に使用しないよう、この設定は非常に気を付ける必要があります。特定のアカウントを使用するのは、場合、またはスクリプトがネットワーク上の別のコンピュータにアクセスする必要がある場合にのみ、特定のアカウントを使用します。
- デプロイメントツールが、設定が有効かどうかをチェックします。サーバーコンピュータの管理者である必要があります。また、選択したアカウントはサービスとしてログオンできる必要があります。ウィンドウに2つの緑のチェックマークが表示されている場合は、次へをクリックします。エラーがある場合は、戻るをクリックして設定を変更します。
- デプロイメントツールが、スクリプトとプログラムを実行するためにmemoQ TMSを設定します。これには少し時間がかかる場合があります。Settings have been saved successfullyメッセージが表示されたら、完了をクリックします。
- memoQ TMSの再起動を促すメッセージが表示されます。OKをクリックします。
- デプロイメントツールでStop memoQ TMSをクリックします。Start memoQ TMSリンクが表示されたら、Start memoQ TMSをクリックします。
- デプロイメントツールが、memoQ TMSが再び実行中であることをレポートしたら、これを閉じます。
プログラムには、プロジェクトテンプレートに格納できないファイルが必要かもしれません。こうしたファイルはプロジェクトテンプレートに格納することもできますが、その場合、プロジェクトの進行中に変更したり修正することができません。それをするには、プロジェクトを丸ごと作り直す必要があります。
このため、一部(実際は大半)のプログラムファイルは、プロジェクトテンプレートの外に置く必要があります。
カスタムコード実行を設定すると、サービスユーザーはLog on locallyシステム権限とサーバー上のC:\ProgramData\memoQ Server\Scriptingフォルダの権限を取得します。このフォルダ下に、カスタムまたはScriptsという名前の別のフォルダを作成し、プログラムファイルを配置します。
このようにしておけば、バグ修正などのためにプログラムファイルを置換する必要が生じた場合、このフォルダで行うことができます。既存のプロジェクトは、すぐにその更新されたプログラムファイルを使います。
始める前に、少なくとも次の2つのファイルが必要です:
- プロジェクトで実際の処理を行うメインプログラムファイル。他のファイルが必要な場合もあります。そのファイルをメインプログラムファイルでコピーする必要があります。
- メインプログラムファイルを開始するただ一つのコマンドが書き込まれたバッチファイル。これはプロジェクトテンプレートの中に置くファイルです。
- メインプログラムファイルをサーバーのサービスユーザーの文書フォルダにコピーします。(例:c:\Users\_svc_mqsinternal\Documents\Scripting) memoQ TMSは、サービスユーザーの名の元でメインプログラムファイルを実行します。
- バッチファイルがサーバーの正しいフォルダを指していることをチェックします。例えば、バッチファイルには次のコマンドを含めることができます:
c:\Users\_svc_mqsinternal\Documents\Scripting\C_Converter.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
バッチファイルはC_Converter.exeというプログラムを開始し、最大で9個の引数をこれに渡します。このプログラムは、サーバーのC:\Users\_svc_mqsinternal\Documents\Scriptingフォルダにあるはずです。これはコンピュータ上のフォルダではありません。
実は、このコマンドは自分のバッチファイル内にコピーすることが可能で、他のプログラムを呼び出している場合は、.exeファイルの名前を置換するだけです。このとき、当然フォルダをチェックします。
- memoQに戻り、同じサーバーに接続し、それからプロジェクトテンプレートを編集します。プロジェクトテンプレートは同じサーバーに存在する必要があります。
オンラインプロジェクト、オンラインテンプレート:オンラインプロジェクトを作成するときに、決してローカルプロジェクトを使わないでください。テンプレートが同じサーバーに存在することを確認してください。
- 自動操作を選択します。プロジェクトの自動化タブで、プログラムの実行を開始させるイベントを選択します。選択済みトリガに動作を追加リストの隣にある+記号をクリックします。このトリガに追加する動作を選択ウィンドウでカスタムコードを実行を選択します。追加をクリックします。カスタムコードの詳細を指定ウィンドウが表示されます。
カスタムコードを実行動作がすでに存在する場合:選択済みトリガに動作を追加でそれを選択します。その隣にある設定アイコンをクリックします。カスタムコードの詳細を指定ウィンドウが表示されます。
- コードを実行するために必要なファイルを選択で、ファイルを追加をクリックします。メインプログラムを開始するバッチファイルを見つけて開きます。ここにはメインプログラムを追加しないでください。
スクリプトファイルまたはバッチファイルを置換するには:コードを実行するために必要なファイルを選択リストからファイルを選択します。削除をクリックします。続いてファイルを追加をクリックして新しいファイルを追加します。
- コードを実行するために必要なファイルを選択リストからバッチファイルを選択します。コマンドとして設定をクリックします。
- 次にコマンドを設定します。コマンド名は、バッチファイルの名前と同じです。コマンドライン引数にメインプログラムが必要とする引数を入力します。プロジェクト文書を変更している場合は、{入力ファイルパス}と{出力ファイルパス}を追加する必要があります。この場合、プログラムは、MQXLIFF文書を入力ファイルとして取得し、やはりMQXLIFF文書を出力ファイルとして生成する必要があります。
文書関連のプレースホルダは、このプログラムを開始するイベントが文書に関連する場合に限って意味を持ちます。
プログラムには、他のコマンドライン引数も必要な場合があります。
他のプレースホルダを使えば、プログラムがプロジェクトの識別子や、ソースとターゲット言語を処理することもできます。多くの場合、プログラムはこれらを使って、異なる目的の異なるファイルを分けておくためにフォルダを見つけたり作成したりします。
プレースホルダを挿入するには:プレースホルダの挿入をクリックし、メニューからプレースホルダを選択します。
- 入力ファイルパス:プロジェクト文書の完全なパスと名前。このパスの正体を理解する必要はありません。memoQが自動的に生成するものです。
- 出力ファイルパス:プロジェクトで更新される変換されたプロジェクト文書の完全なパスと名前。このパスの正体を理解する必要はありません。memoQが自動的に生成するものです。
- 割り当て先:作業するために文書を取得するユーザー(翻訳者、レビュー担当者1またはレビュー担当者2)の名前。
- 期限:文書の現在のワークフロー手順(翻訳、レビュー1、レビュー2)の期限。
- 最終期限:文書の最終的なワークフロー手順の期限。これは納品期限です。
- ワークフローステータス:ドキュメントのワークフローステップ (翻訳、レビュー1、レビュー2) およびステータス (開始前、進行中、完了)。
- SrcLangIso2:プロジェクトのソース言語の2文字のコード。
- SrcLangIso3:プロジェクトのソース言語の3文字のコード。
- TrgLangListIso2:プロジェクトのターゲット言語の2文字コードのリスト。
- TrgLangListIso3:プロジェクトのターゲット言語の3文字コードのリスト。
- プロジェクトGUID:プロジェクトのグローバルに一意の識別子。これは長い数字で、同じものが二度使われることはありません。
- 文書GUID:現在の文書のグローバルに一意の識別子。
- プログラムが実行するまでどのくらい待機したいかを選択します。これは進行中のプロジェクトの一部なので、永遠に時間がかかってはいけません。memoQ TMSがプログラムを終了するまでに待機しなければならない秒数を設定します(プログラムが自発的に終了しない場合)。
- プログラムで文書を処理および変更する必要がある場合は、スクリプト処理のためMQXLIFFで文書をエクスポートチェックボックスをオンにします。これにより、プログラムを実行する前にドキュメントが保存されます。
- エクスポートされた文書を変更し、その文書からプロジェクトを更新する必要がある場合:スクリプト出力よりプロジェクト内の文書を更新チェックボックスをオンにします。プログラムが実行された後、memoQは、プロジェクトを変更されたMQXLIFFファイルから更新します。
プログラムが加える変更は軽微なものだけでなければなりません:プログラムは、MQXLIFF文書の形式を厳格に保持しなければなりません。また、memoQが文書の更新に失敗する恐れがあるため、内容を過剰に追加したり削除することは控えてください。
- 最後に、スクリプトをテストできます。コマンドのテストを実行をクリックします。カスタムコードの実行 - テスト実行ウィンドウが表示されます。
- プログラムが文書を処理する場合:MQXLIFFの文書をエクスポートします。続いて、テキストボックスに文書のパスと名前を入力または貼り付けるか、または参照をクリックしてコンピュータ上で文書を特定します。OKをクリックします。
memoQはスクリプトとサンプル文書をサーバーにアップロードしますが、外部プログラムはアップロードしません。memoQは、スクリプトをサーバー上で実行しようとします。
- テストが終わったら、終了コードとともにテスト結果メッセージが表示されます。プログラムの実行が成功した場合、終了コードは0です。エラーが発生した場合のコードは通常-1ですが、異なる数字の場合もあります。
- 完了したら、OKをクリックします。
memoQは、イベント発生時に中間スクリプトを自動的に実行します。
例えば、翻訳者の納品が遅れたためにレビューの期限を変更する必要が生じた場合、プログラムが実行されるのは翻訳者が文書を納品したときです。
スクリプトを使うには、プロジェクトテンプレートからプロジェクトを作成し、スクリプトが実行するよう設定されたタイミングまでワークフローを進めます。続いて、期待する変化が実際に起こるかどうかをチェックします。
スクリプト(プログラム全体)は、プロジェクトテンプレートに含めることができます。memoQはこれをフォルダに抽出して実行します。スクリプトに問題があることが見つかるまでは、このように機能します。
このため、問題はプロジェクトテンプレートで修正することができます。しかし、スクリプトを置換するなど、テンプレートの内容を変更した場合にその影響を受けるのは、新しいプロジェクトのみです。既存のプロジェクトに問題がある場合、テンプレートでスクリプトを置換してもそれは変わりません。プログラム全体がテンプレート内に存在する場合は、スクリプトを変更する必要がある場合はプロジェクトを作り直す必要があります。
ベストプラクティスは、メインプログラムのロジックをプロジェクトテンプレートに置かないことです。代わりに、プロジェクトの場所となるコンピュータ、つまりローカルプロジェクトの場合は自分のコンピュータ、オンラインプロジェクトの場合はmemoQ TMS、のフォルダにプログラムをコピーします。
それから、単純なバッチファイルをプロジェクトテンプレートに追加します。バッチファイルのタスクは1つだけです。それは、メインプログラムを実行し、実際のmemoQプロジェクトから引数(ファイル名など)を伝えることです。例として、このトピックの前半で紹介した「オンラインプロジェクトのスクリプトを設定する」を見てみましょう。
プロジェクトの進行中にスクリプトに問題が発生した場合は、次のことを行います:
- メインプログラムを修正するか、ともに作業する開発者に修正してもらいます。
- 独立したフォルダにプログラムを置換します。
- プロジェクトのスクリプトが実行する段階に戻ります。
- 中間スクリプトを開始するイベントに到達します。このとき、memoQが実行するバッチファイルは以前と同じですが、バッチファイルが呼び出すメインプログラムは修正されたため、実行内容は前回と異なるはずです。
プロジェクトテンプレートを変更する必要はありません。さらに重要な点は、プロジェクトを作り直す必要がないことです。スクリプトが実行するワークフローの段階に戻るだけです。
完了したら
プロジェクトテンプレートを保存し、リソースコンソールに戻るには:OKをクリックします。
次のステップ:テンプレートの作業が終わったら、リソースコンソールを閉じて、テンプレートからプロジェクトを作成します。
プロジェクトテンプレートの作業を続けるには:他のカテゴリを選択し、他の設定を調整します。
リソースコンソールに戻り、プロジェクトテンプレートを保存しない場合は:キャンセル(_C)をクリックします。