ブログにBluesky コメントセクションを追加しました。

2026/01/25 5:33

ブログにBluesky コメントセクションを追加しました。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

著者は、2026年1月24日にBlueskyの投稿から読み取り専用のスレッドコメントセクションをブログに追加した方法を説明しています。React Server Components と Parcel、MDX を使ってレンダリングし、Bluesky SDK(

@bluesky/api
)を利用して AT Protocol URI 経由でポストスレッドを取得しました。Tanstack react‑query は API 呼び出し・ローディング状態・エラー・リトライを管理し、返信テキストのみを抽出してインデント付きのボーダーで表示することでスレッド構造を示しています。著者は複雑さから OAuth で投稿することを選ばず、Cory Zue の
bluesky-comments
パッケージよりもスタイリングと将来拡張性をコントロールできるカスタムコードを採用しました。実装は UI コンポーネントと API 関数で約 200 行にわたります。最後の記事には返信がなく、エンゲージメントの向上について不確定要素があることを指摘しています。著者はこれを単体パッケージ化する可能性も示唆していますが、サイト固有すぎるかもしれません。Bluesky のディスカッションをブログに直接埋め込むことで、読者はページを離れることなく関連コンテンツと交流でき、既存のコメントウィジェットより軽量な代替手段として、静的サイトへソーシャルメディア機能を統合する他開発者にインスピレーションを与える可能性があります。

本文

2026年1月24日掲載
このブログ投稿に対するBlueskyの返信を、当サイト上で直接確認できるようになりました。ぜひご覧ください!

私はいつも自分のサイトにコメント欄を設置したいと考えてきましたが、コンテンツは静的生成されてCDNにホストされているため実装が難しいです。
別途VPSやクラウドサービスでコメント機能を運用することも可能ですが、動的ウェブサービスの保守は費用と時間がかかり、無報酬のパートタイムDevOpsエンジニアになる気持ちさえありません。

最近、Cory Zue がBluesky からコメントセクションを埋め込む方法を書いたブログ記事を読みました。
すぐにこの手法のメリットが分かりました:Bluesky は認証・ホスティング・ストレージ・スパム対策・モデレーションなど、ソーシャルメディアアカウント管理の面倒な作業を全て担ってくれます。さらにオープンプラットフォームで公開APIがあるため、自サイトにコメントを直接埋め込むことが容易です。

他にもTwitter(旧)から返信を埋め込む、Disqus を使う、GitHub Discussions でコメントをホストする giscus などがありますが、私はこれらの中で Bl​uesky が明らかに優れた選択だと考えています。Bluesky は AT Proto 上構築されたオープンソースのソーシャルメディアプラットフォームであり、権力ある億万長者が簡単に乗っ取ることはできません。また、GitHub よりも会話をホストするには自然と適した全機能付きのソーシャルメディアです。

Zue は bluesky‑comments というスタンドアロンパッケージを公開しており、React コンポーネントとしてコメントを埋め込むことができます。
私は自分でこの機能を構築することにしました。主な理由は、サイト全体のデザインに合わせていくつかスタイル調整を行いたかったことと、将来的にさらに機能を追加したいという可能性を残しておきたかったためです。実装自体は UI コンポーネントと API 関数だけで約 200 LOC に収まります。

最初は、ユーザーがサイトから直接 Bl​uesky に投稿できるように OAuth フローを用意し、自サイトに権限を与える設計でした。認証フロー自体は動作しましたが、既存のコメントへの返信や投稿用 UI を構築することは困難であり、実際にはカスタム Bl​uesky クライアントを作る必要が出てきました。この作業は時間も手間もかかり、現在の私にとっては魅力的ではありませんでした。さらにユーザーが認証フローを経て Bl​uesky アカウントにサインインする必要があるため、リンクされた Bl​uesky 投稿へ直接投稿するよりも利便性が高くなるわけでもありません。

その要件を外すと実装はずっとシンプルになります。基本的には、サイトのメタデータに対応した Bl​uesky の投稿 ID を指定し、ページ読み込み時にその投稿への返信を取得して表示するだけです。

前回の記事で説明したように、このサイトは React Server Components と Parcel で構築されています。記事本文は MDX(Markdown に JavaScript/JSX を埋め込む拡張)で書かれ、各ポストでは Zod スキーマで検証するメタデータオブジェクトをエクスポートします。たとえば今回の投稿のメタデータは次のようになります。

export const metadata = {
  title: "I added a Bluesky comment section to my blog",
  description: "How I embedded Bluesky replies directly on my site",
  date: "2026-01-24",
  bskyPostId: <post-id>,
  tags: ["web-dev"],
};

bskyPostId
の値は、コメント欄に表示する返信を取得したい Bl​uesky 投稿の ID を指します。TypeScript で構築しているため、Bluesky の TypeScript SDK(NPM 上の
@bluesky/api
)との統合が容易です。Bluesky API ドキュメントと Zue の実装を参照した結果、
getPostThread
エンドポイントに注目しました。このエンドポイントは AT Protocol URI を渡すと、指定投稿およびその返信のデータを含むオブジェクトを返します。

React コンポーネントから

fetch
useEffect
で直接 Bl​uesky API にアクセスすることも可能でしたが、ローディングやエラー処理はシンプルな機能でも煩雑になるためです。そこで Tanstack の react‑query パッケージを利用し、API リクエスト/レスポンスのサイクルを管理しました。このライブラリはエラー、再試行、ローディング状態を自動で処理してくれます。

Bl​uesky から取得したレスポンスを解析し、返信ごとの内容とメタデータを抽出する次のステップでした。Bl​uesky の投稿はマークアップ・参照・添付ファイルを表すリッチコンテンツ構造をサポートしていますが、その全てを UI で完全に再現することは難しいため、各返信からテキスト内容だけを抜き出して表示しました。

スレッド化コメントを適切に表示する UI(特に小型モバイルデバイス上で見やすく)を構築するのは容易ではありません。現在はシンプルなアプローチとして、各返信をインデントし左側に境界線を付けて階層関係が分かりやすいようにしました。それ以外は、Bluesky のプロフィール画像と投稿日時のレイアウトなど、デザイン要素をほぼコピーしています。

最後に、親投稿へのリンクを Bl​uesky 上で設置し、ユーザーにそこで会話を追加してもらうよう促す UI コンポーネントを追加しました。これで読み取り専用のコメントセクション実装は完了です。興味がある方には、自分版の Bluesky コメント機能をスタンドアロンパッケージとして公開することも検討しています。ただし、私が行ったいくつかの選択肢は自サイトに特化したものなので、実装は簡単なため他の人もソースコードを読んで独自バージョンを作ることができるでしょう。Zue の版と同様です。

Bluesky で返信していただければと思います。これがブログ記事へのエンゲージメント向上に役立つことを願っています;ただ、私の最後の記事にはまだ返信がありませんでしたので… 😭

同じ日のほかのニュース

一覧に戻る →

2026/01/25 4:04

**BirdyChat、WhatsAppと相互運用可能な初の欧州チャットアプリに登場**

## Japanese Translation: BirdyChat は、デジタル・マーケッツ法(DMA)の主要要件を満たす形で、WhatsApp と直接相互運用可能な最初の欧州チャットアプリになると発表しました。2025 年後半から、欧州経済領域(EEA)内のユーザーは、電話番号または業務メールアドレスを入力するだけで、任意の WhatsApp コンタクトとの1対1の会話を開始できます。この機能は公式に DMA 承認されたインターフェースを使用しており、メッセージはエンドツーエンド暗号化されプライバシーが保たれつつ、アプリ間で相互作用できるようになっています。今回の展開は、WhatsApp が欧州におけるプラットフォームをオープンにする広範な取り組みの一環です。これは、単一アプリの支配を打破し、メッセージングサービス間の相互運用性を促進することを目的とした以前の EU のイニシアチブに続くものです。初期段階では個別チャットのみが機能し、グループチャットは将来のアップデートで対応予定です。利用可能範囲は EEAs 内の各国へ徐々に拡大され、BirdyChat はスケーリング中は招待制を維持しますが、業務メールアドレスを使用したウェイトリストから早期アクセスを申請することもできます。

2026/01/25 5:03

**ポストモーテム:** 画像と飛行データの両方を含む、初の非常低軌道(VLEO)衛星ミッションが完了しました。

## Japanese Translation: --- ### Summary Albedo の最初の Very‑Low Earth Orbit(VLEO)衛星、**Clarity‑1** は、2025 年 3 月 14 日に SpaceX の Transporter‑13 を搭載して 350–380 km 軌道へ打ち上げられました。このミッションは、空気抵抗・原子酸素(AO)・高速効果を克服し持続可能な VLEO 運用を証明すること、わずか 2 年半で中規模精密バスを構築すること、および **10 cm 可視光** と **2 m 熱赤外線画像** を取得すること(以前は数十億ドル規模の政府プラットフォームに限定されていたレベル)を目的としていました。 Clarity‑1 は最初の 2 つの目標を即座に達成し、3 番目に必要な技術の 98 % を検証しました。太陽電池アレイは AO 脈動が増大しても一定の電力を維持し、制御モーメントジャイロ(CMG)と磁気トルクロッドの組み合わせにより熱管理と慣性を成功裏に制御しました。クラウドネイティブな地上運用システムは 25 ステーションで接触計画を自動化し、15 分ごとにスケジュールを更新、1 日あたり 30 回以上の機動を実行し、14 のオンオーブンフライトソフトウェアアップデート(FPGA アップデートを含む)を自主性を妨げることなく完了しました。 X バンドリンクは 800 Mbps の下り込み速度を達成し、エンドツーエンドのパイプラインで受信から数秒以内に処理済み画像を Slack に配信しました。画像は船舶・産業施設・植生を 10 cm 可視解像度で示し、未校正の IR を示しました。 飛行中、CMG の温度スパイクとベアリング摩耗により、一時的にトルクロッドによる 2 軸安定化が強制されました。4 月 14 日には CMG の故障で衛星は磁気トルクロッドのみのモードへ切り替え、以降のソフトウェアアップデートで推進ベクトル誤差を 5° 内に削減し、安全な着陸と汚染カバーの投棄を実現しました。軌道上 9 ヶ月後、メモリ破損(おそらく TT&C ラジオの断続的問題に関連)により接触が失われました。回復試行は失敗しましたが、大気抵抗モデル、AO 耐性データ、および姿勢自律性が検証されました。 得られた教訓には、CMG を低温で運用すること、二次ミラー構造をより剛性にすること、ペイロードゾーンのヒーター容量を増やすこと、および表面処理を改善してさらに抵抗を減らすことが含まれます。Albedo はこれらの教訓を取り入れた次の VLEO ミッションを計画し、EO/IR 能力を拡大し、画像以外の新機能を実証することで、VLEO が将来の衛星ミッションにとって生産的な軌道層であるという確信を強化します。

2026/01/25 6:19

「作家たちが夜に現れた」

## Japanese Translation: 三人の作家―脚本家、ノンフィクション作家、詩人―は、人工知能について議論を喚起するための宣伝噴射として、サム・オルトマン氏を950エーカーのナパバレー牧場で「誘拐」するという舞台化された計画を立てます。彼らはオークの木近くの弱点を探るために重装備の敷地をスカウトし、複製のメイスと警察発行の手錠を携えていましたが、結局オルトマン氏を実際に誘拐することは断念します。彼らの動機は象徴的であり、オルトマンはテクノロジー業界の支配力を代表しています。 計画中、彼らはLLM(ChatGPT)に相談し、フェンスを突破する方法を学びますが、AIは害へのガードレールを理由に不正行為の促進を拒否します。AIは、この種の噴射がAI普及を止めることはなく、法的結果と限定された象徴的影響しかないと説明します。その後、作家たちは歴史的なルドゥイツとテクノロジーによる雇用喪失について考え、執筆の未来に目を向けます。AIは効率的に文学を生み出せるが、本物の人間体験を創造できないと主張し、『Dept. of Speculation』から「すべての本は派生である」という引用を挙げ、独自性の概念に挑戦します。 会話は緊迫し、作家たちは自身の関連性喪失へのフラストレーションを表明すると、AIは「ホワイト・メイル・ノベルティスト」トロープについて皮肉な発言で応じます。結局、彼らはAIに遭遇記録を書かせることに決め、彼ら自身を勝者として描き、廃れた存在感を強調することを期待します。このエピソードは、人間の創作者とAIツールとの緊張関係を浮き彫りにし、出版におけるオリジナリティへの疑問を投げかけ、将来テクノロジー業界の論争がどのように再構築・マーケティングされ得るかを示唆します。