Re:松江Ruby会議09でMastodonについて話してきた

はじめに

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

adventar.org

 

この記事では、松江Ruby会議09でMastodonについて話した時の心象などを書こうと思います

 

松江Ruby会議とは?

Ruby の聖地でもある島根県松江市で開催される地域Ruby会議です

matsue.rubyist.net

 

当日の様子などはこちらから

matsue.rubyist.net

 

当日は、「僕とMastodon」というタイトルでMastodonについえあれこれ話してた

 

その辺の話はこちらからどうそ

 

gamelinks007.hatenablog.com

 

 

話してみての印象

まず、めちゃくちゃ緊張した……

なんせ、話してる目の前でMatzさんが座っている状況だもの……

 

みんなも想像してみてほしい

生みの親のまで、それを使って構築されたアプリケーションの話するのがどれくらい緊張するか……

 

あと、技術関係の話やMastodonの環境などの話になると皆さん静かに聞いておられたねー

やっぱり皆さんエンジニアなんだなぁと思った

 

まあ、僕としては静かなので余計に精神に悪いことこの上なかったけどもね……

 

驚いたこと

なんということか、Creatodonのユーザーさんと出会うことができた!

 

普段からCreatodonを使わせてもらってることに感謝されたりしたね

 

で、そのまま一緒にご飯に行ってコーディングに関する話とかあれこれ話したり(あと、エンジニアの働き方とかの話だったと思う)

 

 

Mastodon自体の知名度に関して

正直に言えば、かなり知っている人は少なかった

 

何人か実際に使っているというユーザーさんもいたけどそれも片手で数えるくらいのもの

そのあたりに現状のMastodonへの知名度が窺い知れるかなぁ……

 

実際、懇親会でMastodonについて聞かれたんだけど「Mastodonって去年ちょっと流行ったあれですよね」くらいの認識みたいだったし

 

この辺、もうちょいMastodon関係の記事とかイベントとか打てればいいんじゃないかなぁ

 

今年もMastodon関連のイベントはいくつか開催されてるけども、「身内でやってる感」というのがあるかなぁと思った

参加されている人たちのラインナップを見てても、見知った人が多いなぁという印象だったし

 

イベントごととかで身内のノリとかが良くされていると参加しにくいし……

 

 

その辺もうちょいオープンな感じでハンズオンとかハッカソンとかできたらいいんじゃないかなと思った

 

松江Ruby会議では松江で働いているエンジニアさん(海外の方もおられた!)から学生さんまで多種多様な人らが参加してたし、僕も発表する立場として声かけてもらえたりと「参加のしやすさ」環境ができてるんだなぁと思ったのもそう考えたきっかけになってる

 

おわりに

やっぱり新しい人が参加しやすい環境づくりと知名度の確保が今後のMastodonにも必要になってくるんじゃないかなぁと思ったり

 

人がいないとそもそも使われない状況になるし、参加しにくい環境だとその人も増えないという……

 

とりあえず、MastodonのTechな話とかするミートアップなりハンズオンなり開催してみようかと思うね(できるかどうかは別として……)

 

創作関係のハッシュタグをブーストする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さんによる「デザインと運営について」です