【初心者向け】「駆け出しエンジニア」仲間を見つける全自動Twitter BotをPythonでつくろう
今回紹介するPythonプログラムで、完全自動で動くTwitter Botを生み出すことができるようになれば、自分の興味のあるテーマに関して自動でつぶやき、自動で興味のありそうなユーザーをフォローして仲間集めをしてくれるアカウントを作ることができます👏
Twitter上には有益な情報と無益な情報がごちゃごちゃに溢れているので、有益な情報を取捨選択して収集する上でも、TwitterのBotは活躍します。
特定のテーマに関しての情報収集・発信は、Botに任せた方が効率的かつ効果的なんですよね。特定のテーマに関して学びたいのに「ご飯食べた!」みたいな雑多なツイートが紛れ込んできて情報収集の効率が落ちることも多いので。
今回は、そんなお役立ちBotを完全自動で動かせるようになるプログラミング初心者の方向けのチュートリアルです( ´ v ` )ノ
****** 注意 ******
この記事は公開後1日間は無料で、その後有料記事となります。
他のプログラミングチュートリアル記事も公開後1日間は無料になるので、無料で読みたい方は、noteのフォローをオススメします( ・v・)b
フォローはこちらから → https://note.mu/virtual_surfer
# 1. はじめに
こんにちは。仮想サーファー(@virtual_techX)です!
さぼりエンジニアがお届けする今回のチュートリアルコンテンツは、
「【初心者向け】「駆け出しエンジニア」仲間を見つける全自動Twitter BotをPythonでつくろう」です!
まず最初に、今回のチュートリアルでできるようになることを簡単にまとめておきますね。
できるものはどんなもの?
「駆け出しエンジニア」向けに有益な記事・本を自動でツイートし、駆け出しエンジニア仲間を自動でフォローしてくれるBotを生み出します。
持たせる機能は以下。
・駆け出しエンジニアを検索してフォローする。
・駆け出しエンジニア向けの有益な記事を紹介ツイートする。
・駆け出しエンジニア向けのオススメ技術書を紹介ツイートする。
以上をすべて自動で動かします( ・v・)b
↓ ちなみに、こちらは僕が半年以上前に作ったTwitterのBot。
自動で動き続けて、一時期フォロワー数1500くらいまで成長しました!
(仮想通貨の暴落とともにフォロワー数も激減しましたがw)
開発が終われば何もしなくても仮想通貨に興味がある人がフォローしてくれるので、自動でアカウントが育っていきました。
どんな人に読んでもらいたい?
こちらのnoteは、「プログラミング初心者だけどプログラミングをもっと学習したい!」「情報収集・発信を効率化、自動化したい!」という方向けのコンテンツになっています。
・Progateをある程度やってみて、プログラミングの本を読んだりもしたけど、もっと実践的なプログラミングをしたい!
・エンジニアではないけど、普段の情報収集・業務の効率化に使える簡易的なプログラミングができるようになりたい!
上のいずれかに該当する方に読んでもらいたいと思っています!
プログラミングを一度も触ったことがない方や、Twitterのデータに興味がない方は、これ以上読み進めない方がいいです。このチュートリアルを読み進めても確実に苦戦するし無駄になってしまうので...。
このチュートリアルで具体的に何が学べるの?
このチュートリアルを通して学べるプログラミング技術は以下です!
① Pythonの基本的なプログラミング
② Twitter APIへのアクセス(Twitter上のデータ取得・書き込み)
③ RSSへのアクセス(ブログなどの記事データの取得)
④ Amazon APIへのアクセス(Amazon商品データの取得)
⑤ Herokuへアプリケーションのデプロイ(自動で②~④が動くようにする)
チュートリアルの最後⑤まで進めることで、特定のテーマでTwitterツイート・フォローをしてくれるBotが完全自動で動くように設定することができます。
とはいえ、いきなり⑤まで進めることが難しい場合もあるかもしれません。そんな方は、まずは手動でTwitter上でのツイート・リツイートなどを効率化するだけでも普段の作業はだいぶ楽になります。まずは④まで進めることを目指すとよいです。
④までは、プログラミング経験があまりない方だと5~6時間程度、プログラミング経験がある方だと2~3時間程度で進められる想定です。
読む前に必要な準備はある?
・MacのPC
・インターネットに接続できる環境(このnoteが普通に読めていればOK)
・ツイッターのアカウント
・Amazonのアカウント
上に書いているもの以外、事前の準備は必要ありません。
すべてチュートリアル内の情報だけで完結できるように設計しています。
ただし、最低限のプログラミングの知識がないと読み進めていくのが辛いと思うので、ProgateでGit・Command Line・Pythonの基礎的な内容は理解できているとチュートリアルの内容をより理解できます。
(画像:Progateのコース選択画面)
こちらのnoteでTwitterのAPIアクセス・Spread Sheetの読み書きを一通り説明しているので、こちらのnoteもやりきればさらにできることが増えます。
何の役に立つの?
自分の興味のあるテーマのTwitterでの情報収集/発信などを効率化・自動化できます。
以下、今回のチュートリアルをすることでできるようになることの例。
①Twitterでの情報収集を自動化し、データを蓄積する
②Twitterでの情報発信を自動化する
③小銭稼ぎ
①②特定のテーマに関して情報収集・発信することで、特定のテーマに関しての興味の強い人にフォローしてもらえる。自分にとっても有益な情報をつぶやいてくれるBotなので、2度嬉しい。
③Amazonの本の紹介リンクをツイートすることで、そのリンク経由で誰かが本や商品を購入してもらえればアフィリエイト報酬が入るなど、工夫すれば多少は収益を期待できます。
Twitter上で特定のテーマに関して情報収集・情報発信したい場合、今回のチュートリアルをやり終えることで、上にあげたもの以外でもできることはかなり増えます。
実際にどんな事例で活用されているの?
・仮想通貨値動きのチェックを効率化
・仮想通貨ニュース記事の収集
・仮想通貨情報の発信
僕は、今回のチュートリアルで扱うTwitterの仮想通貨版のBotを開発して、上のような用途で利用していました。
そもそも、1つのTwitterアカウントで全く違う2つ以上のテーマについてツイートするべきではないので、Twitter Botはその意味でも有効活用できます。
例えば僕の場合は、以下のようにアカウントを使い分けています。
・@virtual_techX ... プログラミング系の情報収集/発信(自分で手動)
・@business_techX ... 複業関係の情報収集/発信(自分で手動)
・@cryptNewsBot ... 仮想通貨情報の収集/発信(TwitterのBot)
上2つは自分の経験をメインで発信するアカウントなので、プログラムで自動化することが難しく、手動で運用しています。
一方で、ニュース情報・価格の速報情報などをメインに発信している@cryptNewsBotは、プログラムで自動化することが容易なので自動化して効率的に情報収集・情報発信しています。
さすがに何個もTwitterのアカウントを運用するのは無理があるので、興味のあるテーマが複数ある方は積極的にTwitterのBotを生み出しいくのが良いと思います。
# 2. チュートリアル実践
それでは、チュートリアルに入っていきましょう!
Pythonの実行環境の準備
今回はPythonというプログラミング言語でプログラミングをしていくので、まずは、Pythonを実行することができる環境を準備していきます。
****** 注意 ******
すでにPythonを実行できる環境がある方は、「Twitterのデータにアクセスできるようになる」の箇所まで読み飛ばしてください。
①Terminalの用意
Finder > Applications > Terminalと遷移し、Macに標準で搭載されているアプリケーションTerminalを開きます。
Terminalって何?という方は、命令文を打ち込むことでパソコンを操作できる便利ツールだと捉えるとよいです。
上の画像のように黒い画面(Terminal)に命令文を打ち込んでいくことで、プログラムやPCに操作をさせることができます。
試しに、$マークの後ろに「$ echo Pythonのチュートリアルなう!」と打ち込んで、(Enterボタンを押して)命令文を実行してみてください。
「Pythonのチュートリアルなう!」という文章が表示されたはずです。「echo」という命令文は、「その後に続く文章をTerminalに表示する」という命令文を意味するので、このように文章を表示することができました。
②Homebrewのインストール
Terminalを使う準備ができたら、次にPythonを使用できるように準備していきましょう。まずは、PythonをTerminalで簡単にインストールできるように、Homebrewというものをインストールします。
先ほどと同じように、Terminalの$マーク以降の場所に次の命令文を入力します。「$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"」
「Press RETURN to continue or any other key to abort」と表示されたら、Enterボタンを押してください。また、「Password:」と表示されたら、いつもパソコンにログインする時に使っているパスワードを入力してください。
これによって、Homebrewがインストールされます。
Homebrewのインストールが成功したかどうかは、「$ brew -v」というHomebrewのバージョンを確認する命令文を打ち込むことで確認できます。
試しに「$ brew -v」と打ち込んでみましょう。
上の画像のように、「$ brew -v」と打ち込んで、「Homebrew 1.7.6」のようにバージョン番号が表示されればインストール成功しています(バージョン番号は異なる場合があります)。
③Pythonのインストール
最後に、Pythonを使えるようにインストールしていきます。
pythonのバージョンは、3のもの(2018年12月現在で最新版)をインストールします。
これまでと同じように、「$ brew install python3」と打ち込みます。
ぼくはすでにPythonをインストールしているのでErrorとなっていますが、初めてPythonを利用する場合はインストールが成功したような表示がされるはずです。
これで自分のPC環境にPythonがインストールされたはずです。 このPythonを簡単に使えるようにするため、パスの設定をしておきましょう。
Terminalに「$ open ~/.bash_profile」と打ち込みます。
上記の命令文を打ち込むと、「.bash_profile」という名前のファイルが開かれます。
開いたファイルに、「export PATH=/usr/local/bin:$PATH」という文章をコピペして、ファイルの変更を保存します(「command」ボタンと「S」ボタン同時押しで保存するショートカットおすすめです)。
「command + S」は、Macでファイルの保存をしたい時によく使うショットカットキーです。
ファイルの保存ができたら、ファイルを閉じ、再びTerminalに戻り「$ source ~/.bash_profile」という命令文を打ち込みます。
以上によって、Terminalで「$ python3」と打ち込むことで、Pythonを動かせるようになりました。
入力できる場所が「>>> 」という表示になっていれば、Pythonが起動できています。
試しに、「>>> 1 + 1」と入力して、Enterを押してみてください。
上の画像のように「2」と表示されていればOKです!
ここまでで、Pythonを動かせる準備は終了です!
僕の周りのプログラミング未経験者のうち1/3の人は、環境構築を完了にたどり着けないので、ここまで達成できただけでも未経験者にとっては大きな進歩です!(僕はプログラミングを初めて2ヶ月間は、できる人に環境構築を任せっきりでした。笑)
Twitterのデータにアクセスできるようになる
Pythonを実行できる環境も整ったので、早速TwitterへアクセスしてTwitterのデータを取得していきます!
****** 注意 ******
Twitter APIにアクセスしたことがある or アクセスできる状態の方は、「Twitter APIでツイートしてみる」の箇所まで読み飛ばしてください。
Twitterにアクセスするためには、以下のような手順が必要です。
①Twitterへアクセスするためのアクセストークンを取得する
②Twitterにアクセスするプログラムを書く
③書いたプログラムを実行する
順を追ってチュートリアルを進めていきましょう。
①Twitterへアクセスするためのアクセストークンを取得する
まずはTwitterへプログラムでアクセスするために、アクセストークンを取得していきます。
ツイッターにログインした状態で、以下のリンク先をクリックして、ツイッターのアプリケーション管理画面に移動します。
移動すると、下の画像のような画面になっているはずです。
「Apply for a developer account」というボタンを押します。
新規アプリケーションを作成するために開発者登録をしていきます。
「Continue」をクリックします。
個人利用にチェックをいれ、情報入力して「Continue」をクリック。
次の画面でTwitter APIの利用用途を聞かれるのですが、300文字も入力するのが辛いので以下の文章も参考に進めてみてください。
(英語がおかしい箇所はお許しください。)
I'm using Twitter APIs to analyze some data for my web service development. I think Twitter data is precious and I can know many things. It helps me to know what people's insight by using Twitter API. It's going to be limited to personal use. I'm not using tweet some text or update some data with Twitter API.
最後まで進むとメール認証画面になるので、ツイッターに登録しているメールアドレスの受信メールを確認してメール認証をしましょう。
「Confirm your email」をクリック
上の画像のようなメールを受信しているので、「Confirm your email」をクリックします。
メールの認証をすると、上の画像のように「審査するからちょっと待ってね」と言われます。
半年前に初めてTwitterAPIの登録をした時は承認なしですぐ使えたのですが、徐々に制限が厳しくなっているようです。まだTwitter API登録したことない方は、早めに登録した方が良さそう。
登録したものが承認されると、Appsに表示されています。
Appsの右端の「Details」というボタンをクリック。
Keys and tokensというタブに、「API Key」・「API Secret Key」・「Access Token」・「Access Token Secret」の値が表示されています。
Twitter社はこれらの値を使ってTwitterにアクセスしてきているユーザーを識別しています。これら4つの値は後ほど使うので控えておきましょう。他人に漏れてしまうと悪用できてしまうので注意しましょう。
以上でプログラムでTwitterにアクセスする準備完了です!ひとまずお疲れ様でした( ´ v ` )ノ
ここからは、「②Twitterにアクセスするプログラムを書く」と「③書いたプログラムを実行する」を進めていきます!
Twitter APIでツイートしてみる
ここからはTwitter APIを使って、プログラムでツイッターを操作していきます!
手始めに、先ほど用意したAPI Keyなどを利用して、プログラムでツイートをしてみます。
まずは、tweepyというライブラリ(簡単にTwitterのデータにアクセスすることができる便利なツール)をインストールします。
$ pip3 install tweepy
Terminalで「$ pip3 install tweepy」と打ち込んで、実行する。
下のコマンドを実行してtweepyのバージョンが表示されれば、tweepyがインストールできています。
$ pip3 list | grep tweepy
tweepy 3.6.0
「$ pip3 install tweepy」と打ち込んで、tweepyがインストールできているか確認する。
tweepyがインストールできていることが確認できたら、任意の名前のPythonファイル(ここでは、「test.py」というファイル名のファイルを用意します)を作成し、以下のようなコードを書いて実行してみましょう。
# coding=utf-8
import tweepy
# 以下4つ「xxxxx」を、先ほど控えた値で書き換える。
CONSUMER_KEY = 'xxxxx'
CONSUMER_SECRET = 'xxxxx'
ACCESS_TOKEN = 'xxxxx'
ACCESS_TOKEN_SECRET = 'xxxxx'
text = 'チュートリアル実践中! #さぼりエンジニア養成所'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
api.update_status(status=text)
「xxxxx」の箇所は、先ほど控えておいたご自身の「API Key」・「API Secret Key」・「Access Token」・「Access Token Secret」の値で書き換えてください。
コードを簡単に説明しておきますね。
以下の箇所でTwitter APIを利用できるかどうかTwitterにチェックしてもらう認証情報(誰のアクセスか?)を用意しています。
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
そして、以下の箇所でTwitter APIを利用して、textという変数に含まれた文字列をツイートする処理を行っています。
api.update_status(status=text)
それでは、「test.py」ファイルを実行してみましょう。
Terminalに「$ python3 test.py」と打ち込んで実行します。
$ python3 test.py
上のコードを実行したら、Twitterを確認してみましょう。
↑こんな感じでツイートできていればOKです。
以上で、Twitter Botでツイートをすることができるようになりました。
エンジニア向け記事のツイートをしてみる
次に、駆け出しエンジニア向けの有益な記事をツイートしてみましょう
ここでは、RSSというWebサイトの記事更新情報の日付やタイトル、内容の要約などを配信するための技術を活用して新着記事情報をツイートしてみましょう。
ここでは、エンジニアのキャリアなどに関しての記事がよく配信されているエンジニアHub(エン・ジャパン株式会社の運営メディア)の記事をツイートするように実装していきます。
(画像:エンジニアHub|若手Webエンジニアのキャリアを考える!)
①Chromなどのブラウザの検証ツール(Macなら、command + option + I でショートカットできる)を開く。
②Elementsのタブを開いて「rss+xml」という文字を検索する。検索して見つかった行に書いてあるURLがRSS用のURLなので、これをコピーしておく。
(画像:エンジニアHub|若手Webエンジニアのキャリアを考える!)
HTMLを確認すると、エンジニアHubの場合は「https://type.jp/et/feature/feed」がRSS用のURLとなっているようです。
ブラウザで上記のURLにアクセスすると下の画像のような文字だけのページが表示されます。
このページの情報がRSSのデータです。このデータをプログラムで取得することで、最新の記事のタイトルや要約内容、記事の公開日がわかるのです。
RSSとは何かについて少しわかってきたところで、実際にプログラムでアクセスしてみましょう。
「rss_test.py」というファイルに、RSSにアクセスして要約文章の一部と記事のリンクをツイートする以下のコードを書いて、保存。
rss_test.py
# coding=utf-8
import feedparser
RSS_URL = 'https://employment.en-japan.com/engineerhub/rss'
# RSSのデータ取得
rss_dict = feedparser.parse(RSS_URL)
# RSSの記事データを1記事ずつ処理していく
entry_count = 0
for entry in rss_dict.entries:
entry_count += 1
if entry_count > 10:
break
print('------------------------------------------')
# 何番目の記事か、記事のタイトル、記事のリンクを出力していく。
print('{}個目の記事データ タイトル:{}\nURL:{}'.format(entry_count, entry.title, entry.link))
「rss_dict = feedparser.parse(RSS_URL)」の箇所でfeedparserというライブラリを利用して、先ほどブラウザ上で表示されていたRSSのデータを取得しています。
for文でループさせて取得した記事データを1つずつ処理し、記事のタイトルとURLを出力しています。
「'{}個目の記事データ タイトル:{}\nURL:{}'.format(entry_count, entry.title, entry.link)」の箇所は、「{}」の箇所に「format()」で指定した値が左から順に1つずつ組み合わさったものが最終的な文章になります。
feedparserというライブラリを利用するので、pipでインストールしておきましょう。
$ pip3 install feedparser
feedparserがインストールできたら、ファイルを実行してみましょう。
「$ python3 rss_test.py」でファイルを実行する。
$ python3 rss_test.py
ファイルを実行したら、Terminalで実行結果を確認してみましょう。
rss_test.pyを実行して、↑の画像のように記事のタイトルとリンクが最大10個表示されていればOKです!
これでRSSのデータを取得することができるようになりました!
次にRSSで取得したデータをツイートしてみましょう。
RSSで取得した最新記事を1件ツイートする以下のコードを「rss_tweet_test.py」というファイルに書いて、実行してみましょう。
rss_tweet_test.py
# coding=utf-8
import tweepy
import feedparser
# 以下4つ「xxxxx」を、先ほど控えた値で書き換える。
CONSUMER_KEY = 'xxxxx'
CONSUMER_SECRET = 'xxxxx'
ACCESS_TOKEN = 'xxxxx'
ACCESS_TOKEN_SECRET = 'xxxxx'
RSS_URL = 'https://employment.en-japan.com/engineerhub/rss'
TEXT = 'チュートリアル実践中! #さぼりエンジニア養成所'
# RSSのデータ取得
rss_dict = feedparser.parse(RSS_URL)
# RSSの記事データを1記事ずつ処理していく
entry_count = 0
for entry in rss_dict.entries:
entry_count += 1
# 1記事分だけツイートしたいので、2個目以降の記事の処理が始まったら処理を抜ける。
if entry_count > 1:
break
# ツイートする文章を作成する。
tweet_text = '{}\n\n{}\n{}'.format(entry.title, entry.link, TEXT)
# 記事のタイトルとリンクと一言をツイートする。
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
api.update_status(status=tweet_text)
「tweet_text = '{}\n\n{}\n{}'.format(entry.title, entry.link, TEXT)」の箇所で、ツイートする文章を作成しています。「\n」は改行を意味します。「\n」が一つで「Enter」を1度押した状態と思っていただければ。
「xxxxx」の箇所を自分のAPIトークンなどの値に書き換えることを忘れないように注意してください。
「$ python3 rss_tweet_test.py」でファイルを実行する。
$ python3 rss_tweet_test.py
コードを実行して、下の画像のようにツイートできていればOKです!これでプログラムでRSS取得した記事をツイートすることができるようになりました。
以上で、RSSで取得したデータをツイートできるようになりました!
駆け出しエンジニア向け技術書のリンク付きツイートをしてみる
ここまででプログラムでツイートすることができるようになったので、次はより実践的に技術書の紹介ツイートをするようにしてみましょう。
プログラムで、↑こんな感じでAmazonの技術書をコメント付きでツイートしてみます。
まずは、紹介したいAmazonの本を選んでURLをコピーしましょう。
Amazonで紹介したい本の詳細ページにアクセスし、そのページのURLをメモしておく。
今回は、プログラムでURLにアクセスし、Amazonの本のデータを取得していきます。
「amazon_book_tweet.py」というファイルに以下のコードを書きます。
amazon_book_tweet.py
この記事が気に入ったらチップで応援してみませんか?