先日、以下のようなBotを作成しました。Saberという音ゲーについての情報提供を目的にしたもので、タイムラインの情報から以下の内容を自動的につぶやきます。現在配信中と思われるtwitchチャンネルを複窓で表示するためのURL一定時間ごとに投稿されたビーセイのハッシュタグがついたツイート(だいたい動画)をまとめてリツイートBotを作るにあたって手順や参考にしたページ、躓いた点などをまとめておきたいと思います。同じ内容を扱った記事は複数ありますが、(作成中の私と同じように)初めて作業する人だと既存の記事で想定していないようなポイントに躓いたりするものなので、何らかの形でそういった方々の助けになればと思います。一応備忘録がわりに説明文を加えていますが、もしプログラムを触ったことがない*1人が何もインストールされていない状態から始めるとしたら最低限の手順書になるように書きました。64bitを前提としていますが、もし手順を参考にされる方がいればOS等は適宜読み替えてください。何はともあれアカウント登録。APIキーの取得(Twitter開発者登録)やること:ここで登録&作文ここから開発者っぽい領域に入っていきます。Twitterのアカウントとは別に、Twitterのdeveloper(開発者)としての登録をします。開発者になるとAPIキーというものをもらえます。APIキーについての詳しい説明は省きますが(というか私も詳細をわかっていない)、普段はTwitterのアプリやWebブラウザを通してしか見られないツイート内容やフォロワー数といったデータを、直接もらったり操作したりするためのパスワードのようなものです。これによってBotに色々させることができます。誰にでもそんなパスワードを渡したら悪用されて危険なので、信頼できる作文を書ける開発者にのみ渡されます。APIキーをもらうためには作文poemが必要なのです。Qiitaなお注意点として、APIキーで操作できるアカウントはログインしているアカウントのみです。Botを操作するためには、Botのアカウントを作成して、そのアカウントでDevelopersサイトにログインしてDeveloperの申請を行わなければなりません。私は最初これに気づかず(気づけよ)作文を2回やるハメになりました。2回とも認証は一瞬(本当に数秒レベル)で降りました。審査に一週間かかるという噂はなんだったのか。Pythonのインストールやること:ここでインストール無事にAPIキーが取得できたら、いよいよそれを用いて実際にTwitterを内部的にアレコレするプログラムを作っていきます。その気になればどの言語でもできるんでしょうけど、Pythonが色々ライブラリも揃っていて情報も豊富なのでそれを使っていきます。installer」でインストーラがダウンロードできます。注意事項として、Pythonをインストールする時の注意点として、環境変数にチェックボックスを入れましょう。これがないとコマンドプロンプトでpythonやpipといったコマンドが使えません。pipが使えないのは致命的です。requests_oauthlibPythonは色々なことができるプログラム言語ですが(わかったようなことを言う)、Python自体にそのすべての機能が備わっている訳ではありません。色々な機能を持ったモジュール(部品)として公開されており、プログラムごとに必要な機能を応じてインポートする必要があります。標準ライブラリに含まれていない機能は必要に応じてダウンロードしインストールする必要があります。今回のBotでは、APIをTwitterに投げてデータを受け取る......という操作を行いますが、このような機能はPythonに備え付けられていませんし、まさかフルスクラッチでかける訳がありません。外部プログラム(モジュール)を利用してそれを簡単にできるようにします。このモジュール、結構いっぱいあります。今回のBotだけでも以下のモジュールが必要になりました。エンコーダおよびデコーダ。APIを通したやりとりは基本的にjsonというフォーマットのデータになるため、これが必要です。システムパラメータと関数。絵文字のエンコードに使います。レジストリと基底クラス。絵文字のエンコードに使います。基本的な日付型および時間型。完成したプログラムには使いませんが、デバッグの時に使いました。OAuth認証のためのライブラリ。これがないとTwitterとのデータのやりとりができません。これだけは別途インストールが必要。Pythonプログラムの作成やること:ソースコードをかくソースコードについては近日中にQiitaに公開し解説も加えるつもりです。目下、機能改良&コード整理中なので......。プログラムを書いていきます。プログラムを書くことはそれこそメモ帳でもできますが、エディタを使った方がインデント(プログラムの入れ子関係を示すための文頭開始位置)を自動で揃えてくれたり、シンタックスハイライト(要素ごとに色を変えてプログラムを読みやすくする)をしてくれたりするので、その方が書きやすいでしょう。私はPythonとセットになっている純正のエディタで特に不満がなかったのでそれで書いていました。無事に、BotにツイートをさせるPythonプログラムがかけました。原理上は人間がこれを注意深く時計を見ながら10分に1回ダブルクリックをすれば定期ツイートをしてくれるBot(Botじゃねえ)が実現しますが、とてもそんなことはやっていられないのでプログラムにやらせましょう。Windowsにはタスクスケジューラーという備え付けのプログラムがあり、これは定期的に指定したプログラムを実行してくれるというまさにうってつけのものです。10分に1回、PC上でPythonファイルが走るようになります......が、毎回Pythonが立ち上がるのは正直目障りです。何よりPCを起動し続けていなければなりません。真の自動化のためには、自分のPCとは無縁なところでTwitterにAPIを送り続けるような仕組みが必要になりそうです。そのための仮想環境を提供するサービスが、次に説明するHerokuになります。Herokuのアカウント作成やること:ここでアカウント登録した後、ここでCLIをインストールTwitterとかと違ってややとっつきづらいサイトですが、まあ登録していきましょう。このサービスの中にさっきのパイソンファイルを置いて実行してもらう、ということになるのですが、ドラッグ&ドロップとかをするわけではなく操作は基本的にコマンドで行います。開発者はコマンドを使うものなのです。慣れない人は頑張りましょう。先程のpipと同じく、Windowsのコマンドプロンプトにherokuを扱うための命令一式をインストールする必要があります。インストールしていきます。Gitのインストールやること:ここでインストール更にややこしいのですが、Herokuのファイルを管理するためにはGitというシステムを使う必要があるので、それも別途コマンドラインにインストールする必要があります。さっきからインストールするものばかりですね。master※もし実際に上の手順をされる方がいたら、application_folder、application_nameは自分のアプリの名前に変えてください。これでようやくHeroku上にPythonファイル(やその他設定ファイル)を送るための準備が整いました。ローカルで作業用のフォルダを用意して、いろいろファイルを用意して(このあたりの詳細は参考記事を見てください)Herokuにpush(ローカルの作業内容をインターネット上の大本に反映させること)します。Heroku上でプログラムが動く状態にすることをデプロイと言いますが、これでデプロイ完了です。注意点として、Pythonをデプロイする際には、Python用のビルドパックというものを設定する必要があります。ブラウザから設定することもできますが、コマンドでも設定できるので、上のコマンドではそれも一括してやっています。「requirements.txt」の名前を「requirement.txt」にしていたということが発覚しました。お恥ずかしい......。これも誰かの参考になるかもしれないので言いますが。QiitaHerokuスケジューラの設定やること:HerokuスケジューラでPythonファイルを定期的に実行するようにする長かった戦いにも終わりが訪れようとしています。後はHeroku上のスケジューラで、デプロイしたプログラムを定期的に走らせるようにすれば自動Botの完成です。Herokuにはスケジューラというアドオンがあるので、それを設定します。Herokuのブラウザでも設定できますが、以下のコマンドでも開くことができます。Herokuスケジューラは無料のアドオンですが一応クレジットカードを登録する必要があります。Wikipediaに対してスクレイピングを行い、「AAA」~「ZZZ...2019-02-112018年+αにやったこと(主に3D)4月から3DCGを初めて、いろいろと知見が溜まってきました。(1)月別アーカイブ注目記事はてなブログをはじめよう!hibit_atさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。