生存報告などを自動的にMastodonへとTootしてくれるようにしてみた

はじめに

この記事は、Mastodon Advent Calendar 2018 の最終日の記事です

 

qiita.com

 

バイタルなどをチェックして生存情報などをMastodonへと転送できるようになるTipsです

 

つくったもの

Fit Bit Charge3 と IFTTT と Webhook を組み合わせて、「鯖缶が生きているかどうか?」「鯖缶が何をしているか?」などをMastodonへとTootできるようにしました

 

f:id:gamelinks007:20181209220551p:plain

実際のTootしている風景

 

その他、入眠時には「眠りに落ちました」といった形でTootするようにしています

 

やったこと

Mastodon

アクセストークンの発行を行いました

 

Fit Bit Charge 3

近場の電気屋Amazonなどで Fit Bit Charge 3を買います

 

ちなみにAmazonではこちらから

https://www.amazon.co.jp/dp/B07HPKWGJH

 

僕は、ビックカメラで買いました

 

あとは、Fit Bit Charge 3を動くように設定するだけ(アカウントの作成とか)

 

IFTTT

まず、IFTTTにアクセスします

ifttt.com

 

「MyApplets」→「New Applet」の順にクリック

f:id:gamelinks007:20181209221548p:plain

 

f:id:gamelinks007:20181209221708p:plain

 

はじめの「this」には「Fitbit」を選ぶ

 

f:id:gamelinks007:20181209221918p:plain

f:id:gamelinks007:20181209222040p:plain

 

で、「Daily activity summary」を選択

 

f:id:gamelinks007:20181209222225p:plain

 

次に、「that」 に「Webhook」を選択

 

f:id:gamelinks007:20181209222339p:plain

f:id:gamelinks007:20181209222418p:plain

 

で、「Make a web request」を選択

 

f:id:gamelinks007:20181209222605p:plain

 

以下のような画面が表示されます

 

f:id:gamelinks007:20181209222706p:plain

 

URLには

 

https://<インスタンスのURL>/api/v1/statuses

 

Method は 「POST」

 

Content Type は 「applicaton/x-www-form-urlencoded」

 

Body に「access_token=<取得したアクセストークン>&status=今日もCreatodonの鯖缶は生きています&visibility=public」

 

入力後、「Create Action」を押す

 

最後に、アプリ名に「Watch Me」とか入力して「Finish」を押せばOK

 

つくってみて

意外と簡単にできたなぁという印象

あと、忙しい時の生存報告とか自動化できるので楽かなぁと思う

 

鯖缶の方で興味ある方は試されてはいかがだろうか?

 

創作関係のハッシュタグをブーストするBotをつくってみた

はじめに

 

この記事は Mastodon Advent Calendar 2018 の16日目の記事です

 

qiita.com

内容は、Mastodonで創作関係のハッシュタグを拡散してくれるBotを作ったときのことになります

 

作ったもの

gamelinks007.net

 

#創作 などの創作系ハッシュタグや #pixiv などのハッシュタグハッシュタグタイムラインから検知してブーストしてくれるBotです

 

Pawooからのイラストなどが良くブーストされている感じですねー

 

ソースコードはこちらになります

 

github.com

 

やったこと

 

 

Gemfileに

gem 'mastodon-api', require: 'mastodon'

gem 'omniauth-mastodon'

gem 'omniauth'

gem 'dotenv-rails'

を追加して、bundle install

 

あと、環境変数として

MASTODON_URL=<インスタンスのURL>

ACCESS_TOKEN=<インスタンスで取得したアクセストークン> 

 をセットした

 

最後に、lib/tasks/scheduler.rake を作成し、

task :toot => :environment do

  client = Mastodon::REST::Client.new(base_url: ENV["MASTODON_URL"], bearer_token: ENV["ACCESS_TOKEN"])
  @keywords = Keyword.all

  #指定のハッシュタグを含むTootのBoost
  @keywords.each do |keyword|

    client.hashtag_timeline(keyword.key, :limit => 5000).each do |toot|
      if !toot.reblogged? then
       response = client.reblog(toot.id)
       response = client.favourite(toot.id)
      end
    end
  end
end

 こんな感じにコードを追加

 

あとは、Keywordモデルを作成して、そこへブーストしたいタグを登録していくだけ(Railsのコンソール使ってやってる)

 

運用にはHerokuを使用し、Heroku Scheduler を使って定期的にタスク処理を走らせてますねー

 

jp.heroku.com

 

つくってみて

意外と簡単にできたかなとは思う

 

とはいえ、ハッシュタグの登録画面とか作ってないので手抜き工事もいいところ……

今後は、そのあたりも実装していこうかなと思う

 

ちなみに、Creative BoosterのおかげでCreatodonの連合タイムラインは結構流れが速くなったかな

Cortanaを使ってMastodonへTootした

はじめに

この記事は、Mastodon Advent Calendar 2018 の15日目の記事です

 

qiita.com

 

今回は、CortanaとIFTTTを使ってMastodonへTootした時のアレコレになります

 

作ったもの

iPhoneにインストールしたCortanaへ「BIG-O Show Time!」と話しかけるとIFTTTを経由して、Mastodonへ「CAST IN THE NAEM OF GOD. YE NOT GUILTY.」と呟かれるようにしてみた

 

「BIG-O Show Time!」と「CAST IN THE NAEM OF GOD. YE NOT GUILTY.」の元ネタはアニメ「THE ビッグオー」から(ちょうど最近見返してたので)

 

作った経緯

少し前にCortanaがIFTTTに対応したという記事を見たのが作ろうと思ったきっかけ

 

で、作ろうとあれこれしてたんだけど忙しくなってきたのでいったん保留にしてた

 

で、「THE ビッグオー」見返してて、「BIG-O Show Time!」てしゃべったら「CAST IN THE NAEM OF GOD. YE NOT GUILTY.」とかTootされると面白いよなぁとか思って再燃した感じ

 

やったこと

今回はiPhone(Cortana)、Mastodon、IFTTTをそれぞれ連携させて「BIG-O Show Time!」→「CAST IN THE NAEM OF GOD. YE NOT GUILTY.」と呟く流れを作った

iPhoneでやったこと

まず、手元のiPhoneにCortanaをApple Storeからインストールした

それとMicrosoftアカウントの設定と言語設定を英語に変更した

 

Mastodonでやったこと

アカウントの設定画面からアクセストークンを発行したくらい

 

IFTTTでやったこと

まず、最初のトリガーに「Cortana」を選択して、「Say a specific phrase」を選ぶ

 

「What do you want to say?」に「big o $」

「What do you want Cortana to say in response?」に「OK」

 

 

とそれぞれ記入する

 

次のトリガーに「Webhooks」を選び、「Make a web request」を選択する

 

で、以下のように各項目を埋めていく

 

「URL」に「https://<インスタンスのURL>/api/v1/statuses」

「Method」は「POST」

「Content Type」は「applicaton/x-www-form-urlencoded」

「Body」に「access_token=<取得したアクセストークン>&status=CAST IN THE NAME OF GOD. YE NOT GUILTY&visibility=unlisted」

 

で、「Create Action」を押す

 

最後に、作成したIFTTTアプリの名前に「BIG-O SHOW TIME!」とか入力して「Finish」を押せばOK

 

あとは、Cortanaで「BIG-O Show Time!」やら「BIG-O Action!」とか呟けば自動的にMastodonへ「CAST IN THE NAME OF GOD. YE NOT GUILTY」とTootされる

 

使ってる感想

英語の発音がへたくそなのか、よく認識されずに失敗してる……

 

あと、これ他なセリフとかに置き換えても使えそうとか思った(例えば、マジンゴーとCortanaに話しかけると「ゼェェェット!」って呟くようにするとか)

 

 

 

 

 

 

 

 

 

C++erのためのMastodonインスタンスを建てた話

はじめに

この記事は、Mastodon Advent Calendar 2018 の13日目の記事です

 

qiita.com

 

建てた経緯

C++を使う人などが集まるインスタンスがあると面白そうというところが事の始まり

 

で、「建てたいなー」とか思いつつ、三か月くらい建てずにいたのよね

 

あるとき、ruby.social というプログラミング言語RubyMastodonインスタンスを見つけた

ruby.social

 

Rubyインスタンスがあるなら、ほかな言語のインスタンスがあるのも面白いよな」と思ったのと、「C++インスタンス建てたいなー」と前々から思っていたこともあり建てたのがC++er丼(undefined丼)

cpper.xyz

 

C++er丼(undefined丼)とは?

C++が好きな人、C++に興味のある方のMastodonインスタンスになります。

分類としてはテーマインスタンスになるのかな?

 

登録されている方々は、皆さんC++に縁ある方々のようです。

というか鯖缶よりC++に詳しい人ばかりなのでC++er丼ではどちらかといえばTootするよりタイムラインを眺めていることのほうが多いです

 

カスタマイズされた機能としては デフォルトハッシュタグとして #cpp というタグを実装されています

 

この機能は、theboss.techで実装されている機能をcherry-pikして導入されています

この場を借りて、感謝申し上げます

theboss.tech

 

undefined丼ってついてるのは?

当初、デフォルトハッシュタグなどの機能をcherry-pikで取り込むことができず、ハッシュタグがすべて #undefined となったことに由来しています

 

さくっとcherry-pickしてOKかと思いきやTootするタグがすべて #undefined となり、ユーザーさんたちが「undefined丼」やら「未定義動作」といった発言も出てました

 

 

BOSSの支援を受けつつ、最終的には正常に動作するようにはなりましたが、その時のミスを忘れないという意味で「undefined丼」という名前を残すようにしました

 

まあ、「C++だと未定義動作踏み抜くこととかあるし、良いんじゃないかな?」という思いもあったり……

 

今後

今後もほぞぼそとFediverseの片隅でC++についてTootできればなと思います(未定義動作とかは踏みたくないけど……)

Firebaseを使ったリアルタイムチャットアプリを作ってみた

はじめに

この記事は、Mastodon Advent Calendar 2018 の12日目の記事です

 

qiita.com

 

Firebaseにはまった時に作ったリアルタイムチャットアプリの紹介をします

 

作ったもの

MastoChatというリアルタイムにチャットの内容が更新されるチャットアプリを作りました

 

MastodonChat

 

github.com

 

実装&運用

バックエンドをRuby on Rails、フロントエンドにVue.jsを使用して実装しています。

 

またリアルタイムでのチャット内容の更新はFireBaseのリアルタイムデータベースを使用し実現しています。

 

firebase.google.com

 

ソースコードを読んでいただければわかりますが、そんなに複雑な実装をしているわけではないですね

 

実装自体も二、三日で済んだのでサクッと作れた感じです。

 

まあ、サクッと作れたのはチャット更新をFireBaseのリアルタイムデータベースのおかげですけどねー

 

運用に関しては、Heroku+GitHubでmasetrブランチにコミットされるたびに自動でデプロイがされるようにしています。

 

今後など

 

今後は、画像の投稿などもできるように機能拡充していきたいと思いますねー

 

とはいえ、あれこれ作りすぎて一人では対応ができそうにないかも……

誰か一緒に作りません?

 

ご興味のある方はMastodonのほうでメンションかDMしていただければと思います

MastodonのつぶやきをまとめられるTootGetterを作った話

はじめに

この記事は、Mastodon Advent Calendar 2018 の8日目の記事です。

 

qiita.com

 

MastodonのTootoをまとめられるサービス「TootGetter」を作った時のアレコレになります

 

作った経緯

ちょうど、松江Ruby会議09が終わって少し経ったぐらいの頃にTogetterで松江Ruby会議09のつぶやきをまとめられたのが事の始まり。

 

togetter.com

 

僕もMastodonで実況してて、それを知ってたフォロワーさんから「MastodonでのつぶやきをTogetterでまとめれますっけ?」と聞かれたのよね

 

で、調べてみると一応できるみたい

togetter.com

 

その辺のことを調べているうちに、「簡単なものならRailsでつくれそう?」となって作ってみたのが「TootGetter」になるね

 

github.com

 

Tootgetter

 

使い方

Mastodonアカウントでログインし、「New Topic」で新しいまとめを作る

 

で、あとは追加したいTootの埋め込みを取得してきて貼り付ける感じ

 

Privateにチェックを入れると自分しか閲覧できないまとめを作ることができます

 

使い方はこれだけ

 

実装など

Railsでscaffoldコマンドを使い、CRUD周りは実装

 

Mastodonでのログインはこの記事通りに実装

qiita.com

 

やったことといえばそれくらいかな?

 

あと、サーバに関しては安心と信頼のHerokuを使用しています

 

今後の展望

とりあえず、放置したままになっているFireFoxでの挙動を修正したいかなぁ

Bug: Show ボタンと New Topic ボタンが動作しない · Issue #1 · S-H-GAMELINKS/TootGetter · GitHub

 

そのあとはフロント周りをVue.jsへとリプレースしていきたいかな?

 

 

自作の食品管理アプリをMastodonに対応した話

はじめに

この記事は、Mastodon Advent Calendar 2018 の6日目の記事です

 

qiita.com

 

自作の食品管理アプリ「Foods Checker」をMastodon対応し、「Foods Checker for Mastodon」としてリリースした時のあれこれを書いていきたいと思います。

 

Foods Checkerとは?

僕が冷蔵庫/冷凍庫の中身を把握できないタイプの人間だったので、その辺を良しなにできないかと思って今年の初めに作り出したRailsアプリです

 

github.com

 

CSVでの一括登録やJANコードでの食品名自動登録(AmazonAPIとZbarを使ってます)なども機能としてあります

 

基本的にscaffold コマンドをを使い実装しており、あんまり実装で苦労したところなどはなく、すんなりと出来上がった感じでしたね

 

Masotodon対応

で、思いのほかすんなり実装できてしまい、暇を持て余したのでMasotodonへの対応を実装しました

 

基本的には、下記の記事通りにMasotodonでのログイン機能を実装

 

qiita.com

 

で、ログインしているユーザーと登録されている食品等を紐づけるようにしたくらい

 

それと、MastodonBotから登録された食品の賞味期限が切れそうになるとユーザーにメンションを飛ばしてくれる機能も実装しました。

 

反響

IT Media で連載されている「Masotodonつまみ食い日記」に載ったり、るびま(Rubyist Magazine)にも掲載されたりしました

www.itmedia.co.jp

 

RegionalRubyKaigi レポート (68) 松江 Ruby 会議 09

 

今後の展望

最近、Vue.jsとRailsでのフロントエンドとバックエンドを切り分けた実装にハマっているので、Foods Checker for MastodonもVue.jsでフロントエンドに動きをつけていきたいと考えてる

 

あと、Google Cloud Vision API も何かに使えないかと考え中

 

おわりに

自分のために作っていたアプリをMastodon対応したので、いろいろと反響を得れたりしたなぁと思う

 

なので、皆さんも何かしら作っているアプリなりあるならMasotodon対応とかしてみると面白いかもね

 

明日は、7_nanaさんによる「デザインと運営について」です