PHP + cronでツイッターの自動投稿をするbotの作り方実践解説

最近はGoogleの検索エンジンがよくなってきたので、わりかしはやい段階でほしい情報が手に入るようになってきました。※あくまで個人的な感想です。

PHPでボットを作るための前無駄知識

今回はPHPでボットをつくって自動投稿させてみようというテーマで書いていきたいと思います。こちらの自動投稿ですが、 twittbot – 簡単にbotを作成 をつかえば、別にPHPでプログラミングするまでもないのですが、PHPで自分でプログラムを書いたほうがなにかと自由度が高いカスタマイズができるのではないでしょうか?

前回記事

前回の記事は、PHPをつかってツイートを半自動化する方法を書きました。

PHPでTwitterの自動投稿をする準備からやり方まで【TwitterOAuth】

PHPからツイートするための準備

PHPで自動ツイートするには、いろいろ準備することがあります。

  • ツイッターの開発者登録
  • ツイッターデベロッパーでのアプリ作成
  • PHPからツイートさせるためのプログラムの作成

ただ、これらは準備が少々面倒なだけであり、実際のソースコードはオープンになっていますので、それをコピペするだけです。

PHPでツイートはできる。ではそれをbot化するには?

PHPプログラムで、ツイートをbot化するためにやることは、おおよそ以下の3つになります。

  • phpプログラムの開発
  • レンタルサーバーと契約
  • サーバーのcron設定

cron設定とはなにか

cronはプログラムを自動実行させるための設定になります。ロリポップの文章を引用ます。

cron設定を行うことで、指定した時間に自動でコマンドやプログラムを実行することが可能です。cronは5個設定することが可能です。なお、サーバーに高い負荷がかかるプログラムなどは禁止事項に従いプログラムの実行の停止や、設定解除をさせて頂く場合がございますので、あらかじめご了承ください。

引用元: ロリポップ

cronと聞くとなにか難しそうなイメージを持ってしまいがちになりますが、実際には大したことはありません。※phpでツイートbotを作る作業が大したことではないという意味です。(cronの仕組み等はブラックボックスではあります。)結局のところプログラムを作って、それをcron設定で—いついつ実行する—というのを登録すればbotが完成するのです。

cronの設定の仕方

cronの設定の仕方については各レンタルサーバー会社でマニュアルが用意されているはずです。それを一読すれば要領を把握できるはずです。

わたしはロリポップレンタルサーバーを使っていますが、エックスサーバーでもCron設定ができるようです。

ロリポップのcron設定の仕方については cron設定 / サーバー・プログラム / マニュアル – レンタルサーバーならロリポップ! に詳しく書かれています。

とにかく安いサーバー会社

個人ブログ程度なら容量は十分

ロリポップレンタルサーバーを見に行く

実際にphpボットをつくってみる

ライブラリをftpサーバーにアップロードする

twitteroauthのライブラリはftpサーバーにアップロードする必要があります。こちらはいろいろなやり方があるとおもいますが、わたしの場合はロリポップのrootディレクトリーの下の階層にフォルダを作りました。そこに、ライブラリとボットツイート用のphpファイルを設置しました。ロリポップftpはファイルをひとつひとつしかアップロードすることができないので、Cyberduckを使って必要なファイルをサーバーにアップロードしました。
cyberduckをつかってロリポップレンタルサーバーにローカルからアクセスする方法

ボット用のphpコードもアップロードする

基本的に前回記事 で紹介したコードと同じになります。

<?php
// OAuthライブラリの読み込み
require "xxx/twitteroauth-master/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
 
$consumerKey = "xxx";
$consumerSecret = "xxx";
$accessToken = "xxx";
$accessTokenSecret = "xxx";
 
$twitter = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
$result = $twitter->post(
    "statuses/update",
    array("status" => "hello world")
    );
 
if($twitter->getLastHttpCode() == 200) {
    // ツイート成功
    print "tweeted\n";
} else {
    // ツイート失敗
    print "tweet failed\n";
}

このコードの注意点はrequireで適切にパスを指定することです。このパスは人によって違うはずです。あとはcron設定に従いこのコードが実行され。hello worldという文字のツイートが自動投稿されることになります。もう少し高度なプログラムを組めばいろいろなことができそうです。

requireでファイルを読みこむときに、どういう風に書けばいいかわからず困るかもしれないですが、ロリポップの場合はフルパスと自分の作ったディレクトリを組み合わせることでちゃんとファイルが読み込まれます。ロリポップでレンタルしているサーバーのフルパスは以下で確認することができます。

こちらはロリポップの管理画面になります。ユーザー設定アカウント情報という項目からこの画面にいくことができます。

まとめ

とりあえずレンタルサーバー会社のcron設定を使えばphpでのボット化ができることがわかりました。※これは一例であり、最近はAWSなどの言葉をよくみます。そちらでも同じようなことができるのかと思いますが、AWSについては知識の範囲外ので省略します。※この記事に書いてあることは全て個人的な見解になります。


Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 49

Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 78