PJ開始: VSCode ExtensionでSNSに投稿する

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プラットフォームで、オープンソースソフトウェアとして提供されています。以下の特徴があります:

  1. 分散型: MisskeyはActivityPubというプロトコルを使用しており、複数のサーバー(インスタンス)間で通信が可能です。これにより、異なるインスタンスのユーザー同士でもやり取りができます¹²。
  2. オープンソース: Misskeyのソースコードは公開されており、誰でも自由にサーバーを立てることができます²。
  3. カスタマイズ性: 各インスタンスごとに異なるテーマやユーザー層が存在し、自分に合ったインスタンスを選ぶことができます¹。
  4. 豊富な機能: 投稿(ノート)の文字数制限が緩く、ファイル添付や絵文字でのリアクションが可能です。また、公開範囲を指定することもできます²³。

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である。

The Pragmatic Engineerから引用した画像を日本語化

最近までAWSでのβ運用であり、アカウント登録も招待制だった。
2024年に入り、オンプレ運用で正式リリースされ、アカウント登録の制限もなくなった。

さらに一般ユーザーによるAPI利用も可能になった。

Mastodon

もともとはBlueskyを選定していたが、投稿単位の公開範囲設定について考えが廻った結果、Mastodonを本命にした

Mastodonは、中央集権的なソーシャルメディアプラットフォームに対する代替手段として生まれた。

他の候補

Text SNSとしてはTwitterが明らかに強いが、APIの関係で選べない。
他に検討した候補としては以下の通りだ。

サービス名不採択理由
Instagramテキストベースの投稿であり、技術的な話が多いことを考えると空気に合わなさそう
ThreadsInstagramとの連携もしっくりこないし、大手過ぎてそのうちAPI規制が強くなりそう

先行研究

各SNSにはVSCodeにおけるClientがすでに存在する。

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
  • 投稿形式の選択肢
    • フォルダ内の特定のファイル内容から投稿
    • 任意のファイルで選択した範囲から投稿

完成イメージ for VSCode
完成イメージ for posts

Optionのイメージ

  • 既定のテンプレート
  • 投稿に関するオプション

Future Work

  • 複数の投稿先を投稿しておき、投稿ごとに指定できる
  • 投稿ごとにオプションを指定できる
  • 自動で長文が分割される

VSCode Extensionの作成

  1. こちらのページに従ってlocalでプロジェクトフォルダの作成を進める

実際の作成画面

  1. GitHubでRepositoryを作成する。

  2. remote repositoryを登録する。

    • 以前はgit cloneで始めてたけど、こっちの方が楽だわ。
1
git remote add origin https://github.com/TomoTom0/Simple_Post_BlueSky.git
  1. 初期状態をcommitする。

  2. branchをdevelopに(作成して)変更する。

  3. Remoteにpushする。

Info

ちなみに、今回はVSCodeのSidebarのGUIでGitを操作している。
普通に便利。
commit message作成にgithub copilotも利用できるし。

キラキラマークでcommit messageを生成できる

まとめ

  • 今回はPJのスタートを記録した。
  • 今後はVSCode Extensionを作成していく。
  • 1週間でベータ版を目指す。
  • Misskeyの投稿を最優先に目指す
  • 期間内に終わらなくても、PJの進捗を記録することが目的。

コメント