pykintone on Windows Subsystem for Linux

kintone 用 Python ライブラリの　pykintone を Windows Subsystem for Linux で試してみた。
pip3 で pykintone をインストールすると使用できる。

pykintone 使用環境の準備

- pip3 のインストール
- pykintone のインストール

# Windows Subsystem for Linux　の Python 環境

下記が標準でインストールされている。

python : python2.7
python3 : python3.4


```
rex0220@EDGE-E470:~$ ll /usr/bin/python*
lrwxrwxrwx 1 root root       9 12月 21  2013 /usr/bin/python -> python2.7*
lrwxrwxrwx 1 root root       9 12月 21  2013 /usr/bin/python2 -> python2.7*
-rwxr-xr-x 1 root root     975  1月  2  2014 /usr/bin/python2-jsondiff*
-rwxr-xr-x 1 root root    1080  1月  2  2014 /usr/bin/python2-jsonpatch*
-rwxr-xr-x 1 root root 3345416  6月 23  2015 /usr/bin/python2.7*
lrwxrwxrwx 1 root root       9  3月 23  2014 /usr/bin/python3 -> python3.4*
lrwxrwxrwx 1 root root      16  3月 23  2014 /usr/bin/python3-config -> python3.4-config*
-rwxr-xr-x 2 root root 3693624 11月 17 11:31 /usr/bin/python3.4*
lrwxrwxrwx 1 root root      33 11月 17 11:31 /usr/bin/python3.4-config -> x86_64-linux-gnu-python3.4-config*
-rwxr-xr-x 2 root root 3693624 11月 17 11:31 /usr/bin/python3.4m*
lrwxrwxrwx 1 root root      34 11月 17 11:31 /usr/bin/python3.4m-config -> x86_64-linux-gnu-python3.4m-config*
lrwxrwxrwx 1 root root      10  3月 23  2014 /usr/bin/python3m -> python3.4m*
lrwxrwxrwx 1 root root      17  3月 23  2014 /usr/bin/python3m-config -> python3.4m-config*
```

# pip3 のインストール

pip3 (Pythonのパッケージ管理システム) は、インストールされていないので、インストール。

```
sudo apt-get install python3-pip
パッケージリストを読み込んでいます... 完了0%
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
...
python3-pip (1.5.4-1ubuntu4) を設定しています ...
python3-wheel (0.24.0-1~ubuntu1) を設定しています ...
libc-bin (2.19-0ubuntu6.9) のトリガを処理しています ...
```

```
which pip3
/usr/bin/pip3
```

# pykintone のインストール


```
sudo pip3 install pykintone

Downloading/unpacking pykintone
  Downloading pykintone-0.3.9.zip
  Running setup.py (path:/tmp/pip_build_root/pykintone/setup.py) egg_info for package pykintone

Downloading/unpacking PyYAML (from pykintone)
  Downloading PyYAML-3.12.tar.gz (253kB): 253kB downloaded
  Running setup.py (path:/tmp/pip_build_root/PyYAML/setup.py) egg_info for package PyYAML

Requirement already satisfied (use --upgrade to upgrade): requests in /usr/lib/python3/dist-packages (from pykintone)
Downloading/unpacking pytz (from pykintone)
  Downloading pytz-2016.10-py2.py3-none-any.whl (483kB): 483kB downloaded
Downloading/unpacking tzlocal (from pykintone)
  Downloading tzlocal-1.3.tar.gz
  Running setup.py (path:/tmp/pip_build_root/tzlocal/setup.py) egg_info for package tzlocal

Installing collected packages: pykintone, PyYAML, pytz, tzlocal
  Running setup.py install for pykintone

  Running setup.py install for PyYAML
    checking if libyaml is compilable
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.4m -c build/temp.linux-x86_64-3.4/check_libyaml.c -o build/temp.linux-x86_64-3.4/check_libyaml.o
    build/temp.linux-x86_64-3.4/check_libyaml.c:2:18: fatal error: yaml.h: そのようなファイルやディレクトリはありません
     #include <yaml.h>
                      ^
    compilation terminated.

    libyaml is not found or a compiler error: forcing --without-libyaml
    (if libyaml is installed correctly, you may need to
     specify the option --include-dirs or uncomment and
     modify the parameter include_dirs in setup.cfg)

  Running setup.py install for tzlocal

Successfully installed pykintone PyYAML pytz tzlocal
Cleaning up...
```

# レコード取得スクリプト作成

サンプルに従い、レコード取得スクリプト作成。

```getRec1.py

import pykintone
r = pykintone.app("kintoneドメイン", "APPID", "APIトークン").select("")
if r.ok:
        records = r.records
        print(records)
else:
        print(r.error)
```


# レコード取得スクリプト実行

レコードが取得され、標準出力に表示された。

```
python3 getRec1.py
[{'作成者': {'value': {'name': 'Alex2013', 'code': 'Alex2013'}, 'type': 'CREATOR'}, '文字列A': {'value': 'B02A', 'type': 'SINGLE_LINE_TEXT'}, '作成日時': {'value': '2017-01-26T15:47:00Z', 'type': 'CREATED_TIME'}, '文字列B': {'value': 'B02B', 'type': 'SINGLE_LINE_TEXT'}, '文字列2_3': {'value': 'B02C', 'type': 'SINGLE_LINE_TEXT'}, '更新者': {'value': {'name': 'Alex2013', 'code': 'Alex2013'}, 'type': 'MODIFIER'}, '文字列2_2': {'value': 'B02B', 'type': 'SINGLE_LINE_TEXT'}, 'レコード番号': {'value': '2', 'type': 'RECORD_NUMBER'}, '文字列1_1': {'value': 'A02A', 'type': 'SINGLE_LINE_TEXT'}, '更新日時': {'value': '2017-01-26T23:49:00Z', 'type': 'UPDATED_TIME'}, 'ルックアップA': {'value': 'A02', 'type': 'SINGLE_LINE_TEXT'}, '文字列1_3': {'value': 'A02C', 'type': 'SINGLE_LINE_TEXT'}, 'ID': {'value': 'ｊｊ', 'type': 'SINGLE_LINE_TEXT'}, '文字列1_4': {'value': 'A02D', 'type': 'SINGLE_LINE_TEXT'}, '文字列1_2': {'value': 'A02B', 'type': 'SINGLE_LINE_TEXT'}, '$revision': {'value': '4', 'type': '__REVISION__'}, '文字列2_4': {'value': 'B02', 'type': 'SINGLE_LINE_TEXT'}, '$id': {'value': '2', 'type': '__ID__'}, '文字列C': {'value': 'B02C', 'type': 'SINGLE_LINE_TEXT'}, '文字列2_1': {'value': 'B02A', 'type': 'SINGLE_LINE_TEXT'}, 'ルックアップB': {'value': 'B02', 'type': 'SINGLE_LINE_TEXT'}, '文字列D': {'value': 'B02', 'type': 'SINGLE_LINE_TEXT'}}, {'作成者': {'value': {'name': 'Alex2013', 'code': 'Alex2013'}, 'type': 'CREATOR'}, '文字列A': {'value': 'B01A', 'type': 'SINGLE_LINE_TEXT'}, '作成日時': {'value': '2017-01-26T12:06:00Z', 'type': 'CREATED_TIME'}, '文字列B': {'value': 'B01B', 'type': 'SINGLE_LINE_TEXT'}, '文字列2_3': {'value': 'B01C', 'type': 'SINGLE_LINE_TEXT'}, '更新者': {'value': {'name': 'Alex2013', 'code': 'Alex2013'}, 'type': 'MODIFIER'}, '文字列2_2': {'value': 'B01B', 'type': 'SINGLE_LINE_TEXT'}, 'レコード番号': {'value': '1', 'type': 'RECORD_NUMBER'}, '文字列1_1': {'value': 'A01A', 'type': 'SINGLE_LINE_TEXT'}, '更新日時': {'value': '2017-01-26T12:06:00Z', 'type': 'UPDATED_TIME'}, 'ルックアップA': {'value': 'A01', 'type': 'SINGLE_LINE_TEXT'}, '文字列1_3': {'value': 'A01C', 'type': 'SINGLE_LINE_TEXT'}, 'ID': {'value': 'C01', 'type': 'SINGLE_LINE_TEXT'}, '文字列1_4': {'value': 'A01D', 'type': 'SINGLE_LINE_TEXT'}, '文字列1_2': {'value': 'A01B', 'type': 'SINGLE_LINE_TEXT'}, '$revision': {'value': '1', 'type': '__REVISION__'}, '文字列2_4': {'value': 'B01D', 'type': 'SINGLE_LINE_TEXT'}, '$id': {'value': '1', 'type': '__ID__'}, '文字列C': {'value': 'B01C', 'type': 'SINGLE_LINE_TEXT'}, '文字列2_1': {'value': 'B01A', 'type': 'SINGLE_LINE_TEXT'}, 'ルックアップB': {'value': 'B01', 'type': 'SINGLE_LINE_TEXT'}, '文字列D': {'value': 'B01D', 'type': 'SINGLE_LINE_TEXT'}}]
```