Shotgun APIを初めて使う方へ - 導入編 -

<b>Shotgun API</b>を初めて使用する方に向けた記事をこれから書いていきたいと思っています

今回は、導入編ということでAPIを使うための導入手順について解説します

# 開発環境

* OS: Windows 10 Pro
* Python 3.6.8
* git 2.23.0
* テキストエディタ
 * Visual Studio Code

# Pythonをインストール

Python2 は2020年1月1日でサポート終了とのことですので
Python3をインストールして頂ければと思います

下記のページが参考になります
[Python3のインストール](https://www.python.jp/install/windows/install_py3.html)

# gitをインストール

Shotgun APIをインストールする際に必要なためインストールします

下記のページが参考になります
[gitのインストールと起動方法](https://qiita.com/ideagear/items/eaf5a33bc15cf61c6a55)

# Shotgun APIのインストール

Shotgun APIの公式ドキュメントの [installation](https://developer.shotgunsoftware.com/python-api/installation.html#installation) を見るといくつか方法が書かれています

pythonのpipコマンドを使用することでPYTHONPATHが通った場所にインストールすることが出来るため、
こちらを使用してインストールを行います

下記のコマンドを実行します

```
pip install git+git://github.com/shotgunsoftware/python-api.git
```

インストールが完了すると下記のようなメッセージが表示されます

```
Successfully installed shotgun-api3-3.2.2
```

下記のコマンドでインストールされているパッケージのリストを確認します

```
pip list
```

shotgun_api3があれば問題無くインストールされています

```
Package          Version
---------------- ----------
certifi          2019.9.11
pip              19.3.1
pipenv           2018.11.26
setuptools       40.6.2
shotgun-api3     3.2.2
virtualenv       16.7.8
virtualenv-clone 0.5.3
```

# Shotgunとの接続に必要な情報を取得する

Shotgun APIでShotgunと接続する際に下記の３つの情報が必要です

* <b>契約しているShotgunのページのURL</b>
* <b>スクリプトの名前</b>
* <b>アプリケーションキー</b>
    * ShotgunのサポートページなどでAPIキーやスクリプトキーとも表記されていますが全て同じものを指しています

上記の中で <b>契約しているShotgunのページのURL</b> に関しては既に分かっているかと思いますが
<b>スクリプトの名前</b>と<b>アプリケーションキー</b>に関しては、ShotgunのWeb上で<b>スクリプトユーザー</b>を作成することで取得することが出来ます

## スクリプトユーザーの作成

<b>スクリプトユーザー</b>の作成手順に関しては、動画を作成しましたので、Shotgunにログイン後、動画に沿って進めて頂ければと思います

<blockquote class="twitter-tweet" data-theme="dark"><p lang="ja" dir="ltr">ShotgunAPIで使えるスクリプトユーザーを作り疎通させる方法<a href="https://twitter.com/hashtag/autodesk?src=hash&amp;ref_src=twsrc%5Etfw">#autodesk</a> <a href="https://twitter.com/hashtag/shotgun?src=hash&amp;ref_src=twsrc%5Etfw">#shotgun</a> <a href="https://t.co/JwJEOK4pvQ">pic.twitter.com/JwJEOK4pvQ</a></p>&mdash; Tetsuya Nozawa (@lphing) <a href="https://twitter.com/lphing/status/1222470024868220928?ref_src=twsrc%5Etfw">January 29, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

### 解説

動画の途中で出てきた下記の画像の画面でスクリプト（スクリプトユーザー）の作成を行っていまして
この画面の中のスクリプト名に入力した内容が <b>スクリプトの名前</b> で
アプリケーションキーの入力欄に入っている内容が <b>アプリケーションキー</b> となります

<b>スクリプトの名前</b>に関しては、ユーザー側で好きなものに変更することが出来ますが
<b>アプリケーションキー</b>に関しては、「スクリプトを作成」ボタンを押した後では、確認することが出来なくなってしまうので「クリップボードにコピー」ボタンを押した後にどこかにペーストしてメモっておく必要があります

一応、この辺りの説明に関しては、Shtogunのサポートページの [API スクリプトの作成と管理](https://support.shotgunsoftware.com/hc/ja/articles/219031368-API-%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E7%AE%A1%E7%90%86) にも載っています


<img width="1607" alt="2020-01-31_15h49_11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110677/a5b5c147-be42-c8ec-ba07-79c1971d2eda.png">

## アプリケーションキーが分らなくなってしまったら

もしも、スクリプトユーザーの作成後にアプリケーションキーが分らなくなってしまった場合は、
スクリプトユーザーのテーブル内で <b>キーを変更</b> を押すことで専用の画面からアプリケーションキーを再度生成することが出来ます
![2019-12-18_18h36_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110677/eb758a19-a48c-493c-6c28-4a9af4339bed.png)
![2019-12-18_18h39_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110677/19e7b8e4-6b58-b744-06f8-534ab89189de.png)

# Shotgunと接続が出来るか確認

Shotgun APIを使用して、Shotgunと接続出来るか確認してみます

## Shotgunとの接続用スクリプトを作成する

任意の場所に<b>shotgun_api_startup</b>という名前でフォルダを作り、
下記のコードをコピーしてテキストエディタにペーストしたら、<b>shotgun.py</b>という名前で
<b>shotgun_api_startup</b>フォルダの中に保存して下さい


```python:shotgun.py
# -*- coding: utf-8 -*-

import sys
from shotgun_api3 import Shotgun

# Shotgunに接続するために必要な情報を記述します
SHOTGUN_URL = "ShotgunのURLを記述"
SCRIPT_NAME = "shotgun_api_startup"
API_KEY = "スクリプトユーザーのアプリケーションキーを記述"


def create_shotgun_api():
  # Shotgunクラスに接続に必要な情報を渡して、
  # Shotgunとやりとりを行うためのオブジェクトを作成します
  return Shotgun(base_url=SHOTGUN_URL,
                 script_name=SCRIPT_NAME,
                 api_key=API_KEY)


def main():
  shotgun_api = create_shotgun_api()
  # 接続に問題が無いかテストするためにセッショントークンを取得します
  shotgun_api.get_session_token()
  print("Completed!!")
  return 0


if __name__ == "__main__":
  sys.exit(main())

```

### 解説

変数の<b>SHOTGUN_URL</b>と<b>API_KEY</b>に関しては、自分の環境に合わせて適切なものを記述する必要があります

* <b>"ShotgunのURLを記述"</b>と書かれている箇所に<b>契約しているShotgunのURL</b>を記述して下さい
* <b>"スクリプトユーザーのアプリケーションキーを記述"</b>と書かれている箇所に先ほどスクリプトユーザーを作成した際に
メモしておいた<b>アプリケーションキー</b>の内容を記述して下さい

```python

# Shotgunに接続するために必要な情報を記述します
SHOTGUN_URL = "ShotgunのURLを記述"
SCRIPT_NAME = "shotgun_api_startup"
API_KEY = "スクリプトユーザーのアプリケーションキーを記述"
```

<b>create_shotgun_api()</b>の中でShotgunクラスに必要な情報を渡して、Shotgunとやりとりを行うためのオブジェクトを作成しています
Shotgunクラスに関しては、公式ドキュメントの下記のページに詳しく載っています
https://developer.shotgunsoftware.com/python-api/reference.html?highlight=user%20agent#shotgun


```python

def create_shotgun_api():
  # Shotgunクラスに接続に必要な情報を渡して、
  # Shotgunとやりとりを行うためのオブジェクトを作成します
  return Shotgun(base_url=SHOTGUN_URL,
                 script_name=SCRIPT_NAME,
                 api_key=API_KEY)
```

shotgun.pyをimportでは無く直接実行された場合にmain関数が呼ばれます
shotgun_api.get_session_token()は、Shotgunに正常に接続出来た場合にのみセッショントークンが取得出来るため、接続テストのために使用しています
接続に問題がある場合は、<b>shotgun_api3.shotgun.AuthenticationFault</b> エラーが出ます

```python

def main():
  shotgun_api = create_shotgun_api()
  # 接続に問題が無いかテストするためにセッショントークンを取得します
  shotgun_api.get_session_token()
  print("Completed!!")
  return 0


if __name__ == "__main__":
  sys.exit(main())
```

## 動作確認

コマンドプロンプトを開いて、下記のコマンドを入力して実行します
※<b>D:\shotgun_api_startup</b>の部分は、shotgun_api_startupフォルダを作成した場所に応じて変更して下さい

```
cd /d D:\shotgun_api_startup
python shotgun.py
```

接続に成功した場合は、下記メッセージが表示されます

```
Completed!!
```

# ここまでの流れ

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">ShotgunのScriptユーザーの作成と疎通テスト <a href="https://t.co/I4pEKP2gL2">pic.twitter.com/I4pEKP2gL2</a></p>&mdash; Tetsuya Nozawa (@lphing) <a href="https://twitter.com/lphing/status/1223078539181735941?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

## 

# あとがき

ここまで出来ていれば、APIを使用するための準備が完了したことになります
次回は、APIを使用して実際にShotgunにデータを登録していきたいと思います