Mastodonのお一人様インスタンスを立てた
Twitterは死んだ
タイトルの通りです.Twitterが死んだのでMastodonのお一人様インスタンスを立てて移住しました.
まだまだ全然フォローが少なくてTLが寂しいので,良ければフォローしてやってください.
古のインスタンス
実はかなり前,Mastodonが最初に流行りだしたころにもmstdn.cf*1というドメインでインスタンスを立ててたことがありました.
ただ,mstdn.cfはどちらかというと,流行ってたMastodonをとりあえず体験してみたいという目的で適当に立ててしまったため,そこまでまじめに管理しておらず色々あった末に蒸発*2してしまいました.
今回はそうした反省を生かし,何かあった際の移行やメンテナンス性を高めるために,Dockerを活用してMastodonなどをコンテナ化して運用することにしました.
新生インスタンス
例のごとくおうちクラウドでの運用です.
OSには,軽量のDockerホストOSであるBarge OSを採用してみました.
構成としては,最初にhttps-portalでアクセスを受け,そこからMastodonを含むいくつかのホストにアクセスを振り分けています.
https-portalはnginxを用いたリバースプロキシであり,Let’s Encryptを用いた証明書の取得や更新などを全自動でやってくれるとても便利なDockerコンテナです.
また,Mastodonは通常のWebとストリーミングAPIでアクセス先のコンテナが違うため,それを束ねるためにもう一段nginxのリバースプロキシをかませています.
二段nginxみたいな構成になってしまっていますが,リバースプロキシやTLSに関してと,Mastodonに関してできっちり分かれてた方が管理が楽かなぁと思いこんな構成にしてみました.
Portainerで見るとこんな感じです.
ホストマシンのCPUはi3-2120とそれほど強力ではありませんが,お一人様なのもあってか特にレスポンスが悪かったりもせずに快適に使えています.
RAMに関しては,最初は2GBで動かしていたのですが,Elasticsearchが思いのほかメモリを食うようで,3GBにしたうえで -Xms
と -Xmx
を256MBにして*3様子を見てます.
スマホアプリ
せっかく移住したので,当然ストリーミングAPIに対応したスマホアプリが使いたくなります.
いくつか試した中では,SubwayTooterがストリーミングAPIに対応しており,機能面や使い勝手でもなかなか良さそうな感じです.
デザインに関してはTwidereがなかなか良さそうな感じがしたのですが,残念ながらまだMastodonのストリーミングAPIには対応していないようです.
instances.social
instances.socialという,稼働しているMastodonインスタンスのリストを公開しているサイトがあります.新しく立てたsocial.0ko.meも登録してみました.
instances.socialでは,インスタンス一覧にHTTPSやObservatory by Mozillaなどのセキュリティに関する評価も表示されます.
いざリストアップされると,どうしても一緒に表示される評価が気になるので,両方ともA+になるように設定しました.
IPv6に関しては,まだ対応できていませんがそのうち対応したいと思います.
フォローボタン
Mastodonのフォローボタンをこのブログに付けてみました.左サイドバーのプロフィール下に見えてると思います.
特に公式のフォローボタンは無いようなので,こちらの素敵なフォローボタンを使わせていただきました.
おわりに
しばらくMastodonを使ってみた感想ですが,とても快適です.何というか,古き良きインターネットと言うと一気にインターネット老人会な感じが出てしまうのですが,そんな感じです.
Twitterで有名な人たちも意外とたくさん居ますよ.こういうSNSなんかは,移行するならみんなで一気に移った方が楽しいと思うので,自動更新されないTLや差し込まれ続けるプロモーションツイートにうんざりしている方は,移行を検討してみてはいかがでしょうか.
ちまちま作ってたTwitterクライアントなんかも,今後Mastodonに対応させてみようと思います.
最後に,個人的なおすすめインスタンスを張っておきます.
それでは,Mastodonで会えるのを楽しみにしています.
UserStream廃止に寄せて
何かみんなポエム書いてるの見てたら自分も書きたくなったので書く.
あまり広く公開してこなかったが,自分もいくつかUserStreamを使ったTwitterクライアントを作っていた.
そもそも自分がTwitterに登録したのは2009年の8月ごろで,そこから数えて丸9年間Twitterを続けてきたことになる.
Twitterに登録したきっかけは,JokerRacerというラジコンをブラウザから遠隔操作して遊べるサービスがあり,そのサービスに連携として登録するためだった気がする.*1
9年間もTwitterを続けてきたのは,ひとえにUserStreamのおかげだったと言っても過言ではないと思う.Twitterで1000人ぐらい以上をフォローしててUserStreamを使ったことのある人なら分かると思うが,あの何もしなくてもどんどん情報が流れ込んでくる感じ.それこそ見ようと思えば一日中でもTLを見ていられそうな,あの感覚があるからこそTwitterをここまで続けてきたんだと思う.そしてそれは,間違いなくUserStreamによってもたらされていたものだ.
最初のTwitterクライアント
自分が最初に作ったTwitterクライアントはWindows Formsを使ったもので,コミットログとかを見ると2012年とかそれ以前から作っていたみたいだ.
当時は既にUserStream対応のクライアントがいくつも公開されており,自分はその中でもJanetterを使っていた.ただ,JanetterはUIに内臓ブラウザを使うタイプのクライアントだったので,当時使ってたEeePCのようなUMPCで使うには少々重くてストレスがあった.そこで,Windows Formsを使って軽量でサクサク動くクライアントを作ろうと思って作ったのが上のクライアントである.
思えばこの頃から,自分はUserStreamの持つ魅力に魅せらていたのだと思う.はなから自分用として使うことしか考えてなかったので,自分の使う必要最低限の機能しか実装していなかったが,UserStreamによって絶え間なく流れる情報をくみ取るためにはそれで十分だった.
UserStream機能を持ったTwitterクライアントというものは,プログラミング初学者にとっての入門用の題材として,これ以上に適しているものは無いように思う.最低限TLのテキストが流れるところから始められ,そこから好きな機能をいくらでも実装して拡張していくことが出来るからだ.自分はこのクライアントを作るために初めてまともにC#に触れたし,そこでオブジェクト指向とかUIの作り方とか,データ処理とかイベント処理とかを文字通り一つずつ学びながら作っていった.このTwitterクライアントを作ることが無かったら,自分はC#をここまで好きになることは無かっただろうし,それこそ全く触れていなかったかもしれない.そんな感慨深いクライアントである.
二つ目のTwitterクライアント
二つ目のTwitterクライアントはModern UI(当初はMetro UIと呼ばれていた)を使ったもので,要はWindows 8以降で導入されたストアアプリタイプのものである.こちらは2014年頃に作り始めてからメンテし続け,後にUWP(Universal Windows Platform)を使って作り直し,なんと今日8月14日現在まで使い続けている.
PCを買い替えたのでスペック問題は無くなり,もうちょっとリッチなTwitterクライアントが欲しくなったのである.ちょうどWindows 8になって新しいストアアプリという仕組みができ,これでTwitterクライアントを作って画面の端にスナップ表示させたら,えらく捗るんじゃないだろうか,というようなことを考えていた.そんな中でWindowsストアで見つけたのが,雪猫さんのMevyである.
当時はまだWindowsストアのアプリが充実しておらず,それこそTwitterクライアントなんて全くと言っていいほど無かった.そんな中で公開されたMevyは,スナップ表示してながら見するという目的ではとても洗練されていて,ひときわ輝いて見えた.もちろん自分もすぐにインストールし,しばらくメインのTwitterクライアントとして使っていた.
しかし一方で,Twitterクライアントを自作した経験も影響して,UIの細かい部分の改善だったり,自分で使いたい機能を実装したりしたクライアントを作りたいと強く思うようになった.そうして生まれたのが,この二つ目のTwitterクライアントである.
そのような経緯もあって,当初はMevyを目標として一通りの機能を実装しており,いわばMevyクローンのようなクライアントになっていった.基本機能が一通り実装できたあたりから,動画再生とか画像のコピペや4枚投稿*2とかActivity表示機能*3といった自分が使いたい機能をどんどん実装していった.今思えばUI面とかでもうちょっと独自色を出して行けたような気もするけど,標準のScrollViewerとかで素直に実装していったら見た目までそっくりになってしまって少し申し訳なく思っている.
これも,それまで触れたことのなかったXAMLとかデータバインディングとかMVVMとかを一つずつ学びながらコツコツ作っていったクライアントである.今となっては,同じUWPアプリでももっと高機能なTwitterクライアントがいくつもあるように思うけど,自分で作った愛着とか自分向けに細かくカスタマイズした点とかが気に入っており,今でも使い続けている.
実はこのTwitterクライアントは一時期Windowsストアでも公開していた.
あるときメタデータの不備*4を指摘されてストアから取り下げられ,ちょうどその時期忙しかったのもあって対応できずにずっと放置してしまった.
いい機会なのでダッシュボードで確認してみたところ,どうやら184人ものユーザにダウンロードしていただいたようで,嬉しい限りである.
おわりに
一応上に挙げたようなこれまでの資産があるし,ログイン認証で使っていたりもするので英作文して開発者アカウントの維持はしてみた.でも新APIじゃクライアントを作って公開するには制限が厳しすぎるし,UserStreamも無くなったしで今のところTwitterで新しく何かを作ろうって気にはならないかなぁ….そりゃFilterStreamを上手く使えば疑似UserStreamみたいなことは出来るかもしれないけど,それじゃ自分しか使えないし,今まで自分と同じようにTwitterとUserStream使ってきた人たちが少なからず居なくなることを考えると,プラットフォームとしての魅力も半減してしまうのではないかと思う.
UserStreamみたいな大規模なインフラを維持していくことは並大抵のことじゃないだろうし,それを今まで無料で提供し続けてきたことを考えればとてもTwitter社を責めることは出来ないが,せめてもう少し別の方法もあったんじゃないかと思うと残念でならない.
最後に,これまでの自分に大きな影響を与えくれたTwitterとUserStream,並びにそれらを簡単に扱えるようにしてくれたライブラリ各種に大きな感謝を伝えて結びにしたい.
いままでありがとう.
InkTestWpf(手書きノートアプリのデモ)を公開しました
InkTestWpf(という名前の手書きノートアプリのデモ)を公開しました.
学部2年の頃に授業の一環として作ったものです.
技術デモという側面が強いのであまり実用向きではありませんが,我ながら,なかなか良く出来てるんじゃないかなーと思います.
こんな感じで,手書きした文字が認識され,同じ場所にテキストとして配置されます.
感覚としては「ぼくのかんがえたさいきょうのOneNote」という感じです.
これだけ見るとなんかすごいことやってそうな気がしますが,ストロークの文字認識などはWindowsの認識エンジンに丸投げしてるので,認識部分のコードはとてもシンプルです.工夫してる点はInkCanvas芸で頑張ってるところでしょうか.
4年前のコードを引っ張り出してきたものなので,手元では確認してませんが頑張ればビルドできるはずです.
Windows Vista™ および .NET Framework 3.0 ランタイム コンポーネント用 Microsoft® Windows® Software Development Kit
を見つけるのが一番大変なんじゃないかなー.たぶん.
File2BMPを公開しました
任意のバイナリファイルを有効なビットマップファイルに変換するツール,File2BMPを公開しました!
こちらは,以前にビットマップファイルに対応しているAmazonプライムフォトに任意のデータをアップロードするために作成したツールです.*1 ydkk.hateblo.jp
ファイルサイズが4.3GB*2よりも大きい場合は,Bitmapファイルヘッダの bfReserved1
と bfReserved2
も使用することによって,最大9.2EB!*3までのファイルサイズに対応します.*4
また,特にデータを加工しないため,高速に動作することも特徴です.
LFS2S3Proxyを公開しました
Switch用のオーディオミキサを作る話(その2)
ydkk.hateblo.jp の続きです.
だいぶ間が空いてしまいましたが,実際にミキサを作るまでの手順を紹介します.
まずは適当に回路*1を起こして
ブレッドボードで試作
— social.0ko.me/@YDKK (@YDKKK) 2018年2月19日
動作確認ができたら基板に起こして
適当に基板も起こしたので届いたら組み立てる pic.twitter.com/QGK2ojTCHt
— social.0ko.me/@YDKK (@YDKKK) 2018年2月19日
中華メーカ*2に基板を発注して
基板届いた! pic.twitter.com/CFnxIDbF4C
— social.0ko.me/@YDKK (@YDKKK) 2018年3月15日
部品をはんだ付けして完成!
原稿書くのしんどくなってきたので気分転換にイカミキサーのはんだ付けしてた。
— social.0ko.me/@YDKK (@YDKKK) 2018年3月15日
回路も問題なくていい感じ。 pic.twitter.com/8Ab8W6oMs9
必要な部品はこんな感じ*3
秋月で揃えられる部品で組みました. 基板代を含めても一個あたり1500円もしません. 地味に良い部品を使っている部分や,オペアンプの負電源の生成にICを使っている部分などをどうにかすれば,あと500円ぐらいはコストを下げられそうです.
3Dプリンタがあればケースも作ったのですが,無いのでAmazonで適当なクリアケースを購入.
ケースに詰めてみた
— social.0ko.me/@YDKK (@YDKKK) 2018年3月17日
半分空いてるからバッテリー駆動化とかできそう pic.twitter.com/4zI7FvROTc
電源はUSBから取っていますが,余裕のあるケースにしたら半分ぐらい余っちゃったのでバッテリー駆動化なんかも出来そうです.
肝心の使い心地ですが,特にノイズもなく*4狙い通りマイク信号への混入も発生しません! 大満足の仕上がりです. オーディオ系の工作は初めてでしたが,安価でイカのプレイを快適にすることができました. SwitchのVCで似たような不満を抱えている方は,是非ミキサ自作に挑戦してみると良いと思います!*5
オペアンプの回路は,次に示すサイトなどを参考にしました.
簡単なオーディオミキサー
自作オーディオミキサー 〜オペアンプ加算増幅器〜
*1:1倍の反転増幅回路です.出力波形が反転してしまいますが,ゲーム用だし別に良いかなぁと.
*2:今回はFusion PCBを使いました.
*3:当初はUSB Mini-BとMicro-Bの両方を使える想定でいたのですが,なんと秋月の変換基板にはピン互換が無かった… https://twitter.com/Tiryoh/status/978644360450330625
*4:電源をSwitchもしくはPCなどの接続先のデバイスから取ると,グラウンドループノイズ?が発生する場合があるので,別電源にするのがベストです.
*5:HORIもどうせなら単体でこんな感じの周辺機器出せば売れると思うんだけどなぁ.
Switch用のオーディオミキサを作る話(その1)
はじめに
タイトルの通り,オペアンプを使ってNintendo Switch用のオーディオミキサを作りました.
そもそも何故こんなものを作ったのかを説明するために,まず現状のSwitch周りの配線の様子を次に示します. どうしてこうなったという感じの構成*1ですが,そこはひとまず置いておいて,今回作ったのは図の下部にある赤線で囲ってあるミキサの代わりになるものです.
SwitchにはVC機能が搭載されていないので,通話しながらゲームをプレイしようとすると必然的にゲーム音とVCの音声を混ぜる必要があります.スピーカ出力でプレイする場合は,それぞれの出力を別々のスピーカから出すことで簡単に解決できますが,ヘッドセットでプレイする場合はひと工夫する必要が出てきます.
解決策
この問題の解決には皆それなりに悩んでる*2ようです.
簡単な方法だと
【正規代理店】belkin マルチイヤホンスプリッターイヤホン分配/分岐 ロックスター ブルー F8Z274btBLU
- 出版社/メーカー: Belkin Components
- 発売日: 2013/11/01
- メディア: エレクトロニクス
- この商品を含むブログ (1件) を見る
こんな感じの簡易ミキサを使ったりすることなどが考えられます.簡易ミキサを使う上で注意する必要があるのは,ヘッドセットなどによっては端子が4極になっていたりする場合があるので,そこでさらに分配ケーブルなどが必要になる可能性がある点です.
私は,配線が煩雑になりそうということもあり,この問題の解決にAIR STEREOのミキサ部分を使うことにしました.
【Nintendo Switch対応】ゲーミングヘッドセット AIR STEREO for Nintendo Switch スマートフォン向け「オンラインロビー&ボイスチャット」アプリ対応
- 出版社/メーカー: ホリ
- 発売日: 2017/07/27
- メディア: Video Game
- この商品を含むブログを見る
どうやら任天堂?もこの問題を認識しているらしく,HORIからSwitch向けのライセンス製品として販売されているヘッドセットのAIR STEREOには,ゲーム音とVC音声を混ぜられるミキサ*3が付属しています.
わざわざこんな図が添えてある
流石はこの用途専用のミキサなだけあり,目的にピッタリです.配線回りもシンプルになるのでずっとこのミキサを愛用していました*4.
問題点
しかし,使用しているうちにこのミキサには問題があることに気が付きます.それは,上に挙げた簡易ミキサと同じように入力を単純に混ぜているだけなので,それぞれの入力が逆流してしまうということです.
単純に逆流するだけならばそれほど問題は無いのですが,前段の出力インピーダンスが低くてGNDが揺れるのか*5,大きめの音を再生すると何故かそれがマイク入力に混ざってしまうのです.結果として,エコーが発生してしまったり,PCで再生した別の音がマイク入力に混ざってしまったりする現象が発生しました.幸いDiscordには入力感度の調節機能が付いているので,コレを低めに調節することで音が混ざることは避けされますが,あまり下げ過ぎると今度は声を大きくしないと自分の声が相手に届かなくなってしまいます.また,単純な音量調節機能しか付いてないSkypeなどで問題になります.
そこで,代わりになるミキサをオペアンプを使って作ることにしました.
その2へつづく