Slack-Python-Onboarding-Tutorial をできるように必要なものを準備する。

  • 環境
    • OS : macOS Mojave バージョン10.14.1
    • Slack : Web版
    • ブラウザ : Chrome バージョン: 71.0.3578.98(Official Build) (64 ビット)
    • Python : 3.6.5
    • pip : 18.1
    • git : version 2.17.2 (Apple Git-113)

前回は、Incoming webhooksでメッセージを送ってみました。

ponsuke-tarou.hatenablog.com

Incoming webhooksではない方法でメッセージを送れるようにSlack-Python-Onboarding-Tutorialをやりたいとおもいます。

github.com

Onboardingは、新規メンバへの教育的なことです。

jinjibu.jp

今回は、チュートリアルに必要なものを準備します。

Pythonをインストールします。

ponsuke-tarou.hatenablog.com

パッケージ管理ツールのpipはPythonにくっついています。

(google翻訳)python.orgからダウンロードしたPython 2> = 2.7.9またはPython 3> = 3.4を使用している場合、またはvirtualenvまたはpyvenvによって作成された仮想環境で作業している場合は、pipは既にインストールされています。
Installation — pip 19.1.1 documentation

Python開発用の仮想環境を作るツールであるVirtualenv的なものはvenvとしてPythonにくっついています。

(google翻訳)virtualenvは独立したPython環境を作成するためのツールです。
Python 3.3以降、そのサブセットがvenvモジュールの下で標準ライブラリに統合されました。
ただし、venvモジュールはこのライブラリのすべての機能を提供するわけではありません(たとえば、ブートストラップスクリプトを作成できない、ホストpython以外の他のバージョンのPython用の仮想環境を作成できない、再配置できないなど)。
Virtualenv — virtualenv 17.0.0 documentation

venv モジュールは、軽量な "仮想環境" の作成のサポートを提供します。仮想環境には、仮想環境ごとの site ディレクトリがあり、これはシステムの site ディレクトリから分離させることができます。それぞれの仮想環境には、それ自身の Python バイナリ (様々な Python バージョンで環境を作成できます) があり、仮想環境ごとの site ディレクトリに独立した Python パッケージ群をインストールできます。
venv --- 仮想環境の作成 — Python 3.7.3 ドキュメント

チュートリアルリポジトリをクローンします。

f:id:ponsuke_tarou:20190106140937p:plain
URLをコピーする。

# コピーしたURLでクローンします。
$ git clone https://github.com/slackapi/Slack-Python-Onboarding-Tutorial.git
Cloning into 'Slack-Python-Onboarding-Tutorial'...
remote: Enumerating objects: 19, done.
remote: Total 19 (delta 0), reused 0 (delta 0), pack-reused 19
Unpacking objects: 100% (19/19), done.

仮想環境を準備します。

venvで仮想環境を作ります。

qiita.com

# クローンしたディレクトリへ移動します。
$ cd Slack-Python-Onboarding-Tutorial

# 仮想環境を作ります。
$ python3 -m venv slackTutorial

# 仮想環境を有効化します。
$ source slackTutorial/bin/activate

pip3で必要なパッケージをインストールします。

# パッケージをインストールする前に import文でモジュールを検索するディレクトリを確認しておきます。
(slackTutorial) $ python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Users/mana/Dropbox/ApacheDcumentRoot/Slack-Python-Onboarding-Tutorial/slackTutorial/lib/python3.6/site-packages']
>>> exit()

# pip3の情報を確認しておきます。
(slackTutorial) $ pip3 show pip
Name: pip
Version: 18.1
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
Author-email: pypa-dev@groups.google.com
License: MIT
Location: /path/to/Slack-Python-Onboarding-Tutorial/slackTutorial/lib/python3.6/site-packages
Requires: 
Required-by: 

# チュートリアルに必要なパッケージをインストールします。
(slackTutorial) $ pip3 install -r requirements.txt
Collecting click==6.6 (from -r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/1c/7c/10b4132dd952b6a04e37626258825b8aa8c1eb99545f2eb26a77c21efb55/click-6.6-py2.py3-none-any.whl (71kB)
    100% |████████████████████████████████| 71kB 1.6MB/s 
Collecting Flask==0.11.1 (from -r requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/63/2b/01f5ed23a78391f6e3e73075973da0ecb467c831376a0b09c0ec5afd7977/Flask-0.11.1-py2.py3-none-any.whl (80kB)
    100% |████████████████████████████████| 81kB 2.6MB/s 
Collecting itsdangerous==0.24 (from -r requirements.txt (line 3))
  Downloading https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz (46kB)
    100% |████████████████████████████████| 51kB 10.1MB/s 
Collecting Jinja2==2.8 (from -r requirements.txt (line 4))
  Downloading https://files.pythonhosted.org/packages/96/a1/c56bc4d99dc2663514a8481511e80eba8994133ae75eebdadfc91a5597d9/Jinja2-2.8-py2.py3-none-any.whl (263kB)
    100% |████████████████████████████████| 266kB 2.2MB/s 
Collecting MarkupSafe==0.23 (from -r requirements.txt (line 5))
  Downloading https://files.pythonhosted.org/packages/c0/41/bae1254e0396c0cc8cf1751cb7d9afc90a602353695af5952530482c963f/MarkupSafe-0.23.tar.gz
Collecting pyaml==16.9.0 (from -r requirements.txt (line 6))
  Downloading https://files.pythonhosted.org/packages/e3/bb/e920e88da947f3915229dedd7a3c77267d37bcfbfc2e0aa350f33f25f9b3/pyaml-16.9.0.tar.gz
Collecting PyYAML==3.12 (from -r requirements.txt (line 7))
  Downloading https://files.pythonhosted.org/packages/4a/85/db5a2df477072b2902b0eb892feb37d88ac635d36245a72a6a69b23b383a/PyYAML-3.12.tar.gz (253kB)
    100% |████████████████████████████████| 256kB 3.1MB/s 
Collecting requests==2.11.1 (from -r requirements.txt (line 8))
  Downloading https://files.pythonhosted.org/packages/ea/03/92d3278bf8287c5caa07dbd9ea139027d5a3592b0f4d14abf072f890fab2/requests-2.11.1-py2.py3-none-any.whl (514kB)
    100% |████████████████████████████████| 522kB 4.2MB/s 
Collecting six==1.10.0 (from -r requirements.txt (line 9))
  Downloading https://files.pythonhosted.org/packages/c8/0a/b6723e1bc4c516cb687841499455a8505b44607ab535be01091c0f24f079/six-1.10.0-py2.py3-none-any.whl
Collecting slackclient==1.0.2 (from -r requirements.txt (line 10))
  Downloading https://files.pythonhosted.org/packages/db/12/e5198d6e10ead20acdbba5f6a7c22d153d8ea08946ea06e4580f6666cb52/slackclient-1.0.2.tar.gz
Collecting websocket-client==0.37.0 (from -r requirements.txt (line 11))
  Downloading https://files.pythonhosted.org/packages/a3/1e/b717151e29a70e8f212edae9aebb7812a8cae8477b52d9fe990dcaec9bbd/websocket_client-0.37.0.tar.gz (194kB)
    100% |████████████████████████████████| 194kB 1.9MB/s 
Collecting Werkzeug==0.11.11 (from -r requirements.txt (line 12))
  Downloading https://files.pythonhosted.org/packages/a9/5e/41f791a3f380ec50f2c4c3ef1399d9ffce6b4fe9a7f305222f014cf4fe83/Werkzeug-0.11.11-py2.py3-none-any.whl (306kB)
    100% |████████████████████████████████| 307kB 5.1MB/s 
Installing collected packages: click, itsdangerous, MarkupSafe, Jinja2, Werkzeug, Flask, PyYAML, pyaml, requests, six, websocket-client, slackclient
  Running setup.py install for itsdangerous ... done
  Running setup.py install for MarkupSafe ... done
  Running setup.py install for PyYAML ... done
  Running setup.py install for pyaml ... done
  Running setup.py install for websocket-client ... done
  Running setup.py install for slackclient ... done
Successfully installed Flask-0.11.1 Jinja2-2.8 MarkupSafe-0.23 PyYAML-3.12 Werkzeug-0.11.11 click-6.6 itsdangerous-0.24 pyaml-16.9.0 requests-2.11.1 six-1.10.0 slackclient-1.0.2 websocket-client-0.37.0

# 一旦仮想環境から抜けます。
$ deactivate

local環境へLANの外からアクセスできるようにするNgrokをインストールします。

If you are running this project locally, you'll need to set up tunnels for Slack to connect to your endpoints. Ngrok is an easy to use tunneling tool that supports HTTPS, which is required by Slack.
github.com

qiita.com

Web API用のテストツールPostmanをインストールします。

You'll likely want to test events coming to your server without going through the actions on your Slack team. Postman is a useful tool you can use to recreate requests sent from Slack to your server. This is especially helpful for events like user join, where the workflow to recreate the event requires quite a bit of set up.
github.com

qiita.com

次回は、Slack側の準備をします。

ponsuke-tarou.hatenablog.com


f:id:ponsuke_tarou:20190106232448j:plain