(読書)誰でもできる TwitterBotの作り方

誰でもできるTwitter Botの作り方―人気キャラにつぶやかせる

誰でもできるTwitter Botの作り方―人気キャラにつぶやかせる

表紙が萌絵でビビったが、中身はTwitterBot作成を通した、Rubyの初歩解説という内容になっている。読者に語りかけるような丁寧な解説・説明があるので、本のとおりにやれば、簡単なTwitterBotなら作れそうな感じです。ぼくはまだ読んだばかりでTwitterBot作成にちゃれんじしてませんが、こういうのからプログラミングに入れば三日坊主にならずに、勉強続けられるかも・・・。プログラミングって、ほんと体質的に合わないとわかっているんだけど、大好きなTwitteriPhone関連のアプリでも作れるようになったらなぁといい年したおじさんになった今、夢想しはじめてます・・・。
評価:★★★☆☆

以下、メモ

========

Twitterでは「3人以上の会話・議論」が難しい
(中略)
人数が多くなると、全員が全員をフォローするのが難しくなる
途中から議論に参入してくる人もどんどん現れる

人によって発言力(声の大きさ)が異なる
「似ているが微妙に異なる話題」が、あちこちで盛り上がる
どんどんテーマが分散していく
途中から議論に参入した人は、これまでの議論の経緯を追うのが難しい

Twitterは、しょせん独り言のためのメディア
会話のためのメディアではない!

p.13

 Twitterにはこのほか、リツイート(RT:他人の発言を、自分をフォローしている人たちに対して、晒しあげる機能)というしくみもあるのですが、ここで重要なのは、
タイムラインに表示される情報はユーザごとにまったく異なる
という点です。これがTwitterを使ったコミュニケーションを難しくしているポイントなのです。
 つまり、Twitter以外のほとんどのコミュニケーションサービスでは、最低でも「他の人が見ているものと自分が見ているものが同じ」という前提があるのです。これは、チャットだろうと掲示板だろうとブログだろうと、みな同じです。ところがTwitterは、基本的には情報が一方通行です。フォローすれば相手の情報は見えますが、相手が自分をフォローしていなければ、こちらの情報は相手に見えていません。(わざわざ見に来てくれれば見れますが)
 すると、自分から見えているものが、他の人にも見えているとは限らないという状態になります。こうなると、一般には会話が成立しません。
 もちろん、2人だけで会話するならTwitterでも可能です。お互いにフォローしていれば、お互いに同じもの(情報)が視えるからです。(フォローしていなかったとしても、言及(@)を使って話をすれば、絵話は成立します)
 ところが、3人以上の集団になると「自分からみえているAさんとBさんが、互いに見えているかどうか分からない」という状態のほうが普通になるのです。これではまともな会話が成立しません。多人数が参加する会話をきちんと成立させるためには、「会話の参加者全員が、お互いにフォローしあっている状態」を、(会話に先立って)構築する必要があるでしょう。これは参加者が少人数であれば可能でしょうが、参加者が増えれば増えるほど、難しくなっていきます。
 けっきょくTwitterは「みんなで会話する場」や「議論の場」として使うには、まったく向いていないのです。
 ユーザのみんなが、それぞれ独り言をつぶやきあっている状況にあるーこれがTwitterの姿なのです。

p.44

 ちなみに本書では、Rubyというプログラミング言語を使って、Botの作り方を説明しています。数あるプログラミング言語の中で特にRubyをとりあげた理由は、いくつかあります。

  • プログラムを作るまでの準備が簡単で、比較的お手軽に使える
  • 短いプログラムでも、わりと高度な作業指示ができる
  • パソコンの種類(OSの種類)を問わずに使える
  • 日本語の資料が多く出回っているので、独学でも習得しやすい

p.52

● TwitterBotは、プログラミング入門に最適な題材
 「TwitterBotを作るにはどのプログラミング言語が向いていますか?」と言われると、「なんでもいい」が答えになります。
 ではここで、「プログラミング言語を習得するには、何をするところから始めればいいですか?」と聞かれれば、その答えはハッキリ決まっています。

 TwitterBotを作るところから始めましょう!!
 それ以外にありえません!!

 選択の余地は無いです。断言できます。なぜ、TwitterBot作りから始めるといいのか?「初心者でもとっつきやすい題材である」という理由も大きいのですが、最大の理由は
 結果を自慢しやすい。
 このシンプルなひと言につきます。
P.52

p.58-65

(前略)
 特にRubyの場合は大きく分けて「1.9.x」と「1.8.x」の2つのバージョン体系が存在します。そして、この両者はまったくの別物だと考えてください。「Ruby1.9.x」は、単純に「Ruby1.8.x」の次のバージョンだ―というわけではないのです。むしろ、「まったく違う2つのプログラミング言語」として扱ってもよいほどです。
 「Ruby1.9.x」は、先進的で新しい昨日を取り入れていることが特徴です。「Ruby1.8.x」は、長いあいだ使用されてきた実績に裏付けされた「安定性」が特徴です。
 この本では「Ruby1.8.7」をつかって解説しています。
p.63

プログラムが動かないときのチェックポイント

  • プログラムにミスが無いか?
  • コマンドの実行方法が間違っていないか?(-Ksを付けましたか?)
  • プログラムを保存した場所(フォルダ)が間違っていないか?
  • Twitter自体が落ちていないか?(いわゆる「クジラ」が飛んでいないか?)
  • ネットワークは正常か?(Webブラウザで他のサイトにつながるか?)
  • Ruby本体やライブラリ側のバグではないか?(詳細はp.70参照)

プログラム自体が間違っているとき、ありがちなケアレスミスとチェックポイント

  • 英語の大文字と小文字を間違えていないか?
    • 「TwitterOAuth」の「T」と「OA」は大文字です。
    • Kconv」と書くケースと「kconv」と書くケースの両方があります。
  • 「小文字のL」と「数字の1」を間違えていないか?
  • 「:(コロン)」と「;(セミコロン)」を間違えていないか?
  • 「.(ピリオド)」と「,(カンマ)」を間違えていないか?
  • 半角で書くべきところを全角で書いていないか?
  • 綴りにミスがないか?
    • 例えば、クライアントは「client」です。
  • カッコの対応は間違っていないか?
    • カッコの中に括弧が入っているとき、括弧の数が合わないことがあります。「{」の後に「]」で閉じてしまうことがあります。(Shiftキーの押し間違いなどで、しばしば間違います)

p.69

Bot専用「ここまで読んだ」機能
 このような迷惑な事態を防ぐために、「お返事Bot」は、「タイムラインをどこまで読んだのか」という情報を覚えておく必要があります。
 そのためには、「Botが起動するたびにココまで読んだと発言しておく」という方法が考えられます。Botはタイムラインを読むことができるので、タイムライン上に「過去の自己の発言(ココまで読んだ)」があれば「それより過去に遡ってタイムラインを読む必要はない」と分かるのです。
 これはなかなか良いアイデアなのですが・・・・Botがなんどもなんども「ここまで読んだ」と発言してしまうと、それを見るフォロワーは興ざめでしょう。
 そこで、ここに紹介する「お返事Bot」はタイムラインに見える形で発言するのではなく、「自分宛のダイレクトメッセージを出す」という方法を使っています。未来の自分に宛ててダイレクトメッセージを出せば、人間のフォローワーたちには気づかれません。未来の自分宛にコッソリ、「ここまで読んだ」という情報を伝えられるのです。
p.123

DMをセッション変数のように使うアイデア
(中略)
 ひとつ注意点としては、ダイレクトメッセージが来るたびにメールでお知らせが来る設定になっていると、かなり鬱陶しい事態になります。あらかじめ、メールが来ないように設定しておきましょう。Twitterの「設定」ページの中の「お知らせ機能」をクリックすると、メール通知の設定を変更できます。
p.127

ここまで読んだみなさんが、今後TwitterBotを開発・改良していくにあたって、目指す方向性は、おそらく3つほど考えられるでしょう。

  • できるだけ自然につぶやいて本物の人間のふりをする、バーチャル人間型Bot
  • 架空のキャラクターを演じる、なりきり型Bot
  • ネット上の情報を集めてつぶやく、情報提供型Bot

もちろん、これら複数を組み合わせた複合型Botというのもありえます。
p.130

情報提供型Bot
 ネット上のブログやニュースサイトの情報を収集し、Twitterでそれらの情報をつぶやくタイプのBotです。この種のBotを作るためには、Twitter以外のサイトにアクセスできるプログラムを作る必要があるため、作者にはある程度のプログラミング技術・知識が要求されます。
 この種のBotであれば、発言に「人間らしさ」はいっさい必要ありません。むしろ、速報性や正確性が重視されるでしょう。あらゆるジャンルのニュースを集めてつぶやくよりも、特定の分野に絞ってつぶやく―たとえば「iPhone最新アプリ情報」「サッカーの試合結果速報」「最新アニメ情報」など―もののほうが、他人に喜ばれるでしょう。

 こうした情報提供型Botのプログラムを具体的にどうやって作ればいいのか?―というテーマについては、この本で解説するレベルを大きく超えてしまうため、詳しくは述べません。ネットから自動的に情報を収集する方法に興味があれば、「Ruby」+「クローリング」または「RSS」というったキーワードで検索してみるといいかもしれません。
p.132

こんな語りかけ口調でやさしく解説してくれてたのに、リファレンス紹介欄のあと、サヨナラのあいさつもなく、ぱったりと終わってしまうところが、なんか悲しく感じました。