Bolt 入門ガイド（Bolt入門ガイド）をWindowsで進めるときの読み替え （2021/12/10）

https://qiita.com/advent-calendar/2021/slack

2021/12/10(金)の回です。

# はじめに

[Bolt入門ガイド](https://slack.dev/bolt-python/ja-jp/tutorial/getting-started)はとてもよくできたわかりやすいガイドです。
このガイドをそのままやってみることで、Slackアプリを作る基礎を学べます。
Windowsで進めるときに少し読み替えが必要でしたのでそのことを記事にしておきます。

## 追記

:::note
実はガイドのほうにWindowsの場合はコッチをみてね〜　とリンクが書いてありました。
:::

@seratch さんに[コメント](https://qiita.com/torifukukaiou/items/b2f97daad19f256a81dc#comment-58cd3bdcf5accfc2f205) 欄で教えてもらいました。:pray::pray_tone1::pray_tone2::pray_tone2::pray_tone3::pray_tone4::pray_tone5:
(コメントありがとうございます :bow::bow_tone1::bow_tone2::bow_tone3::bow_tone4::bow_tone5:)

まずこちらの[コメント](https://qiita.com/torifukukaiou/items/b2f97daad19f256a81dc#comment-58cd3bdcf5accfc2f205)をご覧になることをオススメします。



# 前提という名の言い訳

**この記事を信用しないでください**。

:::note warn
2021/11/23の情報です。
:::

私は[Python](https://www.python.org/)の経験は乏しいです。
対価をもらう形での業務（仕事）で書いたことはありません。
雰囲気で使っているし、書いています。

またWindowsは普段の開発では使っておらず、「まあ、公式から[Python](https://www.python.org/)のインストーラをダウンロードしてインストールしておけば間違いではないだろう」くらいのノリでWindowsを使っています。
諸事情により、Windows上で[Python](https://www.python.org/)を動かしたいことがありまして、その際に試行錯誤してたどり着いたガイドを一直線で一周できる方法を紹介しておきます。

できるだけ正確な情報を書きたいとはおもっていますが、力量不足は否めませんので嘘を含んでいる場合があります。
そのため**この記事を信用しないでください**。

ではなにのために書いているかというと、「きっと私と同じことでつまる人がいるだろう」とおもうからです。
その人の時間の節約をしてあげたいと思っています。
参考にしていただいて、ご自身の判断で最適解を見つけてください。

もし、「こうすればいいよ」という情報をお持ちの方はぜひ教えてください。
「優しく教えてください」なんていいません。
罵詈雑言、なんでも:ok:です。
信用に足る記事を書くことを私は第一義としたいとおもっています。
記事をアップデートします。

また、ガイド自体はGitHubに公開されているものですので、Issuesたてて、プルリク送ったらいいじゃん！　というご意見はごもっともでもですし、そうしたい思いはあるにはありますが、それをするには英語版のほうから見直しが必要で、私のいまの英語力では書けない[^1]のと、Windowsでの開発経験に乏しいので私の環境依存の可能性を若干ながら捨てきれていないことから、プルリクを出すという行動はいまのところ考えておりません。

[^1]: いまは英語で書く自信がないと言っているだけで、未来永劫書けないと言っているわけではありません。来年のことを言うと鬼に笑われますが、来年のいまごろは英語がペラペラです。

https://github.com/SlackAPI/bolt-python

typoレベルで修正に自信がある件についてはプルリクを出してマージしていただいことがあります。

- https://github.com/slackapi/bolt-python/pull/507
- https://github.com/slackapi/bolt-python/pull/508
- https://github.com/slackapi/bolt-python/pull/519

四の五の言い訳が長くなりました:sweat_smile:

# 本題

## 環境

まず私が使った環境を記します。

### Windows

![winver.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/f227ce70-dd2b-4d5b-60a2-cc5fb9307d62.png)

Home editionです。

### [Python](https://www.python.org/)

https://www.python.org/downloads/

からインストールしました。

Python 3.10.0 (tags/v3.10.0:b494f59, Oct  4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32

ここの手順がこの記事のハイライトかもしれません。
Microsoft Storeからもインストールできるようで、そっちからやるとまた結果は違うものになるかもしれません。

## ターミナル

Windows PowerShell
(昔ながらのコマンドプロンプトとの違いはわかっていません)

なんとなくデスクトップで右クリックして、「Windows ターミナルで開く」を選ぶと、Windows PowerShellが立ち上がりました。
新しいもののほうがいいだろうとおもってこちらをそのまま使いました。

## 読み替え

コマンドをなぞっていきます。

https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/#installing-packages-using-pip-and-virtual-environments

のWindowsタブの内容を参考にしています。

```
> mkdir first-bolt-app
> cd first-bolt-app
```
読み替え不要です。

```
> python -m venv .venv
```

ガイド記載の`python3 -m venv .venv`を読み替え。
Pythonの事情に疎いのでpython3 -> pythonを読み替えと呼ぶべきなのかどうか不明です。

```
> .venv\Scripts\activate
```

`source .venv/bin/activate`の`source`なんて知らないといわれるので読み替えが必要。
ただし、以下のエラーがでます。

```
.venv\Scripts\activate : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Use
rs\torif\Documents\first-bolt-app\.venv\Scripts\Activate.ps1 を読み込むことができません。詳細に
ついては、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照し
てください。
発生場所 行:1 文字:1
+ .venv\Scripts\activate
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
```

[about_Execution_Policies](https://go.microsoft.com/fwlink/?LinkID=135170)を読んでみてください。

:::note warn
以下、よく内容を確かめてから実行してください。
:::


```
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
```

これを事前にしておくことで、さきほどのエラーは突破できます。
ググってでてきた記事の内容をそのまま私は実行しましたが、もともとセキュリティで弾かれていたことの設定を変えているのでよく内容を理解して実行してください。（内容を理解せずに実行した私が言うのは変な話ですが）
これを`y`と元気よく答えたあとにもう一度、`.venv\Scripts\activate`を実行すると仮想環境がアクティベートになります。

```
> $env:SLACK_BOT_TOKEN="xoxb-<ボットトークン>"
> $env:SLACK_APP_TOKEN="<アプリレベルトークン>"
```

環境変数の設定は、ガイドで紹介されているリンク先の[StackExchangeのPost](https://superuser.com/questions/212150/how-to-set-env-variable-in-windows-cmd-line/212153#212153)を参考に設定します。
※Windows PowerShellでの設定方法をここでは書いています。


```
> pip install slack_bolt
```

読み替え不要です。

`app.py`はそのまま写してください。

実行は

```
> python app.py
```

です。


# Wrapping up :lgtm::lgtm::lgtm::lgtm::lgtm:

私のWindows環境では、上記のようにやると「[Bolt入門ガイド](https://slack.dev/bolt-python/ja-jp/tutorial/getting-started)」を一通り実施することができました。
一例として参考にしていただければ幸いです。

こうやれば読み替え不要（そもそも全体を通じて、「読み替え」と表現するのが適切なのかどうか[Python](https://www.python.org/)界の流儀に疎くわかっていません）だよという情報をお持ちの方はぜひお知らせください。

**この記事を信用しないでください**。

Enjoy [slack](https://slack.com/):bangbang::bangbang::bangbang:

[War is over if you want it](https://www.youtube.com/watch?v=flA5ndOyZbI) :microphone: