1 ポイント 投稿者 GN⁺ 2025-08-08 | まだコメントはありません。 | WhatsAppで共有
  • 既存のコメントシステム(Disqus、セルフホスティング、GitHub Issues など)は、速度、トラッキング、保守負荷、ユーザー制限などの問題で採用していない
  • Blueskyはインフラ維持が不要リッチコンテンツ対応実名ベースのアカウントクロスプラットフォーム対話が可能で、ブログのコメントに適している
  • 実装方法は、ブログ記事を投稿 → Blueskyに共有 → AT URIをブログ投稿のメタデータに追加 → 該当投稿のコメントスレッドを取得して表示する構造
  • コンポーネントは、コメント全体の表示、個別コメント+返信の表示、画像・リンクなど埋め込み処理の3つに分離
  • 再帰方式で最大5段階の返信表示、画像グリッド・モーダル、リンクカード、未対応の埋め込みは代替文言で処理
  • Astro + React統合、client:loadでクライアント側で読み込み、frontmatterにDIDとpostCidを追加して有効化
  • 型安定性確保のために@atcute/client TypeScript型を活用し、JavaScript無効時でも本文が正常表示されるプログレッシブ・エンハンスメント構造
  • サーバー・DBなしでBluesky APIとCDNを活用してパフォーマンスを確保
  • このアプローチは、ソーシャル機能をサイトごとに再実装する代わりに、ユーザーが既に使っているプラットフォームと接続することで拡張性と独立性を確保する

Blueskyをコメントシステムとして選んだ理由

  • インフラ維持が不要
  • 画像・リンク・引用投稿など豊富なコンテンツをサポート
  • Blueskyアカウントベースの信頼性と責任性
  • ブログとソーシャルメディア間でトラフィックの相互流入が可能
  • コンテンツ所有権の分離(ブログ記事は本人、コメントは投稿者所有)

AT Protocolの理解

  • DID: 分散型ユーザー識別子
  • CID: コンテンツ識別子
  • AT URI: at://did:.../app.bsky.feed.post/... 形式のアドレス
  • getPostThread API呼び出しでコメントスレッドを取得可能、認証不要

コンポーネント構成

  • メインコメントコンポーネント
  • 個別コメント+返信レンダリングコンポーネント
  • 画像・リンクなど埋め込み処理コンポーネント

ネストコメントの処理

  • 再帰レンダリング、最大深度5段階の制限
  • 視覚的インデントで階層を表現

リッチコンテンツの処理

  • 画像: CDN提供、複数画像グリッド・モーダルビュー
  • 外部リンク: サムネイル・説明を含むカードレンダリング
  • その他の埋め込み: 代替文言を表示

Astro統合

  • Reactコンポーネント + client:load使用
  • frontmatterにBluesky DID、postCidを追加してコメントを有効化

開発体験

  • TypeScript型サポートで安定性を確保
  • Progressive Enhancementにより、API障害時でも本文への影響なし
  • サーバー・DBの負荷なしでBlueskyインフラを活用

結論

  • 既存のコメントシステムの課題を回避し、ユーザーがすでに使っているプラットフォームと接続
  • Blueskyの成長に伴い参加者の増加が期待できる
  • ATProtoベースのため、他のAppViewや独自実装への移行も容易

まだコメントはありません。

まだコメントはありません。