# Pythonカスタムスクリプトの例

Pythonスクリプトは、Pythonオペレーター`py>`を使用してTreasure ワークフローまたはDigdagから実行できます。Treasure コンソールまたはコマンドラインからTD用のワークフローを作成できます。

ワークフローでPythonスクリプトを実行するには、Dockerイメージを指定する必要があります。ワークフロータスクが開始されると、指定されたDockerイメージに基づいて新しいDockerコンテナが作成されます。Dockerにより、Pythonスクリプトはコンテナ内の分離された環境で実行できます。

このチュートリアルの実行には約30分かかり、PythonやDockerイメージの経験は必要ありません。

## 前提条件

* この機能がTreasure アカウントで有効になっていることを確認してください。
* TD ToolbeltとTD Toolbelt Workflowモジュールをダウンロードしてインストールします。詳細については、[Treasure ワークフローの使用](/ja/products/customer-data-platform/data-workbench/workflows/using-treasure-workflow-from-the-command-line-interface)を参照してください。
* Pythonコードは[サポートされているPythonバージョン](/products/customer-data-platform/data-workbench/workflows/customscript/custom-scripts-docker-images)と互換性がある必要があります。
* Treasure ワークフロー構文の基本的な知識


## サードパーティPythonライブラリ

Treasure ワークフロー内のPythonスクリプトは、Treasure Dataによって分離されたDockerコンテナで管理および実行されます。Treasure Dataは、コンテナで実行するための多数のベースDockerイメージを提供しています。


```python
import os
import sys

os.system(f"{sys.executable} -m pip install tensorflow")

import tensorflow
```

サードパーティPythonライブラリは、pip installコマンドを使用してPythonスクリプトからインストールできます。

## 追加ライブラリのインストール

1. Pythonスクリプト内からライブラリを追加するには、以下を使用します：



```bash
pip install ${package_name}
```

## Pythonの例

以下のような基本的な[例](https://github.com/treasure-data/treasure-boxes/tree/master/integration-box/python)を参照してください：

* 関数の呼び出し方法
* 関数へのパラメータの渡し方
* 環境変数の使用方法
* 関数のインポート方法


## Treasure Dataからのデータの読み書き

この例では、Treasure Data内のデータをDataframeに読み込み、データを操作し、テーブルとしてTreasure Dataに書き戻す方法を示しています。

1. [リポジトリ](https://github.com/treasure-data/treasure-boxes)全体をコピーまたはクローンできます。
2. `treasure-boxes/integration-box/python/simple.dig`に移動します。
3. コマンドラインから`ls`と入力して、正しいディレクトリにいることを確認します。以下が表示されるはずです：
`README.md other_scripts scripts simple.dig`
4. 以下を入力して、サンプルをTD環境にプッシュします：



```bash
td wf push simple-example
```

これにより、simple.digワークフローが実行され、simple-exampleがTDにアップロードされます。

### サンプルがTDに追加されたことを確認するには：

1. Treasure コンソールを開きます。
2. Workflowsに移動します。
3. simpleを検索します。
4. simpleワークフローをダブルクリックしてエディターを開きます。例：


![](/assets/image-20200820-235344.091faec0e06c7e47885e43024ed49778cb2ccafa1464457fb657079bc3959128.2e4f387b.png)

### ワークフローを実行するには

1. New Runを選択します。


![](/assets/image-20200820-235401.aa2d370859b47b08aacc9ff5784e9728c79e5b3831fdd8efdbbc27940fa6a760.2e4f387b.png)

### またはコマンドラインからサンプルを実行するには

1. 以下を入力します：
`td wf start simple-example simple --session now`


![](/assets/image-20200820-235614.873918124685fbfa81341a014d04523f84bcbdcde0eafb4a994ef42b8ab1ce66.2e4f387b.png)

### ワークフロージョブの実行を検証するには

1. Treasure コンソールから、ワークフローエディターに移動します。
2. Run Historyを選択します。


![](/assets/image-20200820-235519.b23245d31276dfe1fdac3ffa272a75e83b0291a3ae946a07ed80c6ed02a8e73d.2e4f387b.png)

1. ジョブのインスタンスが複数ある場合は、1つを選択してジョブ履歴を開きます。ここから、ジョブが実行された時間、監査ログ、およびジョブに関するその他の有用な診断情報を表示できます。


![](/assets/image-20200820-235638.0079a62ba3bd15303cd64632e888881c86d89c54dbac095551a36010ab5f5062.2e4f387b.png)