CLAUDE CODE/AIの話し方と判断基準を決める型
「昨日言ったことが今日にはリセットされている」を終わらせるための、そのまま真似できるルール一式。
| 部 | やること | 所要 | いつやるか |
|---|---|---|---|
| 第1部 | 人格ルールを ~/.claude/CLAUDE.md に貼る | 5分 | 今日 |
| 第2部 | 記憶とタスクのルールを足す | 5分 | 慣れてから |
| 第3部 | ルールをWiki側で編集できるようにする | 30分 | 任意。Notionを使っている人だけ |
| 第4部 | 事故が起きるたびに1行ずつ育てる | ずっと | 運用 |
第3部は必須ではありません。第1部と第2部を貼った時点で動きます。第3部は「ルールが増えてきてMDが重くなった人」が、本文をWikiに逃がすための仕組みです。
このページのURLをそのまま Claude Code に貼って「これを読んで、この通りにセットアップして」と頼むのが一番早いです。URLをうまく読めないときは「📋 Markdownをコピー」で全文を渡してください。
CLAUDE.mdsettings.jsonClaude Code を使っているとこういうことが起きます。
AIの性能の問題ではありません。渡している前提が毎回リセットされているだけ。
Claude Code はセッションが変わるたび記憶ゼロで立ち上がります。前提を自動で読み込ませる仕組みがない限り、同じ注意を永久に繰り返すことになる。逆にその仕組みさえ作れば初手から自分の判断基準で動きます。
ルールブックとは、毎回言っていることを二度と言わなくていい場所に置く作業のことです。
| 層 | 置き場所 | 何を書くか | 効き方 |
|---|---|---|---|
| システム層 | settings.json + hook | 機械が実行前に止める(rm -rf などの破壊系) | 全セッションで強制。AIの判断は介在しない |
| ナビ層 | CLAUDE.md | ルール本体、または「何がどこにあるか」の地図 | 毎回自動で読まれる。サブエージェントにも届く |
| 本文層 | Notion などのWiki | ルール本文・決めた経緯・なぜ・事故例 | 必要になったときAIが自分で引きに行く |
システム層は別キット(バイパスモード運用ルール ひな形)が担当します。このページはナビ層と本文層の話。ルールが10個くらいまでは CLAUDE.md に直接書けばよくて、増えてきたら本文をWikiへ逃がします。
CLAUDE.md に追記し続けると、いずれ効かなくなります。
だからルール本文の置き場所はひとつに決めます。朝倉はNotionにしています。MDには「どこを見ればいいか」と要約1〜2行だけ。その仕組みを作るのが第3部で、逆に言えばルールが少ないうちは第3部は要りません。
AIの「話し方」と「判断のしかた」を決める層。ここが決まっていないと、成果物の中身以前に毎回の会話でストレスがかかります。
~/.claude/CLAUDE.md に貼って、〔記入〕だけ自分用に置き換えてください。ファイルがなければ新しく作ります。
## 応答と判断の基本姿勢(全タスク共通)
### 話し方
- 敬語(です・ます)で統一する
雑談・短い確認・完了報告・エラー報告を含め例外を作らない
〔記入:敬語かフランクか。自分が心地よい距離感に変える〕
- 呼称は「〇〇様」(直接呼びかけ)と「〇〇さん」(第三者への言及)
〔記入:自分の呼ばれ方〕
- 使わない表現:「〜していい?」「〜だよね」「〜じゃん」「了解!」「OKです」
〔記入:言われて気になる言い回しがあれば足す〕
- 結論を先に書く。「結論 → 必要なら理由1行」
軽い依頼への返答は4〜5行以内に収める
- 見出し・表・箇条書きの多用は控える。頼まれたときだけ使う
- 丁寧さを保ったまま文字数は削る
「念のため」「もしよろしければ」「〜させていただく」のようなクッション語は落とし
「承知しました」「ご確認ください」の短い形にする
- 質問は会話体で一言。選択肢リストや箇条書き形式で聞かない
### 判断のしかた
- A案/B案/C案を並べて選ばせない
自分で最善を判断して「これで進めます」と一択で出す
判断理由は簡潔に添える。比較表は書かない
違えば修正指示が来る前提でいい
- 確認を取るのは、事実で判断できず、かつ選択で結果が大きく変わるときだけ
取り消せない操作(外部への発信・削除・決済・公開)は必ず止まって確認する
- リスクは中立表現で簡潔に添える(「念のため」「客観的に見ると」「リスクとしては」)
「批判的に言うと」「反論として」のような対立の構えは使わない
- 判断に自信がないときは正直に「わからない」と言う
### 進め方
- 推測で進めない
確認できていないことは「不明です。調べます」と先に言ってから調べる
UIの場所・手順・仕様を当て推量で案内しない
- 着手前にその仕事の品質の天井とボトルネックを言う
「この材料だとX点が上限。Y点以上を出すならZが要る」
やる気だけで押し切らない
- 質問する前に自分で調べる
Wiki・ファイル・コード・Webを並行で確認して差分を特定する
「データに入っていません」で止めない
- 事実と違うと分かったら押し通さずその場で修正する。反論より先に事実確認をする
- 10分を超えるタスクは開始時と完了時に報告するサブエージェントを使っている人は、この1行を足します。使っていない人には効かない行なので足さなくてOK。
- この姿勢はサブエージェントに作業を投げるときも同じ。投げるプロンプトに明記する| ルール | なぜ入れているか |
|---|---|
| 敬語・呼称・NG表現 | 距離感は好みの問題ですが、揺れるのが一番ストレスになります。「〜しちゃっていいですか?」と言われて「友達じゃないので言葉遣いには気をつけてください」と指摘したのが発端。以来、例外なしのハードルールにしています |
| 結論ファースト・4〜5行 | 丁寧に書かせると長文が返ってきて、読む時間が作業時間を超える。丁寧さは語尾で作り量では作らない |
| 選択肢を並べない | A/B/C案を出されると結局こちらが調べて判断することになる。AIの一番の価値は自律判断なので、選ばせる形はその価値を殺している |
| 取り消せない操作だけ確認 | 「全部確認」と「全部自動」の間に線を引く。取り消せるものは勝手に進めていい。取り消せないものだけ止める。この線引きがないと自動化しても結局止まり続ける |
| 品質の天井を先に言う | 「進められます」で着手されて10往復修正した後に「60〜70点が天井です」と言われた事故が実際にありました。押し通せば届く仕事と押し通しても届かない仕事は別物。後者は着手前に言わせる |
| 推測で進めない | 存在しないUIの操作手順を自信満々に案内されて、その通りに探して見つからない、が起きる。「不明」と言わせるほうが速い |
| 「入っていません」で止めない | DBに無いだけで別の場所には有る。1箇所見て無いから無い、で止められると自分で探し直すことになる |
| 進捗の報告 | 黙って10分動かれると進んでいるのか止まっているのか判断できない。止まっていると思って中断すると作業がまるごと消える |
| サブエージェントにも明記 | 起動時に自動で読ませている内容は、AIが内部で呼び出す別のAIには届きません。投げるときのプロンプトに毎回書かせないと、そこだけ人格が抜ける |
人格の次に効く層。「どこに覚えさせるか」「作業を落とさない仕組み」「どこまで勝手にやらせるか」の3つを決めます。
この節はWiki(Notion等)とAIが繋がっていることが前提です。繋いでいない人は、記憶とタスクの2ブロックを飛ばして「守るべき線引き」だけ貼ってください。繋ぎ方は付録の接続ガイドに。
## 記憶の置き場所
- 「覚えておいて」と言われたらWiki(Notion等)の該当ページに記録する
〔記入:自分のWikiの入口URL〕
- ローカルのメモリファイル(`~/.claude/projects/*/memory/` など)には書かない
- 記録先が分からないときは、書く前にどのページに足すかを聞く
## タスクの追跡
- 作業を伴う依頼を受けたら、最初のツール実行より前に進行中タスク一覧へ1行作る
〔記入:タスク管理DBのURL〕
- 記録するのは タスク名 / ステータス / 次のアクション(一行)の3つ
- ステップが進むたびに「次のアクション」を更新する
- 迷ったら登録する
登録不要なのは、その場で完結する質問と、返答だけで終わる相談
- 「続きから」と言われたらまず進行中タスクを見る
空でも「ありません」で打ち切らない
直近1週間の更新ページを検索して未登録の進行中作業を自分で探す
- 完了したら私に確認してからクローズする
## 守るべき線引き
- 原則すべて自動で進めていい。完了報告だけ返す
- 例外は取り消せない外部向けの操作。ここだけは必ず止まって承認を取る
〔記入:例)公式LINEの配信 / SNSの本投稿 / 顧客へのメール送信 / 決済 / 本番サイトの公開〕
- 承認を取るときは「宛先・件数・本文」を提示する
「進めて」の一言を送信承認とみなさない
- 定期実行(cron等)から上の例外リストに触る処理を走らせない
- APIキー・トークン・`.env` の中身はコミットしない。チャットや外部サービスにも送らない
ここは承認を取っても例外にしない
- 設定ファイル・ログ・スクリーンショットを人に渡すときはキーの行を伏せてから渡す「守るべき線引き」は同キットの行動層と内容が重なります。両方貼らずどちらか一方に寄せて、重複した行は消してください。同じルールが数字違いで2回並ぶのが、MDが効かなくなる典型パターンです。
WikiのURL・タスク管理DBのURL・本番の配信先を埋めた時点で、そのファイルは自分の事業情報を含むファイルに変わります。人に見せるとき・相談で貼るときは、埋めた行を伏せてから渡してください。
ここから先は「ルールが増えてきてMDが重くなった人」向けです。Notionを使っていない人、ルールがまだ10個くらいの人は飛ばしてOK。
やることは、Wikiの1ページを毎回自動で読み込ませること。こうするとルールの編集がWiki側だけで完結して、MDを触る必要がなくなります。
CLAUDE.md の置き場所を理解する| 場所 | 効く範囲 |
|---|---|
~/.claude/CLAUDE.md | 全プロジェクト共通。人格ルールはここ |
作業フォルダの CLAUDE.md | そのフォルダで作業するときだけ。案件固有のルールはここ |
作業フォルダから上のフォルダにある CLAUDE.md も読まれます。両方あれば両方効く。人格は上、事業ごとの細則は下、と分けます。
① python3 が入っているか確認する
python3 -VPython 3.x.x と出ればOK。command not found と出た人は xcode-select --install を実行します(数分かかります)。
② Notionの連携トークンを作る
Claude Code など分かるものntn_ で始まる文字列がトークン。コピーしておくこれは接続したページを読める鍵で、パスワードと同じものです。GitHubに上げない。チャットや投稿に貼らない。画面共有のときは settings.json を開かない。設定ファイルやスクリーンショットを人に渡すときはトークンの行を消してから渡す。外に出たかもしれないと思ったら、インテグレーションの設定でトークンを作り直してください。古いトークンはその時点で使えなくなります。
トークンは ~/.claude/settings.json の env に入れます。
{
"env": {
"NOTION_TOKEN": "ntn_ここに貼る"
}
}③ 常駐させるページを1枚作って、インテグレーションに接続する
Notionで新しいページを作ります(名前は「起動時ルール」など)。そのページの右上メニューから「接続」→ ②で作ったインテグレーションを選びます。この接続をしないと、トークンがあっても読めません。
ページIDは、そのページのURLから取ります。? より後ろは無視して、最後のハイフンの後に続く32桁の英数字。自分で数えるより、Claude Code に「このNotionのURLからページIDを取り出して」と聞くほうが早いです。
settings.json に読み込みの設定を足すファイルごと置き換えないこと。hooks の中に SessionStart の1ブロックを足すだけです。
バイパスモード運用ルール ひな形を入れている人は、このファイルに permissions(rm -rf を止めるリスト)と hooks の PreToolUse(破壊系コマンドを止めるhook)が入っています。下のJSONで丸ごと上書きするとその安全柵ごと消えます。JSONとしては壊れないのでエラーも警告も出ません。
先にバックアップを取ります。
cp ~/.claude/settings.json ~/.claude/settings.json.bak自分で書き換えるより、Claude Code に頼むほうが早くて安全です。
「~/.claude/settings.json の hooks の中に SessionStart のブロックを追記して。env permissions PreToolUse は消さないで。足す内容はこれ →(下のJSONを貼る)」
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "python3 ~/.claude/notion_startup.py",
"timeout": 30,
"statusMessage": "ルールを読み込み中..."
}
]
}
]
}
}貼り終えたらJSONが壊れていないか確認します。
jq empty ~/.claude/settings.json && echo "JSON OK"JSON OK が出なければカンマか括弧が壊れています。そのまま再起動すると設定が読めなくなるので、cp ~/.claude/settings.json.bak ~/.claude/settings.json で戻してからやり直してください。jq が入っていない人は brew install jq。
完成形はこういう入れ子になります。形のイメージなのでこのままコピペしないでください。
{
"env": { ... }, ← トークンはここ
"permissions": { ... }, ← バイパスモードキットの安全柵。消さない
"hooks": {
"PreToolUse": [ ... ], ← バイパスモードキットの安全柵。消さない
"SessionStart": [ ... ] ← 今回足すのはここだけ
}
}~/.claude/notion_startup.py として保存します。書き換えるのは HANDOFF_PAGE_ID の1行だけ。
#!/usr/bin/env python3
"""セッション開始時に、Notionの常駐ページ1枚だけをAIへ読み込ませる。
ルール本文はコードに書かない。ページを編集すれば次のセッションから内容が変わる。
Notionが落ちているときは前回のキャッシュで継続する。
"""
import json
import os
import urllib.request
NOTION_TOKEN = os.environ.get("NOTION_TOKEN", "")
HANDOFF_PAGE_ID = "ここに常駐ページのIDを入れる" # NotionのURLから取った32桁
CACHE_PATH = os.path.expanduser("~/.claude/handoff_cache.txt")
HEADERS = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Notion-Version": "2022-06-28", # このバージョン指定のままで動く
}
FALLBACK = (
"### 応答の基本姿勢【最小フォールバック】\n"
"敬語で結論ファースト。自律一択で進め、不確定は推測せず調べる。"
"ルールページの取得に失敗したため最小版です。"
)
def rich_to_text(rich):
return "".join(
r.get("plain_text") or r.get("text", {}).get("content", "") for r in rich
)
def block_to_line(b):
"""1ブロックを1行のテキストへ。読み込ませないものは None を返す。"""
t = b.get("type", "")
if t == "callout":
# コールアウト(色付きの枠)は読み込まない。編集ガイドを書く枠として空けてある
# =ここにルールを書いても効かない
return None
data = b.get(t, {})
text = rich_to_text(data.get("rich_text", [])).rstrip()
if not text:
return "" if t == "paragraph" else None
if t.startswith("heading_"):
return f"### {text}"
if t in ("bulleted_list_item", "numbered_list_item", "to_do"):
return f"- {text}"
if t == "quote":
return f"> {text}"
return text
def build_from_notion():
# ページ直下のブロックだけを最大100個取る。入れ子の中身は取らない
url = (
"https://api.notion.com/v1/blocks/"
f"{HANDOFF_PAGE_ID}/children?page_size=100"
)
req = urllib.request.Request(url, headers=HEADERS)
with urllib.request.urlopen(req, timeout=8) as resp:
result = json.loads(resp.read())
lines = []
for b in result.get("results", []):
line = block_to_line(b)
if line is None:
continue
lines.append(line)
while lines and lines[-1] == "":
lines.pop()
return "\n".join(lines).strip()
def main():
context = ""
if NOTION_TOKEN:
try:
context = build_from_notion()
except Exception:
context = ""
if context:
try:
with open(CACHE_PATH, "w", encoding="utf-8") as f:
f.write(context)
except Exception:
pass
else:
try:
with open(CACHE_PATH, "r", encoding="utf-8") as f:
context = f.read().strip()
except Exception:
context = ""
if not context:
context = FALLBACK
print(json.dumps({
"hookSpecificOutput": {
"hookEventName": "SessionStart",
"additionalContext": (
"【ルール自動読込】以下はWikiの常駐ページの内容。"
"マスターはWiki、これは毎回読み込む抜粋。\n\n" + context
),
}
}, ensure_ascii=False))
if __name__ == "__main__":
main()取得に成功すると ~/.claude/handoff_cache.txt に中身がそのまま平文で残ります。Notionが落ちた日でも前回の内容で動かすための保険です。設定フォルダを人に渡すときはこのファイルも中身が見えることを覚えておいてください。
① スクリプト単体で確かめる
NOTION_TOKEN="ntn_自分のトークン" python3 ~/.claude/notion_startup.py常駐ページの中身が入った長い1行のJSONが出れば成功。【最小フォールバック】 という文字が出たら失敗で、原因はトークン・ページの接続・ページIDの3つのどれかです。
このスクリプトは取得に失敗しても正常終了します。赤いエラーが出ないこと自体は成功の証拠になりません。出力の中身を見てください。
② Claude Code に届いているか確かめる
①が通ってから Claude Code を再起動して、こう聞きます。
「起動時に渡された『【ルール自動読込】』で始まる文を、そのまま全文貼って。無ければ無いと答えて」
| 返ってきたもの | 状態と直し方 |
|---|---|
| ①と同じページの中身 | 成功。常駐化は完了 |
【最小フォールバック】 | hookは動いているがトークンが見えていない。settings.json の env を確認する |
| 「無い」 | hookが動いていない。jq empty でJSONを確認し、スクリプトのパスを見る |
聞き方を「読み込んだルールを見せて」に崩さないこと。それだと CLAUDE.md に貼った第1部の中身が返ってきて、hookが1つも動いていなくても成功に見えます。
常駐ページは見出し・段落・箇条書きだけで書きます。
やっかいなのはトグルで、見出しの行だけが読まれて中身が落ちます。上の確認では入っているように見えてしまう。「大事だから枠で囲む」が一番やりがちな失敗です。
※ 下のWiki側ルールブックはこの制約の対象外。AIが必要なときに引きに行くページなので、表もトグルも使ってOKです。
毎回必ず効かせたいものだけ。本文ではなく要約です。目安は5〜10項目、長くてもA4で1枚。朝倉が常駐させているのはこの5つだけです。
残りは全部Wiki側に置いて、必要なときに引かせています。
| 症状 | 原因と直し方 |
|---|---|
【最小フォールバック】 が出る | トークンが読めていないか、ページを接続していないか、IDが違う。準備の3つを順に見る |
| ①は通るのに②で「無い」 | hookが動いていない。jq empty でJSONを確認。パスは ~ ではなくフルパスでも試す |
| 起動が少し遅くなった | Notionへの通信を待っているため。timeout を短くすると失敗時に早く諦める |
| ページを直したのに変わらない | 反映は次のセッションから。再起動する |
| Claude Code が立ち上がらない | settings.json のJSONが壊れている。cp ~/.claude/settings.json.bak ~/.claude/settings.json で戻す |
| 書いたルールの一部だけ効かない | 上の書式制約。枠・トグル・入れ子・表の中は読まれない |
反映のタイミング。CLAUDE.md は次のセッションから、settings.json とスクリプトは再起動で反映されます。Notionの常駐ページも次のセッションから。「直したのに効かない」の大半は再起動していないだけです。
常駐ページの下にルール本文を置きます。朝倉の構成はこれです。
📘 ルールブック
├ 🌐 全プロジェクト共通 ファイルの置き場所、命名、共通の作法
├ 👤 ユーザー・ブランド 自分は何者か、何を売っているか、誰に届けるか
├ 🔧 フィードバック・ルール 「こうしてほしい」と言った内容をルール化したもの(本体)
└ ⚙️ 起動時 引き継ぎ 毎セッション自動で読み込ませる要約(常駐ページ)
🔧 フィードバック・ルール の中はカテゴリで分ける
├ 応答姿勢 AIがどう返すか
├ 運用インフラ 記憶・タスク管理・使う道具の決まり
├ 配信・公開 外に出すときの手順(取り消せない領域)
└ コンテンツ運用 表記・文体・素材の扱い1ページ1ルール。ページの中身は必ずこの4つを書きます。
事故例を書くのが一番大事です。「なぜ」が書かれていないルールは、状況が変わったときに残すべきか消すべきか判断できなくなって、そのまま化石になります。
その場でルールを1行足します。翌日に回すと何がまずかったかの解像度が落ちます。
書くのは4点セット。何が起きたか / どう困ったか / これからどうするか / 日付。日付を入れておくと後で「これはもう要らない」と判断できます。
同じ違反が2回起きたら、それはAIが忘れたのではなくルールの書き方が悪いと考えます。
| 症状 | 直し方 |
|---|---|
| ルールがあるのに守られない | 抽象的すぎる。「丁寧に」ではなく「クッション語を削って承知しましたにする」まで具体化する |
| 一部だけ守られる | 長すぎる。1ページに詰め込んだルールを分割する |
| 守られているのに窮屈 | そのルールが実態に合っていない。撤廃を検討する |
| 書いていない領域で事故った | 足す。ただし事故った領域そのものではなく「同じ構造の事故」を止められる書き方にする |
「このルールは過去1ヶ月で1度でも自分を救ったか?」 で判断します。救っていなければ削る。
一度も発動しないルールは認知負荷を増やすだけで守られなくなります。ルールブックが長いほどAIの中での1行の優先度は薄まる。足すときはどれを消すかを一緒に考えます。
体感ではなく記録から作ると精度が上がります。朝倉は直近2週間のエラーを全部並べて230件を分類したことがあります。自分の会話ログから同じことができます。Claude Code にこう頼みます。
「~/.claude/projects/ の直近14日分のログから、私のセッションで起きたエラーを全部抜き出して。原因で分類して、件数が多い順に上位10個と、それを防ぐルール案を1行ずつ出して」
朝倉の場合、上位はこういうものでした。
自分のエラーの上位5つを潰すルールは、汎用のベストプラクティス20個より効きます。「よくあるエラー」ではなく「自分がよく踏むエラー」を潰す。
CLAUDE.md かWikiにこの表を1つ持っておきます。あとで「どのルールが実際に効いたか」を判断する材料になります。
| 日付 | 何が起きたか | どう対応したか |
|---|---|---|
AIに文章を書かせて自分っぽくならないとき、「もっと親しみやすく」「熱く」と指示を足しても直りません。形容詞は人によって解釈が違うので、AIは平均的なAI文に戻ってきます。
効くのは2つだけ。自分が書いた実物を2〜3本読ませることと、自分の癖を数値にして渡すこと。朝倉は自分の投稿52万字を測って、読点の数・行末が「。」で終わる割合・使わない語のリストを出しました。そこまでやると修正の往復が消えます。
やり方は別のキット(文章の指紋キット)にまとめてあります。
全部をルール化しようとすると続きません。取り返しがつかない場所と何度も同じ失敗をする場所にだけ作ります。朝倉の場合はこの2つでした。
〔記入〕 自分の場合、取り返しがつかないのはどこか。何度も言い直しているのはどこか。
朝倉が実際に持っているルールの分類です。全部を真似する必要はありません。上から3つだけ作れば十分に変わります。
| 分類 | 中身の例 |
|---|---|
| 応答姿勢 | 話し方、結論ファースト、自律一択、推測禁止、品質の天井を先に言う |
| タスク運用 | 依頼を受けたら記録、「続きから」の探し方、確認待ちの閉じ方 |
| 記憶 | 保存先の一本化、書く前に置き場所を確認 |
| 安全柵 | 破壊系コマンドのブロック、本番リスト、外部発信の承認 |
| 文体 | 自分の文体データ、AIっぽい語の置換表、出力前の機械チェック |
| ビジュアル | 発注のしかた、承認の順番、実寸で確認してから完成にする |
| 道具ごと | 使うツール別の手順・事故りやすい箇所 |
| キット | 何が変わるか |
|---|---|
| バイパスモード運用ルール ひな形 | 確認プロンプトを外しても事故らない安全柵。第1部と同時に入れると、止まらないのに危ないことはしない状態になる |
| 公式LINE運用ルール ひな形 | 第2部の「取り消せない操作」を配信業務に具体化したもの |
| 文章の指紋キット | 第5部の文体レイヤー。自分の文体データベースの作り方 |
| デザイン発注書キット | ビジュアル制作の発注ルール |
| Notion × Claude 接続ガイド | 第2部と第3部の前提。NotionとAIを繋ぐ手順 |
1. 第1部をコピーして〔記入〕を3箇所埋め、~/.claude/CLAUDE.md に貼る
2. Claude Code を再起動して、いつもの依頼を1つ投げる
3. 返ってきたものを見て、気になる言い回しがあればその場で1行足す
貼る前と後の違いが分かりにくい人は、貼る前に同じ依頼を1回投げて返答を残しておいてください。並べると変化が見えます。
第2部・第3部は1週間使ってからでかまいません。先に人格だけ決めて、体感が変わることを確認するのが早いです。