PJ開始: VSCode ExtensionでSNSに投稿する
Intro
技術的な気付きやコメントを、今までは全部mint (mrkit) へのチャットに投げてたけど、投げすぎてて申し訳ないし、全体に共有すべき場合も多いし、どこかのSNSに投げることにした。
とはいえ、ブラウザから投稿するのも気が引けるし、利用ケースを考えればVSCodeの画面のまま投稿だけできれば十分。
Misskey, BlueSkyやMastodonのAPIを使って、簡単に投稿だけしちゃおう。
で、今回はこのプロジェクトのスタートを記録する。
Repository: https://github.com/TomoTom0/Simple_Post_SNS_onVSCode/tree/main
TL; DR
- BlueSkyは、Twitterの元CTOであるAdam Messinger氏が立ち上げた、本来のTwitterの理念に立ち返ったSNSである。
- Misskeyは、分散型のSNSプラットフォームで、オープンソースソフトウェアとして提供されている。
- Mastodonは、中央集権的なソーシャルメディアプラットフォームに対する代替手段として生まれた。
- 本PJは、VSCode Extensionを作成し、MarkdownファイルからSNSに投稿することを目指す。
- 1週間でベータ版を目指す。
SNSの選定
Misskey
Misskeyとは? by MCopilot
Misskey(ミスキー)は、分散型のSNSプラットフォームで、オープンソースソフトウェアとして提供されています。以下の特徴があります:
- 分散型: MisskeyはActivityPubというプロトコルを使用しており、複数のサーバー(インスタンス)間で通信が可能です。これにより、異なるインスタンスのユーザー同士でもやり取りができます¹²。
- オープンソース: Misskeyのソースコードは公開されており、誰でも自由にサーバーを立てることができます²。
- カスタマイズ性: 各インスタンスごとに異なるテーマやユーザー層が存在し、自分に合ったインスタンスを選ぶことができます¹。
- 豊富な機能: 投稿(ノート)の文字数制限が緩く、ファイル添付や絵文字でのリアクションが可能です。また、公開範囲を指定することもできます²³。
Misskeyは、TwitterやMastodonのような他のSNSと似ていますが、分散型であることから、より自由度が高く、コミュニティごとに異なる文化が形成されています。
他に知りたいことがあれば教えてくださいね!
ソース: Copilot との会話、 2024/7/13
(1) 次世代Twitterと話題「Misskey」使い方 インスタンス? 分散 …. https://kai-you.net/article/86094.
(2) Misskey - Wikipedia. https://ja.wikipedia.org/wiki/Misskey.
(3) misskey(ミスキー)って一体なに?使い方やインスタンスについ …. https://www.yourcuriousstory.com/misskey/.
(4) 分散型SNS「Misskey」、それを支える技術スタック | gihyo.jp. https://gihyo.jp/article/2023/02/misskey-01.
(5) 【話題沸騰中】Misskey(ミスキー)とは? エンタメ性抜群な分散 …. https://wwg.co.jp/blog/31341.
(6) undefined. https://t.co/yxSe2SJXsR.
(7) ja.wikipedia.org. https://ja.wikipedia.org/wiki/Misskey.
BlueSky
BlueSkyとは、Twitterの元CTOであるAdam Messinger氏が立ち上げた、本来のTwitterの理念に立ち返ったSNSである。
最近までAWSでのβ運用であり、アカウント登録も招待制だった。
2024年に入り、オンプレ運用で正式リリースされ、アカウント登録の制限もなくなった。
さらに一般ユーザーによるAPI利用も可能になった。
Mastodon
もともとはBlueskyを選定していたが、投稿単位の公開範囲設定について考えが廻った結果、Mastodonを本命にした。
Mastodonは、中央集権的なソーシャルメディアプラットフォームに対する代替手段として生まれた。
他の候補
Text SNSとしてはTwitterが明らかに強いが、APIの関係で選べない。
他に検討した候補としては以下の通りだ。
サービス名 | 不採択理由 |
---|---|
テキストベースの投稿であり、技術的な話が多いことを考えると空気に合わなさそう | |
Threads | Instagramとの連携もしっくりこないし、大手過ぎてそのうちAPI規制が強くなりそう |
先行研究
各SNSにはVSCodeにおけるClientがすでに存在する。
- Misskey閲覧: https://fedimagazine.tokyo/post-2559/
- BlueSky閲覧: https://zenn.dev/iizuka0000/articles/introducing-blueriver
- Mastodon閲覧: https://github.com/takusan23/Kaisendon-VSCode
PJ方針
- 成果物形式: VSCode Extensionおよび付随ドキュメント
- 言語: TypeScript
- ライブラリ:
- BlueSky API
- Mastodon API
- Markdown Parser(未定)
- 期間目安: 1週間でベータ版
- 正式版は現在は考えない
- 人員: YTomo
- テストなどの補助にMintやtksを勝手に見込み
成果物のイメージ
- Markdownファイルからその内容をMisskey or Mastodon or BlueSkyに投稿する。
- Mastodonを優先する
- 画像も投稿可能。
- 投稿ごとに公開範囲を設定できる
- アカウント名とAuthorization Tokenは指定した環境変数から取得する。
- 複数同時postに対応。
- ツリー形式での投稿にも対応。
- 思ったより面倒かも
- 画像は必要に応じて圧縮される。
- Rich Text対応: https://zenn.dev/kawarimidoll/articles/42efe3f1e59c13
- 投稿形式の選択肢
- フォルダ内の特定のファイル内容から投稿
- 任意のファイルで選択した範囲から投稿
Optionのイメージ
- 既定のテンプレート
- 投稿に関するオプション
Future Work
- 複数の投稿先を投稿しておき、投稿ごとに指定できる
- 投稿ごとにオプションを指定できる
- 自動で長文が分割される
VSCode Extensionの作成
- こちらのページに従ってlocalでプロジェクトフォルダの作成を進める
GitHubでRepositoryを作成する。
remote repositoryを登録する。
- 以前はgit cloneで始めてたけど、こっちの方が楽だわ。
1 |
|
初期状態をcommitする。
branchをdevelopに(作成して)変更する。
Remoteにpushする。
まとめ
- 今回はPJのスタートを記録した。
- 今後はVSCode Extensionを作成していく。
- 1週間でベータ版を目指す。
- Misskeyの投稿を最優先に目指す
- 期間内に終わらなくても、PJの進捗を記録することが目的。