見出し画像

政治家や活動家の発信を見逃さないために、誰でも使えるツールをつくる②

 本記事は、Twitter API を活用してデータを一挙に集めるアプローチを提示する。もちろん、すべて無料である(2022年7月15日 現在)。ただし、前回の記事を前提としているため、本記事を読む前にそちらを読んで環境を整えてから手を動かすようにして欲しい。

概要

 特にスマホやPC等の環境は選ばない。特別なアプリは必要とせず、すべてはブラウザ上で完結する。ぽちぽちとタップしたりコピペを繰り返したりするだけで、迅速にツイートを収集することができるようになる。
 必要な手順は以下の3つである:

  1. Gist を開き、左上にある "Open in Colab" をクリックする

  2. 開いた Colab をよく読み、必要な認証情報を入力する

  3. 上部メニューバーの [ランタイム] > [すべてのセルを実行] を押して実行

 ※スクリプトの実行までに必要なことはすべて Colab 側に書いてあるが、この記事ではかいつまんで説明する。

前提知識

 Gist, Colab 等、よくわからない方のために説明する。この辺に慣れている人は次の章まで読み飛ばしてくれて構わない。

 まず Gist とは、リポジトリと同様に git で管理できるが、ごく小規模なもの(ファイル一つだけ等)を対象として利用されている GitHub の提供するサービスである。「プロジェクト」をヴァージョン管理するのが通常のリポジトリで、一つあるいは少数のファイル群をまとめてヴァージョン管理するのが gist と想像するとわかりやすい。

 Colab とは、Google が提供する無料の Python 実行環境である。同じく Python 製の Jupyter Notebook をベースとしてつくられており、ブラウザ上でインタラクティブにコードを実行できるのが特徴である。現在も初心者の壁として大きく立ちはだかる環境構築の手間を一切取らず、アクセスさえできれば誰でもすぐ実行できるのがありがたい。また、記述を工夫することで、コードを一切見せないように書くこともできる。

1.Open in Colab

 Google Colabratory には、〈Public な .ipynb ファイルを読み込んで、それを Colab 上で開く〉 という機能がある。本来はもうひと手間必要なところ、クリックひとつでできるやり方があったのでそちらを紹介する。

 まず、次の Gist を開き、左上に "Open in Colab" の青いバッジ(細長い長方形のボタン)が見えることを確認する(読者の閲覧環境によっては、note.com 側で Gist を直接埋め込んでくれているかもしれない)。そのバッジをクリックすると画面が遷移し、Google Colabaratory の準備が整う。これだけである、簡単でしょ?

タイトルの左上にある青いボタンを押すと colab が開く

2.Enter your auth info

 次は Colab 上のフォームに認証情報を入力していく。Colab 側の説明にあるとおりだが、GITHUB_USERNAME, GITHUB_EMAIL, REPOSITORY_NAME, GITHUB_TOKEN, BEARER_TOKEN の5つが入力されていれば、実行は可能である。

実行の際に必要な認証情報を入力する UI

 あとは、ツイート / メンション / いいね のうち、必要なものにチェックを入れ、必要数を指定すればよい。
 また、`targetList.txt` に記入されていないアカウントのデータを集めたい場合もあるだろう。そういうときは、UNIQUE_TARGET_ID に対象の ID を入力すると良い。`targetList.txt` はすべて無視されてしまうが、UNIQUE_TARGET_ID のデータを集めることに注力できるだろう。

チェックを入れたものだけ、入力された数値分のツイートを収集する
特定の一人を対象にしたい場合は、 0 ではなく指定の ID へと変更する

3.Run all cells

 上部メニューバーから、[ランタイム] > [すべてのセルを実行] を押すことで、一番上のセルから一番下のセルまでまとめて実行することが出来る。ここまでで認証情報をきちんと入力できていれば、なんの問題もなくデータ取得できるだろう。

Ctrl + F9 でも実行可能

 ただし、得られたデータを GitHub のリポジトリ内へ保存するためには、一番下にあるセルを適宜コメントアウトを外す必要がある。Python におけるコメントアウトとは、「#」をつけた以降の文字列はコメントとして無視するというものである。このため、一番最後のセル内に記述されたコードはすべて実行されていない。「#」を取り除くことで、実行したときにプログラムとして機能するようになる。

 データをリポジトリに保存したいときは、"# if isPrivate():" 以降のコメントアウトを削除して 、コードとして実行されるように修正してほしい。改めて修正後のセルのみを実行する(セルの左上にある「再生」ボタンを押下する)と、取得したデータをコミットして、リポジトリにプッシュしてくれるだろう。

 最後まで「コミット」せずに Colab を終了すると、せっかく集めたデータが消えてしまう可能性もある。必ず上述した部分は修正するようにしてほしい。

注意事項

 colab には共有機能があり、リンクを第三者に伝えて共同編集することもできる。これにより、プログラミングの経験がある (s)he に代理で実行してもらおうと考える方もいるかもしれない。しかし、その場合には認証情報を削除してから共有すること(あるいはそもそも共有しないこと)が肝要だ。もし GitHub や Twitter のトークンが流出した場合、どのような被害があるかわからないし、もしそうなったときに双方の関係に悪影響を及ぼしかねない。

 ほかにも、度重なる再実行にも留意してほしい。Twitter API v2 における Essential Access の Tweet caps 、すなわち一ヶ月あたりに取得可能なツイート数の上限は 50 万程度しかない。これは多いように見えるかもしれないが、一日あたりに換算すると約 15,000 ツイート程度が限度となる。裏で並行して "dailyUpdate.py” も実行されることを考えると、Colab であまりにも大量のデータを取ることは控えるのが良いだろう。実行する前に、おおよそどれくらいの残枠を消費するのか想定すべきといえる。Twitter Developer Portal の Dashboard でも残量が確認できるので、そちらも参考にされたい。

 最後に、気になっている人もいるかもしれないので明言しておくと、SATwi 然りこの Colab だって当然合法であり、また Twitter の規約にも抵触していない。すなわち、利用に際してなんの法的問題もない。なぜなら、公式から提供されているエンドポイントを規約に従って "お行儀よく" 叩き、プログラミングを通じて定期的・自動的にデータを取得・加工した上で「私的に保存」しているだけだからである。

 クラウド上に保存しているのだから違法だ!という指摘はあれど、複製者のみがアクセスできる Private リポジトリであれば問題はない(複製行為者は利用者自身なので、私的使用目的の複製に該当)("公衆の使用に供することを目的として設置されている自動複製機器" に対してクラウドサーバは該当しないとの見解)。

まとめ

 というわけで、本記事と前回の記事①を丁寧に読んで実践してくださった読者の手元には、1.GitHub リポジトリ 2.Twitter 開発者アカウント 3.Colaboratory (Python 実行環境) というデータ分析における三種の神器が揃ったことになる。Congratulations !!

 Colaboratory という強力な武器を得たことで、"targetList.txt" に記載されていないアカウントについても個別にデータを集めることが出来るようになったのは大きいだろう。過去ツイート3200件・メンションされたツイート800件・いいねしたツイート7500件を一挙に集めることが出来るというのは、データ分析をやろうと考えたときになかなか魅力的ではないだろうか?

 次回、記事③ではここまでの問題点の整理とそれらに対する「悪魔的」解決法を考え、記事④ではより平和的な利用法に関する検討ならびに "もっと実行頻度を増やしたい" という人向けの Tips を提示する予定だ。記事⑤が出るかどうかはわからないが、まだまだ実装したい事柄はたくさんあるので、それが実現したら解説等を書くかもしれない。

 それでは皆様、よき Twitter Lifeを!

次の記事


この記事が参加している募集

つくってみた

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