Script
Cold Open
シーン1 postmortem 後の会議室
十月十四日。金曜日の朝。
深夜のアラートから、半日。十時から始まったpostmortem ミーティングが、十時四十五分に、終わった。
会議室は、夜の名残のような疲れと、コーヒーの匂いと、午前の日差しが、薄く混ざっていた。鈴木が、ホワイトボードを片付けている。桜子は、自分のノートPCを閉じる前に、wikiに書いた、夜のタイムラインのページを、もう一度、開いた。
時間帯 5xx 件数
23:10-23:15 12
23:15-23:20 28
23:20-23:25 47
23:25-23:30 52
23:30-23:35 55 (ほぼ横ばい)昨夜、ほとんど震える手で、貼った数字。
桜子は、その表を、もう一度、上から下まで、目で追った。
会議室を出ていきかけた鈴木が、振り向いて、
「桜子さん、もしよかったら、昼前、僕の席のほうに、十五分、来てくれる?」
「はい。あの、何か、必要なものがあれば、いま、用意します」
「いや、用意は、いらない。桜子さんの、PCも、いらない。ただ、隣で、見ててくれたら、それで十分」
鈴木は、いつもの、穏やかな声色のまま、会議室を、出ていった。
桜子は、自分のノートPCを、閉じた。
Part A
シーン2 鈴木の机の上の地図
十一時すぎ。
桜子は、鈴木の席の、すこし斜め後ろに、椅子を引いて、座った。
鈴木の机の上に、A4の紙が、横に三枚、並んでいた。それぞれ、上に、定規で引いたような、薄い鉛筆の見出しが、書かれている。
- 一枚目: 2022/10/13 障害事象 まとめ (社外送付前 v0.3)
- 二枚目: 顧客企業別 影響件数 (推定)
- 三枚目: 社内幹部向け 一報メモ (経営会議用)桜子は、自分のwikiのタイムラインのことを、思い出した。
昨夜、書いたあの表が、いま、鈴木の三枚の紙の、それぞれの場所に、引用の形で、貼られていた。
一枚目の中ほど。時間帯ごとの 5xx 件数の推移は、別添表のとおり。表は、桜子のグラフを、白黒コピーして、貼ったものだった。
二枚目の右上。業務影響: サポート担当の対応が、約45分間、ブロック。これは、桜子のwikiの、postmortem の本文から、抜き出された一行だった。
三枚目の冒頭。昨夜23:10、外部APIの不調を起点とする5xxの急増を検知。23:48、フォールバックの自動投入で、5xxは停止。これも、桜子の夜のタイムラインから、削り出した、要約だった。
桜子は、しばらく、自分の数字が、紙の上で、別の人の文字に、囲まれているのを、見ていた。
シーン3 顧客企業ごとの言い方の違い
鈴木は、二枚目の紙を、軽く、桜子の側に、向けた。
顧客企業別 影響件数の表。社内向けに、いつも使われている、四社の略称が、左に並んでいた。
- アルファ商事 影響: 約 32 件 / 窓口: 技術畑
- ベータ運輸 影響: 約 41 件 / 窓口: 法務寄り
- ガンマ食品 影響: 約 28 件 / 窓口: 社長案件
- デルタ製薬 影響: 約 19 件 / 窓口: 情報システム部「桜子さん、同じ事象なんだけど、相手によって、説明の仕方、ぜんぶ、違うんだ」
「えっと、何が、違うんですか」
「アルファさんは、窓口が、エンジニア出身の方。だから、技術原因を、もう一段、詳しく書く。外部APIのタイムアウト多発、SLA99.5%の前提、こちらのフォールバックは未実装だった まで、書く」
「はい」
「ベータさんは、窓口が、法務寄りの方。だから、技術原因より、影響件数と、SLA抵触の有無を、先に書く。SLAは抵触していませんの根拠を、ちゃんと添える」
「ガンマさんは……?」
「ガンマさんは、社長案件。窓口担当はいるけど、最終的に、社長まで、話が、上がる。だから、まず、電話。電話の中で、事象、影響、対応、再発防止の四つを、十分以内で説明する。そのあとに、紙の報告書。最後にメール。順番が、逆になると、向こうの社長が、機嫌、損ねる」
「機嫌……」
鈴木は、軽く、苦笑した。
「うん、機嫌。仕事の話だけど、人の話、でもあるからね」
「デルタさんは、情報システム部だから、技術原因より、復旧時刻と、影響範囲のSLA算出を、いちばん先に。フォーマットは、たぶん、向こうから指定が来る」
桜子は、四社の表を、しばらく、眺めた。
同じ事故。同じタイムライン。同じ五十五件の5xx。
なのに、四枚、違う紙が、これから、鈴木の手から、別々の方向に、出ていく。
Part B
シーン4 給湯室での遥との立ち話
十三時すぎ。
桜子は、給湯室で、ステンレスのカップに、お湯を注いでいた。インスタントのドリップコーヒーの袋を、引っかけて、お湯を、ゆっくり、注ぐ。湯気が、白く、低く、昇った。
遥が、隣のシンクで、紙コップを、ゆすぎ直しながら、
「桜子さん、午前、鈴木さんの席にいたよね」
「はい」
「どうだった」
「鈴木さん、すごい量、書いてました」
「うん、そう」
遥は、紙コップに、お湯を注ぎながら、
「あれが、PMの仕事の、いちばん体力を使うところ」
「夜中の、四人の話より」
「うん、もう一段、大きい輪、かな」
「夜の輪を、昼の、三つの輪に、繋ぎ直す感じ、ですか」
遥は、ほんの少しだけ、笑った。
「桜子さん、その言い方、いいね」
「あ、はい」
「夜の輪は、開発の四人。昼の三つの輪は、顧客と、上長と、経理。鈴木さんが、その三つの輪を、一人で、回してる」
「経理、ですか」
「うん、経理。SLA抵触があったとき、契約の中の補償条項にひっかかると、お金が、動く。だから、経理にも、一報、入る」
桜子は、湯気の、白い、低い動きを、しばらく、見た。
ステンレスのカップの中で、コーヒーの茶色が、湯気と、混じっていく。
「桜子さんの夜のタイムライン、四つの輪のうち、いまのところ、たぶん、四つ全部の机の上に、貼られてる、と思うよ」
遥は、それだけ言って、自分の紙コップを片手に、給湯室を、出ていった。
桜子は、自分のカップを、両手で、軽く、温めた。
カップは、まだ、熱かった。
シーン5 鈴木の電話、桜子の同席

十四時前。
桜子の机に、鈴木からの、Slackのメンションが、来ていた。
@suzuki-kenichi: 桜子さん、いまから、ガンマ食品の窓口に、電話します。
横で聞いてていい?スピーカーで、半分だけ、聞こえる音量で、出します。
電話のあとで、感想、聞かせて桜子は、メモ帳を片手に、鈴木の席の、隣の椅子に、もう一度、座り直した。
鈴木が、自分のスマホを、机の真ん中に、上向きで置いた。スピーカーの設定は、最小の音量。発信は、有線の社用電話のほうから、行う。
受話器の向こうの、ガンマ食品の窓口担当の声が、軽い緊張を含みながら、桜子の側にも、低く、聞こえた。
「あ、テックスターの鈴木さん、お疲れさまです。社長、いま、隣に、おります」
鈴木の声は、いつもの穏やかな声色のまま、けれど、語尾の上げ方が、Slackで見るときよりも、ほんの少しだけ、丁寧だった。
「お忙しいところ、ありがとうございます。昨夜の、お問い合わせ詳細画面の、5xx の件、ご報告させてください」
「お願いします」
「事象としては、二十三時十分から、二十三時四十八分の、約四十分間。サクラサポートの一部APIで、5xxが断続的に発生しました。御社で影響を受けたお問い合わせは、推定で、約二十八件です」
桜子は、自分のwiki のタイムラインの、52 55 の数字が、相手の側の 28 という別の数字に、すでに、変換されているのを、見た。
「事象の一次原因は、外部の顧客企業マスタ取得APIの、タイムアウト多発でした。外部側のincidentで、十五分前に、向こう側で、調査中、と公表されておりました」
「外部、ですか」
「はい、外部です。御社向けの、サクラサポートのコード自体には、不具合はありませんでした。ただし、外部API側の不調があったときに、こちら側でフォールバックが用意できていなかった、という点は、こちらの設計の弱点でした」
「再発、防止は」
「三点、考えております。ひとつ、外部APIの呼び出しに、明示的なタイムアウトとリトライ上限を入れます。すでに、別PRで起票済みです。ふたつ、外部API失敗時のフォールバックを、フラグでデフォルトON運用に変更します。みっつ、外部依存ごとに、公開ステータスページURL / SLA / 過去incident頻度 を、運用Runbookに、必ず記載するようにします」
「分かりました」
窓口担当の声の向こうで、社長の、低い、短い声が、ひとこと、何かを言った。鈴木は、その声を聞きとってから、
「社長から、何か、お話、いただけますか」
「ええ、と。鈴木さん、ですよね」
「はい、鈴木です」
「数字、ありがとうございます」
「……はい」
「あの、二十八件、というのが、うちの側の、被害件数として、いちばん、知りたかった数字です。それを、最初に、出してくれて、こちらは、そこから、謝罪の電話を、何件、するか、決められます」
「お役に立てば、幸いです」
「再発防止、お願いします」
「はい。承りました」
電話が、切れた。
桜子は、自分のメモ帳に、その瞬間、何も、書けなかった。
Part C
シーン6 翔太のIssueへの追記
十五時すぎ。
桜子は、自分の席に戻った。
社内のIssueボードで、翔太が、夜中のフォールバックPR #125 の続きとして、#127 を、設計レビュー段階に、上げていた。タイトルは、feat: explicit timeout and retry budget for external customer-master API。
Issue本文の、関連 の欄に、桜子の起票したRunbook追加提案 #128、それから、鈴木が今朝起票した、対顧客説明テンプレ #129 (新規) の、リンクが、並んでいた。
桜子は、#129 のページを、開いた。
Issueの本文は、まだ、ほとんど、空欄だった。タイトルだけが、こう書いてあった。
docs: 障害発生時の対顧客説明テンプレ (顧客タイプ別) 整備起票者は、鈴木。
桜子は、#129 のIssueの本文の、空欄に、自分のコメントとして、午前の鈴木の説明を、自分の言葉で、書いた。
@mochizuki-sakurako: 鈴木さんから午前、共有いただいた内容を、
メモのつもりで、書き留めます。
- 同じ事象でも、顧客タイプによって、語順を変える。
- アルファ商事 (技術畑窓口): 技術原因 → 影響件数 → 再発防止
- ベータ運輸 (法務寄り窓口): 影響件数 → SLA抵触有無 →
根拠 → 再発防止
- ガンマ食品 (社長案件): 電話 (4項目10分以内)
→ 紙の報告書 → メール
- デルタ製薬 (情シス窓口): 復旧時刻 → 影響範囲SLA算出
→ 再発防止 (フォーマット先方指定)
- 共通の最低三項目: 「事象 / 影響件数 / 再発防止」書き終えて、桜子は、しばらく、画面の中の自分の文章を、読み返した。
(自分が、いつか、これを、自分でやる日が、来るのかな)
その問いに、桜子は、まだ、はい とも いいえ とも、答えられなかった。
ただ、その問いを、#129 の Issue の場所に、自分の名前で、書き残した、という事実だけは、残った。
Issue を、保存して、閉じた。
Ending
シーン7 退勤前、鈴木の小さな声
十八時半。
桜子が、退勤の準備で、ノートPCを、閉じかけたとき、コーヒーカップ片手の鈴木が、桜子の机のそばを、軽く、通り過ぎた。
「桜子さん、お疲れさま。今日のあの、夜の数字。グラフのほう」
「あ、はい」
「あれね、ガンマ食品の社長、電話の最後に、数字、ありがとう って、言ってた」
桜子は、思わず、鈴木の顔を、見上げた。
鈴木は、いつもの、穏やかな声色のまま、コーヒーカップを、軽く、両手で、温めていた。
「数字は、人を、半分くらい、楽にするんだよ」
「半分」
「うん、半分。残りの半分は、誰が、その数字に、責任を持つか、っていう話。それは、引き続き、僕や、山下さんが、やる。桜子さんは、まず、半分の側を、書ける人で、いてください」
「……はい」
「ありがとうね、夜の記録」
鈴木は、それだけ言って、また、通路を、自分の席のほうへ、歩いていった。
桜子は、ノートPCを、閉じた。
退勤して、エレベーターを降りて、ビルの外に、出た。
十月の夜の、冷えた空気が、桜子の頬に、ふっと、当たった。空には、満月から、すこしだけ欠けはじめた月が、薄く、出ていた。
駅までの道で、桜子は、鞄の中の、メモ帳の重みを、確かめた。
帰宅後、桜子は、メモ帳に、こう、書いた。
2022/10/14 新人日記(夜、追記)
- 起きたこと:
postmortem ミーティング → 鈴木さんの席で観察 →
ガンマ食品社長への電話の同席 → #129 起票への追記
- 覚えたこと:
同じ事象でも、顧客の窓口担当の役職と業界で、語順を変える
- つかえているところ:
自分が、その語順を選ぶ側に立てるのは、まだ、ずっと先
- 明日の最初の一手:
Runbook追加提案 #128 のドラフトを、対顧客説明 #129 と、
どう繋ぐか、整理する
- 今日の学び:
数字は、人を、半分くらい、楽にする。残りの半分は、
誰が、その数字に、責任を持つか桜子は、ペンを、置いた。
夜中の四人の輪と、昼の三つの輪。
桜子の数字は、すべての机の上で、別の文字に、囲まれていた。
そのことを、桜子は、まだ、ほんの少ししか、消化できていなかった。けれど、消化できないまま、書き残しておく、というやり方も、あるのだ、と、桜子は、思った。
