第1章:オブザーバビリティって何?👀✨
1) この章のゴール🎯
この章が終わるころにできていればOKです👇
- 「ログ / メトリクス / トレース」を1行ずつで説明できる📝
- オブザーバビリティを1文で言える✨
- 「あとで原因に辿り着くための設計」って何か、ふわっと掴める🔍
2) まずは“あるある”から😵💫💥
TypeScript/Nodeでよく起きるやつ👇
- 本番だけ遅い🐢💦(ローカルで再現しない)
- たまに落ちる💥(再現率1%)
- APIは成功してるのに、ユーザー体験は最悪😇😱
- 非同期が多くて「どこからどこまでが1リクエスト?」って混乱🧵🌀
ここで大事なのがこれ👇 「いま起きてること」だけじゃなくて、あとで原因まで辿れる状態にしたい。 そのための考え方が オブザーバビリティ(Observability) だよ👀✨
3) オブザーバビリティを一言でいうと?💡
オブザーバビリティ = “外に出てくる情報(出力)から、中の状態を理解できる力”。 (OpenTelemetry)
ソフトウェアだと「外に出てくる情報」って主に👇
- ログ(Logs)
- メトリクス(Metrics)
- トレース(Traces) …の3つ(テレメトリ)だよ、って整理が定番! (OpenTelemetry)
ポイント:“データを出すこと”自体が設計なんだよね🧠✨ OpenTelemetryの説明でも「観測できるようにするには計装(instrumentation)が必要」って言ってるよ。 (OpenTelemetry)
4) 3本柱(Logs / Metrics / Traces)を超やさしく🌈✨

✅ Logs(ログ)🪵📝
「その瞬間に何が起きたか」のメモ 例:エラー、分岐、外部API呼び出し開始/終了、入力が変だった…など。
- 強いところ💪:具体的な状況がわかる(文章や属性で説明できる)
- 弱いところ🥲:量が多いと探すのが地獄(ノイズ祭り)
✅ Metrics(メトリクス)📈⏱️
「数値の変化」を時系列で見るもの 例:リクエスト数、エラー率、処理時間の分布、メモリ使用量…など。
- 強いところ💪:異常に気づくのが速い(「いつから変?」が見える)
- 弱いところ🥲:原因の細部はわかりにくい(“なぜ”は別の手がかりが必要)
✅ Traces(トレース)🧵🗺️
「1リクエストの旅の地図」(どこを通って、どこで時間を使ったか) OpenTelemetryの説明でも「リクエストがアプリを通る“道筋”」として説明されるよ。 (OpenTelemetry)
- 強いところ💪:遅い/詰まってる場所が見つかりやすい(ボトルネック探しに強い)
- 弱いところ🥲:ちゃんと“つながる”ように作らないと途中で途切れる(後の章でやるよ🔗)
5) 監視(Monitoring)と何が違うの?🤔💭

ざっくり言うと👇
- 監視:決めた条件で「異常」を検知する🚨(想定内の問題に強い)
- オブザーバビリティ:データを手がかりに「原因まで辿る」🔍(想定外にも強い)
だからオブザーバビリティは、**“あとで調査できる設計”**が主役になるよ👀✨ (OpenTelemetry)
6) 「あとで原因に辿り着く」って具体的にどういうこと?🧭✨
理想の調査導線はこんな感じ👇
- メトリクスで「いつから・どれくらいヤバい?」を掴む📈
- トレースで「どこが遅い?どこで失敗?」を絞る🧵
- ログで「その瞬間に何が起きた?」を確定する🪵
この“つながる”感じが超大事! (CNCFでも「メトリクス・ログ・トレースを相関させる」方向性が強調されてるよ) (CNCF)
7) 使い分けミニ練習🎮✨(直感を作ろう)
次の状況、まず何を見る?(正解は1つじゃないよ🙆♀️)
- 「エラーが増えた気がする」👉 Metrics(エラー率)で事実確認📈
- 「どのAPIが遅いの?」👉 Tracesでボトルネック探し🧵
- 「なぜ失敗したの?」👉 Logsで入力/分岐/例外を確認🪵
- 「サービスまたいだら分からなくなった」👉 Traces(つながり)+ Logs(詳細)🔗
8) ミニ演習:自分用の定義を“1文”で書こう📝✨
ルールはこれだけ👇
- 短く(1文)
- **“あとで原因に辿り着く”**が入ってる
- Logs/Metrics/Tracesのどれかが頭に浮かぶ
テンプレ(穴埋めでOK)👇
- 「オブザーバビリティは、**( )を手がかりに、( )**できるようにする設計」
例(そのまま使ってもOK)👇
- 「オブザーバビリティは、ログ・メトリクス・トレースを手がかりに、あとで原因まで辿れるようにする設計だよ👀✨」
9) AIに1文を“いい感じ”に整えてもらう🤖✂️✨
コピペで使えるお願い文(プロンプト)👇
-
短く整える 「次の文章を、女子大生にもわかる感じで“1文”に短くして:『(あなたの定義)』」
-
ブレを直す 「この定義、観測(Logs/Metrics/Traces)っぽさが弱いなら、そこを補って1文にして」
-
覚えやすくする 「この定義を、覚えやすい言い回しにして(20文字〜40文字くらい)」
10) ちょい実演:ログを“あとで探しやすく”する超ミニ🔎✨
まだ本格計装はしないけど、**「観測は設計」**の空気を感じる用のミニ例だよ🪄
// “あとで探せる”ログの超ミニ例(構造化ログっぽく)🪵✨
type LogLevel = "info" | "warn" | "error";
function log(level: LogLevel, message: string, props: Record<string, unknown> = {}) {
const event = {
ts: new Date().toISOString(),
level,
message,
...props, // ここに requestId とか route とかが入ると強い🔗
};
console.log(JSON.stringify(event));
}
// 例:1リクエスト中の出来事を “同じrequestId” でつなぐイメージ
const requestId = crypto.randomUUID();
log("info", "request:start", { requestId, route: "/work" });
// …何か処理…
log("info", "request:finish", { requestId, route: "/work", duration_ms: 123 });
この時点でもうメリットがあって👇
- 後で
requestIdで検索して、1リクエストの流れを追える🔗 duration_msを入れれば「遅い回」が分かる⏱️- JSONなら後でフィルタしやすい(第9章で詳しくやるね)🧱✨
さらに本格的にやると、トレースの traceId とログを紐づけるみたいな方向に進むよ🧵🔗 その“つなぐための共通の形式”として W3C Trace Context(traceparent) がある、って感じ! (w3.org)
11) 2026っぽい小ネタ:3本柱+もう1つ?👀➕✨
最近は「ログ・メトリクス・トレース」に加えて、**継続プロファイリング(Continuous Profiling)**を“第4のシグナル”として扱う流れもあるよ🔥 (Datadog) (ただし第1章では、まず3本柱をしっかりでOK🙆♀️✨)
12) よくある落とし穴(この章で回避!)⚠️😇
- 「ログをいっぱい出せばOK!」→ 探せないログは負け(ノイズ地獄)🪵💥
- 「監視ツール入れたらOK!」→ 出すべきデータが出てないと調査できない👀🌀 (OpenTelemetry)
- 「トレースはあとで」→ つなぐ設計を後回しにすると、後で痛い🧵😵💫
13) まとめ(今日覚えたい3行)🌟✨
- オブザーバビリティは「外の情報から中の状態を理解できる力」👀 (OpenTelemetry)
- 3本柱は「ログ=出来事」「メトリクス=数値」「トレース=旅の地図」🪵📈🧵
- ゴールは「あとで原因に辿り着ける」導線を作ること🧭✨
次は第2章で、「TS開発で“困る瞬間”から逆算」して、観測が必要な理由を腹落ちさせにいくよ😵💫➡️😊✨