Slack-Python-Onboarding-Tutorial をできるように必要なものを準備する。
- 前回は、Incoming webhooksでメッセージを送ってみました。
- Incoming webhooksではない方法でメッセージを送れるようにSlack-Python-Onboarding-Tutorialをやりたいとおもいます。
- Pythonをインストールします。
- チュートリアルのリポジトリをクローンします。
- 仮想環境を準備します。
- local環境へLANの外からアクセスできるようにするNgrokをインストールします。
- Web API用のテストツールPostmanをインストールします。
- 次回は、Slack側の準備をします。
- 環境
前回は、Incoming webhooksでメッセージを送ってみました。
Incoming webhooksではない方法でメッセージを送れるようにSlack-Python-Onboarding-Tutorialをやりたいとおもいます。
Onboardingは、新規メンバへの教育的なことです。
今回は、チュートリアルに必要なものを準備します。
Pythonをインストールします。
パッケージ管理ツールの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 ドキュメント
チュートリアルのリポジトリをクローンします。
# コピーした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で仮想環境を作ります。
# クローンしたディレクトリへ移動します。 $ 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
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