コンテンツにスキップ

クイックスタート

Spantail は作業可視化プラットフォームです。人の作業を作業エントリとして、AI エージェントの活動をエージェントセッションとして記録し、その両方をレポートにまとめます。 セルフホスト型で、1つのデプロイが1つの組織に対応し、すべてがあなたの Cloudflare アカウント上で動きます。

このページはハンズオンです。空の Cloudflare アカウントから始めて、15 分ほどで、 ワークスペース・プロジェクト・1日分の作業エントリ・自分の受信トレイに届いた日報までを 一気に作ります。各ステップからは、詳しく解説したリファレンスへリンクしています。

GitHub アカウントと Cloudflare アカウントだけです。以降の作業はすべて ブラウザで完結し、手元のマシンでコードを動かすことはありません。

:::note Spantail はアップロードされたアバターやロゴを R2 バケットに保存するため、事前に Cloudflare アカウントで R2 を有効化しておく必要があります。R2 には無料枠が ありますが、有効化には支払い方法の登録が必要です。 :::

デプロイしてセットアップする

Section titled “デプロイしてセットアップする”
  1. fork からデプロイする

    Spantail は自分の fork から、 Cloudflare Workers Builds でビルドして動かします。一度つないでしまえば、以降は push するたび — GitHub の Sync fork ボタンを含めて — マイグレーションとデプロイが自動で走ります。

    a. リポジトリを Fork する。 spantail/spantail を開き、右上の Fork をクリック、次の画面で Create fork をクリックします。これで 自分のアカウント/spantail が手に入ります。

    b. データベースを作る。 Cloudflare ダッシュボードにサインインします。左の サイドバーで Storage & Databases → D1 SQL Database を開き、Create をクリック、 名前を spantail-db にして Create をクリックします。作成したデータベースを開き、 その Database ID(データベースのページに表示されます)を控えます。これが手順 d で指定する、インスタンスごとに固有の唯一の値です。

    c. バケットを作る。 左のサイドバーで R2 Object Storage を開き(未有効なら 先に有効化します)、Create bucket をクリック、名前を spantail-uploads にして Create bucket をクリックします。

    d. fork を Worker としてインポートする。 Workers & Pages を開き、Create をクリックします。Ship something new 画面で Connect GitHub をクリックします。 初回は GitHub 側で Cloudflare Workers and Pages アプリのインストール先を 聞かれるので、自分のアカウントを選び、Only select repositories → spantail を選んでインストールします。ダッシュボードに戻ると Select a repository ステップにリポジトリ一覧が表示されるので、spantail を選んで 次へ を クリックし、次を設定します。

    • プロジェクト名: spantail — apps/web/wrangler.jsonc の name と一致させます。
    • ビルド コマンド: 値が入っていたら空にします。
    • デプロイ コマンド: 初期値を pnpm run deploy:ci に書き換えます。
    • 詳細設定 を開き:
      • パス: apps/web
      • 変数を追加する: 変数名 D1_DATABASE_ID、変数値 = 手順 b で控えた Database ID。

    Create and deploy をクリックします。最初のビルドがマイグレーションを適用して Worker をデプロイします。完了すると Worker のページに公開アドレス https://spantail.<自分のサブドメイン>.workers.dev が表示されます(Visit ボタンで 開けます)。これがインスタンスの URL で、手順 2 でここからサインインします。

    e. セッション用シークレットを追加する。 Worker はできましたが、まだセッションに 署名できません。Worker を開き Settings → Variables and Secrets → Add で、種別に Secret を選び、名前を BETTER_AUTH_SECRET、値に 32 文字以上の任意の文字列を 貼り付けます(例: 任意のターミナルで openssl rand -base64 32 を実行、または パスワードマネージャで生成)。反映するには Deployments → Retry deployment (または fork へ何か push)します。

    :::caution BETTER_AUTH_SECRET は Worker のランタイム Secret で、手順 d の build variable とは別物です。これが無いと Worker は fail closed になり、認証やセッションに触れる リクエストがすべてエラーになります(偽造可能な値で署名しないため)。 :::

    Spantail はリクエストから origin を導出するため、オリジンの設定は不要です。 カスタムドメインの割り当てや、手元のマシンから Wrangler でデプロイする方法は、 Cloudflare へのデプロイ と 設定 を参照してください。

  2. インスタンス管理者になる

    手順 1 のインスタンスの *.workers.dev の URL を開きます。ログイン画面が表示されるので、 下部のアカウントをお持ちでない方はこちらリンクでサインアップフォームに 切り替えます。まっさらなインスタンスでは、最初のアカウントが 作られるまで公開サインアップが開いています。メールアドレスとパスワードで 最初にサインアップした人がインスタンス管理者になり、その時点でサインアップは 閉じます。以降のメンバーは招待で参加します。

    最初のアカウントが作られる前の、まっさらなインスタンスのサインアップ画面。

    サインアップすると、セットアップウィザードに着地します。ウィザードは 5 ステップありますが、ここで重要なのは最初の 2 つです。

    • 最初のワークスペースを作成 — 名前とスラッグ。ワークスペースは プロジェクトと作業をまとめる組織の単位です。
    • プロジェクトを作成 — 名前とスラッグ。プロジェクトは記録する作業を まとめる単位です(作業エントリはワークスペース全体のままにもできます)。

    インスタンス設定とメンバーを招待は今回スキップします。メール配信には Workers 有料プランと認証済みの送信ドメインが必要で、メンバーは後から ユーザー管理 で招待できます。ウィザードを終えると、作成した ワークスペースのダッシュボードに着地します。

    ウィザードのステップ1「最初のワークスペースを作成」。名前とスラッグの入力欄。

    ウィザードが扱うのは初回起動時だけで、設定した内容はあとから設定ハブで変更 できます。初期セットアップウィザード、 ワークスペース設定、 プロジェクト を参照してください。

  3. その日の作業を記録する

    ダッシュボードにはワークスペースのタイムラインが表示されます。+ ボタン (または C キー)で作業エントリのダイアログを開き、入力します。

    • プロジェクト — さきほど作ったもの。
    • 日付 — 既定は自分のタイムゾーンでの今日。
    • 内容 — 何をしたか。
    • 作業時間 — 90、90m、1.5h、1h30m はいずれも同じ意味です。

    保存すると、作業エントリがタイムラインに表示されます。次のステップのレポートに中身を 持たせるため、2〜3 件入れておきましょう。続けて入力するのトグルを使うと、 ダイアログを開いたまま連続で記録できます。

    「作業を記録」ダイアログ。プロジェクト・日付・内容・作業時間・タグを入力した状態。

    作業エントリの日付は書き込み時に作成者のタイムゾーンで固定されます。ずれている 場合はアカウントと設定でタイムゾーンを設定 してください。詳細は作業を記録するにあります。

  4. 日報を作成する

    レポートはワークスペースではなくユーザーに属するため、サイドバーではなく ヘッダーの右上にあります。レポートを開き、新規レポートをクリックします。 左がフォーム、右がライブプレビューです。次を設定します。

    • テンプレート — 表示形式。この時点でインスタンスにテンプレートは無いので、 スターターテンプレートが自動で用意され、日報が選択された状態で開きます。
    • ワークスペース — さきほど作ったもの。
    • 期間 — 今日のプリセット。日報テンプレートが事前に設定してくれます。 これが日報にするということです。

    名前とノートはテンプレートから自動で埋まります。保存するとレポートが レンダリングされます。

    新規レポートのダイアログ。左にテンプレートとフィルタ、右に Markdown のライブプレビュー。

    保存されたレポートは不変のスナップショットです。編集すると上書きではなく 新しいバージョンが追加されるため、レポートは常にレンダリング時点のデータを 表します。レポートとメッセージ と レポートテンプレート を参照してください。

  5. 自分宛てに送信する

    レポートのツールバーで送信をクリックします。宛先は選ばずに、自分の インボックスにも送るにチェックを入れて送信します。「自分のインボックスに 送りました。」と表示されます。

    宛先を選ばず「自分のインボックスにも送る」にチェックを入れた送信ダイアログ。

    :::note レポートの送信は、アプリ内の受信トレイに凍結されたコピーを届けるもので、 メール送信ではありません。Spantail がメールを送るのは招待とパスワード リセットのときだけで、それもメール配信を設定した場合に限られます。 :::

    ヘッダー右上の受信トレイを開くと、いま送ったコピーが届いています。送信された バージョンごとにディスカッションが付き、送信者とそのバージョンの受信者が Markdown のコメントと絵文字リアクションをやり取りできます。

    受信トレイに届いたレポート。凍結された本文と、その下のディスカッション。

自分の Cloudflare アカウント上の Spantail インスタンス、ワークスペース、 プロジェクト、1日分の作業エントリ、そして受信トレイに届いた日報です。記録したデータは すべてワークスペースに属します。レポートは自分のもので、共有するかどうかも 自分の判断です。

ここで出てきた言葉 — ワークスペース、プロジェクト、作業エントリ、レポート — は ユーザーガイドの概要で定義しています。

チームを迎え入れるには、システム設定 でメール配信と ソーシャルログインを有効にし、ユーザー管理 からメンバーを 招待してください。