makoto 対話機能を持った、キャラなりきりボット

皆様、お久しぶりです。
しばらく沈黙していたのは、Mastodonのことを忘れてワイハーのビーチでキャッキャしたり、ザギンでシースーを食ったり、あそんでいた為ではありません。新作に専念していました。

何を作った?

もうすぐリリースできるキャラなりきりボット、makotoの紹介です。
ドキドキ!プリキュアのキャラクターのひとり、「勇気の刃」キュアソードのなりきりボットです。キュアソードの本名は剣崎真琴。劇中では「まこぴー」の愛称で呼ばれることが多いので、以降わたしも、普段通りそう呼びます。

歌手としてプリキュアとして、使命に対して真摯な、抜けているところもあるがw 真面目なまこぴーのことを、特にプリキュアファン達に改めて知ってもらえれば嬉しいですね。
この子、割とポンコツ扱いされることが多いのでw

何の為に作った?

プリキュアファンの為のインスタンス「キュアスタ!」を引き継いで、2ヶ月ぐらいになろうとしています。
管理者として一般的な鯖缶業務以外に、何をすれば役目を果たせるのかをずっと考えていました。鯖缶であるから、インスタンスの管理をするのは当然。メンバーの一人として、アクティビティを高めるのも当然。その先に何をするべきかです。
わたしにはモロヘイヤという代表作がありますが、多くの機能は鯖缶の為のもの。間接的・最終的にはメンバーの利益を目的としているのは間違いないですが、もっと直接的にメンバーを楽しませ、あわよくば人も呼べる「コンテンツ」を作らなければいけないと思い至りました。
インスタンス運用そのものが目的化することが多少はあってもよいけどw、テーマインスタンス本来の目的を忘れることがあってはなりません。インスタンス本来の目的に、精神面だけでなく技術面でも奉仕したいと思うようになりました。

コードは一応、GitHubに上げました。
これをそのまま使って似たような対話ボットを設置することも一応は可能だけど、もとがまこぴーのなりきりの為に書いたコードなのでw。せいぜい、部分的な要素を参考にして頂けるぐらいかなと。
これが一応、わたしなりのFediverseへの貢献のつもり。要望がなければ、特にドキュメントも書きませんがw

影響を受けたもの

恋するプログラム―Rubyでつくる人工無脳」というRubyの入門書(…であってる?w)を、昔読んだことを思い出しました。
今となっては古くなりすぎて入門書には適さないし、コードもそのままでは使えませんが、アイデアや考え方はまだまだ参考にできます。どうやら知る人ぞ知る良書だったらしいですね。

機能

  • 独り言をトゥート。
    • 朝の挨拶
    • 曲紹介
    • まこぴーの名言等々
  • 応答。
    • 「まこぴーとお喋りしてる」と感じてもらえるレベルを最終的な目標としますが、いつになることやらw

利用している技術

WebSocket

ストリーミングに対応しなければ、お話にもなりませんw
faye-websocketeventmachine 等のgemが該当します。

Sidekiq

応答のキューイング、ひとりごとのスケジュール管理等に使用しています。

Googleスプレッドシート

RDBのような用途で使用しています。このアイデアはモロヘイヤからの拝借。
JSON化されたスプレッドシートをSidekiq経由で5分ごとにポーリングし、結果をキャッシュしています。

goo形態素解析API

https://labs.goo.ne.jp/api/jp/morphological-analysis/
応答時に使用しています。
今のところ機能面で不満はないですが、辞書登録ができないことがのちのち問題になるかも。

課題

学習・登録が全然追いついてない。

まこぴーが登場するあらゆる映像作品を観まくっています。
これが足りていないせいで、劇中の用語(ジャネジー、プシュケー等)にもまだ対応できていません。
これこそが肝であり、随時対応継続。

あまり賢くない

まこぴーらしさを優先し、使いこなせそうもない技術の採用を一旦見送りました。
例えば「恋するプログラム」ではマルコフ連鎖を推してて、読み物としては大変面白かったけど、これを使ってまこぴーらしさを表現できる見通しが立ちませんでした。
アホな返答も愛せるけどw、最終的な目標は「まこぴーとお喋りしてる」と感じてもらえるレベルです。Python勉強しなきゃいけないですね、多分。

以上、ご静聴に感謝。