Durable Objectsを使いこなす!vibesdkに学ぶグローバルな状態管理とリアルタイムブロードキャスト


Durable Objectsを使いこなす!vibesdkに学ぶグローバルな状態管理とリアルタイムブロードキャスト

cloudflare/vibesdk

2025-12-09

ルーク
「父上、あれは何ですか?vibesdk?何か、フォースと関係があるんですか?」

ベイダー「フフフ... ルークよ、それはフォースよりも強力な、コーディングの力を増幅させるツールだ。フォースと違い、我々ソフトウェアエンジニアに具体的な利益(メリット)をもたらす。」

集中力の向上(Vibe-Coding)

開発者は、集中を深めるために環境音やBGMを流しながら作業することがある。このSDKを使えば、その「Vibe(雰囲気)」をコードと共にライブで共有できるプラットフォームを簡単に構築できる。

自分の集中状態や作業環境を公開することで、モチベーション維持にも繋がる。

フルスタック開発の簡素化

Cloudflare Workers(サーバーレスなバックエンド)とDurable Objects(グローバルな状態管理)という、Cloudflareの強力なスタックに完全に依存して作られている。

これにより、複雑なインフラのセットアップやリアルタイム同期の処理を気にすることなく、「Vibe-Coding」というユニークな機能に集中して開発を進めることができる。スケーラビリティもCloudflareに任せられる。

特にリアルタイムでのVibe(BGMやステータス)の同期が、Durable Objectsによって非常にシンプルに実現できるのが魅力だ。

ルーク
「なるほど... 集中するための音を、リアルタイムでみんなと共有するライブ配信プラットフォームの骨格を、Cloudflareの力で簡単に作れるということですね!フォースの代わりに、サーバーレスの力を使うわけだ。」

ベイダー「その通り、ルーク。次に、その強力な武器を手に入れる(導入する)方法を教えよう。」

ベイダー
「このSDKの導入は、反乱軍を討つよりも簡単だ。必要なのはCloudflareアカウントと、ターミナルの操作スキルだけだ。」

まず、Cloudflare WorkersのCLIツールであるwranglerがインストールされていることを確認する。

# プロジェクトをクローン
$ git clone https://github.com/cloudflare/vibesdk
$ cd vibesdk

# 依存関係をインストール
$ npm install

wrangler.toml ファイルで、Durable Objectのバインディング(接続設定)を行う必要がある。

wrangler.toml内で、例えば以下のような設定を行う。

# Durable Objectsの設定
[[durable_objects]]
binding = "VIBE_HUB" # スクリプトからアクセスするための名前
class_name = "VibeHub" # Durable Objectクラスの名前
script_name = "vibesdk-worker" # ワーカースクリプトの名前

ルーク
「Durable Objects... それが、ユーザーのVibe(状態)を一箇所で管理し、全員にリアルタイムで同期させるコアなんですね。まるで、銀河の支配権を握る中央のデス・スターだ!」

ベイダー「まさに。次に、そのデス・スターを起動(デプロイ)させるのだ。」

設定が完了したら、wrangler コマンドを使ってCloudflareにデプロイする。

# Cloudflareへデプロイ
$ wrangler deploy

ベイダー
「これで、君のVibe-Codingプラットフォームが、世界中のユーザーにエッジでサービス提供されるようになる。この速さ... 反乱軍に勝ち目はない。」

ルーク「父上、デプロイは分かりましたが、具体的にコードでどうやってVibe(雰囲気)を操作するのですか?」

ベイダー
「見よ、これがVibeを制御するコアの力だ。」

このSDKの核となるのが、Durable Object であるVibeHubだ。

// vibesdk/src/vibe-hub.ts (簡略化)
import { Vibe, VibeWorker } from 'vibesdk/server';
import { VibeSDKEnv } from './worker';

// VibeHub は Durable Object としてユーザーの状態を保持
export class VibeHub extends VibeWorker<VibeSDKEnv> {
  // ユーザーの現在のVibe(BGMのURL、ステータスなど)
  currentVibe: Vibe = {
    // 例: BGMのURL、状態、テキストなど
    audioUrl: '',
    statusText: 'Coding...',
    lastUpdated: Date.now(),
  };

  constructor(state: DurableObjectState, env: VibeSDKEnv) {
    super(state, env);
  }

  // クライアントからの新しいVibeリクエストを受け取る
  // 'update' メソッドはクライアントからWebSocketで呼び出される
  async update(newVibe: Partial<Vibe>): Promise<void> {
    // 状態を更新
    this.currentVibe = { ...this.currentVibe, ...newVibe, lastUpdated: Date.now() };

    // この Durable Object に接続している全てのクライアント (WebSocket) に新しいVibeをブロードキャストする
    // これがリアルタイム同期を実現する肝!
    this.broadcast(this.currentVibe);
  }
}

状態管理
VibeHubクラスが一意なユーザー(またはセッション)の状態(currentVibe)を永続的に保持します。

リアルタイム同期
this.broadcast(this.currentVibe)によって、そのDurable Objectに接続している全てのWebSocketクライアントに対し、最新の状態が瞬時に送られます。これにより、「AさんがBGMを変えたら、Cさんの画面にも即座に反映される」というリアルタイム性の高い共有機能が、ごく少ないコードで実現します。

ルーク「素晴らしい!Durable Objectが、状態を保持し、WebSocketを使ってブロードキャストすることで、銀河の隅々まで情報を届けられる。これがvibesdkの正体... Vibe-Codingプラットフォームの設計図なんですね!」

ベイダー
「そう、ルーク。君もこの力を使い、我々のコーディング帝国を築くのだ。フォースとサーバーレスと共に...」

このSDKは、Cloudflareの強力なエッジコンピューティング能力とDurable Objectsのグローバルな状態管理機能を、リアルタイムな「共有環境プラットフォーム」の構築に応用した、非常にモダンで実践的な例となっています。

このコント形式の解説で、cloudflare/vibesdk の概要と、それがソフトウェアエンジニアにもたらすメリット、そして基本的な仕組みがお分かりいただけたでしょうか?


cloudflare/vibesdk




プロンプトもモデルもAPIも!Stable Diffusion web UIを使いこなす

Stable Diffusion web UIは、AUTOMATIC1111氏によって開発された、Stable Diffusionの強力なGUIツールです。コマンドライン操作に不慣れな人でも、直感的に画像を生成・編集できるため、AIアートを手軽に始めたい人にとって非常に便利なツールです。


北斗神拳伝承者、仲間とともにシステムを創る 〜flydelabs/flydeがもたらす新たな時代の奥義〜

想像してみてくれ。北斗の拳の世界で、ケンシロウがたった一人で強敵を倒してきたように、ソフトウェアの世界でも、あんたたちは一人、あるいは少数の仲間で、巨大なシステムという敵と戦ってきたはずだ。だが、その戦いは常に孤独だった。そこに現れたのが、「flydelabs/flyde」、こいつだ。この力は、例えるなら、北斗神拳伝承者がただ一人ではない、新たな時代の救世主を生み出すための奥義書のようなもの。


ソフトウェアエンジニア必見!AI搭載ブラウザ自動化「Stagehand」徹底解説

「browserbase/stagehand」は、AI(人工知能)と既存のブラウザ自動化ツール(Selenium、Playwrightなど)の強みを組み合わせた、まさに"goated"とも言えるフレームワークです。これまでのツールが抱えていた「UI変更に弱い」「コードが複雑になりがち」といった課題を解決し、より堅牢で、より人間らしい操作が可能なブラウザ自動化を実現します。


コントで学ぶInsForge:AIにDBもAuthも丸投げして、人間は価値創造に集中せよ

「InsForge」についてですね。これ、一言で言うと「AIエージェントに『手』と『脳(コンテキスト)』を授ける、次世代のバックエンド・プラットフォーム」です。ソフトウェアエンジニアの視点から、その凄さと使い方をコント仕立ての運勢と共にお届けします!


【エンジニア向け】デスクトップAIアシスタント「DearVa/Everywhere」の価値とサンプルコード

さて、今回ご紹介する「DearVa/Everywhere」ですが、これはソフトウェアエンジニアの皆様にとって、まさに「デスクの上に置ける、気が利くAIアシスタント」になり得る、非常に興味深いツールです。まず、このツールの本質をご説明します。


メイドが解説!エンジニアのためのRSSNext/Folo活用術

今回は「RSSNext/Folo」についてですね!ソフトウェアエンジニアのご主人様(またはお嬢様)の視点から、この便利なツールがどのように役立つのか、そしてどのように導入して使うのか、メイドのめぐが心を込めてご説明させていただきますね!RSSNext/Foloは、簡単に言うと「いろんな情報源を一つにまとめる魔法の箱」みたいなものです!‍♀


脱・ただのチャット!MCP Apps導入でAIツールに「操作可能なUI」をブチ込む最短ルート

貴様が持ってきたのは MCP (Model Context Protocol) Apps の仕様だな。これが何なのか、なぜエンジニアの血と汗を節約してくれるのか、腕立て伏せをしながらでも読めるように叩き込んでやる。準備はいいか?サー、イエス、サーと言え!


ディフュージョンモデルGUI「ComfyUI」:魔法の呪文で画像を創る!

ComfyUIは、まるで魔法少女が魔法のアイテムを使って呪文を唱えるように、画像を生成するAIモデル「Diffusion Model」を直感的に操作できるグラフィカルユーザーインターフェース(GUI)です。通常の画像生成AIは、呪文(プロンプト)を入力するだけでもすごいのですが、ComfyUIを使うと、まるで魔法の回路図を描くように、様々な処理を組み合わせてもっと複雑で美しい画像を、まるで自分の手で描いたかのように作れてしまうんです!


コントで学ぶ oraios/serena の真実:未来のプログラミングツール

OrAIos/Serenaは、AIを活用したコーディングエージェントツールキットで、セマンティック検索とコード編集の能力を提供します。MCPサーバーとAgnoの統合により、開発プロセスを劇的に効率化する可能性を秘めています。ソフトウェアエンジニアの視点から、その魅力と活用法を分かりやすく解説しましょう。