[BTC][Bot] [Python] 第一回 はじめのBot環境構築
はじめに
はじめまして、 _santa365です。本業でエンジニアをやっています。
趣味でBot開発もしています。今日から自分のメモを兼ねて、Bot環境構築についての記事を書くことにしました。基本的にはある程度の知識がある人ならば理解できるようわかりやすく書いています。何か質問・要望等があればTwitterまでお願いします。
(実はnote.comに書いていくのですが、note.com自体はエンジニア向けに最適化されていないので別サイトで書いたほうがわかりやすい記事になったりします。がBot関連の記事を見るとnote.comに書いてるのが多いためこちらで書いていきます)
初回はBot環境構築です。自分はmacしか使わないのでwindowsの方は適宜しらべていただけると幸いです。
なお自分は完全な未経験ではないですが本業でPythonを触っているわけではないので不手際があった際はご了承ください。
環境構築を始める前に
基本的なパッケージインストーラ(brew)やPythonそのもののインストール方法等はGoogleでしらべてもらったほうが確実なのでここでは解説しません。
プロジェクトを作る
なにはともあれBotのプロジェクトを作る必要があります。どの言語でもそうですが、プロジェクトを新規に作る際は他のプロジェクトに影響がないように独立して作ることが基本です。これによりプロジェクトごとの独立性が担保され、本番サーバへの反映が簡単になります。
Pythonの場合、poetryとツールを使ってプロジェクトの構築をしていくのがおそらく2021年の主流なので、poetryを使っていきたいと思います。まずはインストールからです。
$ pip install poetry
# 実行できるか確認
$ poetry --help
Poetry version 1.1.7
プロジェクトを作ります。
$ poetry new --src pybot
Created package pybot in pybot
$ cd pybot
poetryによって作成されたプロジェクトは以下のようになります
.
├── README.rst
├── pyproject.toml
├── src
│ └── pybot
│ └── __init__.py
└── tests
├── __init__.py
└── test_pybot.py
簡単にですが、解説すると
・Readme.rst
プロジェクトがなにかを書いてるファイルです。
・src
プロジェクト本体のコードが置かれるディレクトリです。
ここにBotのコードを追加していきます。
・pyproject.toml
プロジェクトに関連する情報が書かれています。プロジェクトが依存しているツール等もここに記載します。環境が変わったとしても以前の環境をすぐ再現するためにこのファイルが存在します。
・tests
プロジェクトのテストコードを保存するためのディレクトリです
プロジェクトを動かす前に
Pythonには仮想環境(virtualenvs)が存在します。Pythonの仮想環境をうまく使うことでプロジェクトごとに独立して開発することができます。
PoetryはPythonの仮想環境の存在をうまく隠しながらプロジェクトをマネージメントしてくれます。
以下が標準のpoetryの設定です。キャッシュのディレクトリや仮想環境を作るかどうかを設定することができます。
$ poetry config --list
cache-dir = "/Users/.../Library/Caches/pypoetry"
experimental.new-installer = true
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = false
virtualenvs.path = "{cache-dir}/virtualenvs" # /Users/..../Library/Caches/pypoetry/virtualenvs
僕は開発しているディレクトリの中に仮想環境用のディレクトリがあるほうが好きなので、以下のコマンドを実行して仮想環境をプロジェクトコード配下に置くようにしています
$ poetry config virtualenvs.in-project true --local
HelloWorld
実際にプロジェクトを動かします。
まずはじめに依存しているツール郡をinstallします。初期状態ですが、すでにいくつかのツールに依存しています。
poetry install
次にHelloWorld用のプログラムを用意します。以下の`src/pybot/main.py`に以下のファイルを記述してください。
def main():
print('Hello, world!')
書いたプログラムを実行できるようエイリアスを設定します。`pyproject.toml` の末尾に以下を追加してください。
[tool.poetry.scripts]
pybot = "pybot.main:main"
以上で完了です。実行してみます。
$ poetry run pybot
Hello, world!
無事実行できました。お疲れさまでした!Bot開発の大きな一歩を進むことができました!
最終的には以下のようなディレクトリ構成になります。
$ tree .
.
├── README.rst
├── poetry.lock
├── poetry.toml
├── pyproject.toml
├── src
│ └── pybot
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-39.pyc
│ │ └── main.cpython-39.pyc
│ └── main.py
└── tests
├── __init__.py
└── test_pybot.py