僕とMastodonと500エラー

はじめに

さて、Mastodonが日本で流行ってもう丸一年という月日が過ぎた。

 

一応は、Mastodonインスタンスの管理人をしている身としてはこれまでの一年間での色々な出来事を振り返ってみようかと思う。

 

これはそんなとある管理人の回想だ。

 

この一年間の軌跡

とりあえず、ざくっとこの一年間を回想してみよう。

 

2017年4月

Rubyのパパ:MatzさんのTwitterなどからMasotodonというRuby on Railsで開発されたSNSがあるという事実を知ったのは事の始まりだった。

 

Masotodonの存在を知り、いろいろな紹介記事や実際のインスタンスの連合タイムラインを眺めていた頃だ。

 

流れていく連合タイムラインを眺めながら、「Twitterとも違った感じなのか……」といった感想を抱いていたね。

 

2017年5月

世間様のゴールデンウイークにあやかって休日を過ごしていたんだけども、「よし、Mastodonを建てよう」となぜか一念発起。

 

数日中に、ドメインやサーバの準備を行って5月2日に一次創作物全般インスタンスとしてMastodonインスタンスを建てた。

 

当時は、「数か月くらい持てばいいかなぁ……」という感覚だった。正直、今ほどサーバ周りの知識もない頃だったのできちんと運用していけるか心配なところはあった。

 

とりあえず、Mastodonを建てたからにいは人を呼び込もうと思いTwitterにて宣伝したんだよね。でも、それがまずかったかもしれないと今になると思うね。

 

なにせ、すでにTwitterというシステムに乗っかかっている人にわざわざ別なSNSを勧めても乗り気にはならないものだもの。

 

たとえるなら、スペースノイドのように棄民政策としてスペースコロニーに送られたならともかく、自らすすんで新天地に行くという決断は人間には難しいものだったのだと思う。

 

今も、Mastodonを続けている人たちはこの辺りが他な人とは違ったのかもしれないね。

自ら新天地を目指しているところがあったからこそ、今でもMastodonを続けているのかもしれない。

 

まあ、結論としてはこの初期段階での呼び込みが不十分だったのでアクティブユーザーも少なめなインスタンスとしての現状が出来上がったんだろうね。

 

そのおかげで色々とご縁もあったし、ユーザーの皆さんと色々話ができているところもあるしね。

 

2017年6月~2017年8月

 

ちまちまと運用を続けながら、Mastodonをやってた頃だね。

このころはTwitterで大体のやり取りをしていたので、Mastodonはあまり使っていなかったね。

 

うろ覚えだけど、SSL証明書の更新ミスってたりして、一時期アクセスできなかったりしたのもこの時期。

 

バージョンアップなどもほとんどせず、基本的にそのまま放置していた時期ともいえるね。

 

2017年9月

 

RubyKaigiに参加して、「そういえば、Mastodonインスタンス作ってたな……」とか思い出してた頃。

久しぶりにログインしてLTLが全然流れていない状況に少し恐怖を感じもした。

 

で、久しぶりにログインしてMastodonライフを思い出し始めていたね。

他なインスタンスの管理人さんなんかをフォローしだしたのもこの辺からだったと思う。

 

そんなこんなしているうちに、金曜ロードショーで「天空の城ラピュタ」をやるというのを知り、サーバ周りの環境を確認せねばと決意。

 

ついでに、バージョンアップなども全然していなかったので、それも同時に処理してた。

 

この一年の中でこの時は転機だったと思う。

この時バージョンアップしたり、他な管理人さんたちをフォローしていなかったら今のCreatodonはなかったかもしれない。

多分、そのままSSLが切れたまま、情報の海をさまよう墓標と化していただろうね。

 

2017年10月

zundaさんの記事を見て、Herokuを使ってMastodonを手軽に構築できると知る。

これがHerokuを使い倒し始めるきっかけでもあったね。

zundaさんのおかげでガンガン使わせていただいてます。誠にありがとうございます。

 

で、同時に試験的にインスタンス建てたりしてたのがこの頃かな?

いわみどんを建てたのもこの頃のはず。

 

あと、いわみくと!って会でMastodonについて話をしたりしてた。

 

2017年11月

 

少しずつ、フォローしている人を増やしたりしてた頃。

 

新規のユーザーさんとかも増えてきたのもこのあたりかな?

 

それと、使用しているさくらクラウドの仮想サーバの容量が目いっぱいになって500エラーと格闘したのもこの頃だっけか?

 

2017年12月

 

年末の忙しさの最中、新しいバージョンが出るたびにアップデートしていたころだねー。

 

あと、Creatodonのユーザー向けにCreatodonFolioってWebサービスを作り始めたのもこの頃。

 

2018年1月

 

あけおめことよろによるサーバへの負荷を恐れながらの年越しをして、新年を迎えていたかな?

 

あと正月ののんびりした時間を使ってRailsでのMastodonアカウントでのログインの実装とかやってた。

 

2018年2月

 

MastodonRaterとかを弄ったりしていたのはこのころかな?

この頃からMastodon向けのサービスとかを作りたいなぁと思い始めたころ

 

あと、ぜまさんの背景透過記事を参考にカスタムテーマを実装してたりしてたのもこの頃だと思う。

 

あと、いわみくと!で再びMasotodonについて話をさせてもらったりした。

実際に話をしながら、実際にMastodonをデプロイしたのは肝が冷えたなぁ……

 

2018年3月

 

実際に、Mastodon向けのWebサービスとかbotとかを作り出したのはこの頃だね。

メインで力を入れているのはFoodsChecker for Mastodonかな?あとはbotくらいなのでそんなに力を入れていないかもしれない……(本当は忙しくて手が回らない感じ)

 

PleromaとかHivewayとかを建てたりしてたのもこの頃のはず

 

2018年4月

 

 CreatodonのユーザーさんにCreatodonの画像(うちの創作っ子)を書いてもらったり、Masotodonでログインできる診断アプリもどきを作ったりしてた。

 

ざっくりこの一年を振り返るとこんな感じかなぁ……

今後もゆるーくMastodonライフをエンジョイしつつ、色々開発していこうかなぁと思います。

シンプルなミュージックプレイヤーを作ってみた

はじめに


自分で使うようにものすごくシンプルなUIのミュージックプレイヤーが欲しくなったので作ってみた。

これはその時のメモ書き。

 

作ったもの

 

実際に作ったものはこちら

gamelinks007.net

 

 

 

作った時に使ったもの

 

シンプルで使いやすいGUIライブラリとして cvui を使用。

github.com


ウインドウやボタン回りなどのUIはすべてこれで処理してる。

 

なお、cvui を使うために OpenCV も別途必要なので注意。

github.com

 

音源自体の再生には使い慣れている DXライブラリ を使用。

 

DXライブラリ置き場 HOME

 

それと、ディレクトリ内のmp3データを読み込む用にBoostも一部使ってる

Boost C++ Libraries

 

開発環境としては、Visual Studio 2017 Community を使用。

 

制作時のあれこれ

 

まず、デスクトップアプリとして制作せず、コンソールアプリとして制作。

 

コンソールアプリなので、コンソール画面を消すために以下のコードを追加

// Hide Console Window
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

 

音源の読み込みに関しては、C++版のLINKSで使った素材読み込みのソースを再利用

 

github.com

 

 

あと、気を付けるのはOpencvのDLLがあるところにパスを通す必要があるくらいか?

 

おわりに

 

シンプルなミュージックプレイヤーが作れたので、これを改良してMastodonへTootできるミュージックプレイヤーとかに作り替えても面白そうかもしれない?

 

参考資料

https://boostjp.github.io/tips/filesystem.html#enumerate-file

http://dxlib.o.oo7.jp/cgi/patiobbs/patio.cgi?mode=past&no=299

https://dovyski.github.io/cvui/

 

GCP上の同じVMインスタンス内にMastoonとHivewayを建ててみた

はじめに

以前から気になっていた、同じ仮想VM内で複数のMastodonを建てれないかという疑問を実際に試してみた。

 

これはその時の備忘録。

 

建てたもの

 

今回、GCP上のVMインスタンス内にMastodonとHivewayを建ててみた。

 

github.com

 

github.com

 

MastodonとHivewayにしたのは単純にどちらも同じ建て方であること。

それと、それぞれのアカウント名やDB名などが異なっているので建てる際にユーザー名の重複などをあまり意識しなくてもよかったので、この二つを使用した。

 

実際のインスタンスの建て方

基本的には、どちらも公式の手順通りに進めていけば問題なくインスタンスを建てることが可能。

ただ、サービスとして使用するportの設定をいじる必要がある。

 

変更箇所としては、nginxのポートやservice用の設定ファイルを作成するところとかか?

あと、Redisは個別に設置しておかないとストリーミングが上手くいかないので注意が必要。

 

Mastodonのみを複数建てるなら、DB名とかをいじる必要はあるね。

 

結局のところ

GCP上の単一VMインスタンス上にいくつかのMastodonインスタンスを建てるのは可能だと思う。

 

ただ、GCPであればいくつものVMインスタンスを単一のプロジェクト内で作成できるのでそんなにうまみはないかも……?

 

コストをかけれるなら複数の仮想VMインスタンスMastodonサーバを設置するほうが後々の混乱も少ないだろうしね。

 

例えば、さくらのVPS内に複数のMastodonインスタンスを建てるなどするならうまみもありそうだけど……

 

もうちょい、色々試してみる必要はありそう

 

Mastodon,Pleroma,Hiveway 其々を建ててみた所感

はじめに

この一週間くらいの間で、Google Cloud Platoform 上にMastodon,Pleroma,Hivewayを建ててみた。

 

この記事は、その時に感じた所感まとめ。

 

Mastodon

github.com

昨年四月に建てたときから数えるといくつものインスタンスを実験的に建ててきたので、もう手慣れた感じでインスタンスを構築できるようになってきた感じ。

 

mastodon:setup というrakeタスクが追加されていたようで(何時から……?)、.env.productionなどの設定がかなり簡単にできるようになっているのには感動したねー

github.com

 

お陰で、かなりインスタンス構築は楽になったかな?

 

ただ、後述するPleromaと違って、nginxのテンプレートがファイル内にない(?)ようなのでちょっと手間が残っているかなーという感じ。

 

まあ、それでも昨年四月ごろの頃に比べるとはるかにインスタンスが構築しやすくなっている。

今後も新規インスタンスが出やすいのではないかな?と思うね。

 

Pleroma

git.pleroma.social

数日前に初めて建ててみた。

 

なお、インスタンス構築に関しては、ておりあ氏の記事を参考にさせていただきました。

誠にありがとうございます。

theoria24.github.io

 

建ててみた感想としては、「簡単にインスタンス構築ができるなぁ……」ってところかな?

 

nginxのテンプレートとかもすでにあるので、それを cp なりで指定の場所にコピーして、ドメインなりを編集するだけなので簡単。

 

おまけに、スペックの小さな仮想サーバでもスイスイ動くので良い。

CPUの使用率が結構高めだったりするのは気になる時があるけど……

 

まあ、お一人様インスタンスとしては最適解かもしれないね。

 

ソースコードへのリンクを表示させたり、インスタンス概要を表示させたりが標準のままだとできないので注意。

 

あと、ついでにGCP用のPleromaスタートアップスクリプトも作ってみたりした。

github.com

 

Hiveway

github.com

数日前から日本で騒がれている(海外だともっと前から?)オープンソースソフトウェア。

 

実際建ててみた感じだとほとんどMastodonインスタンス構築の手順は同じ。

 

github.com

 

公式ドキュメント読みながら進めれば、「Mastodonを建てることができる人なら誰でも建てれるのではないか?」と思ったね。

 

実際のところ、インスタンス構築自体はMastodonを建て慣れていればつまるところはないと思う。

 

で、実際にログインしてみた感じだとまさしく「連合が表示されないMastodon」だったねー。

 

Mastodonでエクスポートしたフォローリストをインポートできたので、Mastodonアカウントなりを持っていれば直ぐにいつものホームタイムラインを見ることができるね。

……あとで、Pleromaでも試してみよう。

 

あと、インスタンス構築した後にaboutページなどを開いたらソースコードへのリンクがなかったっぽい?

 

コード編集しようかとも思ったけど、hamlはよくわからんので適当にいじってしまいエラーになってしまった……

 

さいごに

インスタンス構築のしやすさではPleromaに一日の長があるかな?

 

これまでインスタンス構築したという記事やトラブルシューティングの記事など、情報量が多いのはMastodonだろうね。

 

HivewayはMastodonそのもののようなものなのでMastodon関連の情報がそのままとまではいかないも使えるだろうねー

 

ティラノスクリプトのゲームをHerokuへデプロイ(DropBox使って)

今日まとめた記事が意外と反響あったので、ほかに色々できないか試していた

 

gamelinks007.hatenablog.com

 

で、結論から行くとDropBox経由で簡単にHerokuへとデプロイできることが分かった。

なので、Gitとか使えない方でも簡単にブラウザゲームをを配信できる。

 

まず、Herokuへアクセスしてログインする

www.heroku.com

 

アカウントを持っていない方は、Google検索で「Heroku アカウント 作成」とかで調べるとアカウント作成の方法が出るので、それを参照してください。

 

で、ダッシュボードの「NEW」をクリックして、「Create  New App」を選択します。

 

すると「App name」という項目があるので、そこへローマ字でも英語でもいいのでゲーム名を入力(ex: tyranoとか)

 

で、下にある「Create App」を押すとアプリ(サーバ)が作成される。

 

次に、「Deploy」という項目内に「DropBox」の表記があるのでそれをクリック。

 

すると、下に青色のボタンで「Connect to DropBox」というものが表示されるので、それをクリック。

クリックするとDropBoxのパスワードなどを要求されるので、入力してログイン。

 

とりあえず、いったんHerokuでの作業はこれで終了。ただ、Herokuの画面は開いたままでOK。

 

 

次に、DropBoxへ行く。

 

DropBoxに行くと「アプリ/Heroku/<さっき入力したアプリ名>」でフォルダが作成されている。

 

そこへ、以下のHeroku用のソースコードと「public」フォルダを配置する。Herokuへのデプロイ用ソースコード自体は、下のリンク先で緑色のボタン(「Clone or Download」)を押すと「Download ZIP」というのがあるので、そこからダウンロードできる。

 

github.com

 

なお、「public」フォルダ内にはブラウザ向けにエクスポートしたティラノスクリプトのゲームデータを入れておくこと

 

DropBoxにデータをアップロードしたらDropBoxでの作業は終わり。

再び、Herokuに戻る。

 

さっきのHerokuの画面に戻ると一番下に「deploy」と書かれた紫色のボタンがある。

あとは、それをクリックするだけ。

 

クリックした後はのんびり処理が終わるのを待つだけ。

終わったら「View」ってボタンを押すと実際に動いているブラウザゲームを見れますね。

 

最後に、HerokuのFreeプラン(無料のプラン)では500Mbまでしか使えないので大きいゲームデータだとエラーが起きる可能性があります。

その辺はご注意ください。

 

ティラノスクリプトで作ったブラウザゲームを無料でサーバにアップするものを作った話

以前、ティラノスクリプトで制作したゲームをブラウザで動くものにしてアップロードしようと思ったことが本記事のきっかけ

で、作ったものがこちら

github.com

 

これを使うことで、海外のPaasであるHerokuへとティラノスクリプトやティラノビルダーで作ったブラウザゲームがリリースできるようになる。

 

内部の構造としては、Gemfileとかが使われていることから分かるようにRackを使っている。

github.com

 

基本的には、Rackでブラウザゲーム用のindex.htmlを参照させてやってるだけ。

なので、ティラノビルダーで作ったものもいけると思う。

 

まあ、公開に至った思ったきっかけにはシケモクMKさん(ティラノスクリプトの開発者さん)が「海外向けに色々力を入れたい」的なことをTwitterで呟かれたのを思い出したから。

 

一応、GitHubのReadMeには英語でのデプロイ手順書いといたから役に立てばいいかなと思う。

 

恐らく、HerokuへのRackでの静的Webサイトをアップする方法が上手く行ったので他な環境(Node.jsとかPHP)でもできるんじゃないかと思う。

 

今後はその辺も試してみようかと思うね

初めて、大きなOSSにちょろっと貢献した話

ゲームリンクスでのゲーム制作をより効率的にできるようにとHeroku上にRedmineを先日デプロイした。

 

ちなみに、Qiitaでその時の手順を公開中

qiita.com

 

 

Redmineをゲーム制作に使用しようと思ったきっかけは、以下の二点になる。

 

1:外部の方々と共同でゲーム制作をすることが増え、進捗把握などが困難になり始めたこと

 

2:「瑠璃の泪」制作時にシナリオやプログラムをGit管理にしたのが便利だったので、プロジェクト管理ツールを使用したいと考えたこと

 

 

そういった背景から、Redmine を導入しようと考えた。

 

 

で、色々とRedmineのインストール方法を調べてたり、詳しい方とやり取りしてく中で「Redmineのドキュメントがあまりアップデートされていない」ということを知ったので

 

「なら、Herokuにデプロイできた手順を英語で書き直したら他の人も便利になるのでは……?」

 

と思い、さっそく RedmineWiki に  Redmine 3.XX系をデプロイする手順を書いてみた。

意外と、良い反応も頂けて嬉しい限り。

 

www.redmine.org

 

実際に、このデプロイ手順をまとめるにあたっては以下の記事を参考にさせていただいてます。

stackoverflow.com

medium.com

 

 

で、なんでまたこういったことをやろうかと思ったかといえば須藤さんのこの記事を読んだのが背景にある。

 

gihyo.jp

 

これを読んで、普段から使わせてもらっているOSSに何かしら貢献してみたいとおもってたんだよねぇ。

で、ちょうど僕のやってたこととかみ合ったこともあり、今回Wikiに書かせて頂いた感じだね。

 

 

やってみて思ったことは、「OSSへの貢献って意外と気軽にできる」ことかな?

今回は、ちょろっと手順を英語で書いただけだし。案外、楽しかった(ただ、フィーリングで英語かいてるから文法が大丈夫か不安……)

 

須藤さんが記事の中で触れているように意外とOSSへの貢献って最初の一歩を踏み出せるか否かなんだろうなぁ、と思う。

 

今回、一歩踏み出せたことだし、何かしらチマチマ貢献できそうなことがあればやっていこうかと思う。