もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

Rubyプログラミング不要!mikutterでBotを作ろう

明けましておめでとうございます。

これは「あー正月ってテレビもつまんないしマジすることないよねー」カレンダー (なにそれ?)2日目の記事です。

今回は拙作プラグインmikutter-extract-fire-commandを使って、コードを一切書かずにTwitter Botを作る方法をご紹介したいと思います。

mikutter-extract-fire-commandについて

mikutter-extract-fire-commandは抽出タブの抽出結果にmikutterコマンドを適用するプラグインです。このプラグインを使うとPlaggerの様に他のWebサービスと連携を取ったり、特定のツイートに反応してちょっとしたマクロ処理が出来るようになります。

mikutter-extract-fire-commandの詳細は、過去に書いた記事を参照してもらえればと思います。

# またえっらい自画自賛だな当時の俺・・・。

定刻につぶやくBotを作ろう

さて、ここからが今回の本題です。
まずは一定時間ごとにメッセージをつぶやくシンプルなBotを作ってみましょう。

例として僕のTLで流しているマイクラサーバの宣伝Botをご紹介します。

(1) プラグインの導入
まず初めに、次のプラグインを導入します。

  • mikutter-extract-fire-command

前述の抽出タブの抽出結果にコマンドを適用するプラグインです。

  • mikutter-kopipe

あらかじめ定義したメッセージをツイートするコマンドが作れるプラグインです。

  • mikutter-datasource-clock

みくったーちゃんが時刻を教えてくれるプラグインです。

(2)投稿するメッセージを作成する。

プラグインの導入が終わったら、mikutter-kopipeに定期的につぶやきたいメッセージを登録していきます。
~/.mikutter/の下にkopipeディレクトリを作成して、下記のYAMLファイルを作成してください。

title: AQUA Craftの宣伝
text:
 - |
  Minecraftサーバ"AQUA Craft"やってます。

  araaraufufu.xyz
  マップ:http://araaraufufu.xyz

  シングルが寂しくなったくらいの人におすすめです。
  駅近未開拓地多数。自由に開拓してください!

ファイル名は拡張子が.yamlであれば任意です。
ここではkopipe_aqua_craft.yamlとでもしておきましょう。

一度mikutterを再起動して、右クリックメニューに「AQUA Craftの宣伝」が追加されていることを確認してください。

f:id:moguno:20150101233942p:plain

(3)抽出タブの設定

(a)データソース
1分周期で現在時刻をつぶやくデータソース「時計」を選択します。

f:id:moguno:20150101231309p:plain

(b)絞り込み条件
今回は1時間ごとに通知させたいので、毎時00分のメッセージのみを取り出します。

f:id:moguno:20150102004727p:plain

(c)適用するコマンド
さっき作った「AQUA Craftの宣伝」を適用させます。

f:id:moguno:20150101234052p:plain

これで毎時00分が来るたびに「AQUA Craftの宣伝」コマンドが実行され、宣伝メッセージが自動ツイートされます。時間を呟くだけの存在意義不明なデータソースが、Botのタイミング生成の要になっているところが面白いですね。

特定の言葉に反応するBotを作ろう

続いて、ホームタイムラインの特定のメッセージに反応する愉快なBotを作っていきます。
ここでは「あひる焼き」に反応して火に油を注ぐメッセージを返してみます。

(1)プラグインの導入

今回はmikutter-extract-fire-commandとmikutter-kopipeのみを利用します。

(2)投稿メッセージの作成

ここでもmikutter-kopipe用のメッセージを定義するのですが、mikutter-kopipeのサンプルにあひる焼きを応援するメッセージ(4種)をランダムにつぶやく奴があるので、今回はそれを使います。

~/.mikutter/の下にkopipeディレクトリを作成して、mikutter-kopipe/sample/kopipe_ahiru_yaki.yamlをコピーしてください。

(3)抽出タブの設定

(a)データソース
ホームタイムラインを選択します。

f:id:moguno:20150101233652p:plain

(b)絞り込み条件
次の条件を定義します。

本文に「あひる焼き」を含み、
自分の投稿でなく、
本文に自分の名前を含まない。(あひる焼くなプラグインのリプライを対象外にする)

f:id:moguno:20150101233704p:plain

(c)適用するコマンド
サンプルのあひるを焼く(ランダム返信)を適用させます。

f:id:moguno:20150101233719p:plain

これで、誰かが「あひる焼き」と呟くたびにいちいち茶々ツイートを嚙ますことができるようになります。
あひる焼きゲームよ永遠なれ!

おわりに

今回のBotやmikutterの薄い本 vol.7(もうすぐ通販も始まるよ!)に掲載の「SlideShareのスライドをはてなブックマークに転送する芸」など、mikutter-extract-fire-commandは様々な用途に応用が効く物と思います。
ぜひぜひ皆さんなりの面白い使い方を編み出してください!


では、本年もよろしくお願いします。

みくったーちゃんが時刻を教えてくれるデータソースプラグインを作ったよ

何これ?

みくったーちゃんが1分周期で現在時刻を教えてくれるデータソースです。
シンプルかわいいいです。

インストール

GitHubからzipファイルをダウンロードして適当なディレクトリに展開して下さい。

moguno/mikutter-datasource-clock · GitHub

※mikutterプラグインマネージャ"Packaged"で"moguno"を検索してインストールするのもおすすめです。

使い方

抽出タブを作って「時計」データソースを設定しましょう。至ってシンプルですね。

f:id:moguno:20141230122907p:plain

しばらく放っておくと現在時刻がどんどん呟かれて愉快です。

f:id:moguno:20141230123219p:plain

フォーマット

時刻のフォーマットは下記となります。

現在の時刻は YYYY/mm/dd (aaa) HH:MM だよ

記号やスペースをうまく使うと各要素のパターンマッチも可能です。
例えば、下のような絞り込み条件を組めば時報になったりします。

f:id:moguno:20141230124222p:plain

MacPortsをアップデートしたらmikutterがぽんぽん落ちるようになった件

mikutter3.2 alpha 1が来たので早速遊ぼうとインストールしたんですが、nokogiriがコンパイルエラーになってしまいました。

なのでMacPortsのupgrade outdatedとgem updateを掛けたところ、nokogiriはOKになるもmikutterさんが挙動不審に。(まるでそれはIngress中の私のような。)

  • フォントのレンダリングが汚くなる。
  • mikutter-mac-de-emojiが動作しなくなる。
  • SEGVで落ちる。

SEGV時のスタックトレースを見るとcairoで死んでるっぽいので、MacPortsのアップデートが原因かなとバージョンを調べてみました。

Alicia:mikutter moguno$ port installed cairo
The following ports are currently installed:
  cairo @1.12.16_2+x11
  cairo @1.14.0_0+quartz+x11(active)

Alicia:mikutter moguno$ port installed pango
The following ports are currently installed:
  pango @1.36.6_0+x11
  pango @1.36.8_0+x11
  pango @1.36.8_1+quartz+x11(active)

どうも今回のアップデートでquartzサポートが付いて調子が悪くなったような・・・?

update to 1.14.0 (#45391) and make Quartz support always enabled (#44414)

あー・・・(いらんことしやがって)。

アップデートでおかしくなった人

とりあえず元にもどします。

Alicia:mikutter moguno$ port activate cairo @1.12.16_2+x11
Alicia:mikutter moguno$ port activate pango @1.36.8_0+x11

新しくMacPortsをインストールした人 or 誤ってcairo@1.12.16_2+x11とpango@1.36.8_0+x11を消しちゃった人(私)

svnから古いPortfileを取ってきてインストールします。

Alicia:~ moguno$ cd /tmp
Alicia:tmp moguno$ svn co http://svn.macports.org/repository/macports/trunk/dports/graphics/cairo --revision 115019
Alicia:tmp moguno$ cd cairo/
Alicia:cairo moguno$ sudo port install

Alicia:cairo moguno$ cd /tmp
Alicia:tmp moguno$ svn co http://svn.macports.org/repository/macports/trunk/dports/x11/pango --revision 125628
Alicia:tmp moguno$ cd pango/
Alicia:pango moguno$ sudo port install


なお、port install cairo -quartzで行けるかなとも思ったんですがオプションが無視されました・・・。mikutter on OS X受難の時代になりそうです。