ActivityPubの投稿公開範囲
あれ、どうするんだっけ?と忘れがちでしょっちゅう検索してしまう投稿の公開範囲をメモしておこう(間違ってるかもしれない…気がついたら修正)
ActivityPubで、Fediverseに投げ込んだNoteの公開範囲を選べる。
・全公開
誰でも見ることができる。
投稿が流れるタイムライン
→連合、ローカル、ホーム
・未収載
誰でも見ることができる。
投稿が流れるタイムライン
→ホーム
・フォロワー限定
フォロワーだけが見ることができる
投稿が流れるタイムライン
→ホーム
・ダイレクト(DM)
指定したお相手だけが見ることができる
タイムラインには流れない
※「ホーム」というのは、自分・フォロワーの「ホームタイムライン」
「未収載」と「フォロワー限定」がわかりにくいのでメモ
・未収載は
フォロワーのホームに投稿が流れる。自分をフォローしていないユーザーが、フォロワーのホームに流れている自分の投稿を見ることができる。
・フォロワー限定は
フォロワーのホームに投稿が流れる。自分をフォローしていないユーザーが、フォロワーのホームを見ても、自分の投稿は見えない。
投稿の公開範囲と宛先の組み合わせ
(Activityの指定)
公開/宛先 | to | cc |
---|---|---|
全公開 | Public | followers |
未収載 | followers | Public |
フォロワー限定 | followers | なし |
ダイレクト | お相手のinbox指定 | なし |
ActivityPubの約束事として公開範囲については上記で全部。
このほかに、もっと細かく公開範囲を指定できるサーバーもあって。
「Fedibrid」https://fedibird.com
「公開/未収載/フォロワー限定/相互フォロー限定(対応サーバーのみ)/サークル/DM/自分限定」
↑こちらは、今日時点で投稿の公開範囲は7種類から選べる。
公開範囲は意識しておきたいところだけど、うっかりやらかしてしまうので、自戒を込めてのエントリ。
ウチのおひとり様ActivityPubサーバーは。
設定ファイルのpublic_levelで公開か未収載を選択する。
・現在のデフォルトは公開
「to」がPublic、「cc」がわたしのfollowers
・Mentionとダイレクトは「to」がお相手のinbox
・Mentionの「cc」はわたしのfollowers
・ダイレクトの「cc」はなし
神田明神の妖怪展。有名なガシャドクロを始め、規模こそ小さかったけど、面白かった。
常設展もかなり面白かった。オススメ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
おひとり様サーバーの改修
ちょろちょろ改修してるんで、忘れないようにメモ。
5分以上前の自分はあかの他人、だからなぁ。
おひとり様ActivityPubサーバーのソースコードを外部モジュール化した。
ため池とcron側と両方共通して使うルーチンばかりで、ふたつのファイルに対して同じ修正するのが面倒くさくなった(今さらかよ)ここんとこ1ファイルでやっつける安いスクリプトしか書いてなかったんで、久しぶり。
これで改修やつけ足しも楽になった。
Like一覧・Mention一覧をつけ足した。
LikeはWeb拍手がわりの使い方のほか、ブックマーク的な使い方もしてるので一覧ページが欲しかった。イベントや博物館美術館情報の展示情報など、わたし的に貴重な情報が多い。
LikeのJSON保存は個数制限は外して期間制限だけにした。上限14日間。
Likeを削除するのはウチだけの話。意図してLikeを外すワケじゃないのでUndoは飛ばさない。
Likeの情報はお相手の所属するサーバーが持ってるんでこちらでLikeのJSONを削除しても影響はない。こんなところも分散型、ActivityPubの特徴、ということだなあ。
わたし宛のMentionはデータベースに登録してもいいと思ったんだけど、なにかの拍子に(Fediverseに)飛ばしてしまうと危険なので、とりあえずJSONそのまま保存。一覧して確認できればいいかな、ぐらいの感じ。
サークル機能に対応(?)
飛んでくる投稿はCreateというActivityの中のobjectという箱に入ったNoteがその実体。なので、投稿を取り出すにはCreateというActivityのJSONをデコードしてobjectを取り出す。
objectには投稿本文や投稿日時など投稿についてのすべての情報がハッシュ配列になって格納されている。
…てのが、ほとんどなんだけど。
objectがハッシュ配列じゃないActivityが飛んできてエラーとなってロックがかかってビックリ。配列じゃないobjectなんてまったくの想定外だった。
JSONを覗いてみたらobjectが配列じゃなくて、1行の文字列。
HTMLエンコードされたURIとなにやらハッシュ文字列とキーワードっぽいbearという文字。投稿の宛先や投稿者、投稿日時がないんだけど大丈夫か。
エンコードされているURIにブラウザでアクセスしてみたら400番代のエラーページが表示される。ハッシュ文字列がOAuthっぽくもあるけどなんのこっちゃわからない。
手がかりがまったくなくて困って、ため池に投稿したらFedibird管理人ののえるさん(@noellabo@fedibird.com)に拾ってもらって、該当ドキュメントを教えてもらった。
https://docs.joinmastodon.org/spec/bearcaps/
詳細はこちらにも↓
https://fedibird.com/@noellabo/104790008237308249
飛んできたobjectのURIに対して、GETリクエストする時のヘッダにAuthorizationをつければ問題なくURIを開くことができて、内容を読めた。宛先がない投稿を勝手に開いていいのかという問題は残るので、要調査。
とはいえ、これは投稿として開いて読む場合。サークル機能?にこちらからリクエストを投げる時は投稿先などちゃんと調べなきゃダメ。今日はとりあえず読むところまで。
まだまだわからないことだらけだ。
初詣の神社はアスクル御神籤でありがたみもないんで、昨日改めて浅草寺。
ここは「凶」が多くてひとに厳しい御神籤なんだけど、今年は一発で「吉」を引けた。去年がいろいろ厄年だったので、これで今年がいい年になればいいなぁ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
おひとり様ActivityPubサーバーにBlock実装
おひとり様APサーバーにBlockを実装した。
ActivityでBlockが飛んできてもめっちゃレアケースなのでスルーしてたんだけど念のため。
というか、アドベントカレンダーに参加して投入したエントリ 「Fediverseの辺境で秘密基地」 や 「SNSのソーシャルディスタンス」 がどこかでブーストされたらしくて、珍しくぷちバズった。
Followリクエストも飛んできてフォロワーさんも増えた。のと、珍しくBlockリクエストも飛んできた。記憶に間違いがなければ、これまで半年ほどやっててBlockリクエストは3度目。
届けたいところじゃないところに届いたんだなぁ…じゃなくて、ちゃんと対応を考えないといけない。ツイッターのブロックと同じ扱いで、ブロックされた該当アカウントの投稿がブーストやなんかで飛んできてもタイムラインに流さない・間違ってフォローリクエストを送ったらまずい。
てことで、ブロックされてるリストを作成して、該当アカウントを登録することにした。
おひとり様サーバーでは投稿はJSONファイルのまま、Signature検証がOKだったら、所定のフォルダに移動してるんで、その前にブロックリストを確認してそこで弾くようにした。Followリクエストも同様。
ActivityPubというプロトコル、とかいうとなんか難しそうだけど、約束事の塊とその約束事を守ることで成立している。極端な話というか乱暴な話、約束事を守る/守らないはサーバー管理者次第。
だからこそ仕様上のMUSTやSHOULDはちゃんと対応する必要がある。
久しぶりに上手く巻けた、かな。
弁当用で、出汁少なめなので失敗は少ない。ウチで食べる用だと出汁を150ccぐらい入れるんでゆるゆるで難易度があがるんだよなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
ActivityPubサーバーのGETリクエストに署名
おひとり様サーバーのGETリクエストを署名付きで投げるようにした。
今のところ、特に問題が出てるようには見えない。
前々から気になってたところ。
actor情報や投稿を取得するために、アクセスすると401や403で弾かれることがあって、それってリモートサーバーからのアクセスを拒否してるのかなあ、ぐらいに思いつつもなんかひっかかってた。
GETリクエストにひょっとするとSignatureが必要なわけ?と。
でも、POSTと違ってGETだよ?Body(content、本文)もないのに、いったい何に対してサインする?んなもんないよなあ、とも思ってた。
2023Fediverseアドベントカレンダー第3会場 19日目の黒ヰ樹さんの記事
「DenoとHonoでThreadsのContent-Type: application/activity+jsonをGETする」
当初ActivityPubのHTTP Message Signaturesはhostとdateを認証するPOSTのみで使われてきました。
ThreadsのContent-Type: application/activity+jsonをGETするにはこの署名が必須なので、Threadsをフォローできないサーバーがあったりなかったりしたんですね。
↑こちらに詳細があった(感謝)
GETでのHTTP Signatureは
(request-target)
host
date
の3つを署名対象にすればOKということらしい。
(ひょっとしてわたしが知らなかっただけで、100年前からの常識だったのかな?)
この署名付きでGETを投げて403で弾かれることがあるけど、401は今のところない。これで大丈夫っぽい。
HTTPのレスポンスは。
401 認証できない
403 認証できるけど権限がない
404 そんなファイル、ディレクトリはそもそもない
403を返すと「そんなファイル」はある、ということを自白してるのでセキュリティ的にあえて404を返してることがある。なので、403と404は同じで原因の特定ができないとしても、401が返ってくるのはこちらに何らかの問題がある、ということ。
表示が無駄に重くなるだけなので、うちのおひとり様サーバーでは、400番台が返ってくるサーバーはリストに登録してアクセスしないようにしてた。
とりあえず。この対応で401は回避、できるかな。
今日は3回目のゲ謎。哭倉村。
ほんと、今年No.1だなー。
[12/21 14:07:43]追記。
401でエラーを出してた某サーバーのactor情報がこの変更で取得できたので、やっぱりGETにSignatureがなかったのが問題だったのか…。
[2024/01/09 11:46:23]追記。
HTTP SignatureをつけてGETしても403で弾かれるサーバーがあった。
いろいろ試してみたところ、お相手のHTTP HeaderのkeyIdのURLについてる「#main-key」が原因っぽかった。
お相手からのポストの署名を検証するためにPublickeyを取得する必要があって、Publickeyを取得するにはこのkeyIdのURLにリクエストを投げてPersonのJSONをもらわなきゃいけない。
Mastodon系などはkeyIdのURLにそのままGETリクエストしていて問題はなかった。んだけど、なんか「#main-key」付きって微妙なURLだなあ、とか思ってたこともあって、試しにURLの「#main-key」を削除してリクエストしたら問題なく200が返ってきて、無事JSONを取得できた。
だけど、今度はそれはそれで、keyIdのURLに「#main-key」なんてつけないで欲しいよなあ。「keyId」の意味がないのでは?
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
Fediverseの辺境で秘密基地
この記事は Fediverse Advent Calender 2023 (第三会場)18日目の記事です。
Fediverseというネットの連合空間、ActivityPubという共通の言葉を喋るサーバー群というのが面白そうで「いっちょかみ」してみました。以下は、その時々の経緯というか思ったことの垂れ流しエントリとなります。
ちなみに、還暦過ぎのポンコツで、話が無駄にだらだら長いのはご容赦ください。
■レンタルサーバーとperlでおひとり様
MastodonやMisskeyをインストールして運用管理するスキルはわたしにはないので、自分のできる範囲、最小限のActivityPubサーバーをperlで自作実装しました。
レンタルサーバーとドメイン、perlがあれば、それ以外に新しく必要なものはなくて、このブログなど今まで使ってるロリポップのライトプランの環境で十分でした。
試しながら少しずつ実装していったんですが、おひとり様サーバーは、たぶんみんな大好き「秘密基地」ごっこ。
いちいち面白くて、すっかりハマりました。空いた時間のほとんどを費やしてます。
■おひとり様サーバーとして必要なことは2つ
・Fediverseの仲間入り、アカウントとして認識されること
・ActivityPubの決まりごと通りにGETやPOSTなど、リクエストのキャッチボールができること
■Fediverseにわたしが来た!
すみません。言ってみたかっただけです。
7月12日。Fediverseからアカウントとして認識されました。
何をどうすりゃいいのかまったくわからない状態からだったので、グーグル先生に聞きまくりです。
nodeinfo(json)
host-meta(xml)
webfinger(json)
actor.json(json)
以上4つのファイルを用意すればいいという話だったのでサーバーに設置。
今回作った自分のアカウント「@t2aki@tokoroten.doncha.net」をMastodonで検索してみたら、アカウントとして認識されました。
ただ無言で顔を出しただけなんですが、これで念願のFediverse仲間入り!です。
■ActivityPubおひとり様サーバー最低限の実装
アカウントとして認識されたら、後はActivityPubの決まりごとをちゃんとキャッチボールできればOKです…とか言って、これもまったくわかってなくて「そこからかよ!?」の状態でした。
リクエストのキャッチボールを始めるにはHTTP Signatureが必須になります。
(このリクエストはわたしが投げたものですよ、というのを保証するサイン・署名みたいなもの、という理解で大丈夫かな)
ところが、レンタルサーバーのロリポップでは署名のために一般的に良く使われているらしい「Crypt::OpenSSL::RSA」というperlのモジュールがない。つまり、Signature、署名ができない、ので立ち往生。
しかたなく、ローカルのPCに「Crypt::OpenSSL::RSA」をインストールして、PCのコマンドラインから投稿を送信することにしました。
7月26日。右往左往しながらも、Fediverseからアカウントとして認識されて、HTTP署名付きで投稿ができるようになりました。
発信専用と割り切ればこれでひとつゴール達成ということでしょう。
この時点でこのアカウントのフォロー/フォロワーはほかのサーバーに登録した自分のアカウントだけですが。
しばらくローカルPCからの発信専用でやってたんですが、WEB上で作業が完結した方が手間もなく気楽だし、また、ほかのひとの投稿をこのサーバーで読めないのは物足りなくなりました。
…というか。送信するのはローカルPCから、ほかのひとの投稿を読むのはMastodonのクライアントを立ち上げて、というのはやっぱり面倒くさいです。
ふたたびグーグル先生にお願いしたところ、署名するために必要な、PurePerlの(perlだけで実装されている、ユーザーレベルでインストール可能な)Cryptモジュールを見つけたので、ロリポップにインストールしました。
このperlだけで署名できるモジュールの作者さんには感謝するばかりです。
8月22日。HTTP Signatureを解決することで、やっとリクエストの送受信、キャッチボールができるようになりました。最低限の構成ですが、おひとり様ActivityPubサーバーということで大丈夫でしょうか。
■おひとり様サーバーのタイムライン
【ローカルタイムライン】
サーバーに登録しているユーザーの投稿が流れるタイムライン。
おひとり様なのでわたし一人の壁打ちタイムラインです。Fediverseに投げ込むには一意のIDが必要で、投稿へのURLもそれをもとに生成します。そのためにデータベースを使うのが手っ取り早いし、以前から使ってる自分メモ用の掲示板を改築して流用しました。
【ホームタイムライン】
フォローした人たちの投稿が流れ込んでくるタイムライン。
ここは考えなきゃいけないことがいろいろありました。
その1.
まず大前提として
「ひと様のデータは持たない、抱え込みたくない」
わたしのショボいスキルと還暦過ぎたポンコツの体力だと何があるかわからないので、リスク回避が最優先です。
その2.
タイムラインというからには「投稿は流れて消えていく」
流されてしまったものは見ない、アクセスしてたまたまその時その場にあるものを見るモノだということですね。
「袖すり合うも多生の縁」です。
ということで、こちらはデータベースも使わず、保存する投稿は、上限20個、保存期間最長1日。それ以上は古いものからところてん式に押し出されて削除、遡ることができないタイムラインということにしました。
(保存するNoteは宛先がPublic指定されているもの・わたし宛Mention投稿。それ以外は破棄)
そもそもホームタイムラインを見るにはログインが必要で、おひとり様サーバーでログインできるのはわたしひとり、見ることができるのはわたしだけです。
自分の使い方として、twitterもFacebookもそうですが、スクロールして遡るのはせいぜい2〜3画面だったので、上限20個保存ぐらいでも問題はありません。
アクセスしない間も、飛んでくるリクエストをcronで処理することにしたので、わたしが知らないうちに流れてきて、知らないうちに消えていく投稿の方が圧倒的に多い状態です。
SNSとの距離感はこのぐらいでちょうどいいんじゃないかと思ってます。
■タイムラインの育成、フォロー・フォロワー
なにはなくとも、まずフォローをして繋がらないと始まりません。
最初は、すでに登録して参加している別サーバーの別アカウントでフォローしているひとたちを、このおひとり様サーバーから少しずつフォローしました。
(聞いたこともない変な野良サーバーということもあってか、403や401で弾かれてすべてはフォローできませんでしたが)
こちらでフォローをしていくことで、ほかのひとの投稿を流し込んで読めるようになりました。
おひとり様サーバーでタイムラインを作ってると、フォロー/フォロワーでいうと、いかにフォローするのが大切かというのを実感します。
タイムラインというのは、盆栽とか本棚とかと同じ「よく育ってくれましたねえ」の世界。
twitterやFacebookだとフォローを見つけるのもそんなに大変でもないんですが、連合サーバー群だとなかなか難しくて、いくつかのサーバーにアンテナを張って少しずつこちらのタイムラインに持ってくるしかなくて。地引網でどばっと攫うのと、釣り竿を垂らして一本釣りするのと。それがまた面白いんですが。
サーバーごとの特徴があって、他のサーバーのアカウントをフォローして投稿の流入経路をひとつ増やすだけで、それまでになかった投稿が流れるタイムラインになります。
せっかくなので、いろんなサーバーをフォローしたいと思ってます。
(今ではフォローしているひとのブースト経由で他サーバーの様子も垣間見えるので、フォローを探すのもほとんどこのホームタイムライン経由になっています)
twitterなんかだとフォロワー数でのマウント合戦が見られますが、タイムラインの面白さは、フォロワーの数ではなくて、どれだけフォローしてるか、でしょう。
■おひとり様サーバーという名の秘密基地
ActivityPubという共通の言葉で繋がっているので、登録するサーバーに拘る必要はありません。どのサーバーにいても他のサーバーをフォローできる、繋がって広がるのがFediverseの特徴・メリットです。
…とはいえ、いろんなサーバー、それも個性的・特徴的なサーバーがたくさんあって、どのサーバーにしていいのか悩んでしまいますよね。
それなら、おひとり様サーバーを立ち上げて、そこを起点・窓口にActivityPubを喋っていろんなサーバーのアカウントをフォローしてFediverseに参加してみよう、そんなのが自分で作れたら面白そう、というのが始まりでした。
Activityを1つ実装するたびに、これってどうして必要?これは何か理由があるよね?など、いろいろ考えて、自分で決めて自分で作る手作り秘密基地です。
目の前にある20個だけでそれ以上は遡れないし検索もできないホームタイムラインは、穏やかに過ごせるもんだなあ、と眺めてます。
自分のために自分で作った場所というのはストレスフリーで居心地が良くて入り浸り状態。すっかりログインすることがなくなったtwitterやFacebookを見ていた時以上の時間をここで過ごすようになりました。
Fediverse空間のどこかでお会いすることがありましたら、どうぞよろしくお願いします。
だいたい映画、小説、アニメなどについて垂れ流してます。
鬼太郎誕生スゲー、復讐の記憶やべえ、トム クルーズおかしいだろ、やっぱルブランのアルセーヌ・ルパンだわ、など語彙力に問題のある投稿を見かけたら、それはたぶんわたしです。
ちなみに。
『鬼太郎誕生 ゲゲゲの謎』と『復讐の記憶』はわたしが今年映画館で観た映画でベスト。
この2本とも、おひとり様サーバーに流れてきた投稿で知った・気づいた作品です。フォローしたひとたちのおかげです。ほんとウチのおひとり様サーバーのタイムラインは「よく育ってくれました」(自画自賛)
■おひとり様サーバーを作るのに参考にさせていただいたサイト。
・まさに、このひと言。
「Webhook的に ActivityPub に投稿する実装を作った」
オープンな仕様 ActivityPub の力を借りて自前実装で他の実装とつながれる体験は心躍るものがあり
・perlでActivityPubサーバーを立ち上げるならこちらにすべてがあります。
「Fediverse入門―非中央集権型SNSサーバを作ろう!」
・静的ファイルだけでActivityPubサーバー構築。こちらの具体例が参考になりました。
「NetlifyとSupabaseでほぼ静的なActivityPubサーバ」
・こちらを発端としてActivityPub実装についてのサイトを辿りました。
「田舎の昼のサイレンbotをActivityPubで実装する(マストドンにアカウントを認識してもらう編)」
・レンタルサーバーとperlのCryptモジュール
「ロリポップ!レンタルサーバー」
「Crypt-Perl-0.38」
■蛇足というか手前味噌というか
わたしのActivityPub自作実装について。
「おひとり様ActivityPubサーバー自作実装メモ」
Follow、Like、Announce、Attachment、Hashtagなどを少しずつ実装した時の具体的なメモをまとめてます(関連する各エントリは 「ActivityPub」 というタグづけしてます)
ActivityPubの共通言語として飛び交うJsonの具体的な例を残すようにしてますので、何かのお役にたてれば幸いです。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
おひとり様サーバーのおもて側
ActivityPubを喋ってFediverseと繋がる、とか言っても、それって具体的にどう見えているのかわからないと、ナンジャソレだと思う。
ActivityPubとか裏側の面倒くさそうなのはとりあえず置いておいて。
使い方見え方、おもて側の紹介をしてみる、のが今回のエントリ。
ActivityPubを通じて、他のサーバー(インスタンス)に投稿したり投稿を閲覧したりする具体例のひとつと見てもらえれば。
【コントロールパネルっぽもの】
ログインするとページの最上部に
・投稿を記入するテキストエリア
・添付画像
・データベースを検索するチェックボックス
・こちらでフォローするためのアカウント名入力欄
フォロー/フォロワー数とフォローのリスト表示のためのリンク
・他のFediverseの投稿をこちらで表示させるためのURL入力欄
などのコンパネっぽいものが並ぶ。
その下は
・フォローされたら確認と承認ボタンのエリア
・Likeされたらその表示エリア
・Mentionされたらその表示エリア
が表示される。
他サーバーの投稿をこちらで表示させるのは。
ここからブーストしたり、いいねしたりすることで、おひとり様サーバーのフォロー/フォロワーを増やす可能性に繋がるんで、けっこう重宝する機能。
※これはログインユーザーにだけ表示される。
【ホームタイムライン】
フォローした人の投稿が最大20個並ぶエリア。
個々の投稿には
・Announce=ブーストボタン
・Like=いいねボタン
絵文字は対応してない。
こちらでフォローしたいろんなサーバーのいろんな人の投稿が流れ込んでくる。ActivityPubを通じて他のサーバーと繋がってるからこそ閲覧できる。
例えば。Twitterにログインして投稿を読んでいて、Facebookの投稿をそこでは閲覧できない。でも、Fediverseに参加しているとTwitterだけじゃなくてFacebookの投稿も同時に閲覧できる、みたいなもの。
読んでいてほんとに面白い。
サーバーごとで特色があるし、フォローしたひとたちは当然ながらわたしの嗜好・志向とあったひとたちなので、楽しくないわけがない。
上限20個でそれ以上は遡れないタイムラインだけど、各々の投稿者さんのoutboxは取得できる=アカウントのプロフィール・過去投稿(の1ページ分)を見ることはできるので、20個は少ないようで、少なくないボリュームでもある。
MastodonやMisskeyなどのPWAやアプリだとJavascriptやAPIを駆使して、非同期で新着の投稿を取得&表示させている。んだけど、わたしはJavascriptがよくわからないので、Ctrl+Rや、画面を下に引っ張って手動での更新。
今のところ、特に不便は感じてない。
※これはログインユーザーにだけ表示される。
【ローカルタイムライン】
おひとり様なのでこのサーバーではわたしの壁打ちが並ぶだけ。
「edit」は、削除と編集更新。
※これはログイン不要で誰でもみることができる。
ActivityPubを喋ってほかのサーバーと繋がるというのはこういうことにもあって。
↑Fediverseの他のサーバーにおひとり様の壁打ちが投げ込まれて、向こう側で表示されることになる。これがあるからこそ、ActivityPubとFediverseの面白いところ。
他のサーバーの投稿が流れ込んでくるホームタイムラインと同じく、ローカルタイムラインに投げ込むだけで、ツイッターにもFacebookにも投稿される、ようなもんだ。
よく言われるように、TwitterやFacebookの代替になるかと言われるとそれは無理で無茶。
億単位のひとがひとつの場所に集まってる化け物と同じになれるわけがない。
だけど、いろんなサーバーと繋がる、分散して独立・存在するメリットはあるはず。
わたしはFacebookにはまったくアクセスしなくなったし、Twitterもほとんどアクセスしなくなった。
Twitterは呪術廻戦やゲ謎の考察、ファンアートを漁るためにたまにアクセスするんだけど、関係のないツイートがぶら下がってるんでうんざりする。どうにかならないのかなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」