マストドンを楽しむためにやってみたあれこれ
2017年12月09日
過去記事とかぶる内容もありますが、自分がマストドンを4月から半年以上やってきて、「もっと楽しむにはどうしたらいいか」を考えてやってきたあれこれを主なものに絞って書いていきます。
対話botびわこ@びわ湖丼

機能
・「びわ湖の水位は?」と質問すると当日朝のびわ湖の水位を答えます。

・URLを含んだトゥートを送るとその本文を解析し、要約してくれます(重要文の抽出)。
画像中の対象ページ:https://internet.watch.impress.co.jp/docs/imreboot/column/1094016.html

・その他、適当な対話をします。
・地域ニュースを発信します。
動機
自動対話botの西郷どんのつんを見つけて面白いと思い、管理人の臣さんに実装を教えていただいたところから自分も作ってみたくなりました。ちょうどその頃ほしかどよぞらさんにびわ湖丼を擬人化していただいて、アイコンとして使わせていただくお願いをしたところぴったりな画像を作っていただきました。これは機能としても面白いbotにしなければならないと思い、現在もそのアイデアを探したりしているところです。
実装
応答の種類の振り分けにはDialogflow(旧API.AI)を使っています。そこから「びわ湖の水位」を返すか、「リンク先の本文の要約」を返すか、「対話」を返すかに分かれて、それぞれ処理しています。
・びわ湖の水位を返す
国土交通省のページから本文の水位部分を抽出しています。 http://www.kkr.mlit.go.jp/biwako/
・リンク先の本文の要約
リンク先のページから「本文」をreadabilityで取り出し、summpyで要約(重要文の抽出)を行っています。
・対話
Docomoの雑談対話APIを使っています(関西弁バージョン)。一応、対話相手を覚えていて、同じ人との対話には過去の内容が反映されて受け答えが変わってくるらしいです。

(多分過去に滋賀に台風が近づいている話をしたのを引きずっている)
・地域ニュースの発信
これは先日の7_nanaさんの記事でも説明されたマストどすのちどりと仕組み的には同じです。ただし「滋賀」タグの更新頻度が低いため、検索条件をタイトルに「滋賀」「琵琶湖」「びわ湖」のいずれかが含まれることにしています。
じゃんけんでデスゲームするMastodon

機能
定期的にbotがじゃんけんをします。じゃんけんに負けるとこのインスタンス内のアカウントが凍結(suspended)になります。@megamiをリモートフォローで外部インスタンスからも参加が可能です。その場合負けてもアカウント本体が凍結することはありませんが、参加はできなくなります。

動機
「デスゲーム×SNSの組み合わせ」というアイデアが以前からあって、マストドンという存在を知って実際に形にしてみました。
実装
cronで定期イベントを発生させています。アカウントの凍結は直接SQLを走らせています。
じゃんけんは「ぐー」「ちょき」「ぱー」の他に絵文字でもいけます。
バランス調整として「復活」のイベントも実装してみました。倒したモンスターも定期的に復活してきます。複数人でどこまでモンスターを倒し続けることができるかに挑戦する感じになっていると思います(挑戦者求むです)。
位置情報を付加するTootmap

GitHubのAppsのリストに載せてもらえました。
機能
ハッシュタグ付きトゥートに位置情報を付加します。地図上ではハッシュタグTLをインスタンスから取得し、位置情報の付加されているトゥートをマッピングします。また地図上の任意の位置、もしくは端末の現在位置を付加したトゥートが可能です。

動機
自分のトゥート内容の傾向(〜でこれ食べた、〜でここに来た)や、フォローしてる人のアカウントの方向性を見るに、位置情報の実装があればもっと楽しめるんじゃないかと思いました。ツイッターでは近辺の施設や端末自身の位置情報を付加することが可能です。
実装
調布丼(2017/12/09現在SSL期限切れ中)の方で位置情報の実装が独自で行われており、その実装が公開されていました。ただし当時の自分はRuby on Railsの知識に乏しく、頻繁に発生するマストドンのバージョンアップの追随が厳しくなるだろうという予感と、他のインスタンスの人でも利用できるような実装が望ましいと思いこれを見合わせました。
マストドンに手を加えず位置情報を付加する方法として「トゥート内に呪文を埋め込む」のが手っ取り早いと思いました。これであればコピペでスマホアプリからも投稿が可能です。その呪文を埋め込まれたトゥートを抽出してマッピングする外部ページを作る必要がありますが、呪文がその外部ページへのリンクを兼ねれば誘導はしやすくなります。さらに地図側では呪文中の位置情報を初期表示位置にすれば無駄の無い実装になりそうだと思いました。

(呪文の例)
呪文の埋め込まれたトゥートを取得する効率を考えた時にハッシュタグTLを対象にするのが良いと考えました。ハッシュタグTLであれば連合に流れてくる外部インスタンスのトゥートも拾えますし、ハッシュタグを切り替える事で取得するTLが切り替わり、多様な地図を表示できる事になります。
当初は地図上に表示される呪文をコピペしてマストドンの投稿フォームに貼り付けという手順での利用でしたが、マストドンに実装されたshare機能を利用して呪文付き投稿を行えるようにしています。
メディアTLを公開するTootpic
機能
ハッシュタグTLに含まれる添付ファイル、Youtube等のリンクを抽出してそれらを個別に表示します。
動機
#写真部 #ラーメン #紅葉狩りバトルロワイヤル で写真が流れてきたり、 #pubg #np で動画が来たりします。マストドンのTL中では動画が埋め込まれなかったり写真がトリミングされて表示される等、あまり表示に恵まれていません。では写真・動画をメインで見せるページがあればまた違う楽しみがあるんじゃないかと思って作ってみました。
実装
ハッシュタグTLに対して添付ファイルがあるか、Youtube、ニコニコ動画等の埋め込みリンクが本文中に含まれているかを判定してそれらを個別に抽出しています。
・Youtube
・Twitch
・ニコニコ動画(sm○○○)
・SoundCloud
が埋め込みリンクの対象です。
ドメイン+ハッシュタグの組み合わせを指定してページを開く呪文も使えます。
https://tootpic.net/?domain=mastodon.art?tag=mastoart
https://tootpic.net/?domain=pawoo.net&tag=ワンドロ
shareボタンも一応付けています。
ハッシュタグブーストアカウント
こんなのあれば便利かなと思って作ったものです。アイデア紹介です。
@biwakodon.com#関西連合
@biwakodon.com#写真部
LTLのハッシュタグつきトゥートをブーストします。通常外部インスタンスのハッシュタグTLには、外部インスタンスからフォローされているアカウントのトゥートしか届きません。しかしこのアカウントを外からフォローしてもらえれば、ブーストによってびわ湖丼LTLのハッシュタグトゥートが全て拾い上げられます(もちろん「公開」範囲であることが条件になります)。
実装にはStreamingAPIを使っています。このエンドポイントの一覧にはありませんが、ソースを見ると/api/v1/streaming/hashtag/localなるエンドポイントがあるので、これを見ています。
~何か作る上での方針的なもの~
自分は自身の管理しているマストドンに対して「これは自分が運営しているSNSだ」という意識が、もしかしたら薄いかもしれません。どちらかと言えば「みんながやってるマストドンに参加している」になります。なので、作るものの基本方針は「どのインスタンスからでも使える事」になります。
例えば誰かが面白いbotを作ったとします。インスタンス内での利用を想定されたものだったとしても、リモートフォローで他のインスタンスにもトゥートが拡散する可能性があります。つまりはインスタンス内で楽しむものだったのが実はマストドン(あるいは同じプロトコルを使ったSNS)全体に対しての実装になるという事です。自分はそうなるのが面白いと思っています。
とは言え例外
例外でマストドンに直接手を入れたカスタマイズを紹介しておきます。
トゥートにドメインクラスを追加してカスタムデザインに利用
機能
ホームや連合に出てくる外部インスタンスのトゥートに、インスタンス毎に独自スタイルを適用できるようHTMLのクラスを埋め込みます。
実装
カスタマイズ部分はGitHubで公開しています。
例えば「biwakodon.com」から発信されたトゥートなら「biwakodon-com」というクラス名がトゥートのHTMLに埋め込まれます。これを利用してマストドン本家の機能であるカスタムデザインでインスタンス毎にトゥートに独自スタイルを適用できます。

こんな感じで、
.mastodon-nara-jp{ background-color:#28372a }
.mstdn-osaka{ background-color:#352837 }
.mastodos-com{ background-color:#283637 }

うっすら背景色を変えています。
最後に
今日12/9は19:30からブラタモリで彦根です。
びわ湖丼3ヶ月目
2017年07月15日
色々あったこと、やってきたことなどをまとめます。最初の1ヶ月は前回まとめているので、それ以降の2ヶ月分です。
お天気bot、びわ湖の水位bot
滋賀の天気をトゥートするbotと、びわ湖の水位や瀬田川洗堰の放流量をトゥートするbotを作りました。毎朝1回トゥートしています。
これに合わせてびわ湖丼でのbotアカウントの事についてのルールを作りました。
びわ湖の水位は下流の人も気になるそう。
関西連合インスタンスを色分け表示
うっすらとですが、トゥートの背景に色を付けました。連合TLで繰り広げられているやり取りが少しでも可視化できればと思ってマストドンのカスタマイズをしました。

その後追加。
マストドン会議4
マストドンの火付け役の人たちが主催するマストドン会議が大阪であったので行ってきました。
http://osaka-mastodon.peatix.com/?lang=ja
すでにこの時に会場間違えてる。
無事たどり着いて、ステッカーいただきました〜。
ニコ生のURL。プレミアム会員はタイムシフト見れるのかな?
http://live.nicovideo.jp/watch/lv299499733
びわ湖丼マップ
マストドン会議4に間に合わせるべく作りました。
当初の構想。
アプリからも使えたら良い。
ひとまずマストドン会議4に間に合う。
びわ湖丼マップは連合のハッシュタグTLをマップ表示してるだけなんで、いろんな地図が作れます。びわ湖丼の連合に載るアカウントであれば、他のインスタンスからも掲載可能です。
使い方を記載しました。
擬人化
ほしかどよぞらさんがびわ湖丼を擬人化されました。マストドン会議の配信を見て、色々とマストドンの擬人化をされておられるようです。
その後もこのキャラクターの画像を描かれています。
写真部。
花火。
とても可愛らしいと思います。
対話AIbot
鹿児島の人にご教示いただいて対話AIbot作りました。びわ湖の水位も答えてくれます。
ニュースの要約とかさせてみたい。
その後、よぞらさんにアイコン作っていただく。

どちらかというと水位とか滋賀の情報をトゥートする方をメインにして、それ以外の例外的なやり取りを対話AIに任せる、という方向でやりたいなあと思っています。
ハッシュタグブーストbot
びわ湖丼と他のインスタンスの人とでやりとりの行き違いが少しでも減ればと思って作りました。
こちらをフォローすれば、びわ湖丼内でハッシュタグの付いたトゥートが自動的にフォローした人のホームに流れこんでくるという寸法です。
状態監視グラフ表示
zabbixの監視です。
こちらはびわ湖丼のページの応答時間がどれくらいかかっているかを1分おきに確認しているグラフです。

こちらはびわ湖丼がトゥートとかをやりとりした実績のグラフです。

花火大会背景変更
夏はびわ湖の周りで結構花火大会があります。花火大会のある夕方〜夜は背景に花火を打ち上げてみることにします(手動)。
花火大会情報はこの辺参考に。
埋め込みツール
これが無いとブログ書く気になれなかったんで自作しました。
ご自由に使っていただければと思います。(動作確認はほとんどしていませんが…)
以上。
これまでの自分のMastodonの事まとめ
2017年05月21日

マストドンサーバー構築しようと思って頓挫。
— 和金 (@_wakin) 2017年4月15日
4月15日。平日のうちに何かのネットの記事を見ていて、休日ということで早速試しました。このときはまだ自分のローカル内。
埃被ってたラズパイにマストドン入れようとしたけどdockerイメージがx86_64用なのか。
— 和金 (@_wakin) 2017年4月16日
次の日、つまづいた原因をなんとなく把握。
ラズパイにマストドン乗せた。とりあえずこれでどこでも持ち運べる(?)。立ち上げてるだけでロードアベレージ1超えてるけど。 pic.twitter.com/pgXmWW4gcs
— 和金 (@_wakin) 2017年4月16日
dockerを使わない手順で初めてMastodonの構築に成功します(以降、自分の中ではdocker無しがデフォルト)。でもこれをインターネットに晒す気はさらさら無し。
自治体はマストドンサーバ立ち上げて地域SNSやったらいいんじゃないかな(適当)
— 和金 (@_wakin) 2017年4月16日
一旦はこれで満足しました。
社畜ちゃんの人のマストドンに参加してる。マストドンは廃TLがデフォルトなのか。
— 和金 (@_wakin) 2017年4月17日
立ち上げてからそう言えば使ったことなかったと思い、適当なインスタンスに参加しています。そこで初めてだいたいこういうものかと把握。トゥートはせず、ひたすらROM。他にどんなインスタンスがあるのかと調べたりします。
https://t.co/iomldcQbGa びわ湖の周りに住んでる人、通勤・通学してる人、その他ゆかりのある人向けのマストドンインスタンス立ち上げてみました。平和堂や飛び出し坊やなマストドンです。
— 和金 (@_wakin) 2017年4月20日
4月20日、突然さくらVPSを借りてお名前.comで初めてドメインの取得を行ってびわ湖丼を立ち上げます。
載せてもらえた。 https://t.co/qh6gzsJWhz
— 和金 (@_wakin) 2017年4月20日
多分、地域系としては10番目以内には載せてもらえてました。
自分がMastodonを立ち上げて公開したきっかけとしては、このMastodon一覧の中に「びわ湖」ってあったら面白いなという事だったと思います。まだ全体的に数も少なく、「東京」や「大阪」といった都市圏だけがある中で、突然地方の「びわ湖(滋賀)」が来る事の意外さ。きっといつかは他の誰かが立ち上げるんだろうけど、このタイミングで載せられるのは今しかないと思い、自分で立ち上げました。
実は「びわ湖に暮らす人」なんで、正確には「滋賀丼」ではありません。しかしまあ、滋賀を流れる川は大体がびわ湖に注いでいるはずなんで、甲賀の人も東近江の人も何も問題はありません。
「滋賀」でなく「びわ湖」としたのは、概念より実体のある方が写真を撮ったり話題にしやすいんじゃないかとなんとなく思ったからです。あと湖とか山とか、その土地にある何かで集まれるのってもしかしたらびわ湖くらいなんじゃないか?という気もしたからです。(「富士山」もそのうち立つといいな)
「マストドン 一覧」で出てくる大体の一覧サイトに載るようになり、ここで一区切りつきました。
(あ、人来てくれてる。良かった)
— 和金 (@_wakin) 2017年4月21日
初めて人が来て喜んでいます。
ローカルの仮想環境にマストドンの実験環境作ってスナップショット取った。色々試さないと。
— 和金 (@_wakin) 2017年4月22日
Mastodonの構成要素について全く知識・経験が無かったため、慌てて検証環境を構築しています。
自分の経験値。
Ruby on Rails → ほぼ無し
Sidekiq → 初耳
React → ほぼ無し
Redis → 初耳
Git → コマンドベースはほぼ無し(これが痛い)
Postgres → 経験あり(唯一の救い)
VirtualBoxのクローン機能手軽に使えていいなー。mastodonいじりが捗る。
— 和金 (@_wakin) 2017年5月9日
普段VMWareだったので、VirtualBoxの使い勝手の良さに喜んでいます。

わからないことだらけなのに何故かカスタマイズに手を出します。
びわ湖丼では、「:biwako:」と打つことで絵文字に変換されるカスタマイズを行っています。無駄にカラフルです。
ちらほらと意見が上がってるのを見るけど、マストドンは個人運用という点を考えても、恒久的なサービスよりはイベント的な、揮発性のあるインスタンスとして立ち上げる方が向いてそう。例えば「今季アニメインスタンス」とか。そうすると問題は周知の方法になる。
— 和金 (@_wakin) 2017年5月14日
DNSのレコードが伝播していくみたいな、そんな感じでインスタンスの存在情報が拡散していく類のサービスの登場があると、マストドンは捗ると思う。
— 和金 (@_wakin) 2017年5月14日
Twitterとの差別化、Mastodonの使い方を模索しています。
インスタンス内で何かしら勝負事をして、負けたらアカウント停止っていうマストドン。
— 和金 (@_wakin) 2017年5月14日
じゃんけん丼のコンセプト。
SNS的なゲームってもうあったりするんかな。負けたら基本的にゲームから退場するデスゲーム。人狼的なルールでやったら面白そうやしFPSでやってもいい。要は揮発性を持ったゲーム。
— 和金 (@_wakin) 2016年1月11日
実は過去に「SNS上で負けたら退場のデスゲーム」は人狼やった時にふと思ってました。最後の「揮発性を持ったゲーム」っていうのはちょっと違いますが、要は「いつまでもずっと参加できると思うなよゲーム」です。
なんで俺ちょっと奈良を盛り上げよう思ってマストドン立ち上げただけなのにこんな鹿ばっか率いた信長の野望みたいなことなってんねん。#鹿トドン #マストドン https://t.co/RxfHBQjpkm pic.twitter.com/VhuLOix2D3
— 吉村浩嗣 (@hirotsugun) 2017年5月19日
一つ転換期が来ました。鎖国されていた鹿トドンの管理人さんから、近隣の地域系インスタンスということでお誘いを受けます。びわ湖丼はあっさり陥落しました。
https://t.co/qESmLJJIvX もうひとつマストドン立ち上げてみました。こっちは実験的に色々手を入れてます。遊んでみてください。 #mastodon #マストドン
— 和金 (@_wakin) 2017年5月19日
5月19日、さくらVPSでもうひとつサーバを借りてふたつ目のインスタンスを実験中ということですが立ち上げました。
じゃんけん丼の詳細についてはこちら。まだまだ実験途中で、これから色々と改良予定です。
登場人物色々作れた面白いな。
…いまにいたる。
biwakodon.com立ち上げました
2017年04月22日
地域系のマストドンも人口の多い都市を中心にいくつか立っているのを見て、思いました。
今のうちに滋賀のマストドン立ててしまおうか?
ということで立ち上げました。 biwakodon.com
私の個人運用です。参加される場合、他のサービスのアカウント情報(パスワード)を使いまわすのはなるべく避けてください。
このインスタンスでは、地域系の話題を中心にしていきたいと思います。
みなさんの参加をお待ちしています。

そういえば、なんか西川兄貴が野洲に帰ってきてるようですね。
野洲なう!四半世紀ぶりに在来線乗ったなう! https://t.co/vwI64u0zwt
— 西川貴教 (@TMR15) 2017年4月22日