# コンテキストと変数を使用

変数は、プログラムの実行中に変化する値を表します。

グローバル変数はシステム変数で、任意のモジュールまたはファンクションからアクセスでき、使用するファンクションまたはプログラムが実行を完了した後も値を保持しています。

情報メモ警告: 並列実行ではglobalMapがエラーになりやすいので、注意が必要です。globalMap.put("key","value")とglobalMap.get("key")を使用して自身のグローバル変数を作成し、ジョブ内にその値を取り込む場合(特に、並列実行オプションが有効化された状態で[Iterate] (反復処理)接続を行った後の場合)は、注意が必要です。

コンテキスト変数とは、特定のコンテキストでユーザーが定義する変数をいいます。ジョブやルートの使用環境に応じて、「コンテキスト」と呼ばれるさまざまな実行タイプ(次の例ではProdとTest)別に異なる管理をしなければならない場合があります。たとえば、ジョブまたはルートの本番稼動の前には、各種テスト段階で実行して検証します。

情報メモ注:

コンテキスト変数の使用に関する一般的なアドバイス:

* コンテキスト変数内の小さなデータを使用します。
* コンテキスト変数内にコードを入れないようにします。
* デフォルトのString型ではなく、適切な変数型を使用します。たとえば、パスワードにはセキュリティを高めるためにPassword型、ファイルパスまたはディレクトリーには、不要なエスケープを避けるためにFile型またはDirectory型です。
* 文字列値全般を二重引用符で囲むことは避けてください。ただし、以下の場合は二重引用符の使用が必須となります。
  * 文字列にエスケープ文字が含まれており、エスケープの解除が発生するように設定する場合。
  * 文字列の先頭または末尾に、変数値の一部である二重引用符がある場合。

コンテキストにはパラメーターに特徴があります。パラメーターはほとんどがコンテキスト依存変数で、[Component] (コンポーネント)ビューでCtrl + スペースを押すと、コンポーネント固有プロパティで再利用するため変数リストに追加されます。

Talend Studioでは複数のコンテキストデータセットを作成できます。さらに、ジョブやルートのコンテキストタブから1回限りのコンテキストデータセットを作成したり、[Repository] (リポジトリー)ツリービューの[Contexts] (コンテキスト)ノードにコンテキストデータセットを一元化してさまざまなジョブやルートで再利用したりすることもできます。

ジョブの場合、コンテキスト変数の値は、作成中に定義する方法と、ジョブの実行中にtContextLoadコンポーネントを使用して明示的に、または暗黙的なコンテキストロード機能を使用して暗黙的に、コンテキストパラメーターを動的にロードする方法とがあります。

情報メモ注: コンテキストパラメーターをダイナミックにロードする時に、パラメーター値が特定のファイルまたはデータベースからロードされ、Talend Studio(Talend Cloudコンテキストパラメーターの場合はTalend Management Console)で静的に定義されたパラメーター値は無効になります。

このセクションでは、コンテキストと変数を作成し、コンテキストパラメーターの値を定義する方法について説明します。

tContextLoadコンポーネントを使ってコンテキストパラメーターを動的にロードする例は、[コンテキスト](https://help.qlik.com/talend/r/ja-JP/7.3/context)をご覧ください。

暗黙的コンテキスト読み込み機能を使用してコンテキストパラメーターを動的に読み込む例については、をご覧ください。

### このセクション内

* [ジョブまたはルートのコンテキスト変数を定義](https://help.qlik.com/talend/ja-JP/studio-user-guide/7.3/defining-context-variables-for-job-or-route)
* [リポジトリー内でコンテキスト変数を一元管理する](https://help.qlik.com/talend/ja-JP/studio-user-guide/7.3/centralizing-context-variables-in-repository)
* [リポジトリーコンテキスト変数をジョブまたはルートに適用](https://help.qlik.com/talend/ja-JP/studio-user-guide/7.3/applying-repository-context-variables-to-job-or-route)
* [ジョブまたはルートで変数を使用](https://help.qlik.com/talend/ja-JP/studio-user-guide/7.3/using-variables-in-job-or-route)
* [選択したコンテキストでジョブまたはルートを実行する](https://help.qlik.com/talend/ja-JP/studio-user-guide/7.3/running-job-or-route-in-selected-context)