Script
Cold Open
シーン1 月曜の朝、静かなフロア
三月六日。月曜日。
年度末リリース予定日まで、あと、ちょうど、二週間。
オフィスの窓の外、街路樹はまだ冬の枝のままだったが、空気のどこかに、もう、春の輪郭が、薄く、混ざり始めていた。窓ガラスの向こうで、朝の光が、いつもより一拍だけ、長く、続いていた。
フロアは、いつもより、明らかに、静かだった。
リリース直前のフリーズ期間に入って、新規機能の大きなPRは、もう、出ない。年度末リリースに載せる機能の検討は、先週までに、ひととおり、終わっていた。残っているのは、レビュー、ドキュメント更新、最終チェックリスト。それらだけが、淡々と、フロアの上を、回っている。
桜子は、自分の席に、ノートPCを置く前に、メモ帳を、机の真ん中に、ぽつんと、置いた。
表紙の、半分はがれかけた猫のシールが、一年で、ほとんど、外れかけていた。糊の乾いた縁が、紙から、軽く、めくれている。
もうすぐ、二冊目に、切り替わる。
桜子は、その手前の、最後の、何ページかを、今日、ゆっくり、めくり直そう、と、決めた。
Part A
シーン2 一冊目を、最初から、めくる
月曜の朝、桜子は、いつもどおり、駅前のカフェに、寄った。
ブレンドを頼んで、メモ帳を、最初のページから、開いた。
二〇二二年四月一日。入社初日。
2022/04/01 新人日記
- ログを見よう (山下さんの言葉)
- ログは、桜子さんに向かって書かれてる
- pyenv versions / which python
- .python-version
- 桜色のキーホルダー、握った一年前の、自分の字。書いた本人のはずなのに、いま、読み返すと、別の人の字みたいに、見える。書いてある言葉のうち、pyenv versions と .python-version は、いまの桜子なら、書く前に、もう、頭の中で、画面が、思い浮かぶ。けれど、四月一日の自分には、たぶん、その文字を書く瞬間まで、pyenv versions と打つ意味すら、ぴんと、来ていなかった。
二ページ目。
2022/04/02 新人日記
- レビューコメントには五種類ある
指摘 / 質問 / 提案 / 共有 / 称賛
- レビューは否定じゃない、会話
- コミットメッセージは未来の誰かへの手紙
- 一行のコードに14件、ぜんぶ読み切った
- 無言で直さない桜子は、一行のコードに14件、ぜんぶ読み切った の一行に、しばらく、目が、止まった。
今朝の自分の Approved 待ちのPR #421 は、二八〇〇行を超えていた。一年前、一行 で、十四件のコメントに、震えていた自分が、いま、二八〇〇行のPRを、書いていた。
桜子は、ブレンドを、ひとくち、すすった。
苦さの種類が、ふと、一年前と、ほんの少しだけ、違う気がした。
ページを、もう少し、めくる。
2022/04/18 新人日記
- 起きたこと:
小さいPRを2本マージ。コメントなしのものが1本あった
- 覚えたこと:
PR本文に「修正の意図」を一行入れると、レビュアーが判断しやすい
- つかえているところ:
翔太の設計案ページが、自分にはまだ書けない種類の文章だった
- 明日の最初の一手:
ヘルプ画面のリンク切れ修正、1件目から着手入社して、まだ、三週間目の桜子の、生活感のあるページ。当時、桜子の頭のなかには、コードの書き方より、レビュアーが夕方に何を食べているのか、翔太が昼休みにどのイヤホンをしているのか、みたいな、周辺のことが、たぶん、ずっと、混ざっていた。
今朝、桜子の手の中の 修正の意図 は、PR #421 の本文の、最初のセクション 背景・意図 / 提案案A / 提案案B / 採用と理由 の、四項目に、まで、育っていた。
一年で、変わったこと。一年で、変わっていない、こと。
桜子は、自分のメモ帳の、四月のページの上で、しばらく、両方を、ぼんやりと、感じていた。
シーン3 何度も出てくる言葉
火曜日。三月七日。
桜子は、火曜の朝も、駅前のカフェに、寄った。今日は、メモ帳と一緒に、まだ何も書いていない、A4の紙を、一枚、出した。
ペンを取って、紙の上に、こう、見出しを、書いた。
一年で、何度も、出てきた言葉メモ帳を、最初から最後まで、ぱらぱらと、めくっていく。年内最後のページまで、めくり終わってから、桜子は、紙の上に、ひとつずつ、書き出した。
- 「ログを見よう」 (4/1, 4/27, 7/4, 10/26)
- 「隠さない / 隠すほうが、遅い」 (4/27)
- 「レビューは、会話」 (4/2, 6/23)
- 「コードは、未来の誰かへの手紙」 (4/2)
- 「Runbook (戻し方を、コードと一緒に書く)」 (6/23, 7/5, 10/26)
- 「数字は、人を、半分くらい、楽にする」 (10/26)
- 「仕様書に書かれていないこと、を、仕様書に戻す回路」 (11/21)
- 「リーダーは、再委譲を、判断できる人」 (12/28)
- 「★ の星印は、なぞって、紙が凹むまで、なぞっていい。
ただし、誰かを、その凹みで、傷つけない」 (9/24, 神保町)書き終えて、桜子は、しばらく、その紙を、眺めた。
九つ。
九つの言葉が、桜子の一年の中に、太い線として、走っていた。
全部、自分が、書いたわけではない。ログを見よう は遥の言葉。コードは、未来の誰かへの手紙 も遥。数字は、人を、半分くらい、楽にする は鈴木。★ の星印 は、五年前の遥の上司の言葉。
半分以上は、誰かに、もらった言葉だった。
桜子は、その紙の、いちばん下に、もう一行、書き加えた。
- 自分のメモ帳は、もらった言葉が、走り抜ける、道書き終えて、桜子は、紙を、メモ帳のいちばん後ろに、丁寧に、はさんだ。
Part B
シーン4 翔太の見ている記事
火曜日の昼前。
桜子の隣の席で、翔太が、ノートPCの画面を、いつもより、ほんの少し、近くで、見ていた。
翔太の画面は、英語の技術系メディアのページだった。タイトルが、桜子の視界の、すこし斜め後ろから、見えた。
A Conversation Engine for Code:
Early Demos Across the Industry桜子は、本文には、目を、向けなかった。
ただ、翔太の、画面に近い姿勢が、いつもの翔太の、構造化メモを淡々と切る 姿勢とは、ほんの少しだけ、違う、ということを、見た。
桜子は、自分の机に、視線を戻した。
Slackの自分のチャンネルに、鈴木からの、リリースチェックリスト最終版v0.4のリンクが、貼られていた。桜子は、そのリンクを、開いた。
25項目の、チェックリストが、画面の上に、並んでいた。
いちばん下の項目には、こう、書いてあった。
25. 本番DBバックアップ取得 (リリース前夜 23:00 まで)
担当: 山下、鈴木桜子は、その「25.」の数字を、しばらく、見た。
一年前の四月一日、桜子は、25 項目のリリースチェックリストの、項目のひとつでも、何の意味か、たぶん、分かっていなかった。
いまは、項目の半分以上に、自分の名前が、紐づいて、いた。
シーン5 鈴木のリリースチェックリスト、桜子の追加
水曜日。三月八日。
桜子は、リリースチェックリスト v0.4 を、上から下まで、ゆっくり、読んだ。
1. ステージング環境での回帰テスト 全Green
2. 本番反映用の Git タグ付与 (v1.4.0)
3. 顧客向けリリースノート ドラフト (営業確認済み)
4. 顧客向けリリースノート 翻訳・送付準備
5. ステータスページ "Maintenance" 表示の準備
6. オンコール体制確認 (山下、鈴木、望月)
7. リリース当日のロールバック手順 最終確認
8. Feature Flag 一覧の本番投入時のデフォルト値確認
9. 監視ダッシュボード 5xx / Latency / Cost 直近1週間レビュー
10. 外部API 状態 (顧客企業マスタAPI) の事前確認
11. ★ 想定外の挙動が出たときの判断フロー (再掲)
12. 顧客企業別の窓口リスト 最新版
13. 経理向け 影響範囲 算出フォーマット
14. 社内幹部向け 一報メモ ドラフト
15. 過去6ヶ月のpostmortem 振り返り (山下、望月)
16. Runbook 一覧 最終版
17. (空欄)
18. CSAT 入力導線 v2 検証 (望月、千葉HF確認)
19. CSV 3列フォーマット 検証 (千葉HF確認)
20. ステータス「引き継ぎ中」追加 (#214 着地確認)
21. デプロイパイプライン 緊急停止スイッチ 動作確認
22. 中村翔太のリリース確認チェック (別件 復帰後)
23. 早瀬陽介の年明け対応分 着地確認
24. 朝の出社順番 (リリース当日)
25. 本番DBバックアップ取得 (リリース前夜 23:00 まで)桜子は、17. (空欄) の項目で、しばらく、目が、止まった。
空欄、ということは、追加項目を、誰かに、入れさせる場所、として、鈴木が、空けてくれている、ということだ。
桜子は、Slackで、鈴木に、書いた。
@mochizuki-sakurako: 鈴木さん、チェックリストの 17 番、
空欄ですが、`Runbook の最新版が、本番運用チャネルで参照可能か`
を、追加してもよいでしょうか。
これまでの障害対応と、年末進行のあたりで、書ききれなかった項目で、
本番投入前に、いちど、参照可否を確認しておくと、
夜に呼び出されたときに、判断が、軽くなる気がしました鈴木の返事は、二分後に、来た。
@suzuki-kenichi: いいよ、追加しよう。
ちょうど、僕も、そこ、空欄のまま、誰か、書いてくれないかな、
って、思ってた。Runbook の参照可否、一文、いいね。
桜子さんの名前で、追記してください桜子は、リリースチェックリストの、17. (空欄) の場所に、自分の手で、書き加えた。
17. Runbook の最新版が、本番運用チャネルで参照可能か (望月)
対象 Runbook: unread_cache.md / external_api_status.md /
customer_master_api.md / release_rollback.md保存した。
画面の中の、25項目のリストの、17. の場所に、桜子の名前が、あった。
Part C
シーン6 遥の最終レビュー、PR #421
木曜日。三月九日。
桜子の、年度末リリースに含まれる、自分名義の最後のPR #421 は、月曜の朝の時点で、すでに、遥のレビュー待ちに、上がっていた。
PR #421 は、先月、監視ダッシュボードの境界プロレート集計を本番へ入れたあとに、鈴木から改めて託された、フォールバック設計の本実装だった。二案併記の設計セクションで一度、方向を固めた案を、こんどは、顧客企業マスタAPIまわりの通常経路に、正式に組み込む。タイトルは、こう、書いた。
PR #421: feat(fallback): customer-master API failure
graceful degradation (case-A based)
- two-tier fallback (cache → minimal-display)
- timeout/retry budget (PR #127 ベース)
- unit / integration tests (境界・タイムアウト・
外部API 500/503/タイムアウト混在)
- runbook: docs/runbook/customer_master_api.md
- 2,847 行二八四七行。そのうち、実装本体はおよそ半分。残りは、境界条件を並べたテストと、夜に呼ばれた誰かが最初に開けるように整えたRunbookだった。今年の桜子の、いちばん長いPR。
月曜の午後、遥は、PR #421 を、四つの塊に、分けて、読み始めた。Slackで、桜子に、こう、書いた。
@yamashita-haruka: #421、上から一気には読まないね。
① 設計セクションと二案の残し方 (月)
② 実装本体、リトライ予算と分岐 (火)
③ テスト、境界と外部API失敗系 (水)
④ Runbook、夜の導線 (木)
の順で見る。指摘は塊ごとに、まとめて置く桜子は、月曜の夕方、①の指摘に、返した。設計セクションの 採用と理由 に、案Bを別Issueに切り出す条件を、もう一行、加えた。翔太も、レビュアーとして、自分の名前を、#421 に、紐づけていて、火曜の午前、②のリトライ予算のところに、指摘を、二つ、置いた。
@nakamura-shota: リトライ予算、5分窓の運用側と
数字を揃えたい。あと、cache miss の分岐、
minimal-display への降格判断のログ、
Runbook から grep できる形にしてほしい桜子は、火曜の午後、翔太の指摘に、対応した。リトライ予算の定数を、監視側の窓と揃うように書き直し、降格判断のログ行に、Runbookから検索するときの固定文字列を、埋め込んだ。テスト側にも、その文字列を期待する一行を、追加した。
水曜日、遥は、③のテストの塊を、読んだ。境界のケース、外部APIの500 / 503 / タイムアウトの混在ケース、parametrize のケース名の付け方まで、細かく、指摘を、置いた。
@yamashita-haruka: parametrize のケース名、
"外部API 500 直後にキャッシュ hit" と
"外部API タイムアウトのあと minimal-display" は、
名前だけで、Runbook のセクション見出しと
1対1で対応するようにしたい桜子は、水曜の夜までに、ケース名を、Runbookの見出しと、揃えた。テストが、Runbookの目次のように、読めるようになった。
木曜日の朝、遥は、最後の塊、Runbookを、読んだ。夜の一次対応者が、最初に開くページの、最初の三行に、桜子は、いつ minimal-display に落ちるか どのログを grep するか どこで戻すか を、置いていた。遥は、そこには、指摘を、置かなかった。
木曜の、夕方の、十七時すぎ。桜子のPCに、通知が、ひとつ、来た。
[GitHub] @yamashita-haruka approved your PR #421桜子は、画面の中で、Approved のラベルを、しばらく、見ていた。
遥のコメントは、一行だけ、だった。
@yamashita-haruka: 桜子さん、今年の桜子さんの、いちばん長いPRだね。
よく書ききったよく書ききった。
桜子は、その、書ききった の、四文字を、しばらく、目で、追っていた。
書ききった、と言われるための一年、というわけでは、たぶん、なかった。月曜からの四日で、①、②、③、④の塊ごとに、遥と翔太の指摘に、ひとつずつ、返してきた。そのひとつずつが、Runbookの三行と、テストのケース名の順番になって、いま、Approved のラベルの、向こう側に、残っている。
書ききった、と、誰かが、書いてくれた、という事実だけは、いま、画面の中の、PRのコメント欄に、ある。
桜子は、Approved の通知を、自分のスマホでも、もう一度、開いて、ホーム画面に、戻した。
窓の外、夕方の光が、ビルの輪郭を、橙色に、長く、押し出していた。
Ending
シーン7 金曜の夕暮れ、坂道の桜並木

金曜日。三月十日。
退勤して、駅までの坂道を、桜子は、いつもより、ゆっくりと、歩いた。
一年前の、四月一日。入社初日の朝、この坂道は、まだ、咲き残っていた桜の花びらが、舗道のへりに、たまに、残っていた。
いまは、葉も、花びらも、ない。けれど、街路樹の、細い枝の先で、つぼみが、ほんの少しだけ、ふくらんでいた。完全には、咲いていない。あと、二週間か、三週間。
桜子は、坂のいちばん上で、立ち止まった。
鞄の中で、桜色のキーホルダーが、すこしだけ、揺れた。一年で、ストラップの、桜の形のプラスチックが、ほんの少しだけ、白っぽく、色あせていた。けれど、まだ、ちゃんと、桜の形を、保っていた。
桜子は、それを、ほんの一瞬だけ、握った。
手のひらに、返してくる、軽さ。
来週から、リリース前の最終週。再来週、年度末リリース。
それで、桜子の、入社一年目が、終わる。
けれど、終わらない、ものも、ある。
翔太の画面の中の、A Conversation Engine for Code の文字。鈴木のチェックリストの、17. (空欄) のあとに、桜子の名前で、書き加えた、Runbookの参照可否。遥の Approved の、書ききった の四文字。月曜からの四日で、塊ごとに返した、遥と翔太の指摘の、ひとつずつ。一年で、九つの太い線が、走り抜けたメモ帳。神保町の、遥のノートの、★ の星印。
全部、来週の月曜にも、再来週のリリース日にも、来年の四月一日にも、桜子の鞄の中に、ある。
ふくらみかけの、つぼみの下で、桜子は、ゆっくり、息を、吐いた。
坂を、降りた。
駅の改札の前で、桜子は、もう一度、メモ帳を、ひらいた。
金曜日のページの、いちばん下に、桜子は、こう、書いた。
2023/03/10 (金) 新人日記
- 起きたこと:
PR #421 Approved (山下さんレビュー)
月〜木で、①設計 ②実装 ③テスト ④Runbook の
4つの塊に分けて、指摘に返した
リリースチェックリスト 17 番 追記
メモ帳 (一冊目) を、最初から最後まで、めくり直した
- 覚えたこと:
- 一年で、九つの言葉が、太い線として走った
- 半分以上は、もらった言葉だった
- 長いPRは、一気に通すものじゃなくて、
塊ごとに、返していくものだった
- つかえているところ:
もうすぐ、メモ帳が、二冊目に切り替わる
- 明日の最初の一手:
(土曜) 二冊目のメモ帳を、買う
- 今日の学び:
桜は、いま、まだ、つぼみペンを、置いた。
桜子は、メモ帳を、閉じて、改札を、通った。
電車の窓の向こうで、夕暮れの空が、薄い橙から、薄い紺へと、ゆっくり、変わっていった。
来週、月曜から、リリース前の最終週が、始まる。
桜子は、車内の、つり革の、軽い揺れに、身体を、ほんの少しだけ、預けた。
手の中で、桜色のキーホルダーが、もう一度、ほんの一瞬だけ、揺れた。
まだ、咲いていない。
けれど、咲く、ということが、すぐ、近くで、ふくらんでいる、ということだけは、たしかに、桜子の手の中に、あった。
