> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 競合を監視する

> 毎週実行されるルーティンを作成し、役立つ地域リサーチとローンチプランの更新をコーヒーショップの会話に届けましょう。

export const RoutineWatchCover = () => <div className="chat-mkt" role="img" aria-label="A frosted recurring market watch with a schedule and research updates" style={{
  margin: "28px 0 42px",
  borderTop: 0,
  paddingTop: 0
}}>
    <div className="chat-use-case-visual" style={{
  aspectRatio: "auto",
  minHeight: "clamp(220px, 34vw, 320px)",
  overflow: "hidden",
  background: "radial-gradient(circle at 50% -18%, rgba(255,255,255,.82), transparent 42%), radial-gradient(circle at 4% 96%, rgba(255,184,146,.48), transparent 38%), linear-gradient(140deg, #ff764d, #ff3c00 60%, #c92d00)"
}}>
      <div aria-hidden="true" style={{
  position: "absolute",
  inset: 0,
  background: "linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,0) 48%, rgba(111,24,0,.2))"
}} />
      <div aria-hidden="true" style={{
  position: "relative",
  zIndex: 1,
  display: "grid",
  gridTemplateColumns: "minmax(0, .9fr) minmax(0, 1.25fr)",
  gap: "clamp(12px, 2.5vw, 24px)",
  width: "min(720px, 84%)",
  minHeight: "inherit",
  alignItems: "center",
  margin: "auto"
}}>
        <div style={{
  display: "grid",
  placeItems: "center",
  aspectRatio: "1",
  border: "1px solid rgba(255,255,255,.6)",
  borderRadius: 24,
  background: "linear-gradient(180deg, rgba(255,255,255,.34), rgba(255,255,255,.12))",
  boxShadow: "0 18px 36px rgba(55,27,18,.2)",
  backdropFilter: "blur(6px)"
}}>
          <div style={{
  position: "relative",
  width: "44%",
  aspectRatio: "1",
  border: "2px solid rgba(255,255,255,.86)",
  borderRadius: 999
}}>
            <span style={{
  position: "absolute",
  width: "2px",
  height: "34%",
  left: "50%",
  top: "18%",
  transformOrigin: "bottom",
  transform: "translateX(-50%) rotate(22deg)",
  borderRadius: 99,
  background: "rgba(255,255,255,.9)"
}} />
            <span style={{
  position: "absolute",
  width: "2px",
  height: "26%",
  left: "50%",
  top: "25%",
  transformOrigin: "bottom",
  transform: "translateX(-50%) rotate(-72deg)",
  borderRadius: 99,
  background: "rgba(255,255,255,.9)"
}} />
          </div>
        </div>
        <div style={{
  display: "grid",
  gap: "clamp(9px, 1.6vw, 14px)"
}}>
          {["82%", "64%", "74%"].map((width, index) => <div key={width} style={{
  display: "grid",
  gridTemplateColumns: "18px minmax(0, 1fr)",
  alignItems: "center",
  gap: 10,
  padding: "clamp(10px, 1.6vw, 14px)",
  border: "1px solid rgba(255,255,255,.48)",
  borderRadius: 15,
  background: index === 0 ? "rgba(255,255,255,.3)" : "rgba(255,255,255,.13)",
  backdropFilter: "blur(5px)"
}}>
              <span style={{
  width: 18,
  height: 18,
  borderRadius: 6,
  background: index === 0 ? "rgba(255,255,255,.9)" : "rgba(255,255,255,.42)"
}} />
              <span style={{
  width,
  height: 7,
  borderRadius: 99,
  background: "rgba(255,255,255,.74)"
}} />
            </div>)}
        </div>
      </div>
    </div>
  </div>;

export const CoffeeShopScreenshotFrame = ({src, alt}) => <div style={{
  margin: "28px 0",
  overflow: "hidden",
  borderRadius: "24px",
  background: "radial-gradient(circle at 50% -18%, rgba(255,255,255,.82), transparent 42%), radial-gradient(circle at 4% 96%, rgba(255,184,146,.48), transparent 38%), linear-gradient(140deg, #ff764d, #ff3c00 60%, #c92d00)",
  boxShadow: "0 16px 32px rgba(112,36,13,.18)"
}}>
    <div style={{
  padding: "clamp(10px, 2vw, 18px)",
  background: "linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,0) 48%, rgba(111,24,0,.2))"
}}>
      <a href={src} target="_blank" rel="noreferrer" aria-label={`Open ${alt} at full size`} style={{
  display: "block",
  overflow: "hidden",
  border: "1px solid rgba(255,255,255,.62)",
  borderRadius: "16px",
  background: "rgba(255,255,255,.96)",
  boxShadow: "0 12px 28px rgba(55,27,18,.2)",
  cursor: "zoom-in"
}}>
        <img src={src} alt={alt} style={{
  display: "block",
  width: "100%",
  height: "auto"
}} />
      </a>
    </div>
  </div>;

export const AiPrompt = ({children}) => {
  return <CodeBlock className="relative block max-w-full overflow-x-hidden font-sans !whitespace-pre-wrap !break-words" style={{
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
      <div className="pr-7" style={{
    whiteSpace: "pre-wrap",
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
        {children}
      </div>
    </CodeBlock>;
};

<RoutineWatchCover />

ローンチプランと選んだ地域モデルは揃いました。しかし、地域のイベント、近隣の
コーヒーショップ、市場の状況は、開店前に変化する可能性があります。

ルーティンは、スケジュールに従って実行され、結果を同じ会話に返す定期タスクです。
ルーティンを作成して、地域の競合を監視し、プランに影響しうる変化を確認しましょう。

## 地域市場のルーティンを作成する

<Steps>
  <Step title="定期的なリクエストを書く">
    カフェのローンチにとって重要な情報を監視するよう、Replit に依頼します。

    <AiPrompt>
      毎週月曜日に、地域のイベント、近隣のコーヒーショップ、そして私の地域密着型
      カフェのローンチに影響を与えうる変化を確認してください。何が変わったかを
      要約し、それが重要な理由を説明し、この会話内でローンチプランへの更新点を
      提案してください。
    </AiPrompt>
  </Step>

  <Step title="スケジュールと監視対象を明確にする">
    ルーティンをいつ実行し、何を監視すべきかについての Replit のフォローアップの
    質問に答えます。たとえば、月曜の朝を選び、選んだ地域、比較対象となるカフェ、
    地域のイベントを監視するよう依頼します。
  </Step>

  <Step title="ルーティンを確認して承認する">
    提案された指示内容とスケジュールを確認し、ルーティンを承認します。承認すると、
    Replit はお使いのデバイスのタイムゾーンを使用します。承認前に、実行ごとの
    予算を調整することもできます。

    <CoffeeShopScreenshotFrame src="/images/coffee-shop-launch/review-routine.png" alt="タイトル、指示内容、月曜のスケジュール、実行ごとの予算、Create routine ボタンを示す Replit のルーティン承認画面" />
  </Step>

  <Step title="結果を確認してプランを見直す">
    ルーティンを作成すると、Replit はタイトル、スケジュール、予算、そして監視対象を
    確認します。以降の結果は、その都度この会話に返されます。

    <CoffeeShopScreenshotFrame src="/images/coffee-shop-launch/routine-created.png" alt="月曜のスケジュール、実行ごとの予算、監視する地域の変化を示す、Lausanne café launch watch という名前で作成されたルーティン" />

    各更新を活用して、立地、メニュー、予算の前提、あるいはオープンプランを変更すべきか
    どうかを判断しましょう。優先事項が変わったら、ルーティンを更新または削除してください。
  </Step>
</Steps>

セットアップと管理の一連の流れを含め、[ルーティン](/ja/chat/routines)について
さらに詳しく学びましょう。

次に、[会話とプロジェクト](/ja/home/conversations-and-projects)について学びましょう。
