101 Switching Protocols101 Switching Protocols(いちまるいちすいっちんぐ)通信と API
要求どおりプロトコルを切り替えたことを示す状態コード。WebSocket への Upgrade が成功したときの応答。
動画に出てくる 523 語。各語の下のリンクから、その語を説明している動画の章へ飛べます。
要求どおりプロトコルを切り替えたことを示す状態コード。WebSocket への Upgrade が成功したときの応答。
変えたい事実は一つの置き場だけにし、ほかは番号で参照する、という正規化の標語。仕様ではなく、現場でよく使う言い方 (一般論)。
HTTP の状態コード。要求が成功し、新しい資源が作られたことを示す。予約アプリでは INSERT が通ったときの応答。
HTTP の状態コード。要求を受け付けたが、処理がまだ完了していないことを示す。この記録では仕事を列に積んだだけの応答に使う。
条件付き GET で、資源が変わっていないことを示す状態コード。本文は付けない。
分かれた所・一方の先端・もう一方の先端の 3 つを材料にするマージ。別々の行の変更なら自動で合わさることがある。同じ行だと衝突しうる。
要求の書き方がサーバの前提に合わないときの状態コード。予約アプリでは JSON として読めない本文に使う。
HTTP の状態コード。認証が必要、または認証に失敗したことを示す。この記録では Bearer が無い /api 要求で、auth 層が stop して返す。
HTTP の状態コード。だれかは分かるが、その操作は許されていないことを示す。401 (だれか分からない) とは別。この記録では他人の予約への操作で返す。
HTTP の状態コード。指定した資源が無いことを示す。この記録では router 層が該当ハンドラを見つけられず付ける。
その URL では使えないメソッドであるときの状態コード。Allow で使えるメソッドを併せて返す。
HTTP の状態コード。資源のいまの状態と矛盾する要求であることを示す。すでに予約がある時間への INSERT など。
要求の本文がサーバの上限を超えたときの状態コード。予約アプリでは BODY_MAX (4096 バイト) を超えると返す。
サーバが受け付けない Content-Type のときの状態コード。予約アプリの JSON API に form 形式で送るとこれ。
構文は分かるが、意味や範囲が正しくない要求の状態コード。予約アプリでは slot が 9〜17 の外など。壊れた JSON の 400 や、形式違いの 415 とは別。
HTTP の状態コード。サーバ側で想定外の失敗が起きたことを示す。この記録では errors 層が内側の例外を受け止め、利用者には request_id だけ返す。
fetch などを途中で止めるための合図。AbortSignal.timeout(ms) で、時間切れのときに自動で止められる。
ブラウザが送る、希望する言葉の一覧 (優先度つき) の HTTP ヘッダ。サーバやアプリが、持っている翻訳のどれを出すかの手がかりにする。利用者が選んだ言葉を別に覚えることもある。
PostgreSQL の表ロックのうち、いちばん強いもの。ほかのほぼすべてのロックと両立しない。ふつうの CREATE INDEX や、表を書き直す ALTER TABLE などが取る。
Cookie などの資格情報を付けたクロスオリジン要求で、応答を JS に渡してよいかを示すヘッダ。true のときは Allow-Origin に具体的なオリジンが要り、* は使えない。
この応答を、どのオリジンの JS に渡してよいかを示す応答ヘッダ。許可した相手のオリジンを書く。資格情報付きでは * は使えない。
プリフライトの結果を、ブラウザが何秒覚えてよいかを示す応答ヘッダ。覚えている間は、同じ URL への本番要求の前に OPTIONS を省略できる。
nektos の道具。GitHub Actions の形の workflow を、手元の Docker で動かす。本物の GitHub Actions とすべてが同じではない。試す・記録する用途向き。
GitHub Actions でリポジトリの中身をジョブの作業場所へ用意する、よく使う段。act では外へ取りに行かず、手元の中身をコンテナへ写す動きになることがある。
その資源で使える HTTP メソッドを列挙する応答ヘッダ。OPTIONS の応答や、405 のときに付ける。
小さいベースイメージの系統の一つ。この記録では node:24-alpine を試した。musl を使うため、glibc 前提の部品と合わないことがある (一般論)。
直近のコミットを作り直す操作。新しいハッシュのコミットができ、ポインタはそちらへ移る。古いオブジェクトはすぐには消えないことが多い。
EXPLAIN に付けると、計画だけでなく実際に問い合わせを動かして測る。行数や時間の見積もりと実績を比べられる。表の統計を取る ANALYZE 命令とは別の文脈でも使われる。
PostgreSQL の比較。配列のどれかと一致する行を取る。部屋 id の一覧を渡して予約を 1 回で読む、などに使う。
プログラムどうしがやり取りする窓口。予約アプリでは、ブラウザの JS が /api/rooms/1/slots を呼び、JSON で空き時間を受け取る。
読み上げソフトが受け取る名前・役割・状態を、木の形の文字で書き出したもの。この記録では Playwright の aria snapshot で 2 つの版を比べた。
期待と実際が違うときに失敗にする確かめ。Node.js では node:assert が用意する。strict の deepEqual や equal などで値を比べる。
script 要素の属性。付けると解析を止めずに取りに行き、届いたらすぐ実行する。複数あると、どれが先に動くかは決まらない。
操作の前に、要素が押せる状態になるまで Playwright が待つしくみ。見えない・無効・覆われているあいだは、すぐにはクリックしない。
Promise の答えが届くまで、その関数だけを一時止める書き方。待つ間もメインスレッドは空く。
ページのアクセシビリティを自動で検査するオープンソースのエンジン。色の濃さ・lang・見出しなどは拾いやすいが、順番や文の分かりやすさは人が確かめることが多い。
PostgreSQL でよく使う既定の索引の形。値を並べて道を辿る。等号や範囲の条件に向く。先頭が % の後ろ一致などでは使いにくいことが多い。
バイナリを英数字などに符号化するやり方の一つ。JWT の各部に使う。読めなくする暗号ではなく、だれでも元に戻せる。
Authorization ヘッダの方式の一つ。あとにトークンを書く。ブラウザの Cookie 自動送信とは別経路で、クライアントが明示して付ける。
Git がファイルの中身だけを収めたオブジェクト。ファイル名は持たない。中身の前に種類と長さを付けたバイト列のハッシュで識別する。
同じオリジンのタブどうしでメッセージを送り合うブラウザの API。別の人の別ブラウザには届かない。この実験では予約後にほかのタブへ「変わった」と知らせるのに使った。
まず Cache Storage に当たるものを返し、無ければネットへ取りに行く、というよく言われる取り方。画面の殻 (HTML・JS) など、変わりにくいもの向き。仕様で固定された名前ではない。
Service Worker などから使う、要求と応答の組を名前つきの入れ物にためる API。HTTP の Cache-Control とは別の、スクリプトが明示的に読み書きする置き場。
アプリが先にキャッシュを見、無ければデータ源へ取り、取った答えをキャッシュへ載せる読み方。よく言われる考え方で、決まった一つの仕様名ではない。
この実験で、だれがどの予約に何をしてよいかを返す関数。持ち主・受付係・ほかの利用者の決まりをここに集める。入口は can() の結果だけを見て 403 などを返す。
利用者の近くに置く共有のキャッシュや配信の網。同じ URL の応答を多くの人で使い、オリジンへの到達を減らす。private な応答を誤って置くと他人のページが出る。
PostgreSQL の関数。文字列のコードポイント数を返す (octet_length はバイト数)。varchar(n) の n も、この数え方に沿う。
継続的インテグレーション。変更を入れるたびに、決めた確かめ (テストや静的検査など) を機械が毎回走らせる考え方。人の手元の「たぶん大丈夫」だけに頼らず、同じ手順を繰り返す。
読んでいる途中に、中身がどれだけずれたかの合計。良いとされる目安は 0.1 以下。画像の大きさを書く・後から入る物の場所を空けておくと防げる。
Node.js の module。親プロセスが同じサーバを複数の子プロセスとして起動し、負荷を分散する。1 プロセスが CPU を塞いでも、ほかのプロセスは別の要求をさばける。
PKCE で IdP に先に渡す値。合言葉 (code_verifier) の SHA-256 を base64url したもの (S256)。ブラウザには合言葉そのものは出さない。
ある時点の一番上の tree と、親コミット、作者・作成者、日時、題を収めたオブジェクト。各コミットは差分パッチではなく、その時点の写しを tree 経由で指す。
複数のミドルウェアを、足した順に 1 本の処理につなぐ関数。この記録の mw.ts では、添字 i の層が next で i+1 を呼ぶ。
サービス・網・ボリュームなどの定義を書いた説明の文書。イメージ、環境変数、依存の順番、healthcheck などを同じ場所に書く。
応答の扱いを示すヘッダ。attachment を付けると、ブラウザにページとして開かせず保存させる意図を伝えられる。アップロードしたファイルを同じサイトで開かせたくないときに使う。
MVC で、利用者の操作を受けて Model に頼む側の呼び名 (よく言われる分け方)。この実験では枠を押したら Model の予約を呼び、Model の変化で View を描き直す。
名前と値の組をブラウザに残すしくみ。同じサイトへの要求のたびに、自動でサーバへ送られる。サーバは Set-Cookie で配る。
別のオリジンのページから API を呼ぶとき、ブラウザが応答を JS に渡してよいかを決める仕組み。サーバが Access-Control-Allow-Origin などのヘッダで許可する。ブラウザ向けであり、サーバの守りそのものではない。
PostgreSQL で索引を作るとき、ふつうの CREATE INDEX より書き込みを止めにくくする指定。止めない代わりに、作る時間は長くなる。失敗すると未完成の索引が残ることがある (文書の注意)。
Content-Security-Policy 応答ヘッダ。このページで読み込んでよいスクリプトや資源の出所を決める。エスケープのあとに重ねる 2 枚目の守りとしても使う。
空に近い HTML を配り、ブラウザの JavaScript が API の答えで中身を作る作り方。最初の表示は往復が増えて遅れやすく、JS が動かないと中身が出ない。
書き込みの要求に付ける、そのセッションの画面にだけ埋め込んだ合言葉。サーバは届いた値をセッション側と照らす。無い・違うときは断る。
script 要素の属性。付けると、HTML の解析を止めずに JS を取りに行き、解析が終わってから書いた順に実行する。
GitHub が提供する、依存の更新を提案する仕組み。設定ファイルで生態系と間隔を書く。似た役割のツールに Renovate もある。
Compose で、ほかのサービスより先に起動する、と書く欄。単純な形は起動の順番だけで、相手が接続を受け付けるまでは待たない。condition: service_healthy を付けると、healthcheck 通過後に起動できる。
HTML の書字方向。ltr (左から右) と rtl (右から左)。アラビア語などでは rtl にし、並びが左右反対になる。
複数のコンテナ (サービス) を、1 つの説明の文書からまとめて起動・停止する仕組み。開発で DB・API・プロキシなどを同じ組み合わせにそろえるときに使う。
Compose の説明の文書を読み、変数を埋め込んだあとの形を書き出す命令。どの値が入るか確かめるときに使う。秘密の本物は置かない。
コンテナに SIGTERM を送り、指定時間内に終わらなければ SIGKILL で強制終了する命令。合図を受けないプロセスだと、待ち時間いっぱいになりやすい (この記録)。
イメージの作り方を書く説明の文書。どのベースから始め、何を写し、何を実行するかを段で書く。指示の 1 行が、だいたい 1 つの層になる。
ブラウザが HTML を読んで作る、要素の木。JavaScript はこの木を読み書きして画面を変える。
HTML の解析が終わり、defer の script も実行し終えたときに起きるイベント。画像などの読み込みは待たない。
本物のブラウザで画面を操作し、人と同じ流れで確かめるテスト。この記録ではヘッドレス Chromium で予約の枠を押す 3 本を走らせた。
届いたパッケージのハッシュが lockfile の integrity と合わないときに npm が出す誤り。wanted (lockfile 側) と but got (実際の中身) が示される。
elementtiming 属性を付けた画像や文字が、画面に描かれた時刻を測るしくみ。この動画では一覧が出た時刻に使った。
problem+json の中で、項目ごとの誤りを並べる配列。予約アプリは 1 つ目で止めず、だめな field と message を全部返す。
JWT / JWS の署名アルゴリズムの一つ。楕円曲線 P-256 と SHA-256。秘密鍵で署名し、公開鍵で確かめる。
JavaScript や TypeScript を束ねたり変換したりする道具。この実験では、React や Vue のコードをブラウザ向けの 1 本の JS にまとめるのに使った。
資源の版を表す応答ヘッダ。次の要求で If-None-Match に付けると、変わっていなければ 304 で本文を省略できる。
ブラウザが SSE を受け取るための API。接続が切れると自動でつなぎ直し、前回のイベント id を Last-Event-ID として送る。
Playwright などの確かめが落ちたときに出す、期待した文字と実際の文字。枠に出た断りの文など、画面上の手がかりになる。
実行計画を文字で出す命令。ANALYZE を付けると本当に動かして時間や実際の行数も出る。BUFFERS で読んだページ数も見える。
取り込む側の先端が、相手の祖先の一直線上にあるときのマージ。新しいマージコミットは作らず、ブランチの札を前へ動かすだけ。
ページを開き始めてから、文字や画像が最初に画面に描かれるまでの時間。
ブラウザの JavaScript から HTTP の要求を出す関数。すぐに Promise を返す。404 などの HTTP のエラーでは例外にならず、つながらないときだけ例外になる。
画像などを取りに行く優先度をブラウザに伝える属性。いちばん大きな画像に high を付けると、早く取りに行く。
PostgreSQL の行ロックの指定。選んだ行を更新用にロックし、すでにロックされている行は飛ばして次を取る。複数の係が同じ表から取り出すときに、同じ仕事を取り合わない。
PostgreSQL の索引の一種。値の集まりから候補を引く形。pg_trgm の部分一致索引などで使う。
良い状態と悪い状態のあいだを二分探索し、最初に壊れたコミットを探す操作。小さく分けた変更ほど、少ない確認回数で辿り着きやすい。
main と短い機能ブランチを中心に進める、よく言われる運用の型のひとつ。決まった仕様ではなく、チームの約束として選ぶ考え方。
クライアントが欲しい項目を問い合わせに書いて送り、1 つのエンドポイントでその形の JSON を受け取る API の流儀。資源ごとの URL を何本も揃える代わりに、場面ごとの形を問い合わせ側で選ぶ。
HTTP/2 の上で、あらかじめ決めた手続き (RPC) を呼び出す枠組み。.proto でサービスとメッセージの形を決め、中身は Protocol Buffers の 2 進数で送ることが多い。ブラウザから直接より、サーバどうしで使うことが多い。
ブラウザが記録した HTTP の要求と応答の一覧の形式 (HTTP Archive)。メソッド・URL・状態・大きさ・時間の内訳・ヘッダなどが入る。開発者ツールのネットワークの書き出しや、自動テストの記録で使う。
GET と同じ扱いだが、応答に本文を付けないメソッド。ヘッダだけ欲しいときに使う。安全かつ冪等。
今チェックアウトしているブランチ (またはコミット) を指すポインタ。多くの場合、refs/heads/… への参照を書いた短いファイル。
コンテナが用意できたかを、決めたコマンドで繰り返し確かめる設定。通るまで depends_on の service_healthy 待ちに使える。
今の履歴の 1 件を、指定した URL に差し替えるメソッド。部屋を変えたときに問い合わせだけ更新し、履歴を増やさない用途で使う。
共有の秘密鍵とメッセージから署名を作るやり方の一つ。Node.js では crypto.createHmac など。鍵を差し替えると、旧い鍵で作った署名は新しい鍵だけでは通らなくなる。
HTTP の版の 1 つ。1 本の接続の上で、複数の要求と応答を同時に流せる。TLS の接続の中で ALPN という方法で選ばれる。
Cookie の属性。付けると JavaScript (document.cookie) から読めなくなり、サーバへの要求にだけ付く。ログインのしるしに使う。
タイムゾーンの名前と、夏時間を含むずれの履歴をまとめたデータ。OS やランタイムが参照する。tzdata とも呼ばれる。
IdP が発行する、だれがログインしたかを表す JWT。方式・署名・発行者・宛先・期限・nonce などをアプリ側で確かめてから、セッションを作る。
同じ内容の POST を送り直しても二重登録しないための要求ヘッダ。IETF の草案であり、2026-10-22 時点では RFC ではない。
この実験が付ける応答ヘッダ。同じ鍵の要求に、前に保存した返事をそのまま返した印。草案の必須ヘッダではなく、記録の確かめ用。
Identity Provider。ログイン (だれか) を預かる別のサービス。この記録では login.example.org (Keycloak)。パスワードはここにだけ入れる。
索引で候補を見つけ、必要な行を表から読む実行計画の節。Bitmap Index Scan など、索引を経由するほかの節もある。
大きなデータや物をそのままの形で残せる、ブラウザの中のデータベース。同じオリジンで共有される。
ページを使っている間の、押す・打つなどの操作から次の画面が出るまでの時間の物差し。長いタスクがあると悪くなる。
データベースに新しい行を足す操作。予約アプリでは reservations へ 1 行書く。UNIQUE に当たると失敗する。
lockfile に書かれた、パッケージ中身のハッシュ (多くは sha512-…)。入れ直すとき届いた中身と照らし、合わなければインストールを断る。
言語ごとの並べ替え・比較の API。そのままのコードポイント順とは結果が違うことがある。
ロケールごとの数・通貨の書き方に直す ECMAScript の API。区切りや小数点、通貨記号の位置が場所で変わる。
数に応じて、どの複数形の札 (one・other・few など) を使うかを返す API。言葉ごとに札の種類が違う。文を「n + 単語」だけでつなぐと形が崩れることがある。
文字列を書記素・単語などに分ける ECMAScript の API。見た目の文字数を数えるときに使う。
nginx の upstream の指示。接続元のアドレスから、いつも同じサーバへ送る。メモリ上のセッションと組み合わせると sticky になるが、その台が止まるとログインは消える。
workflow の中で、同じ箱 (ランナー) の上で順番に走る段のまとまり。別の job とは同時に走れる。needs で待ちを書ける。
複数の表を結びつけて、1 回の問い合わせで結果を作ること。部屋と予約を LEFT JOIN して件数を集計する、などが例。
JavaScript の中に、HTML に近いタグの書き方を混ぜる構文。React の部品を書くときに使うことが多い。ブラウザはそのままでは読めないので、束ねるときに変換する。
JWT の中身の主張の一つ。トークンごとの識別子。必要ならサーバ側の取り消しリストなどに使う。
JSON Web Token。ヘッダ・中身・署名をドットでつないだ文字列。中身は base64url なのでだれでも読める。秘密を入れず、署名と期限で確かめる。
一度張った TCP 接続を、次の要求でも使い回すこと。nginx の upstream では keepalive 指示でアプリへの接続を再利用できる。毎回つなぎ直す往復を減らせる。
SSE で、ブラウザが最後に受け取った出来事の id。つなぎ直したときに要求ヘッダとして付き、サーバはそれより後の分を送り直せる。
画面の中でいちばん大きな文字のかたまりや画像が描かれるまでの時間。読み込みの速さの物差しの 1 つ。
LCP の対象になった、画面上でいちばん大きな画像や文字のかたまり。要素の種類 (画像か文か) が分かると、直す場所の見当がつく。
文字列のパターン照合。% は任意の長さ、_ は 1 文字。先頭が % だと B-tree の索引を使いにくいことが多い。
文字の組をブラウザに残す置き場所。同じオリジンのタブで共有され、消すまで残る。JavaScript から何でも読める。
作成成功 (201) のとき、新しい資源の URL を伝える応答ヘッダ。予約アプリでは /api/reservations/:id を返す。
Playwright で画面の要素を指す探し方。この記録では data-slot 付きの表のマスを locator で取り、click や expect に渡す。
係が仕事を取ったときの期限。この時刻までに done にならなければ、ほかの係が取り直せる。落ちた係の仕事が列に残り続けるのを防ぐ一方、送ったあとに落ちると二重実行の原因にもなる。
実際に入れたパッケージの版と integrity を固定して書くファイル。npm では package-lock.json。package.json の範囲だけだと、入れた日で中身が変わりうる。
ロックを待つ時間の上限。待ちきれなければその文があきらめる。長い読み取りの後ろに並ぶ表の変更を、書き込み側ではなく変更側であきらめるときに使う。
Cache-Control の指示。指定した秒数までは、サーバに確かめずにキャッシュした応答を使ってよい。すぐ変わるデータに長い秒数を付けると古いまま見える。
PostgreSQL が受け付ける接続数の上限。アプリのプロセス数とプールの大きさを掛けた見込みが、この上限を超えないよう設計する (一般論)。
ふたつのコミットの共通の祖先。分かれた所。3 方向のマージでは、この祖先と両先端の写しを比べる。
画面の型分けで、データとルールを持つ側の呼び名 (よく言われる分け方)。この実験の MVC では空き枠の配列と予約の処理を持ち、DOM は知らない。
フォームからファイルなどを送るときの Content-Type。本体をパートに分け、ファイル名や種類の名乗りを付ける。名乗りは信用せず、サーバで大きさと中身を確かめる。
画面を Model・View・Controller に分ける、よく言われる型。決まった仕様はない。この実験では、操作は Controller、データとルールは Model、描画は View。
Model・View・Presenter に分ける、よく言われる型。決まった仕様はない。この実験では View を受け身にし、Presenter が状態と表示の文を決める。
Model・View・ViewModel に分ける、よく言われる型。決まった仕様はない。この実験では ViewModel が画面に出す状態と操作を持ち、結びつけで描き直す。
親の一覧を 1 回取ったあと、子を親の件数だけ追加で問い合わせること。GraphQL のリゾルバを素直に書くと起きやすく、要求が 1 回でもデータベースの回数は減らない。
job の欄。先に成功してほしい他の job の名前を書く。書かれた job がすべて成功してから、その job が始まる。
まずネットへ取りに行き、つながらなければ Cache Storage の前回の答えを返す、というよく言われる取り方。すぐ古くなる API 向き。仕様で固定された名前ではない。
ミドルウェアから次の層へ処理を渡す関数。next の前が行き (外側→内側)、後が帰り (内側→外側)。呼ばなければ後ろの層は動かない。
Unicode 正規化の形のひとつ (Normalization Form C)。分解できる文字を合成形にそろえる。「か+濁点」と「が」を同じ文字列にしたいときに使う (UAX #15)。表設計の正規化とは別物。
互換性も含めてそろえる Unicode 正規化 (Normalization Form KC)。全角英数や半角カナを、検索しやすい形へ寄せることがある。
広く使われる Web サーバ / リバースプロキシ。静的ファイルの返却や、後ろのアプリへの中継 (proxy_pass) を担う。この記録では lab/nginx_srv.conf の設定で動かした。
nginx に設定の読み直しを指示する。新しいワーカーを起動し、古いワーカーは処理中の接続を終えてから終わる。向き先 (upstream) の入れ替えや戻しに使う (この記録)。
Cache-Control の指示。「置くな」ではなく、使う前に毎回オリジンへ確かめること。ETag と組み合わせると、変わっていなければ 304 で本文を省略できる。
Cache-Control の指示。応答をキャッシュに残さない。取ったらすぐ捨てる。
Node.js 組み込みのテストランナー。test で用例を書き、node --test で走らせる。この実験の単体・結合はこれと node:assert を使う。
ログイン開始時にアプリが作り、ID トークンの中にも入れて返すでたらめな文字列。受け取った ID トークンが、このログインのために出たものかを照合する。
応答ヘッダ X-Content-Type-Options の値。ブラウザに、宣言した Content-Type 以外へ中身から種類を推測させない。アップロードしたファイルを配るときに付け、誤った実行や表示を抑える。
入れた依存を、npm が持つ既知の脆弱性の情報と照らすコマンド。0 件は「今わかっているものに当てはまらない」であり、安全の証明ではない。定期的に流す。
lockfile どおりに依存を入れ直すコマンド。lockfile が無いと失敗し、通常は lockfile を書き換えない。CI で手元と同じ中身を再現するために使うことが多い。
一覧で何件飛ばすかを示す指定。途中で行が増えると、同じ件が隣のページに重なって出ることがある。
OpenID Connect。OAuth 2.0 の上に、だれがログインしたかを ID トークンで伝えるしくみ。「〇〇でログイン」のように、別のサービス (IdP) にログインしてもらうときに使う。
PostgreSQL の INSERT で、一意制約に当たったときの扱いを書く句。この記録では DO NOTHING で「先に鍵を書けた要求」だけを通す。
restart 方針の一つ。プロセスが失敗終了したとき、コンテナを起動し直す。受付完了を待つ代わりにはならない。何度も落ちる様子は回数で見える。
その資源で使えるメソッドを問い合わせるメソッド。応答の Allow に一覧が付く。安全かつ冪等。
オブジェクトの形でデータベースを扱う仕組み。関連を辿って読める一方、関連を 1 件ずつ読むと問い合わせが増えることがある (一般論)。
測った値を短い順に並べたとき、半分の値がこれ以下になる点 (中央値)。遅い側の一部はこれより長い。
測った値を短い順に並べたとき、95% の値がこれ以下になる点。いちばん遅い数%を除いた「だいたいの上限」の目安。
バラのオブジェクトをまとめた格納形式。git gc などで作られ、objects/pack 以下に .pack と索引が置かれる。
パッチ (変更の中身) から計算した識別子。コミットのハッシュが変わっても、同じ変更なら同じ印になりうる。
PostgreSQL の拡張。文字列を 3 文字ずつの組 (トライグラム) に分け、似ている度合いや部分一致の索引に使う。
Proof Key for Code Exchange。合言葉のハッシュ (code_challenge) を先に渡し、引き換えのときに合言葉そのもの (code_verifier) を見せて、合言葉を持つアプリだけがトークンを取れるようにする。
ブラウザを自動で操作して確かめる枠組みのひとつ。この記録の E2E は @playwright/test で枠をクリックし、文字を expect する。
アプリ側の接続プールが同時に持てる接続の上限。小さいと空き待ちの列ができ、大きすぎると DB 側の上限やメモリを圧迫しうる。
コミットが作られる直前に動く git のフック。秘密の形の文字列を含む変更を止める検査を置ける。現場では専用の道具 (gitleaks など) を使うことも多い。
MVP で、状態と表示の文を決め、View に出させる側の呼び名 (よく言われる分け方)。DOM を知らなければ、偽の View を渡してブラウザなしで確かめやすい。
Cache-Control の指示。ブラウザなど利用者ごとのキャッシュには置けても、CDN のような共有キャッシュには置いてはいけない。ログイン中の人の名前などに使う。
HTTP API のエラーを、type・title・status・detail などの決まった JSON で返す形式 (RFC 9457)。Content-Type は application/problem+json。
後で答えが届くという約束を表すもの。then や await で、届いた後の続きを書く。
複数の Promise を同時に待ち、全部がそろったら続ける。1 つでも失敗すると全体が失敗する。全部の結果を見るなら Promise.allSettled。
構造化したデータを、あらかじめ決めた欄番号つきの形で 2 進数にまとめる仕組み。同じ中身の JSON より小さくなることが多い。gRPC の本文によく使う。
Cache-Control の指示。共有キャッシュ (CDN) にも置いてよい、と明示する。誰が見てもよい公開の資料向き。
Progressive Web App の略。Web のページのまま、インストールやオフラインなど、アプリに近い扱いができる作りの総称。決まった 1 つの仕様名ではなく、よく言われる呼び方。
1 回の要求でアプリが出した SQL の件数を、応答ログや計測に載せた値。回数が多いときは N+1 など形を疑う手がかりになる。
状態から画面を宣言的に書くためのライブラリ。状態を変えると、前回との違いを計算して変わった DOM だけ直す、という考え方で使うことが多い。
PostgreSQL の既定の分離レベル。各文の開始時点のスナップショットを見る。同時の二人がどちらも「まだ無い」を見て INSERT すると、二重登録になりうる。
コンテナやプロセスが「要求を受けてよいか」を外から確かめる仕組み。Kubernetes では準備ができる前の Pod に Traffic を流さない。この記録の API も、準備中は /ready と本体が 503 を返す。
一連のコミットを、別の土台の先へ付け直す操作。付け直したコミットは別ハッシュになる。歴史を一直線にしやすい。
ログイン後にブラウザが戻る先の URL。IdP に登録した値と一字一句一致させる。登録外を指定すると、この記録では IdP が 400 で断り、ログイン画面を出さない。
HEAD やブランチ参照がいつどこへ動いたかの記録。amend でポインタが新し側へ移っても、古いコミットのハッシュをここから辿れることがある。
1 回の要求を追うための短い識別子。例外の詳細はログにだけ書き、応答にはこの id を載せて突き合わせる。この記録の 500 応答の JSON に含まれる。
fetch の応答が成功 (状態コードが 200〜299) かどうか。HTTP のエラーは例外にならないので、これを確かめる。
資源を URL で指し、操作を HTTP のメソッドで表す API の作り方の一つ。予約アプリでは部屋・予約を名詞のパスにする。
落ちたテストを決められた回数までやり直す設定。やり直しの途中で通ると flaky と数えられ、通った本数だけ見ると見逃しやすい。
1 秒あたりにさばけた要求の回数 (requests per second)。同じ仕事なら、道やプロセスが増えると上がりやすい。
job をどの種類のランナー (実行環境) で動かすかを書く欄。例: ubuntu-latest。act では手元のイメージへ置き換えて動かすことがある。
Cache-Control の指示。共有キャッシュ向けの保持秒数。共有キャッシュでは max-age よりこちらが優先される。
Cookie の属性。別のサイトから来た要求に Cookie を付けるかを決める。Lax はトップレベルの GET には付け、クロスサイトの POST などには付けない。Strict は別サイトからの遷移にも付けない。
CSP の指示。スクリプトの読み込み元を制限する。'self' なら同じオリジンのファイルだけを許す、など。
パスワードを保存するための、わざと遅い鍵導出関数の一つ。塩とコスト引数を付けて保存する。速いハッシュだけだと、漏れた表を総当たりしやすい。
Cookie の属性。付けると HTTPS の要求にだけ Cookie が付く。暗号化なしの http:// では送られない。
選んだ行を更新用にロックする SELECT。同じ行を押さえているあいだ、他のトランザクションは待たされる。部屋の行を押さえてから予約を確かめる、などに使う。
表を先頭から順に読む実行計画の節。索引が使えない・使わない方が安いと判断されたときに出る。条件に合わない行は読んでから捨てる。
分離レベルのうち、同時実行の結果が直列に実行したときと同じになることを目指す段階。競合を検出すると直列化失敗 (SQLSTATE 40001) になり、やり直しが要る。
サーバの中で使った時間 (DB・アプリなど) を、応答のヘッダでブラウザに伝えるしくみ。開発者ツールや Resource Timing で読める。
ページとネットワークのあいだに入り、要求を受け取るスクリプト。ページとは別のスレッドで動き、ためた応答を返したり、オフライン時の振る舞いを決めたりできる。
depends_on の条件の一つ。相手サービスの healthcheck が成功してから、こちらを起動する。順番だけでは足りないときに使う。
文字の組をタブごとに残す置き場所。別のタブからは見えず、タブを閉じると消える。
pg_trgm の関数。文字列から作られる 3 文字の組を一覧する。索引が何を見ているかの確かめに使う。
プロセスへ「終わってほしい」と伝える合図 (シグナル)。受けた側が新しい要求を断り、処理中を終えてから終了すると、入れ替え中の失敗を減らせる (この記録)。
pg_trgm の関数。2 つの文字列が 3 文字の組でどれだけ重なるかを 0 から 1 で表す。% 演算子は基準以上かを見る。
Postgres に入っている全文検索の設定の一つ。空白と記号で単語に分ける。日本語向けの形態素辞書は既定では入っていないことが多い。
同じ鍵を取りに行く途中なら、後から来た要求はその結果を待ち、データ源へ行くのを 1 回にまとめる手法。一斉取りを抑えるよく言われるやり方の一つ。決まった仕様名ではない。
トレースの中の 1 区間。名前・始まり・長さ・属性を持ち、親の下に子が並ぶ。この記録では「通知を送る」や「題名で探す」などが span になる。
複数のコミットの変更を 1 つのコミットにまとめて取り込む合わせ方。履歴は短くなるが、途中の細かいコミットは残らない。
Server-Sent Events。HTTP の応答を開いたまま、サーバからブラウザへ出来事を一方向に書き足すしくみ。通知の配信に向く。
前もって 1 回だけ HTML を作っておき、ただのファイルとして配る作り方。速いが、データが変わったら作り直しが要る。
Single Sign-On。一度 IdP にログインすると、アプリ側だけログアウトしても IdP のログインが残り、次はパスワードなしで戻れることがある。アプリのログアウトと IdP のログアウトは別。
要求のたびに、サーバで HTML を作って返す作り方。届いた HTML にもう中身が入っている。予約アプリのトップがこれ。
ログイン開始時にアプリが作り、戻り先の問い合わせに付けて返すでたらめな文字列。戻ってきた要求が、このブラウザで始めたログインの分かを照合する。
1 つの job の中の 1 段。uses で用意された動作を呼ぶか、run でコマンドを書く。
同じ利用者の要求を、いつも同じ台へ送ること。nginx では ip_hash などで実現する。動くが、その台の故障や入れ替えには弱い。
JavaScript の新しい日付・時刻 API。日付だけ・時刻・タイムゾーンなどを型ではっきり分けるねらいがある (一般論)。実行環境によってはまだ無い。
PostgreSQL の型。日付と時刻の文字を持つが、タイムゾーンの情報は持たない。文書上の正式名は timestamp without time zone。接続の場所を変えても同じ文字のまま読める。
PostgreSQL の型。時の一点を保持し、接続のタイムゾーンに合わせて表示する。文書上の正式名は timestamp with time zone。
Node.js の crypto が提供する、秘密の比較。長さが同じとき、短絡せずにバイト列を比べる。合言葉の照合に使う。
通信を暗号化し、相手のサーバが本物かを証明書で確かめるしくみ。TLS 1.3 の完全なハンドシェイクは 1 往復。
文字列を全文検索用のベクトル (単語と位置) に変換する関数。どの辞書で切るかで結果が変わる。
Playwright が残した操作の記録を、画面とタイムラインで見返す道具。いつ何をクリックし、どの確かめが外れたかを追うときに使う。
W3C Trace Context が決める HTTP ヘッダ。呼び出し元のトレースの番号を、次のサービスへ渡す。受ける側が引き継ぐと、別プロセスの span も同じトレースに並ぶ。
一つのトレースを指す番号。ログの行にも載せ、遅い要求のログとトレースの内訳を突き合わせる。request_id と同じく「追うための印」だが、トレース全体の親子をつなぐ側の名前。
Resource Timing が測る、ネットワークで運んだバイト数。0 ならブラウザのキャッシュから出したとみなせる (この記録の実験)。
要素を移動・拡大・回転させる CSS のプロパティ。レイアウトと描画をやり直さずに動かせることが多いので、アニメーションに向く。
ディレクトリの写し。モード・種類・ハッシュ・名前の並びで、blob や別の tree を指す。ファイル名はこの側が持つ。
共有の主系列 (trunk) へ短い寿命のブランチから頻繁に合わせる、よく言われる考え方。長く分岐したまま放置しないことを重視する。これも仕様ではなく運用の型。
要求を送ってから、応答の最初のバイトが届くまでの時間。サーバの処理と、要求と応答の往復が含まれる。
世界の文字に番号を付けた規格。アプリでは、その番号の並びを UTF-8 や UTF-16 で運ぶ。版の番号は処理系ごとに違う。この記録の Node では process.versions.unicode に出る。
古い側と新しい側を並べて示す差分形式。@@ の行に範囲の行数が付き、+ は足した行、− は消した行。
表の中で、指定した列の組が重複しないという約束。予約アプリでは (room_id, date, slot)。破る INSERT は失敗し、アプリが 409 に変える。
HTTP の接続を別のプロトコルへ切り替えるためのヘッダと手続き。WebSocket では Upgrade: websocket と Connection: Upgrade を使う。途中のプロキシが落とすと失敗する。
nginx が後ろに中継する先のサーバ群の名前。proxy_pass で参照する。この記録では app:8090 を 1 台登録し、keepalive で接続を使い回す。
今見ている部屋など、画面の状態を URL の問い合わせに載せたもの。再読み込みで残り、人に送ると同じ所から始められる。
URL の問い合わせ文字列を読み書きするブラウザの API。部屋の番号などを取り出したり、書き戻したりする。
Dockerfile の指示。以降の命令や、コンテナ起動時の利用者を切り替える。アプリを root (uid 0) のまま動かさない、というよく言われる考え方に使う。
世界で共通の「いつ」を表す基準の時刻。起きた時刻を一点で持つときの土台によく使う。場所の時計の文字そのものではない。
JavaScript の String.length が数える単位。BMP の外の文字は 2 単位 (サロゲートペア) になる。
応答が Origin 要求ヘッダによって変わることを、キャッシュに伝える Vary の値。CORS で相手ごとに Allow-Origin を返すとき、誤って別オリジン向けの応答を使い回さないために付ける。
画面の型分けで、表示を担当する側の呼び名 (よく言われる分け方)。MVC では描くだけ、MVP では言われたとおり出す受け身の画面、とされることが多い。
MVVM で、画面に出す状態と、画面から呼ぶ操作を持つ側の呼び名 (よく言われる分け方)。変わったら知らせ、結びつけ側が描き直す。
ページの見え方が変わったときに起きる Document の出来事。隠れていたページがまた見えるとき、写しを読み直す合図に使える。
テンプレートに状態を書いて画面を組み立てるフレームワーク。状態を変えると、その状態を使っている所を描き直す、という考え方で使うことが多い。
まず HTML の意味のある要素を使い、足りないときだけ ARIA を足す、という規則。決まった仕様の文書に書かれている。role を付けるより button などを選ぶ方が先、という趣旨。
新しい Service Worker がインストール済みだが、まだ古い版がページを受け持っているあいだの状態。開いているタブをすべて閉じるなどすると、新しい版へ切り替わることが多い。
Web Content Accessibility Guidelines。Web のアクセシビリティの指針。この記録の自動検査は、主に WCAG 2.x の A・AA と best-practice の規則を使う。
ページの体験を測る物差しのまとまり。中心の 3 つ (LCP・INP・CLS) は Core Web Vitals と呼ばれる。
メインスレッドとは別のスレッドで JavaScript を動かすしくみ。重い計算を任せられるが、DOM には触れず、結果はメッセージで返す。
名前・アイコン・開始 URL・表示の仕方 (display) などを書いた JSON。ブラウザが「インストールできるアプリ」として扱う材料になる。
ブラウザからの HTTP 要求を受け、ファイルや応答を返すサーバ。静的な CSS/画像の配信や、アプリへの中継の入口になる。この一連の動画では主に nginx。
expect(locator).toHaveText のように、条件が満たされるまで何度も見直す確かめ。既定では最大およそ 5 秒。一度だけ読む expect(値) とは違う。
Playwright の設定で、テストの前にローカルのサーバを起動する仕組み。url に届くまで待ち、終わったら止める。この実験では予約アプリを起動する。
HTTP から切り替えたあと、同じ接続で双方向にメッセージを送り合うプロトコル。チャットや共同編集のように、画面からもサーバへすぐ送りたいときに使う。
nginx の upstream で、各 server に付ける相対的な重み。大きいほど多くの要求が向かう。カナリアでは新しい版を小さくして一部だけ流す (この記録では 1 割)。
これから変わるプロパティを前もってブラウザに伝える CSS。要素を別の層にしておけるが、付けすぎるとメモリを使う。
テストを同時に何本流すかの設定。この記録では同じ 40 本を 1 と 4 で比べ、4 のほうが壁時計の中央値が短かった。
nginx の設定。ワーカープロセスの数。auto にすると、おおむね CPU の数だけ立つ。この記録では Docker の VM の CPU 数と同じになった。
Node.js で、同じプロセス内の別スレッドに JavaScript を渡すしくみ。重い計算をイベントループの外へ移せる。DOM は無いサーバ側の話。
GitHub Actions などで、いつ・何を走らせるかを書いた説明の文書。出来事 (例: push) と、jobs・steps の並びを定義する。
ページに悪い JavaScript を入れられてしまう脆弱性。入れられた JS は、そのページの localStorage や、HttpOnly でない Cookie を読める。
Zero Width Joiner (U+200D)。絵文字どうしをつないで、家族など 1 つの絵にする列に使う。
同じトランザクションで「送る予定」を表に書き、別の流れが後で外へ送る置き方。この記録では通知の予定を outbox に書き、送れなければ次の回にまた試す。よく言われる形であり、決まった一つの仕様名ではない。
接続プールの上限に達しているとき、接続が返されるまで要求が待つこと。上限が小さいほど待ちの列が長くなりやすい。
目・手・耳などの使い方が人によって違う前提で、同じ情報や操作へ届けること。キーボードだけ・読み上げソフト・拡大・色の見分けにくさなどを含む。
API などへの要求に付ける、短い寿命のしるし。この実験では署名付きの JWT。サーバは署名を確かめるだけで、個々の値を覚えなくてよいことが多い。
差し込み口の約束を、実際のデータベースや時計で満たす外側の部品 (よく言われる呼び名)。この実験では Postgres 版・メモリ版の保存先と、システム時計・決めた日付の時計。
予約の作成や認証など、アプリ固有の処理を行うプロセス。この記録では Node.js の server.ts (1 プロセス、または cluster で複数)。
サーバの状態を変えないと定められた HTTP のメソッド。RFC 9110 では GET・HEAD・OPTIONS・TRACE。予約アプリの読み取りはこれ。
どの部品がどの部品を知っているか (import の向き)。よく言われる考え方では、外側が内側を指し、芯のルールは外の世界を知らない。決まった仕様はない。この実験では domain が何も import しない。
UNIQUE 制約に反する INSERT / UPDATE が拒否されたこと。PostgreSQL では SQLSTATE 23505。予約アプリではこれを検知して 409 に変える。
一覧 API で、問い合わせの WHERE などにより、その人に見せてよい行だけを返すこと。画面で行を隠すだけでは足りない。この実験では WHERE owner = ? (受付係は全部)。
キャッシュの期限が切れた直後など、同じ鍵へ多くの要求が同時に来て、データ源へ何度も取りに行くこと。stampede や thundering herd とも呼ばれる。よく言われる注意点。
タスクを 1 つ取って実行し、終わったらマイクロタスクを全部片付け、また次のタスクを取る、を繰り返すしくみ。
button・label・h1・main など、名前と役割が仕様で決まっている HTML の要素。見た目だけの div に onclick を足すより、これらを先に使う。
イメージを積み重ねた 1 段。Dockerfile の指示に対応することが多い。docker image history で段ごとの作り方と大きさが見える。前の層に書いたものは、後で消しても残ることがある。
前景と背景の明るさの比 (コントラスト比)。薄い字は読みにくい。この記録では注意書きが 2.16 で、目安 4.5:1 を下回った (axe の color-contrast)。
ブラウザがホーム画面などへ追加してよい、と判断できる状態。マニフェストやアイコン、Service Worker など、製品ごとの条件を満たす必要がある (MDN Making PWAs installable)。
パッケージが install / postinstall などで、入れたときに動かすコマンド。止めるときは --ignore-scripts。止めるとビルドが要るパッケージは別途用意が要る。
表とは別に持つ、列の値から行の場所への近道。条件に合う行だけを探すときに、表を全部読まずに済むことがある。作る・直す・置く場所の分だけ書き込みと大きさが増える。
アプリを届ける土台。Web サーバ (nginx)、TLS の証明書、コンテナ、ネットワークなど。誰が・どこへ・どう安全に届けるかを担う。
HTML の中に直接書いた <script>…</script>。CSP の script-src が 'self' だけのとき、ブラウザは動かさないことが多い。
いまそのページの要求を受け持っている Service Worker (controller)。初回訪問ではまだ無く、再読み込みのあとから付くことが多い。
先に進めた変更を、後続が失敗したときに戻す処理。この記録では予約を書けなかったとき、減らした残り回数を利用者サービスへ返す。サーガの一部としてよく説明される。決まった仕様のコマンド名ではない。
HTML に埋め込む文字のうち & < > " ' などを、文字参照に置き換えて、タグや属性として解釈されないようにすること。入力の確かめとは別の仕事。
データを送ってから、その返事が戻るまでの 1 回のやり取り (RTT)。接続を作る・要求を送るたびに往復がいるので、遠いサーバほど回数が効く。
返事が届かないときなど、利用者が同じ注文をもう一度送ること。サーバでは処理が終わっているかもしれず、鍵が無いと二重に作られることがある。
ブラウザ・通信・サーバ・守り・届け方・運用のように、予約の旅を横切る大きなまとまり。決まった規格の名前ではなく、このサイトの見取りのための分け方。
ファイル本体をアプリのディスク以外に置く保管の形。アプリは識別子やメタデータだけ持つことが多い。アップロードの本体を分け、配信を別ドメインにすることもできる (一般論)。
.git/objects に blob・tree・commit などを置く Git の置き場。はじめはバラのファイル、後から pack にまとまることがある。
通信の方式・ホスト名・ポート番号の組。https://reserve.example.com のように書き、保存や JavaScript の許可の範囲を決める単位になる。
画面が使わない項目まで応答に付いてくること。資源ごとの REST では固定の JSON になりやすく、GraphQL では問い合わせに書いた項目だけを頼める。
ブラウザに付属する、ページを開いたときに起きた記録を見る道具。多くの環境では F12 で開き、要素・コンソール・ネットワーク・性能・アプリケーションなどのタブがある。
PATCH で受け取る欄をあらかじめ列挙したもの。この実験では date と room (EDITABLE)。owner や id は本文に入っていても使わない。
外から見える返事だけでなく、中で何が起きたかを記録からあとで追えるようにしておくこと。ログ・メトリクス・トレースを組み合わせて使う、とよく説明される。
漏れた、または古くなった鍵やパスワードを新しいものに替えること (ローテーション)。移行中は新旧を一時的に両方受け付け、そのあと旧を外す。ファイルから消すだけでは足りない。
冪等キーと、要求の中身・状態・前の返事を残す表。この記録では idem_keys。中身が違う要求は 422 で断る。
冪等キーをサーバがいつまで覚えるかの目安。よく言われる考え方として期限を付ける。万能の秒数は草案にも無く、製品ごとの文書を確かめる (一般論)。
新しい版へ、最初は一部の要求だけを流して様子を見るやり方。nginx の upstream では server の weight で割合を付けられる。不具合があればその版を外して戻す。よく言われる考え方。
プロセスの外から渡す名前と値の組。アプリは process.env などから読む。秘密をソースに埋め込まず、起動時に渡す置き方の一つ。
遅くなった機能とは別の画面や API まで遅くなっている状態。共通の資源 (接続プールなど) の詰まりや道連れを疑う手がかりになる。
動いているアプリから定期的に読むメトリクスや状態。この実験では 1 秒ごとの p95 と接続待ちの数。警報の決まりの入力になる。
別テーブルに実在する行だけを指せる、という DB の制約。確かめを外すと、無い room_id はここで止まり 500 になりうる。
アプリの外にある、複数の台が同じ答えを見られる置き場。本物では Redis などを使うことが多い。通信の時間と、置き場が止まったときを考える。
仕事の列から 1 件ずつ取り出し、メール送信などの本体を実行する別プロセス。取ったら locked_until で期限付きの印を付け、終わったら done にする。
特定の画面が要る形に合わせて、サーバが 1 回でまとめて返す API。資源ごとの REST を何回も呼ぶ代わりに使え、REST のまま要求回数を減らせる。
詳しくパネルの開閉のように、再読み込みで消えてよい一時の状態。人に送る必要も、ほかの人と共有する必要もないとき、メモリに置くことが多い。
一覧の区切りに、前のページの最後の id など位置を使う方式。予約アプリでは before で「この id より前」を取る。
ADD COLUMN で付ける、行ごとに違う既定値 (random() など)。表の全行を書き直すため、書き込みが長く止まりやすい (文書)。
ADD COLUMN で付ける、どの行でも同じ既定値。揮発でない既定なら、新しい版の PostgreSQL では表を全部書き直さずに済むことが多い (文書)。
waitForTimeout などで固定のミリ秒だけ眠ってから読む書き方。この記録では 100ms 待ちを 20 回試し、遅れが待ちを超えると落ちた。
テスト用に、今日の日付を固定して返す時計。この実験の fixedClock で、「過ぎた日」と「今日はまだ予約できる」の境目を本当の今日に左右されず試す。
一度取ったものを手元に残し、次は取りに行かずに使うしくみ。HTTP では Cache-Control などのヘッダで、残してよいか・いつまでかをサーバが決める。
ためた答えを、これ以上使わないと決めるまでの時間 (TTL)。消さずに期限だけに任せると、最大でそのあいだ古いまま見える。
データが変わったとき、ためた答えを消すか使えない印を付けること。書いただけではキャッシュは勝手に直らない、という前提で設計する。
許す範囲の端の値。予約アプリの slot では 9 と 17 は通し、8 と 18 は 422 にする、のように端の内側と外側を両方確かめる。
複数のアプリプロセスが同じセッション表を見ること。メモリだけだと、ログインしたプロセス以外は状態を知らない。ファイルや DB、Redis などに置く。
受け取る JSON のキーをあらかじめ決めた集合に限ること。知らない項目 (例: paid) は「知らない項目です」と断る。
総まとめで各段に添える、実測の中央値や状態コードなど 1 つ。手で書いた値ではなく、各動画の記録 JSON から読む。
原因を当てるために画面に出す、実測の断片。LCP・ログの queries・EXPLAIN の節・トレースの span など。推測だけで直さず、記録の文字と数字に戻る。
字下げなど空白だけの違いを数えない差分の見方 (git diff -w など)。整形と中身の変更が混ざったときに、中身の差だけを追いやすくする。
サーバが持つデータの、ブラウザ側のコピー。開いたあとにサーバ側が変わると古くなりうる。正しい値はサーバが持つ。
総まとめの各場面から、同じ数字を詳しく扱った本編の動画へ進む案内。総まとめは地図で、深さは本編側にある。
監視の決まりに当たったときに出す合図。この実験では直近の p95 がしきい値を続けて超えたら発報する。中の都合だけでなく、利用者が困っている速さで鳴らす、とよく言われる。
いつ警報を鳴らすか・いつ解消とするかの条件。この記録では「直近 10 秒の p95 > 0.5 秒が 3 回続いた」。しきい値の選び方に唯一の正解があるわけではない。
本物のサーバと DB など、複数の部品を通して確かめるテスト。この記録では別プロセスのサーバとメモリ上の SQLite へ HTTP で 6 本送った。
Web サーバがそのまま配るディレクトリ (この記録の /data/public) ではなく、別の置き場 ( /data/uploads ) に保存すること。配る経路をアプリが制御し、拡張子だけで実行・表示されないようにする。
同じ事実が多くの行に書き写されているため、直すときに何千行も書き換えたり、一部だけ古いまま残ったりすること。正規化で起きにくくする、とよく言われる (一般論)。
言葉や数・日付の書き方を差し替えられるように、アプリの作りを分けておくこと。英語では i18n (internationalization の先頭と末尾、間の文字数) とも書く。
症状 → 状態コードやログ・テストの失敗という手がかり → 原因、の練習の進め方。遅い原因を探すの対になる。決まった手順の規格ではない。
開発者ツールのタブの 1 つ。ページが出したログやエラーを見る。ここに JavaScript を書いて、fetch などで API をその場で試すこともできる。
アプリと、それを動かすのに要るものをまとめた写し。同じ写しを、手元・試験・本番など別の場所で起動できる。
塗った層を重ね合わせて画面に出す段。transform や opacity の変化は、この段だけで済みやすい。
Unicode が文字に付けた番号 (例: U+304C)。1 つの見た目の文字が、複数のコードポイントになることもある。
一時的な失敗のあと、待ち時間を置いて同じ仕事をもう一度試すこと。この記録では待ちを 1 秒・2 秒と倍にする。何度も失敗したら failed にして諦める。
冪等キーを表で探し、無ければ処理してから鍵と返事を書く方式。探すと書くのあいだに隙間があり、同じ鍵が割り込むと二重になりうる (この記録の check)。
遅い原因を追うときの、よく言われる手順。層を絞る → その層の記録を見る → 直前の変更を疑う。規格で固定された手順ではない。
処理の前に冪等キーを一意制約の表へ書き込み、書けた要求だけが処理する方式。処理中の鍵には 409、終わった鍵には前の返事を返す (この記録の claim)。
予約など子の行を消すと、部屋の定員のように親の事実までいっしょに消えてしまうこと。事実の置き場が子の行だけになっているときに起きやすい、とよく言われる (一般論)。
本体の処理が外に求めるものの約束 (ポート)。中身はアダプタ側が用意する。この実験では保存先と時計の二つの約束。DB を直接呼ばず約束に置き換える。
画面全体を作り直さず、前回との違いがある所だけ DOM を直すこと。React や Vue などが、状態の変化からこの直し方を仕組みとして担うことが多い。
全部の要求のトレースは残さず、一部だけを残すこと。量と費用を抑えるために、よく行われる。残す割合の決め方に、唯一の仕様があるわけではない。
複数のサービスにまたがる仕事を、局所のトランザクションと打ち消しの流れで進める考え方。1 つの分散トランザクションの代替としてよく言われる。決まった一つの仕様があるわけではない。
保存時のファイル名を、送られた名前ではなくサーバ側 (この記録では UUID) で付けること。上書きやパストラバーサルを防ぎ、公開 URL と元の表示名を切り離す。
ブラウザや CDN ではなく、アプリやその近くの置き場に DB などの答えをためること。HTTP の Cache-Control とは別の層。速いが古さの扱いが要る。
各サービスが自分のデータベースだけを持ち、他サービスの表を直接書かない置き方。この記録では部屋・利用者・予約がそれぞれ別の DB。境界ははっきりするが、またぐ更新は HTTP と打ち消しが要る。
どの仕事をどのサービスに置くかの切れ目。データと出し方の単位にもなる。曖昧なまま分けると、通信と失敗の形だけが増えやすい、とよく言われる。
パスワードを保存するときに足す、人ごとのでたらめな値。同じパスワードでも保存の形が変わり、あらかじめ計算した表との照合を難しくする。
列そのものではなく、lower(列) のような式の結果に付ける索引。問い合わせ側も同じ式で比べるとき使う。
原因が全部分かる前でも、利用者への影響を先に止めること。直前の変更を戻す、が典型例。直してから、トレースやログで場所を探す、という順にすることが多い。
API が扱う「もの」(部屋・予約など)。URL はその住所で、動詞はパスに埋め込まずメソッドで表す。
「予約する」のように、一つの仕事の手順を並べた部分 (アプリケーションの層、よく言われる呼び名)。ルールはドメインに任せ、保存と時計は差し込み口に任せる。
すぐでなくてよい仕事をいったん貯めておく置き場。この記録では PostgreSQL の jobs 表。要求の中でメール送信などを待たず、列に積んでからすぐ応答を返す。
テストが落ちたときにブラウザの画面を画像として残す機能。この記録では only-on-failure で fail_shot = 2 枚残った。
続けて失敗したらしばらく外を呼ばずに断り、たまには 1 回だけ試して戻る、よく言われる仕組み。閉・開・半開の状態で表す。決まった仕様の文書は無く、このサイトでは一般論として扱う。
その表の行を一つに決める列 (または列の組)。他の表から番号で指すときの土台になる。
利用者が困っている状態に気づき、影響を止め、記録から原因を追い、再発を減らす一連の動き。決まった唯一の仕様は無く、現場ごとの手順として語られることが多い。
衝突中のファイルに入る区切り。<<<<<<<・=======・>>>>>>>。残す行を決めたら印ごと消してからコミットする。
人が 1 文字に見るまとまり (grapheme cluster)。Intl.Segmenter の granularity "grapheme" で分けられる。濁点の結合や、ZWJ でつないだ絵文字も 1 つに数えられることがある (UAX #29)。
トークンのヘッダと中身が、発行者の鍵で付いた署名と一致するかを確かめること。中身だけ変えると署名が合わず拒否できる。受け付ける方式 (alg) は先に決める。
結果やエラーなど、後から変わる文を読み上げ側へ渡すための領域。この記録では role="status"。色を変えるだけでは役割が付かない。
データベースが問い合わせをどう実行するかの段取り。どの節で読むか・何行見積もるかなどが並ぶ。遅いときはまずここを見る。
401・403・409・415・422 などを、「だれか分かっているか / してよいか /衝突か / 送り方か / 中身か」で見分けること。壊れた原因を当てるときの手がかり。決まった探し方の規格ではなく、よく言われる読み方。
同じ事実が複数の行や列に重複して置かれていること。読む形は簡単になるが、更新や削除のずれの温床になりやすい (一般論)。
自分が直接頼んでいないが、頼んだパッケージがさらに頼んでいるパッケージ。少数を頼んでも、合計の packages と深さが大きくなりうる。
1 台の CPU やメモリを大きくして、さばける量を増やすこと。台数は増やさないので、状態の置き場所の問題は水平ほど目立たないが、上限は 1 台の大きさに縛られる。
同じ役割のサーバやコンテナを並べて台数を増やし、さばける量を増やすこと。この実験では nginx の後ろに API を 1・2・4 台並べ、各台の CPU を制限して測った。
Kubernetes などで、負荷の指標に合わせて Pod の台数を増減する仕組みの一例。考え方は一般論として「台数を負荷に合わせる」であり、アプリ側の状態の置き方も別途決める必要がある。
失敗の直後に、待ちをほとんど置かず同じ呼び出しを再度試すこと。一時的な失敗では成功が増える一方、止まっている相手では呼び出し回数だけが増えやすい。
どの要素に、どの CSS の値が効くかを決める段。DOM と CSS のどちらが変わってもやり直しになる。
実行計画で、条件に合わず読み飛ばされた行の数 (PostgreSQL の Rows Removed by Filter など)。Seq Scan で大きいと、索引が効いていないサインになりやすい。
HTTP の応答が成功か失敗かなどを示す 3 桁の番号。200 は成功、409 は資源の状態と矛盾する、など。開発者ツールのネットワーク一覧で確認する。
pull request や保護したブランチで、所定の検査 (CI のジョブなど) が成功したかを見る印。通るまでマージできない、といった門に使える (サービスの設定。運用の型)。
各台がログインなどの状態を自分のメモリだけに持たず、共有の置き場所を見る作り。どの台でも同じ答えができ、台を止めても残りで続けやすい。
画面のフレームワークを使わず、ブラウザの DOM API を直接書いて画面を動かすやり方。小さなページでは十分だが、大きな画面では直す所の管理が増えやすい。
同じ事実を何度も書き写さず、1 か所に置いて番号などで指す、という表の分け方の考え方。決まった仕様書の名前ではなく、よく言われる設計の指針 (一般論)。
要求のたびに中身を計算しない、ディスク上のファイル (CSS・画像・ビルド済みの JS など)。nginx の location で直接返すと、アプリの忙しさに引きずられにくい。
サーバ側に置く、ログイン中の人の状態の置き場所。ブラウザにはその入口の ID だけを Cookie で持たせる。HTTP 自体は前の要求を覚えないので、この仕組みでログインを続ける。
セッションを指すでたらめな文字列。推測できない長さにし、ログイン成功時には作り直す。置き場所には ID そのものではなくハッシュを入れることが多い。
同じ相手への HTTP 接続を使い回すときの本数の上限 (この実験では http.Agent の maxSockets)。複数の用事で分け合うと、遅い呼び出しが枠を埋めて道連れになりうる。
あらかじめ開いたデータベースへの接続を使い回す仕組み。毎回つないで切ると、つなぐだけの時間が積み重なる。
「状態がこうなら、画面はこう見える」と書いておくやり方。どこをどう直すかの手順を一つずつ書かず、状態を変えれば画面が追いつく、という考え。
条件に当たる行が全体の何割か、という見方。当たる行が多いと、索引より表を順に読む方が安いと判断されることがある (一般論)。
ログインしてから一定時間がたつと、操作していてもセッションを切ること。盗まれた ID の使える時間を限る。
総まとめのあと、全動画の配置を 1 枚で見直すこと。足りない段や、線でつながる前後関係を拾い直す入口。
文書を単語に分けてから探す仕組み。Postgres では to_tsvector と to_tsquery など。単語分けの辞書が前提。
最後の操作から一定時間がたつとセッションを切ること。長く放置した端末のログインを終わらせる。
会議室を 1 つ予約するまでを、これまでの動画の段で順にたどり直す動画。各場面は「起きていること・記録の数字 1 つ・詳しい動画」の三つ組で見せる。
遅いという訴えのとき、まず画面・API・DB のどれが遅いかを利用者の症状から見当をつけること。層が違うと見る記録も違う。決まった仕様ではなく、よく言われる探し方の一歩。
予約したときの料金のように、後からマスタが変わっても残しておきたい当時の記録。こういう列は書き写すのが正しいことが多い (一般論)。今の正しい値とは別物。
サーバが返した HTML の文字列をそのまま見る機能。要素タブに出る DOM (JavaScript が組み立てたあとの木) とは別物で、中身が違うことがある。
地球上の場所ごとの時計のずれのルール。名前は Asia/Tokyo のように場所で書く。同じ「時の一点」でも、場所が違えば表示の文字は違う。
利用者には「壊れた」ように見えても、仕様どおりの拒否や制限であること。例: 持ち主でない人の取り消しが 403 になる。直す対象ではなく、説明の対象。
テンプレートとスクリプトなどを 1 つのファイルにまとめた部品の書き方。Vue では拡張子 .vue のファイルがこれで、コンパイラが JavaScript に直してから使う。
行全体ではなく、変わった単語だけを印す差分の見方 (git diff --word-diff など)。同じ行の中の置き換えが追いやすい。
プリフライトなしで送られる、メソッドとヘッダが限られた要求 (MDN のいわゆる simple request)。text/plain の POST などが該当し、CORS の許可が無くてもサーバまで届くことがある。
サーバや DB を動かさず、関数や小さな単位だけを呼んで確かめるテスト。この記録では予約の入力の確かめを node:test で 8 本走らせた。
ある場所向けに、文・数・日付・書字方向などを実際に当てはめること。英語では l10n (localization の先頭と末尾、間の文字数) とも書く。国際化のあとに行う作業、という分け方がよく言われる。
画面に近づくまで画像などを取りに行かないしくみ (loading="lazy")。最初に見える大きな画像に使うと LCP が遅れる。
SSE や WebSocket のように、応答やソケットを開いたままにする使い方。画面の数だけサーバの接続を占め、途中の機器の無通信タイムアウトにも注意が要る。
同じ message_id を二度送らないための印。この記録では sent 表へ先に INSERT し、衝突したら送らず done にする。送る前に落ちると送られないまま印だけ残る弱みがある。
遅くなり始めた時刻の直前に出した版や設定を、まず疑うこと。障害対応では止血として戻すことも多い。よく言われる考え方。
SERIALIZABLE などで、同時実行を直列とみなせないと検出したときの失敗。PostgreSQL では SQLSTATE 40001。アプリはロールバックしてやり直す。
一度使ったリフレッシュトークンが再び来たとき、写しがあるとみなして同じ系統を全部止める作り。盗まれた写しと正当な更新の競合に備える。
速い下の層を多く、遅い上の層を少なく揃える、よく言われる考え方。決まった仕様ではなく、速さと見える範囲のバランスの話として使われる。
自分の環境では緑なのに、CI だけが赤い状態。入れた変更・データの前提・一意制約の有無など、手元と CI の差を疑う手がかり。
状態が変わったら、画面をその中身どおりに描き直す結びつけ。この実験の MVVM では bind が購読して表を描く。React や Vue は同様の更新を仕組みとして持つ。
同じ種類の問い合わせを一度にまとめて取り、N+1 を抑えるサーバ側の技法の一例。GraphQL のリゾルバと組み合わせて使うことが多い (一般論)。
世界で一つに決まる「いつ」。UTC や timestamptz で表す。画面に出す「その場所の何時何分」とは別物。
連続する 3 文字の組。前後の空白を含む組もある。日本語は show_trgm でハッシュ番号として出ることがある (版・文字による)。
複数の文を一つのまとまりとして扱い、全部成功するか全部取り消すかの単位。包んだだけでは、確かめと INSERT のあいだの競合は防げないことがある。
一つの要求の中で、どの処理が何 ms かかったかを、親子の span として残した記録。サービスをまたいでも、同じトレースの番号でつながる。
ブラウザが、あるオリジンの文書の JS から、別オリジンの資源を読むのを制限する基本の決まり。利用者の Cookie 付きで、別サイトの応答を読まれるのを防ぐ。
複数の要求を、時間を重ねて進めること。待っているあいだに次を受け付けられる仕事は重ねやすく、CPU を使い続ける計算は 1 本の道では並べることになる。
手元で環境変数の名前と値を並べたファイルの慣例的な名前。本物の値を入れることが多く、git には入れない。.gitignore に書く。
どの名前の設定が要るかだけを書いた見本。値は空かダミーにし、本物の秘密は入れない。リポジトリにはこちらを残す。
git が追跡しないパスを列挙するファイル。.env などを書いて、秘密がコミットに入るのを防ぐ。
ビルドコンテキストから除く経路を書いた一覧。node_modules・書き出し・テスト・.env など、写したくないものを送らないために使う。
Protocol Buffers / gRPC で、サービス名とメッセージの欄を書く約束ファイル。サーバもクライアントも、このファイルから型や手続きのコードを作る。
同じ誤りでも、単体・結合・E2E・CI のどれが落ちるかが違うこと。落ちた層が、原因の置き場所の見当になる。よく言われる切り分け。
予約の可否のような、業務のルールだけを置くところ (よく言われる呼び名)。この実験では引数の値だけで決まり、データベースも時計も知らない。
中身から計算したハッシュを、オブジェクトの置き場所や名前に使うやり方。同じ中身は同じハッシュになり、Git では objects 以下に 1 つだけ置ける。
50 ms を超えて道をふさぐタスク。その間はクリックの処理も描画も待たされる。分けたり、後に回したりして避ける。
一部の地域で、季節により時計を進める・戻すこと。1 日が 23 時間や 25 時間になる日がある。無い時刻や、同じ時計の文字が 2 回ある時刻も出る。
reserve.example.com のような名前を、通信に使う IP アドレスに変えること。インターネットでは DNS に問い合わせ、答えはしばらくキャッシュされる。
Compose で名前を付けて宣言する、データの置き場所。コンテナを止めても残り、消す指定付きで止めると消える。
移行のあいだ、古い列と新しい列の両方に同じ意味の値を書くこと。古い版と新しい版のアプリが同時に動けるようにする。
同じ仕事が、落ちや取り直しのせいで 2 回以上実行されること。メールなら同じ通が 2 回届く。期限で取り直す仕組みの裏返しとして起きうる。
同じ「作る」要求が、利用者や通信の都合で二度以上サーバに届くこと。二度押し・返事が届かないときの送り直し・途中の層の自動送り直しなどで起きる。
同じ部屋・同じ日・同じ枠に、複数の予約が入ってしまうこと。空いているか確かめてから入れるまでの隙間に、別の要求が割り込むと起きやすい。
本物の画面の代わりに渡す、テスト用の受け口。この実験では FakeView が showRows と showMessage を覚え、Presenter を node:test で確かめる。
注文ボタンなどを短いあいだに二回押してしまい、同じ「作る」要求が二度出ること。ボタンを押せなくする対策はここに効くが、送り直しには効かない。
届いた要求の本文が、アプリの決めた形・型・範囲かをサーバで調べること。画面の確かめは飛ばせるので、サーバでもう一度行う。
ログインなどで「だれか」が分かったあと、その人がこの資源にこの操作をしてよいかを確かめること。認証の次の段。決まりは 1 か所にまとめ、どの入口もそこを通す。
ブラウザには短い認可コードだけを戻し、トークンへの引き換えはアプリと IdP のサーバ同士で行う流れ。トークンを URL に載せない。この実験の response_type は code。
要求の送り手がだれかを確かめること。セッションやトークンでログイン状態を知る。認証だけでは、他人の予約を変えてよいかは決まらない。
待ちのあいだ道を空けておき、ほかの要求を進められること。タイマーや DB・外の API を待つ処理がこれに近い。
DOM の木の 1 つの節。要素のほか、文字 (テキスト) やコメントもノードになる。
サーバが作った HTML に、ブラウザの JavaScript が後からつながって、ボタンなどを動くようにすること。SSR と CSR を組み合わせるときに使う。
遮断器が開いてしばらくしたあと、試しに 1 回だけ外を呼ぶ状態 (よく言われる呼び名)。成功すれば閉に戻し、失敗すればまた開く。この記録では変わり目の時刻が残っている。
package.json の dependencies に書く「この版以上・次のメジャー未満」などの指定。先頭の ^ がその一例。確定した版そのものではない。
あるタイムゾーンのカレンダーと時計に出る日付・時刻の文字。未来の会議のように「その土地の火曜 10 時」を表すときに使う、とよく言われる (一般論)。
サーバ側のアプリとデータ。予約アプリでは server.ts が要求をさばき、db.ts の SQLite に予約を書く。成功は 201、矛盾は 409 など。
新しく足した列へ、既存の行の値を後から埋めること。一度に全部やらず、件数を区切って少しずつ進めることが多い。
ファイル名に ../ などを含め、意図したディレクトリの外へ読み書きする攻撃の型。この記録の確かめない版では、送られた名前をそのまま結合して /data/config.txt に書けた。
HTML の文字の並びを上から読んで、DOM の木を組み立てるブラウザの部品。普通の script に出会うと、それが実行されるまで読むのを止める。
かかった時間を「何秒以下が何件か」という箱 (バケット) に入れた集計。箱の件数は累積で、尾に遅い一件が残ると p95 が跳ねる理由が見える。
読みやすさや速さのために、わざと同じ値を複数の行へ書き写すこと。今の事実のコピーが増える一方、その時点の値を残したいときは意図して使う (一般論)。
ふりかえりで個人の過失探しをせず、再現できる条件や欠けていた防護を直す、という姿勢。SRE Book の Postmortem Culture などで語られる。唯一の規格ではない。
パスワード、API キー、署名の鍵、データベースの接続文字列など、外に出してはいけない値。コードや公開の場所に書かず、漏れたら差し替えられるように扱う。
本番などで秘密を置き、アプリが実行時に取りに行くための専用の置き場所。誰が読めるかの権限を分け、コードや git には置かない (一般論)。
同じ意味なのに半角・全角・かなカナなどで書き方が違うこと。NFKC でそろうものと、そろわないものがある。
列の名前や置き場を変えるとき、新しい列を足して両方に書き、写してから古い列を消す進め方。よく言われる考え方で、決まった仕様の名前ではない。各段で前の版に戻しやすくする。
色や文字などを、層ごとに塗る命令を作る段 (ペイント)。色を変えるとここからやり直しになる。
届くまでブラウザが画面を描かない資源。head の CSS が代表で、崩れた画面を一瞬見せないためにこうなっている。
以前のビルドで作った層を再利用するしくみ。上の段から順に使い、内容が変わった段から下はやり直す。依存の入れ方をソースより前に置くと、ソースだけ変えたときに依存の段が残りやすい。
イメージを作るときに、デーモンへ送る作業フォルダの中身。不要なものまで送ると遅くなり、写したくないものまで入る心配がある。
同じコードなのに、通ったり落ちたりするテスト。Playwright の報告ではやり直しで通ったものを flaky と数えることがある。
利用者の本当の端末と回線で集めた速さの記録。決まった環境で測る実験室の値とは違い、遅い端末や回線も混ざる。
タブに戻ってきたときや、ページが見え始めたときに、サーバへデータを取りに行くやり方。開いたときだけ読むより、写しの古さが残りにくい。
複数のサーバへ要求を振り分け、1 台に集中しないようにすること。振り方には順番回しや ip_hash などがある。振り分け自体は状態の共有を保証しない。
一つの失敗だけでは起きず、作りの弱点と外の遅れなどが重なって初めて大きくなること。この記録では v2 の「接続を握ったまま通知を待つ」と、通知の遅れが重なった。
2 つ以上の列を並べた索引。先頭の列から条件に使う、とよく言われる。版や条件によっては、後ろの列だけでも使える場合がある。
障害のあと、時間の流れ・何が効いたか・次にすることを残す文書や話し合い。人を責めず仕組みと手順を直す、とよく言われる。決まった仕様の文書ではない。
ブラウザで動く部分。HTML・CSS・JavaScript。予約アプリでは client.ts がクリックを受け、fetch で API を呼び、表の文字を書き換える。
サーバまで要求が届き応答していても、ページの JS に本文を渡さないこと。CORS の失敗などで、画面は「つながりません」に見える。
あるコミットのハッシュを書いた参照。refs/heads 以下のファイルで、中身はハッシュと改行程度の短い文字。
いま利用者に見えている組 (青) の横に、新しい版の組 (緑) を用意し、準備ができてから向き先を一度に切り替えるやり方。戻すのも向き先の切り替えだけ、になりやすい。そのかわり台数がおよそ二倍いる。よく言われる考え方 (決まった単一仕様ではない)。
今の仕事が終わるまで、同じ道で次の仕事を始められないこと。CPU を使い続ける計算は、そのあいだイベントループをふさぐ。
同時に動くトランザクションが、互いの変更をどの程度見えるかの段階。PostgreSQL の既定は READ COMMITTED。SERIALIZABLE まで上げると直列化の失敗が出ることがある。
本番の要求の前に、ブラウザが OPTIONS で「このメソッドとヘッダで送ってよいか」を聞く下見。application/json の POST など、単純ではない要求で起きる。
提案した変更を、差分と会話で見てもらい、入れてよいかを決める場。Git 本体の機能ではなく、GitHub などのサービスの機能。
SQL の文と値を分けて渡す書き方。文の中に ? などの印を置き、値は別に渡す。値に ' が含まれても、文の形は変わらない。
そのプロセス (その台) のメモリだけに答えをためること。速いが、別の台とは共有されない。書いた台だけ消しても、ほかの台のメモリは古いまま残ることがある。
芯の処理を、差し込み口とアダプタで外の世界から守る、よく言われる設計の型。ポートとアダプタとも呼ばれる。決まった仕様の文書は無く、このサイトでは一般論として触れる。
HTTP の要求や応答で、本体の前に付く名前と値の組。種類 (Content-Type)・キャッシュの指示 (Cache-Control)・サーバの中の時間 (Server-Timing) などを伝える。
画面ウィンドウを出さずにブラウザを動かすモード。E2E の自動実行ではヘッドレス Chromium を使うことが多い。
同じ要求を何回送っても、サーバ上の結果の状態が同じであること。安全なメソッドに加え、PUT と DELETE も冪等。POST は冪等ではない。
Dockerfile の FROM で指定する、土台のイメージ。同じアプリでも、フル・slim・alpine などで大きさと中身の差が出る。
一覧を一度に全部返さず、limit などで件数を区切って返すこと。次のページは next の URL で取る。
直接の force push や無審査のマージを制限し、レビューや検査を通してから入れる設定。サービスの機能であり、Git のオブジェクト形式そのものではない。
Cookie の名前の接頭辞。ブラウザは Secure・Path=/・Domain 属性なしのときだけ受け取る。サブドメインへ広げる Domain 付き Cookie を防ぎやすい。
画面が決まった間隔でサーバに「変化はあるか」と聞きに行くやり方。変化がなくても要求が飛ぶ。遅れは間隔の半分前後になりやすい。
役割ごとにサービスとデータを分け、ネットワーク越しに協調する形。チームや台数を分けやすい一方、通信・失敗の形・データのずれ・運用の単位が増える。
今のコードが終わった直後、次のタスクより先に全部実行される小さな仕事。Promise の then や queueMicrotask で積まれる。
ファイル先頭の決まったバイト列で種類を判別する印。この記録では PNG・JPEG・PDF だけを受け付ける。拡張子や Content-Type の名乗りは送る側が自由に決められるので、中身の印を見る。
まだ処理できていない要求が、前の仕事が終わるのを待つ並び。1 本の道で重い計算が続くと、後ろの要求ほど待ち時間が伸びる。
外の応答を待つ時間の上限。超えたら接続を切って失敗とする。この記録では 300 ms。相手が 2 秒かかるとき、予約は早く失敗し部屋一覧は守られた。
確かめ・ルール・SQL・今日の日付を一つの関数に全部入れた書き方。短いが、確かめるたびにデータベースが要り、日付の境目が本当の今日に左右されやすい。
親の一覧を取ったあと、子を親の件数だけ個別に取らず、IN や ANY などで一度に取るやり方。ORM の include / preload やデータローダーも同じ発想 (一般論)。
同じ事故に対して、種類の違う対策を複数置く考え方。1 つ漏れても次が止める。例: エスケープと CSP、SameSite と CSRF トークン。
親コミットを 2 つ以上持つコミット。分かれた歴史を 1 つに結んだ印。早送りでは作られない。
同じ箇所を両側が別々に変えたため、自動では合わさらない状態。Git はどちらを残すか決めず、人の選択を待つ。
キーボードで操作しているとき、今どの要素にいるかが枠線などで分かること。この記録では :focus-visible の枠線。全体の outline: none だと分かりにくい。
遅い・止まっている外の呼び出しが、接続の束などを占有し、関係ない速い用事まで待たされること。この記録では相手が毎回 2 秒のとき、部屋一覧の p95 も秒単位まで伸びた。
総まとめの 1 場面の型。「この段で起きていること」「記録の数字」「詳しい動画」を並べる。症状から探す練習動画とは進め方が違う。
要求が本体に届く前後で動く層。ログ・認証・エラー処理などを、本体の外に並べて挟む。多くの枠組みでは next で次の層へ渡し、呼ばなければそこで止まる。
catalog の PATH に並んだ段の順。入門から練習と総まとめまで。全部を一度に見る必要はなく、足りない段から拾い直してよい。
ブラウザで、HTML の解析・JavaScript の実行・レイアウト・描画・入力の処理を順番に行う 1 本の道。ここが長くふさがると画面が固まる。
画面に出す文を、コード中の文字列そのものではなく、title・book のような名前で引くための印。言葉を増やすときは表の中身を差し替える。
回数やかかった時間などを集計した数値の記録。経路ごとの件数や、時間のヒストグラムのバケットなど。平均だけでは尾の遅さが見えにくいので、p95 と合わせて読む。
HTML で & < > " ' などを & < のように書き、タグや属性として解釈されないようにした形。出力のエスケープの結果として現れる。
type="module" を付けた script。import と export が使え、何も書かなくても defer と同じく解析の後に実行される。
その予約を作った利用者。この実験では見る・変える・取り消すができる。本文の owner 欄ではなく、サーバがログイン中の人から決める。
予約など複数の仕事を、1 つのプロセスと 1 つのデータベースにまとめた形。1 つのトランザクションで一貫性を守りやすい一方、出し方や台数の単位もまとまりやすい。
まずはモノリスで育て、境目がはっきりしてからサービスに分ける、という考え方。MonolithFirst (Fowler) として知られる。決まった仕様ではなく、分け方の判断の話。
利用者に付ける種類 (この実験では member と staff)。受付係 (staff) は見る・取り消すはできるが、中身は変えない。
やり直しの待ち時間に乱数を足し、多くの客が同じ時刻にやり直さないようにすること (ジッター)。待ちを倍々に延ばすやり方と組み合わせて語られることが多い。決まった仕様ではない。
開発者ツールで、いまの DOM の木を調べるタブ。スタイルの当たりや、JavaScript が足した要素も見える。「ソースの表示」より、画面に近い状態を見る。
外を実際には呼ばず、すぐ失敗として返すこと。遮断が開いているあいだに起きる。この記録の fast_fail。相手への呼び出しを抑え、接続の束を空けておく。
1 回の予約が、画面・API・DB・認可・キュー・CI・観測など複数の帯をまたぐこと。どこか 1 本の動画だけでは、全体のつながりが見えにくい。
向き先のサーバへ、要求を順番に振り分けるやり方。nginx の upstream では、重みを付けないときの既定に近い。
ブラウザの手前で要求を受け、後ろのアプリへ中継するサーバ。TLS の終端や静的ファイルの返却を任せることが多い。この記録では nginx。
新しいアクセストークンを取るための、長い寿命のしるし。サーバ側に置き、ログアウトや使い回しで止められるようにする。
URL の道と HTTP メソッドから、動かす本体 (ハンドラ) を選ぶこと。該当が無ければ 404 を返す。この記録では apps/server_lab の router 層が担う。
ブラウザが各要素の大きさと位置を決める段。要素が増えたり大きさが変わったりすると、やり直しになる。
大きさを書いた直後に読む、を繰り返すと、ブラウザが毎回その場でレイアウトし直すこと。全部読んでから全部書くと避けられる。
一件ずつの出来事の記録。この実験では要求ごとに 1 行の JSON (経路・状態・ms・trace_id など) を出す。遅い一件を拾い、トレースと突き合わせるときに使う。
サーバの要求ログは 200 なのに、画面や fetch は失敗している状態。ブラウザが止めた結果は、アプリのログ行だけでは分からないことが多い。
言葉と地域の組み合わせ (例: ja-JP・de-DE)。Intl の整形や並べ替えの決まりを選ぶときに使う。
台を一度に全部止めず、一部ずつ新しい版に入れ替えていくやり方。向き先から外す・処理中を終える・準備ができてから戻す、を落とすと失敗が残ることがある (この記録)。Kubernetes の Deployment にも同名の更新がある。よく言われる考え方でもある。
出した版に問題があるとき、前の版や前の向き先へ戻すこと。青緑なら向き先の読み直し、カナリアなら新しい版を外す、など。出す操作より先に戻し方を決めておく、という見方がある (一般論)。
当てはまる用語がありません。