購読中です 読者をやめる 読者になる 読者になる

もぐてっく

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

mikutterメモ:プラグインスラッグの注意点

.mikutter.ymlで指定した:slugと、Plugin.create()の引数で指定したスラッグが違うと、Plugin::specがnilになります。

これは、Plugin::specの初期化は.mikutter.ymlで定義されたスラッグのインスタンスで行われ、プラグイン自身はPlugin.create()で指定したスラッグのインスタンス(前者とは別のインスタンス)で行われるためです。

結果、Plugin::specを参照する機能を使うとポコっと落ちます。
具体的にはアイコンセットです。ぐふぅ。

当たり前ですが、両者のスラッグは統一したほうがいいですね。

mikutterメモ:on_period使用時の注意点

1分周期でイベントを発生してくれる便利なon_periodさんでハマったのでメモ。

on_periodはサービス(=アカウント)ごとに1回ずつ呼ばれます。
なので、マルチアカウントでmikutterを使用している場合、毎分アカウントの数だけon_periodが実行されてしまいます。

アカウントに拘らない周期処理を行う場合は、引数のserviceがメインアカウントの場合のみ処理するようにすれば良いと思います。

Plugin(:test) {
  on_period { |service|
    if service == Service.primary
      # やりたいこと
    end
  }
}

普段シングルアカウント運用の人も、開発時はサブアカウントを登録しておいた方が良いですね。

メッセージのフォントを変えたり文字色を変えるmikutterコマンドを作ったよ

何これ?

選択したメッセージのフォントや文字色を変更するmikutterコマンドを追加します。前のエントリ(メッセージをホームタイムラインに混ぜ込むmikutterコマンドを作ったよ - もぐてっく)で抽出タブの結果をホームタイムラインに転送するmikutter-command-redirect-to-homeをご紹介しましたが、これだとタイムラインに流れてきたメッセージと混ぜ込んだメッセージの区別がつかないため、このコマンドで見分けが付くようにすると便利です。

インストール

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

moguno/mikutter-command-style · GitHub

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

使い方

まずは設定画面の「スタイル」でフォントと背景色を設定します。スタイルは1〜5の5種類が設定できます。

f:id:moguno:20150104210024p:plain

次に、適当な組み合わせの抽出タブを作ってください。その際、「適用するコマンド」タブで「スタイルnを適用(n:1〜5)」を選択することで、抽出結果に先ほど設定したスタイルが適用される様になります。
(要mikutter-extract-fire-command)

f:id:moguno:20150104192303p:plain

例えば「mikutter」で検索した結果にこのプラグインを適用した結果はこんな感じです。

f:id:moguno:20150104210115p:plain

設定

スタイル

f:id:moguno:20150104210024p:plain

  • フォント

メッセージのフォントフェース、サイズ、文字色を設定します。

  • 背景色

メッセージの背景色を設定します。

メッセージをホームタイムラインに混ぜ込むmikutterコマンドを作ったよ

何これ?

選択したメッセージをホームタイムラインにじわじわ混ぜ込んで行くmikutterコマンドを追加します。単体だと「なんじゃそれ?」ってプラグインなのですが、例によってmikutter-extract-fire-commandと組み合わせると良い感じの仕事をしてくれます。

インストール

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

moguno/mikutter-command-redirect-to-home · GitHub

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

使い方

実はこれ、昔が私が作ってた「私、気になります」やmikutter-rss-tl相当の動作を抽出タブで実現するためのプラグインです。

抽出タブの「適用するコマンド」タブで「ホームタイムラインにリダイレクト」を選択することで、抽出結果をホームタイムラインに混ぜ込むことが出来ます。
(要mikutter-extract-fire-command)
f:id:moguno:20150104192303p:plain

例えば「mikutter」で検索した結果にこのプラグインを適用した結果はこんな感じです。

f:id:moguno:20150104194502p:plain

とうとうmikutterにも広告ビジネスの波が押し寄せて来た様ですね・・・なんだこれ。

フォントや文字色が変わってますが、これはmikutter-command-styleと言うプラグインの機能で実現しています。mikutter-command-styleについてはこちらを参照してください。


メッセージのフォントを変えたり文字色を変えるmikutterコマンドを作ったよ - もぐてっく

設定

リダイレクト

f:id:moguno:20150104192748p:plain

  • 混ぜ込み周期(秒)

メッセージをホームタイムラインに混ぜ込む周期を設定します。
デフォルトは10秒に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受難の時代になりそうです。