プログラミング初心者が、今のお天気に応じてtwitterの名前を変える例のアレを今更作ってみた on heroku


はじめに
この記事はプログラミング初心者によるメモ書きとしての需要が大きいです。
みる方はその辺をご容赦ください。
また、優秀な先輩プログラマーの方のコードを貼っただけの作業です。詳しく知りたければこちらの超優秀な記事を参考にしてください↓

[Twitterの名前を5分毎に東京の天気☼☂☃と連動させるサーバレスプログラムを書いたら色々知らないことが出てきた話](https://qiita.com/issei_y/items/ab641746be2704db98be)
[AWS lambda と Python3 を使って現在の天気をTwitterの名前に組み込むスクリプトを書きました。](https://qiita.com/hirony/items/f63747d5e0326653cc4d)
[Twitterの名前に絵文字を自動設定してみる]
(https://qiita.com/Keita_I/items/656d7560236da28fa360)


<h１>目次
1. したこと、できるようになった事
2. 実際のコード
3. まとめ

<h2>1.したこと、できるようになった事

1.twitterAPI、OpenWeatherMapsAPIの取得
2.優秀そうなコードをコピーしてちょっと改造する
3.herokuへデプロイ！


・　各種API取得方法はググって各々調べてください。たくさん載っています。
[twitterAPI取得](https://qiita.com/y_ishihara/items/501bb6fddc785a56780e)
・　優秀そうなコードは,諸先輩方がそれぞれの言語で公開されています。ググりましょう。

『**先輩プログラマーの方々、本当に感謝します。**:relaxed::relaxed:』

・　僕はクレカすら持っていない貧乏プログラマなので、AWSlambdaすら使えず、heroku上で使うことにしました。詳しいやり方はググってみましょう。
[Heroku×bottleを使って4分33秒でWebアプリを公開する](https://qiita.com/ohbarye/items/55ec574f10685a012baf)

<h2>実際のコード

今回はpythonを用いたので、大まかなプログラムは[この方の記事](https://qiita.com/hirony/items/f63747d5e0326653cc4d)
のコードをほぼパクらせて頂いてます。**常々感謝します:bow_tone1::bow_tone1:**

ただ、いくつか変更点はあります
heroku上だと、定期的にプログラムを走らせるための別のプログラムが必要みたいで、それを作る必要があります。

例えば

```python:main_function.py
def auto_wheather_change():
    #ーー実際のコードーー
    return
```
というプログラムを実行すれば、お天気がtwitterの名前に反映されるけれど
heroku上ではそれだけでは実行できないのです。簡易そこでclock.pyを新たに作り

```python:clock.py
from apscheduler.schedulers.blocking import BlockingScheduler
import main_function

loop_clock = BlockingScheduler()


@loop_clock.scheduled_job('interval', minutes=1)
def timed_job():
    main.auto_weather_change()


if __name__ == "__main__":
    main.auto_weather_change()
    loop_clock.start()
```

herokuでclock.pyが動くようにするために、procfileに

```text:procfile
clock: python clock.py
```
と書いておきます。するとサーバー上ではclock.pyを実行すればいいんだなぁ。とherokuが理解してくれます。

あともう１つ。
herokuでpythonを自動的に実行してくれるようにするためには、簡単でいいからwebアプリの上で実行させなくちゃならない？(僕もよくわかりません先輩方教えてください)らしいのでpythonwebフレームワークbottleを使い、、

**[twitter定期botをHerokuにデプロイ](https://qiita.com/nkg/items/0379a0a9c45af58640f5)**
**↑のことをそのまんま真似ました。**
これで僕はherokuでtwitterの名前を変えることに成功しました。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">おお！天気が変わって名前も変わった！</p>&mdash; Tsuchiya🌕☁ (@HaruhiN0707) <a href="https://twitter.com/HaruhiN0707/status/1032544460641460224?ref_src=twsrc%5Etfw">2018年8月23日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<h3>まとめ
・　とにかく先輩のコードは優秀
・　ググラビティ(googleを使いこなす能力の意味を持つ造語)をもっと強化したい
・　**諸先輩方に本当に感謝します**





番外編
**わからなかったこと**
・　heroku上だとなぜwebappを使わなけらばならない？
・　clock.pyのdef関数で

```python:clock_1.py
from apscheduler.schedulers.blocking import BlockingScheduler
import main_function

loop_clock = BlockingScheduler()


@loop_clock.scheduled_job('interval', minutes=1)
def timed_job():
    main.auto_weather_change()


if __name__ == "__main__":
    main.auto_weather_change()
    loop_clock.start()
```

```python:clock_2.py
from apscheduler.schedulers.blocking import BlockingScheduler
import main_function

loop_clock = BlockingScheduler()


@loop_clock.scheduled_job('interval', minutes=1)
def timed_job():
    main.auto_weather_change()


if __name__ == "__main__":
    loop_clock.start()
```
の違いがわからない(位のプログラミング初心者です泣)

これは実際にできたものです↓
https://github.com/haruhin/twitterBot

以上
初投稿と初簡易Bot完成の報告qiitaでした！