見出し画像

Herokuにデプロイしてアプリケーションを自動で動かそう

初めまして。データサイエンスでお仕事したい社会人の叢咲(むらさき)と言います。
最近、Twitterの運用を半分botに任せることにして できるだけ有意義に時間を使いかつ効率的にフォロワーを増やせないか模索しています。

私がどのようにTwitterのbot化を実現しているのかと言いますと、プログラミングでTwitterを操作し その操作の実行もコンピューターにお願いしていることで実現しています。

今回の記事では、Twitterをbot化するために必要な「プログラムの実行」をコンピューターにお願いする方法について紹介します。

このnoteで学べること

このノートでは、上述の通り Twitterをbot化するために必要な「プログラムの実行」をコンピューターにお願いする ことについて紹介します。その中で

①サーバーについて
②gitを用いた操作

についても紹介します。
Twitterをbot化するプログラムについては、連載記事で紹介していますので ぜひ読んでみてください!

サーバーとは?

画像1

サーバーとは元々給仕[奉仕]する人や物を言います。例えばビールサーバーはビールを提供してくれるマシーンのことですよね。
転じて、コンピューターの世界ではサービスを提供するコンピューターを指します。サービスを受け取るために、コンピューターのサーバーは安定的に稼働し続けなければなりません。

さて、サーバーはどこにあるのでしょうか。まさか、自分でイチから勉強して作りますか??? いえいえ。すでにサービスは整っており、第三者が作ったサーバーを間借りしてしまえばいいのです。個人で勉強用に使う程度なら、完全に無料で使うことができます。

今回のチュートリアルでは、自作で書いたプログラムをサーバーに配置し 勝手にコンピューターに実行してもらうことで完全自動を実現するのが目的です!!

クラウドサーバーサービス Herokuを使おう!!

さて、本題に入る前に 今回使うサーバーを紹介しておきましょう。今回使用するのは、クラウドサーバーのHerokuと言うサービスです。

クラウドサーバーとは、クラウド上に構築されたサーバー群のことです。クラウドといっても意味不明でしょうから、とりあえず 世界の様々な拠点にサーバーを設置してサービスを提供している 程度に理解しておいてください。

Microsoft社のAzureやAmazon社のAWS辺りが有名です。これらは低額で始められるものの、課金しないと使えない点で難アリです。今回のチュートリアルでは、完全に無料で始められるクラウドサーバーを使用するので、金銭的な面ではご安心ください。

Herokuに登録しよう

さて、いよいよ本題です。自分で作成したスクリプトをサーバーにアップするまでやってしまいましょう!!
今回のチュートリアルではコマンドラインを使用しますので、まだ学習が済んでいない方は触っておいてください。1~2時間程度で十分だと思います。コマンドラインの学習が済んでいなくてもこのnoteは読めるので安心してください。

もしサクサクっと勉強をしてみたい方は、progateのコマンドライン講座を受講してみてください。

さて、まずはHerokuのアカウントに移動し ユーザー登録を済ませましょう。


スクリーンショット 2020-06-10 22.11.26

Herokuに入ったら、新規登録を済ませましょう。指示通りに進めるだけです。

スクリーンショット 2020-06-10 22.11.34

メールアドレスを登録したら、Herokuから確認のメールが届きます。認証を済ませたら登録完了です。

Herokuにスクリプトをデプロイ

さて、ここからは実際に作成したスクリプトをHeroku上に配置し 自動で実行できるようにしましょう。ここまで読めば今回のnoteで紹介したい内容は全て終了になります。

まず、デプロイする際に必要になるファイルを作成しておきます。以下のファイルを作成します。コマンドライン(ターミナル等)を開き、Herokuにデプロイしたいファイルが存在するディレクトリまで移動しましょう。

cd Desktop/×××

上記のように入力することで、Desktop配下の「自分が作成したファイルが存在するディレクトリ」まで移動することができます。もし、どのように移動すれば良いか分からない時は

cd Desktop

と入力しEnterを押したのちに

ls

と入力してください。Desktop上に存在するディレクトリやアプリケーションが一覧で表示されるはずです。移動したいディレクトリを見つけたら再び「cd ××」で一つ下の階層に入っていきましょう。

自分の作成したスクリプトが入っている場所まで移動できましたか?移動できたら次は、次のように入力してみてください。

touch requirement.txt

touchで、今いるディレクトリ内に新しいファイルを作成できます。.txt はテキスト形式と呼ばれ、文字を入力できるだけのごく簡単なファイルになります。

自分の手元で利用しているライブラリのバージョンと、Heroku上のアプリケーションが利用するライブラリのバージョンを同じものにするため、requirements.txtに利用しているライブラリのバージョンを書き込みます。以下のように入力してください。

pip freeze > requirement.txt

これで、自分の使っているライブラリのバージョンを一気にrequirement.txtに書き込むことができます。中身が以下のようになっていることを確認してください。

appnope==0.1.0
attrs==19.3.0
backcall==0.1.0
beautifulsoup4==4.8.2
bleach==3.1.4
certifi==2019.11.28
chardet==3.0.4
cycler==0.10.0
decorator==4.4.2
defusedxml==0.6.0
entrypoints==0.3
feedparser==5.2.1
get==2019.4.13
idna==2.9
importlib-metadata==1.6.0
ipykernel==5.2.0
ipython==7.13.0
ipython-genutils==0.2.0
ipywidgets==7.5.1
jedi==0.16.0
Jinja2==2.11.1
jsonschema==3.2.0
jupyter==1.0.0
jupyter-client==6.1.2
jupyter-console==6.1.0
jupyter-core==4.6.3
kiwisolver==1.1.0
MarkupSafe==1.1.1
matplotlib==3.1.3
mistune==0.8.4
nbconvert==5.6.1
nbformat==5.0.4
notebook==6.0.3
numpy==1.18.1
oauthlib==3.1.0
pandas==1.0.1
pandocfilters==1.4.2
parso==0.6.2
pexpect==4.8.0
pickleshare==0.7.5
post==2019.4.13
prometheus-client==0.7.1
prompt-toolkit==3.0.5
ptyprocess==0.6.0
public==2019.4.13
Pygments==2.6.1
pyparsing==2.4.6
pyrsistent==0.16.0
PySocks==1.7.1
python-dateutil==2.8.1
pytz==2019.3
pyzmq==19.0.0
qtconsole==4.7.2
QtPy==1.9.0
query-string==2019.4.13
request==2019.4.13
requests==2.23.0
requests-oauthlib==1.3.0
scipy==1.4.1
seaborn==0.10.0
Send2Trash==1.5.0
six==1.14.0
soupsieve==2.0
terminado==0.8.3
testpath==0.4.4
tornado==6.0.4
traitlets==4.3.3
tweepy==3.8.0
urllib3==1.25.8
wcwidth==0.1.9
webencodings==0.5.1
widgetsnbextension==3.5.1
zipp==3.1.0

例えば、twitterを自動化したい方はすでにtweepyをインストールしているので requirement.txtの中にtweepyが入っているはずです。私は他にもnumpyやscipyなどの科学計算ライブラリを入れているので、上記のような内容になりました。txtファイルの中身は一人一人違うはずです。

次に、Herokuへ移動し 新しいアプリケーションを作成しましょう。以下のような場所から「Create New App」を押してください。

note挿入写真.001

次に、いくつかの情報を入力していきましょう。入力の中身は適当でOKです。

note挿入写真.002

ちなみに、Choose a regionで選択するのは これから配置するスクリプトを 世界のどこにあるデータセンターのサーバーに保管するかです。場所ごとにサービスに違いが生じるわけではないので、場所も適当でOKです。

この記事が気に入ったらサポートをしてみませんか?