用語集復習

用語集

動画に出てくる 523 語。各語の下のリンクから、その語を説明している動画の章へ飛べます。

#

101 Switching Protocols101 Switching Protocols(いちまるいちすいっちんぐ)通信と API

要求どおりプロトコルを切り替えたことを示す状態コード。WebSocket への Upgrade が成功したときの応答。

1事実1箇所one fact in one place(いちじじついちかしょ)設計と概念

変えたい事実は一つの置き場だけにし、ほかは番号で参照する、という正規化の標語。仕様ではなく、現場でよく使う言い方 (一般論)。

201 Created201 Created(にひゃくいちくりえいてぃっど)入門

HTTP の状態コード。要求が成功し、新しい資源が作られたことを示す。予約アプリでは INSERT が通ったときの応答。

202 Accepted202 Accepted(にひゃくにあくせぷてぃっど)サーバの中

HTTP の状態コード。要求を受け付けたが、処理がまだ完了していないことを示す。この記録では仕事を列に積んだだけの応答に使う。

304 Not Modified304 Not Modified(さんびゃくよんのっともでぃふぁいど)通信と API

条件付き GET で、資源が変わっていないことを示す状態コード。本文は付けない。

3方向マージthree-way merge(さんほうこうまーじ)開発の進め方

分かれた所・一方の先端・もう一方の先端の 3 つを材料にするマージ。別々の行の変更なら自動で合わさることがある。同じ行だと衝突しうる。

400 Bad Request400 Bad Request(よんまるまるばっどりくえすと)通信と API

要求の書き方がサーバの前提に合わないときの状態コード。予約アプリでは JSON として読めない本文に使う。

401 Unauthorized401 Unauthorized(よんひゃくいちあんおーそらいずど)サーバの中

HTTP の状態コード。認証が必要、または認証に失敗したことを示す。この記録では Bearer が無い /api 要求で、auth 層が stop して返す。

403 Forbidden403 Forbidden(よんひゃくさんふぉーびでん)守る作り方

HTTP の状態コード。だれかは分かるが、その操作は許されていないことを示す。401 (だれか分からない) とは別。この記録では他人の予約への操作で返す。

404 Not Found404 Not Found(よんひゃくよんノットファウンド)サーバの中

HTTP の状態コード。指定した資源が無いことを示す。この記録では router 層が該当ハンドラを見つけられず付ける。

405 Method Not Allowed405 Method Not Allowed(よんまるごめそっどのっとあらうど)通信と API

その URL では使えないメソッドであるときの状態コード。Allow で使えるメソッドを併せて返す。

409 Conflict409 Conflict(よんひゃくきゅうこんふりくと)入門

HTTP の状態コード。資源のいまの状態と矛盾する要求であることを示す。すでに予約がある時間への INSERT など。

413 Content Too Large413 Content Too Large(よんいちごこんてんつとぅーらーじ)通信と API

要求の本文がサーバの上限を超えたときの状態コード。予約アプリでは BODY_MAX (4096 バイト) を超えると返す。

415 Unsupported Media Type415 Unsupported Media Type(よんいちごあんさぽーてっど)通信と API

サーバが受け付けない Content-Type のときの状態コード。予約アプリの JSON API に form 形式で送るとこれ。

422 Unprocessable Content422 Unprocessable Content(よんにーにーあんぷろせっさぶる)通信と API

構文は分かるが、意味や範囲が正しくない要求の状態コード。予約アプリでは slot が 9〜17 の外など。壊れた JSON の 400 や、形式違いの 415 とは別。

500 Internal Server Error500 Internal Server Error(ごひゃくインターナルサーバーエラー)サーバの中

HTTP の状態コード。サーバ側で想定外の失敗が起きたことを示す。この記録では errors 層が内側の例外を受け止め、利用者には request_id だけ返す。

A

AbortSignalAbortSignal(あぼーとしぐなる)ブラウザの中

fetch などを途中で止めるための合図。AbortSignal.timeout(ms) で、時間切れのときに自動で止められる。

関連: fetch

Accept-LanguageAccept-Language(あくせぷとらんぐえーじ)設計と概念

ブラウザが送る、希望する言葉の一覧 (優先度つき) の HTTP ヘッダ。サーバやアプリが、持っている翻訳のどれを出すかの手がかりにする。利用者が選んだ言葉を別に覚えることもある。

ACCESS EXCLUSIVEACCESS EXCLUSIVE (table lock)(あくせすえくすくるーしぶ)設計と概念

PostgreSQL の表ロックのうち、いちばん強いもの。ほかのほぼすべてのロックと両立しない。ふつうの CREATE INDEX や、表を書き直す ALTER TABLE などが取る。

Access-Control-Allow-CredentialsAccess-Control-Allow-Credentials(あくせすこんとろーるあろうくれでんしゃるず)通信と API

Cookie などの資格情報を付けたクロスオリジン要求で、応答を JS に渡してよいかを示すヘッダ。true のときは Allow-Origin に具体的なオリジンが要り、* は使えない。

Access-Control-Allow-OriginAccess-Control-Allow-Origin(あくせすこんとろーるあろうおりじん)通信と API

この応答を、どのオリジンの JS に渡してよいかを示す応答ヘッダ。許可した相手のオリジンを書く。資格情報付きでは * は使えない。

Access-Control-Max-AgeAccess-Control-Max-Age(あくせすこんとろーるまっくすえいじ)通信と API

プリフライトの結果を、ブラウザが何秒覚えてよいかを示す応答ヘッダ。覚えている間は、同じ URL への本番要求の前に OPTIONS を省略できる。

actact (nektos)(あくと)開発の進め方

nektos の道具。GitHub Actions の形の workflow を、手元の Docker で動かす。本物の GitHub Actions とすべてが同じではない。試す・記録する用途向き。

actions/checkoutactions/checkout(あくしょんずちぇっくあうと)開発の進め方

GitHub Actions でリポジトリの中身をジョブの作業場所へ用意する、よく使う段。act では外へ取りに行かず、手元の中身をコンテナへ写す動きになることがある。

AllowAllow header(あろう)通信と API

その資源で使える HTTP メソッドを列挙する応答ヘッダ。OPTIONS の応答や、405 のときに付ける。

alpineAlpine-based image(あるぱいん)開発の進め方

小さいベースイメージの系統の一つ。この記録では node:24-alpine を試した。musl を使うため、glibc 前提の部品と合わないことがある (一般論)。

amendgit commit --amend(あめんど)開発の進め方

直近のコミットを作り直す操作。新しいハッシュのコミットができ、ポインタはそちらへ移る。古いオブジェクトはすぐには消えないことが多い。

ANALYZEEXPLAIN ANALYZE(あならいず)設計と概念

EXPLAIN に付けると、計画だけでなく実際に問い合わせを動かして測る。行数や時間の見積もりと実績を比べられる。表の統計を取る ANALYZE 命令とは別の文脈でも使われる。

ANYANY (PostgreSQL)(えにー)サーバの中

PostgreSQL の比較。配列のどれかと一致する行を取る。部屋 id の一覧を渡して予約を 1 回で読む、などに使う。

APIApplication Programming Interface(えーぴーあい)入門

プログラムどうしがやり取りする窓口。予約アプリでは、ブラウザの JS が /api/rooms/1/slots を呼び、JSON で空き時間を受け取る。

関連: DOMfetch

aria スナップショットARIA snapshot (Playwright)(ありあすなっぷしょっと)設計と概念

読み上げソフトが受け取る名前・役割・状態を、木の形の文字で書き出したもの。この記録では Playwright の aria snapshot で 2 つの版を比べた。

assertassert(あさーと)開発の進め方

期待と実際が違うときに失敗にする確かめ。Node.js では node:assert が用意する。strict の deepEqual や equal などで値を比べる。

asyncasync attribute(えいしんく)ブラウザの中

script 要素の属性。付けると解析を止めずに取りに行き、届いたらすぐ実行する。複数あると、どれが先に動くかは決まらない。

auto-waitingauto-waiting / actionability(おーとうえいてぃんぐ)開発の進め方

操作の前に、要素が押せる状態になるまで Playwright が待つしくみ。見えない・無効・覆われているあいだは、すぐにはクリックしない。

awaitawait(あうぇいと)ブラウザの中

Promise の答えが届くまで、その関数だけを一時止める書き方。待つ間もメインスレッドは空く。

関連: Promise

axe-coreaxe-core(あっくすこあ)設計と概念

ページのアクセシビリティを自動で検査するオープンソースのエンジン。色の濃さ・lang・見出しなどは拾いやすいが、順番や文の分かりやすさは人が確かめることが多い。

B

B-treeB-tree index(びーつりー)設計と概念

PostgreSQL でよく使う既定の索引の形。値を並べて道を辿る。等号や範囲の条件に向く。先頭が % の後ろ一致などでは使いにくいことが多い。

base64urlBase64URL encoding(べーすろくよんゆーあーるえる)守る作り方

バイナリを英数字などに符号化するやり方の一つ。JWT の各部に使う。読めなくする暗号ではなく、だれでも元に戻せる。

関連: JWT

BearerBearer authentication scheme(べあらー)守る作り方

Authorization ヘッダの方式の一つ。あとにトークンを書く。ブラウザの Cookie 自動送信とは別経路で、クライアントが明示して付ける。

blobblob object(ぶろぶ)開発の進め方

Git がファイルの中身だけを収めたオブジェクト。ファイル名は持たない。中身の前に種類と長さを付けたバイト列のハッシュで識別する。

BroadcastChannelBroadcastChannel(ぶろーどきゃすとちゃんねる)設計と概念

同じオリジンのタブどうしでメッセージを送り合うブラウザの API。別の人の別ブラウザには届かない。この実験では予約後にほかのタブへ「変わった」と知らせるのに使った。

C

cache firstcache-first strategy(きゃっしゅふぁーすと)ブラウザの中

まず Cache Storage に当たるものを返し、無ければネットへ取りに行く、というよく言われる取り方。画面の殻 (HTML・JS) など、変わりにくいもの向き。仕様で固定された名前ではない。

Cache StorageCacheStorage(きゃっしゅすとれーじ)ブラウザの中

Service Worker などから使う、要求と応答の組を名前つきの入れ物にためる API。HTTP の Cache-Control とは別の、スクリプトが明示的に読み書きする置き場。

Cache-AsideCache-Aside / Lazy Loading(きゃっしゅあさいど)設計と概念

アプリが先にキャッシュを見、無ければデータ源へ取り、取った答えをキャッシュへ載せる読み方。よく言われる考え方で、決まった一つの仕様名ではない。

can()can (authorization helper)(きゃん)守る作り方

この実験で、だれがどの予約に何をしてよいかを返す関数。持ち主・受付係・ほかの利用者の決まりをここに集める。入口は can() の結果だけを見て 403 などを返す。

CDNContent Delivery Network(しーでぃーえぬ)通信と API

利用者の近くに置く共有のキャッシュや配信の網。同じ URL の応答を多くの人で使い、オリジンへの到達を減らす。private な応答を誤って置くと他人のページが出る。

char_lengthchar_length (PostgreSQL)(きゃられんす)設計と概念

PostgreSQL の関数。文字列のコードポイント数を返す (octet_length はバイト数)。varchar(n) の n も、この数え方に沿う。

CIContinuous Integration(しいあい)開発の進め方

継続的インテグレーション。変更を入れるたびに、決めた確かめ (テストや静的検査など) を機械が毎回走らせる考え方。人の手元の「たぶん大丈夫」だけに頼らず、同じ手順を繰り返す。

CLSCumulative Layout Shift(しーえるえす)ブラウザの中

読んでいる途中に、中身がどれだけずれたかの合計。良いとされる目安は 0.1 以下。画像の大きさを書く・後から入る物の場所を空けておくと防げる。

関連: LCPINP

clustercluster (Node.js)(くらすたー)サーバの中

Node.js の module。親プロセスが同じサーバを複数の子プロセスとして起動し、負荷を分散する。1 プロセスが CPU を塞いでも、ほかのプロセスは別の要求をさばける。

code_challengecode_challenge (PKCE)(こーどちゃれんじ)守る作り方

PKCE で IdP に先に渡す値。合言葉 (code_verifier) の SHA-256 を base64url したもの (S256)。ブラウザには合言葉そのものは出さない。

commit オブジェクトcommit object(こみっとおぶじぇくと)開発の進め方

ある時点の一番上の tree と、親コミット、作者・作成者、日時、題を収めたオブジェクト。各コミットは差分パッチではなく、その時点の写しを tree 経由で指す。

composecompose (middleware)(こんぽーず)サーバの中

複数のミドルウェアを、足した順に 1 本の処理につなぐ関数。この記録の mw.ts では、添字 i の層が next で i+1 を呼ぶ。

Compose ファイルCompose file(こんぽーずふぁいる)開発の進め方

サービス・網・ボリュームなどの定義を書いた説明の文書。イメージ、環境変数、依存の順番、healthcheck などを同じ場所に書く。

Content-DispositionContent-Disposition(こんてんとでぃすぽじしょん)サーバの中

応答の扱いを示すヘッダ。attachment を付けると、ブラウザにページとして開かせず保存させる意図を伝えられる。アップロードしたファイルを同じサイトで開かせたくないときに使う。

ControllerController(こんとろーらー)運用と設計

MVC で、利用者の操作を受けて Model に頼む側の呼び名 (よく言われる分け方)。この実験では枠を押したら Model の予約を呼び、Model の変化で View を描き直す。

関連: MVCModelView

CORSCross-Origin Resource Sharing(こるす)通信と API

別のオリジンのページから API を呼ぶとき、ブラウザが応答を JS に渡してよいかを決める仕組み。サーバが Access-Control-Allow-Origin などのヘッダで許可する。ブラウザ向けであり、サーバの守りそのものではない。

CREATE INDEX CONCURRENTLYCREATE INDEX CONCURRENTLY(くりえいといんでっくすこんかれんとりー)設計と概念

PostgreSQL で索引を作るとき、ふつうの CREATE INDEX より書き込みを止めにくくする指定。止めない代わりに、作る時間は長くなる。失敗すると未完成の索引が残ることがある (文書の注意)。

CSPContent Security Policy(しーえすぴー)守る作り方

Content-Security-Policy 応答ヘッダ。このページで読み込んでよいスクリプトや資源の出所を決める。エスケープのあとに重ねる 2 枚目の守りとしても使う。

CSRClient-Side Rendering(しーえすあーる)ブラウザの中

空に近い HTML を配り、ブラウザの JavaScript が API の答えで中身を作る作り方。最初の表示は往復が増えて遅れやすく、JS が動かないと中身が出ない。

関連: SSRSSG

CSRF トークンCSRF token(しーえすあーるえふとーくん)守る作り方

書き込みの要求に付ける、そのセッションの画面にだけ埋め込んだ合言葉。サーバは届いた値をセッション側と照らす。無い・違うときは断る。

D

deferdefer attribute(でふぁー)入門

script 要素の属性。付けると、HTML の解析を止めずに JS を取りに行き、解析が終わってから書いた順に実行する。

関連: DOM

DependabotDependabot(でぃぺんだぼっと)守る作り方

GitHub が提供する、依存の更新を提案する仕組み。設定ファイルで生態系と間隔を書く。似た役割のツールに Renovate もある。

depends_ondepends_on(でぃぺんずおん)開発の進め方

Compose で、ほかのサービスより先に起動する、と書く欄。単純な形は起動の順番だけで、相手が接続を受け付けるまでは待たない。condition: service_healthy を付けると、healthcheck 通過後に起動できる。

dir 属性dir (HTML)(でぃーあいあーるぞくせい)設計と概念

HTML の書字方向。ltr (左から右) と rtl (右から左)。アラビア語などでは rtl にし、並びが左右反対になる。

Docker ComposeDocker Compose(どっかーこんぽーず)開発の進め方

複数のコンテナ (サービス) を、1 つの説明の文書からまとめて起動・停止する仕組み。開発で DB・API・プロキシなどを同じ組み合わせにそろえるときに使う。

docker compose configdocker compose config(どっかーこんぽーずこんふぃぐ)開発の進め方

Compose の説明の文書を読み、変数を埋め込んだあとの形を書き出す命令。どの値が入るか確かめるときに使う。秘密の本物は置かない。

docker stopdocker stop(どっかーすとっぷ)開発の進め方

コンテナに SIGTERM を送り、指定時間内に終わらなければ SIGKILL で強制終了する命令。合図を受けないプロセスだと、待ち時間いっぱいになりやすい (この記録)。

DockerfileDockerfile(どっかーふぁいる)開発の進め方

イメージの作り方を書く説明の文書。どのベースから始め、何を写し、何を実行するかを段で書く。指示の 1 行が、だいたい 1 つの層になる。

DOMDocument Object Model(どむ)入門

ブラウザが HTML を読んで作る、要素の木。JavaScript はこの木を読み書きして画面を変える。

関連: defer

DOMContentLoadedDOMContentLoaded event(どむこんてんとろーでっど)ブラウザの中

HTML の解析が終わり、defer の script も実行し終えたときに起きるイベント。画像などの読み込みは待たない。

E

E2E テストend-to-end test(いーつーいーてすと)開発の進め方

本物のブラウザで画面を操作し、人と同じ流れで確かめるテスト。この記録ではヘッドレス Chromium で予約の枠を押す 3 本を走らせた。

EINTEGRITYEINTEGRITY(いーいんてぐりてぃ)守る作り方

届いたパッケージのハッシュが lockfile の integrity と合わないときに npm が出す誤り。wanted (lockfile 側) と but got (実際の中身) が示される。

Element TimingElement Timing API(えれめんとたいみんぐ)ブラウザの中

elementtiming 属性を付けた画像や文字が、画面に描かれた時刻を測るしくみ。この動画では一覧が出た時刻に使った。

関連: FCP

errorserrors (problem details)(えらーず)通信と API

problem+json の中で、項目ごとの誤りを並べる配列。予約アプリは 1 つ目で止めず、だめな field と message を全部返す。

ES256ECDSA using P-256 and SHA-256(イーエスにひゃくごじゅうろく)守る作り方

JWT / JWS の署名アルゴリズムの一つ。楕円曲線 P-256 と SHA-256。秘密鍵で署名し、公開鍵で確かめる。

esbuildesbuild(いーえすびるど)運用と設計

JavaScript や TypeScript を束ねたり変換したりする道具。この実験では、React や Vue のコードをブラウザ向けの 1 本の JS にまとめるのに使った。

関連: JSXReactVue

ETagEntity Tag(いーたぐ)通信と API

資源の版を表す応答ヘッダ。次の要求で If-None-Match に付けると、変わっていなければ 304 で本文を省略できる。

EventSourceEventSource(いべんとそーす)通信と API

ブラウザが SSE を受け取るための API。接続が切れると自動でつなぎ直し、前回のイベント id を Last-Event-ID として送る。

Expected と ReceivedExpected / Received (test assertion)(えくすぺくてっどとりしーぶど)練習と総まとめ

Playwright などの確かめが落ちたときに出す、期待した文字と実際の文字。枠に出た断りの文など、画面上の手がかりになる。

EXPLAINEXPLAIN(えくすぷれいん)設計と概念

実行計画を文字で出す命令。ANALYZE を付けると本当に動かして時間や実際の行数も出る。BUFFERS で読んだページ数も見える。

F

Fast-forwardfast-forward merge(ふぁすとふぉわーど)開発の進め方

取り込む側の先端が、相手の祖先の一直線上にあるときのマージ。新しいマージコミットは作らず、ブランチの札を前へ動かすだけ。

FCPFirst Contentful Paint(えふしーぴー)入門

ページを開き始めてから、文字や画像が最初に画面に描かれるまでの時間。

fetchfetch()(ふぇっち)ブラウザの中

ブラウザの JavaScript から HTTP の要求を出す関数。すぐに Promise を返す。404 などの HTTP のエラーでは例外にならず、つながらないときだけ例外になる。

fetchpriorityfetchpriority attribute(ふぇっちぷらいおりてぃ)ブラウザの中

画像などを取りに行く優先度をブラウザに伝える属性。いちばん大きな画像に high を付けると、早く取りに行く。

関連: LCP

FOR UPDATE SKIP LOCKEDFOR UPDATE SKIP LOCKED(ふぉーあっぷでーとスキップロックト)サーバの中

PostgreSQL の行ロックの指定。選んだ行を更新用にロックし、すでにロックされている行は飛ばして次を取る。複数の係が同じ表から取り出すときに、同じ仕事を取り合わない。

G

GINGeneralized Inverted Index(じん)設計と概念

PostgreSQL の索引の一種。値の集まりから候補を引く形。pg_trgm の部分一致索引などで使う。

git bisectgit bisect(ぎっとばいせくと)開発の進め方

良い状態と悪い状態のあいだを二分探索し、最初に壊れたコミットを探す操作。小さく分けた変更ほど、少ない確認回数で辿り着きやすい。

GitHub flowGitHub flow(ぎっとはぶふろー)開発の進め方

main と短い機能ブランチを中心に進める、よく言われる運用の型のひとつ。決まった仕様ではなく、チームの約束として選ぶ考え方。

GraphQLGraphQL(ぐらふきゅーえる)通信と API

クライアントが欲しい項目を問い合わせに書いて送り、1 つのエンドポイントでその形の JSON を受け取る API の流儀。資源ごとの URL を何本も揃える代わりに、場面ごとの形を問い合わせ側で選ぶ。

関連: APIREST

gRPCgRPC(じーあーるぴーしー)通信と API

HTTP/2 の上で、あらかじめ決めた手続き (RPC) を呼び出す枠組み。.proto でサービスとメッセージの形を決め、中身は Protocol Buffers の 2 進数で送ることが多い。ブラウザから直接より、サーバどうしで使うことが多い。

H

HARHTTP Archive(はー)入門

ブラウザが記録した HTTP の要求と応答の一覧の形式 (HTTP Archive)。メソッド・URL・状態・大きさ・時間の内訳・ヘッダなどが入る。開発者ツールのネットワークの書き出しや、自動テストの記録で使う。

HEAD (Git)HEAD(へっどぎっと)開発の進め方

今チェックアウトしているブランチ (またはコミット) を指すポインタ。多くの場合、refs/heads/… への参照を書いた短いファイル。

healthcheck (Compose)healthcheck(へるすちぇっくこんぽーず)開発の進め方

コンテナが用意できたかを、決めたコマンドで繰り返し確かめる設定。通るまで depends_on の service_healthy 待ちに使える。

history.replaceStateHistory.replaceState()(ひすとりーりぷれいすすてーと)設計と概念

今の履歴の 1 件を、指定した URL に差し替えるメソッド。部屋を変えたときに問い合わせだけ更新し、履歴を増やさない用途で使う。

HMACHash-based Message Authentication Code(えいちまっく)守る作り方

共有の秘密鍵とメッセージから署名を作るやり方の一つ。Node.js では crypto.createHmac など。鍵を差し替えると、旧い鍵で作った署名は新しい鍵だけでは通らなくなる。

HTTP/2Hypertext Transfer Protocol version 2(えいちてぃーてぃーぴーつー)入門

HTTP の版の 1 つ。1 本の接続の上で、複数の要求と応答を同時に流せる。TLS の接続の中で ALPN という方法で選ばれる。

関連: TLS

HttpOnlyHttpOnly attribute(えいちてぃーてぃーぴーおんりー)ブラウザの中

Cookie の属性。付けると JavaScript (document.cookie) から読めなくなり、サーバへの要求にだけ付く。ログインのしるしに使う。

関連: CookieXSS

I

IANA タイムゾーン DBIANA Time Zone Database(いあなたいむぞーんでーたびー)設計と概念

タイムゾーンの名前と、夏時間を含むずれの履歴をまとめたデータ。OS やランタイムが参照する。tzdata とも呼ばれる。

ID トークンID Token(あいでぃーとーくん)守る作り方

IdP が発行する、だれがログインしたかを表す JWT。方式・署名・発行者・宛先・期限・nonce などをアプリ側で確かめてから、セッションを作る。

Idempotency-KeyIdempotency-Key(あいでんぽてんしーきー)通信と API

同じ内容の POST を送り直しても二重登録しないための要求ヘッダ。IETF の草案であり、2026-10-22 時点では RFC ではない。

Idempotency-ReplayedIdempotency-Replayed(あいでんぽてんしーりぷれいど)設計と概念

この実験が付ける応答ヘッダ。同じ鍵の要求に、前に保存した返事をそのまま返した印。草案の必須ヘッダではなく、記録の確かめ用。

IdPIdentity Provider(あいでぃーぴー)守る作り方

Identity Provider。ログイン (だれか) を預かる別のサービス。この記録では login.example.org (Keycloak)。パスワードはここにだけ入れる。

Index ScanIndex Scan(いんでっくす・すきゃん)設計と概念

索引で候補を見つけ、必要な行を表から読む実行計画の節。Bitmap Index Scan など、索引を経由するほかの節もある。

IndexedDBIndexedDB(いんでっくすどでぃーびー)ブラウザの中

大きなデータや物をそのままの形で残せる、ブラウザの中のデータベース。同じオリジンで共有される。

関連: localStorage

INPInteraction to Next Paint(あいえぬぴー)ブラウザの中

ページを使っている間の、押す・打つなどの操作から次の画面が出るまでの時間の物差し。長いタスクがあると悪くなる。

INSERTINSERT(いんさーと)入門

データベースに新しい行を足す操作。予約アプリでは reservations へ 1 行書く。UNIQUE に当たると失敗する。

integrityintegrity (Subresource Integrity style checksum)(いんてぐりてぃ)守る作り方

lockfile に書かれた、パッケージ中身のハッシュ (多くは sha512-…)。入れ直すとき届いた中身と照らし、合わなければインストールを断る。

Intl.CollatorIntl.Collator(いんたーなしょなるこれーたー)設計と概念

言語ごとの並べ替え・比較の API。そのままのコードポイント順とは結果が違うことがある。

関連: NFKCUnicode

Intl.NumberFormatIntl.NumberFormat(いんたーなしょなるなんばーふぉーまっと)設計と概念

ロケールごとの数・通貨の書き方に直す ECMAScript の API。区切りや小数点、通貨記号の位置が場所で変わる。

Intl.PluralRulesIntl.PluralRules(いんたーなしょなるぷらーらるるーるず)設計と概念

数に応じて、どの複数形の札 (one・other・few など) を使うかを返す API。言葉ごとに札の種類が違う。文を「n + 単語」だけでつなぐと形が崩れることがある。

Intl.SegmenterIntl.Segmenter(いんたーなしょなるせぐめんたー)設計と概念

文字列を書記素・単語などに分ける ECMAScript の API。見た目の文字数を数えるときに使う。

ip_haship_hash (ngx_http_upstream_module)(あいぴーはっしゅ)運用と設計

nginx の upstream の指示。接続元のアドレスから、いつも同じサーバへ送る。メモリ上のセッションと組み合わせると sticky になるが、その台が止まるとログインは消える。

J

jobjob (GitHub Actions)(じょぶ)開発の進め方

workflow の中で、同じ箱 (ランナー) の上で順番に走る段のまとまり。別の job とは同時に走れる。needs で待ちを書ける。

JOINJOIN (SQL)(じょいん)サーバの中

複数の表を結びつけて、1 回の問い合わせで結果を作ること。部屋と予約を LEFT JOIN して件数を集計する、などが例。

JSXJSX(じぇいえっくす)運用と設計

JavaScript の中に、HTML に近いタグの書き方を混ぜる構文。React の部品を書くときに使うことが多い。ブラウザはそのままでは読めないので、束ねるときに変換する。

関連: Reactesbuild

jtiJWT ID (jti claim)(じぇいてぃーあい)守る作り方

JWT の中身の主張の一つ。トークンごとの識別子。必要ならサーバ側の取り消しリストなどに使う。

JWTJSON Web Token(じぇいだぶりゅーてぃー)守る作り方

JSON Web Token。ヘッダ・中身・署名をドットでつないだ文字列。中身は base64url なのでだれでも読める。秘密を入れず、署名と期限で確かめる。

K

keepalivekeepalive(きーぷあらいぶ)サーバの中

一度張った TCP 接続を、次の要求でも使い回すこと。nginx の upstream では keepalive 指示でアプリへの接続を再利用できる。毎回つなぎ直す往復を減らせる。

L

Last-Event-IDLast-Event-ID(らすといべんとあいでぃー)通信と API

SSE で、ブラウザが最後に受け取った出来事の id。つなぎ直したときに要求ヘッダとして付き、サーバはそれより後の分を送り直せる。

LCPLargest Contentful Paint(えるしーぴー)入門

画面の中でいちばん大きな文字のかたまりや画像が描かれるまでの時間。読み込みの速さの物差しの 1 つ。

関連: FCP

LCP 要素LCP element(えるしーぴーようそ)練習と総まとめ

LCP の対象になった、画面上でいちばん大きな画像や文字のかたまり。要素の種類 (画像か文か) が分かると、直す場所の見当がつく。

LIKELIKE (pattern matching)(らいく)設計と概念

文字列のパターン照合。% は任意の長さ、_ は 1 文字。先頭が % だと B-tree の索引を使いにくいことが多い。

localStoragelocalStorage(ろーかるすとれーじ)ブラウザの中

文字の組をブラウザに残す置き場所。同じオリジンのタブで共有され、消すまで残る。JavaScript から何でも読める。

LocationLocation header(ろけーしょん)通信と API

作成成功 (201) のとき、新しい資源の URL を伝える応答ヘッダ。予約アプリでは /api/reservations/:id を返す。

locatorlocator (Playwright)(ろけーたー)開発の進め方

Playwright で画面の要素を指す探し方。この記録では data-slot 付きの表のマスを locator で取り、click や expect に渡す。

locked_untillock lease / visibility timeout(ろっくどあんてぃる)サーバの中

係が仕事を取ったときの期限。この時刻までに done にならなければ、ほかの係が取り直せる。落ちた係の仕事が列に残り続けるのを防ぐ一方、送ったあとに落ちると二重実行の原因にもなる。

lockfilelockfile (package-lock.json)(ろっくふぁいる)守る作り方

実際に入れたパッケージの版と integrity を固定して書くファイル。npm では package-lock.json。package.json の範囲だけだと、入れた日で中身が変わりうる。

lock_timeoutlock_timeout(ろっくたいむあうと)設計と概念

ロックを待つ時間の上限。待ちきれなければその文があきらめる。長い読み取りの後ろに並ぶ表の変更を、書き込み側ではなく変更側であきらめるときに使う。

M

max-agemax-age(まっくすえいじ)通信と API

Cache-Control の指示。指定した秒数までは、サーバに確かめずにキャッシュした応答を使ってよい。すぐ変わるデータに長い秒数を付けると古いまま見える。

max_connectionsmax_connections(まっくすコネクションズ)サーバの中

PostgreSQL が受け付ける接続数の上限。アプリのプロセス数とプールの大きさを掛けた見込みが、この上限を超えないよう設計する (一般論)。

merge-basemerge base(まーじべーす)開発の進め方

ふたつのコミットの共通の祖先。分かれた所。3 方向のマージでは、この祖先と両先端の写しを比べる。

ModelModel(もでる)運用と設計

画面の型分けで、データとルールを持つ側の呼び名 (よく言われる分け方)。この実験の MVC では空き枠の配列と予約の処理を持ち、DOM は知らない。

関連: MVCViewAPI

multipart/form-datamultipart/form-data(まるちぱーとふぉーむでーた)サーバの中

フォームからファイルなどを送るときの Content-Type。本体をパートに分け、ファイル名や種類の名乗りを付ける。名乗りは信用せず、サーバで大きさと中身を確かめる。

MVCModel-View-Controller(えむぶいしー)運用と設計

画面を Model・View・Controller に分ける、よく言われる型。決まった仕様はない。この実験では、操作は Controller、データとルールは Model、描画は View。

MVPModel-View-Presenter(えむぶいぴー)運用と設計

Model・View・Presenter に分ける、よく言われる型。決まった仕様はない。この実験では View を受け身にし、Presenter が状態と表示の文を決める。

MVVMModel-View-ViewModel(えむぶイブイエム)運用と設計

Model・View・ViewModel に分ける、よく言われる型。決まった仕様はない。この実験では ViewModel が画面に出す状態と操作を持ち、結びつけで描き直す。

N

N+1N+1 query problem(えぬたすいち)通信と API

親の一覧を 1 回取ったあと、子を親の件数だけ追加で問い合わせること。GraphQL のリゾルバを素直に書くと起きやすく、要求が 1 回でもデータベースの回数は減らない。

関連: GraphQL

needsjobs.<job_id>.needs(ニーズ)開発の進め方

job の欄。先に成功してほしい他の job の名前を書く。書かれた job がすべて成功してから、その job が始まる。

関連: jobworkflow

network firstnetwork-first strategy(ねっとわーくふぁーすと)ブラウザの中

まずネットへ取りに行き、つながらなければ Cache Storage の前回の答えを返す、というよく言われる取り方。すぐ古くなる API 向き。仕様で固定された名前ではない。

nextnext (middleware)(ねくすと)サーバの中

ミドルウェアから次の層へ処理を渡す関数。next の前が行き (外側→内側)、後が帰り (内側→外側)。呼ばなければ後ろの層は動かない。

NFCNormalization Form C(えぬえふしー)設計と概念

Unicode 正規化の形のひとつ (Normalization Form C)。分解できる文字を合成形にそろえる。「か+濁点」と「が」を同じ文字列にしたいときに使う (UAX #15)。表設計の正規化とは別物。

NFKCNormalization Form KC(えぬえふけいしー)設計と概念

互換性も含めてそろえる Unicode 正規化 (Normalization Form KC)。全角英数や半角カナを、検索しやすい形へ寄せることがある。

nginxnginx(エンジンエックス)サーバの中

広く使われる Web サーバ / リバースプロキシ。静的ファイルの返却や、後ろのアプリへの中継 (proxy_pass) を担う。この記録では lab/nginx_srv.conf の設定で動かした。

nginx -s reloadnginx -s reload(エンジンエックスりろーど)開発の進め方

nginx に設定の読み直しを指示する。新しいワーカーを起動し、古いワーカーは処理中の接続を終えてから終わる。向き先 (upstream) の入れ替えや戻しに使う (この記録)。

no-cacheno-cache(のーきゃっしゅ)通信と API

Cache-Control の指示。「置くな」ではなく、使う前に毎回オリジンへ確かめること。ETag と組み合わせると、変わっていなければ 304 で本文を省略できる。

no-storeno-store(のーすとあ)通信と API

Cache-Control の指示。応答をキャッシュに残さない。取ったらすぐ捨てる。

node:testnode:test (Test runner)(のーどてすと)開発の進め方

Node.js 組み込みのテストランナー。test で用例を書き、node --test で走らせる。この実験の単体・結合はこれと node:assert を使う。

nonceOIDC nonce claim(のんす)守る作り方

ログイン開始時にアプリが作り、ID トークンの中にも入れて返すでたらめな文字列。受け取った ID トークンが、このログインのために出たものかを照合する。

nosniffX-Content-Type-Options: nosniff(のすにふ)サーバの中

応答ヘッダ X-Content-Type-Options の値。ブラウザに、宣言した Content-Type 以外へ中身から種類を推測させない。アップロードしたファイルを配るときに付け、誤った実行や表示を抑える。

npm auditnpm audit(えぬぴーえむおーでぃっと)守る作り方

入れた依存を、npm が持つ既知の脆弱性の情報と照らすコマンド。0 件は「今わかっているものに当てはまらない」であり、安全の証明ではない。定期的に流す。

npm cinpm ci(えぬぴーえむしーあい)守る作り方

lockfile どおりに依存を入れ直すコマンド。lockfile が無いと失敗し、通常は lockfile を書き換えない。CI で手元と同じ中身を再現するために使うことが多い。

O

offsetoffset(おふせっと)通信と API

一覧で何件飛ばすかを示す指定。途中で行が増えると、同じ件が隣のページに重なって出ることがある。

OIDCOpenID Connect(おーあいでぃーしー)守る作り方

OpenID Connect。OAuth 2.0 の上に、だれがログインしたかを ID トークンで伝えるしくみ。「〇〇でログイン」のように、別のサービス (IdP) にログインしてもらうときに使う。

ON CONFLICTINSERT … ON CONFLICT(おんこんふりくと)設計と概念

PostgreSQL の INSERT で、一意制約に当たったときの扱いを書く句。この記録では DO NOTHING で「先に鍵を書けた要求」だけを通す。

on-failure (Compose)restart: on-failure(おんふぇいりゃーこんぽーず)開発の進め方

restart 方針の一つ。プロセスが失敗終了したとき、コンテナを起動し直す。受付完了を待つ代わりにはならない。何度も落ちる様子は回数で見える。

OPTIONSOPTIONS(おぷしょんず)通信と API

その資源で使えるメソッドを問い合わせるメソッド。応答の Allow に一覧が付く。安全かつ冪等。

ORMObject-Relational Mapping(おーあーるえむ)サーバの中

オブジェクトの形でデータベースを扱う仕組み。関連を辿って読める一方、関連を 1 件ずつ読むと問い合わせが増えることがある (一般論)。

P

p5050th percentile / median(ぴーごじゅう)サーバの中

測った値を短い順に並べたとき、半分の値がこれ以下になる点 (中央値)。遅い側の一部はこれより長い。

p9595th percentile(ぴーきゅうじゅうご)サーバの中

測った値を短い順に並べたとき、95% の値がこれ以下になる点。いちばん遅い数%を除いた「だいたいの上限」の目安。

packpack file(ぱっく)開発の進め方

バラのオブジェクトをまとめた格納形式。git gc などで作られ、objects/pack 以下に .pack と索引が置かれる。

patch-idpatch id(ぱっちあいでぃー)開発の進め方

パッチ (変更の中身) から計算した識別子。コミットのハッシュが変わっても、同じ変更なら同じ印になりうる。

pg_trgmpg_trgm(ぴーじーとりぐらむ)設計と概念

PostgreSQL の拡張。文字列を 3 文字ずつの組 (トライグラム) に分け、似ている度合いや部分一致の索引に使う。

PKCEProof Key for Code Exchange(ぴーけーしーいー)守る作り方

Proof Key for Code Exchange。合言葉のハッシュ (code_challenge) を先に渡し、引き換えのときに合言葉そのもの (code_verifier) を見せて、合言葉を持つアプリだけがトークンを取れるようにする。

PlaywrightPlaywright(ぷれいらいと)開発の進め方

ブラウザを自動で操作して確かめる枠組みのひとつ。この記録の E2E は @playwright/test で枠をクリックし、文字を expect する。

POOL_MAXpool max (application)(ぷーるまっくす)サーバの中

アプリ側の接続プールが同時に持てる接続の上限。小さいと空き待ちの列ができ、大きすぎると DB 側の上限やメモリを圧迫しうる。

pre-commitpre-commit hook(ぷりこみっと)守る作り方

コミットが作られる直前に動く git のフック。秘密の形の文字列を含む変更を止める検査を置ける。現場では専用の道具 (gitleaks など) を使うことも多い。

PresenterPresenter(ぷれぜんたー)運用と設計

MVP で、状態と表示の文を決め、View に出させる側の呼び名 (よく言われる分け方)。DOM を知らなければ、偽の View を渡してブラウザなしで確かめやすい。

privateprivate(ぷらいべーと)通信と API

Cache-Control の指示。ブラウザなど利用者ごとのキャッシュには置けても、CDN のような共有キャッシュには置いてはいけない。ログイン中の人の名前などに使う。

problem+jsonProblem Details for HTTP APIs(ぷろぶれむぷらすじぇいそん)通信と API

HTTP API のエラーを、type・title・status・detail などの決まった JSON で返す形式 (RFC 9457)。Content-Type は application/problem+json。

PromisePromise(ぷろみす)ブラウザの中

後で答えが届くという約束を表すもの。then や await で、届いた後の続きを書く。

Promise.allPromise.all(ぷろみすおーる)ブラウザの中

複数の Promise を同時に待ち、全部がそろったら続ける。1 つでも失敗すると全体が失敗する。全部の結果を見るなら Promise.allSettled。

関連: Promise

Protocol BuffersProtocol Buffers(ぷろとこるばふぁーず)通信と API

構造化したデータを、あらかじめ決めた欄番号つきの形で 2 進数にまとめる仕組み。同じ中身の JSON より小さくなることが多い。gRPC の本文によく使う。

関連: gRPC.proto

publicpublic(ぱぶりっく)通信と API

Cache-Control の指示。共有キャッシュ (CDN) にも置いてよい、と明示する。誰が見てもよい公開の資料向き。

PWAProgressive Web App(ぴーだぶりゅーえー)ブラウザの中

Progressive Web App の略。Web のページのまま、インストールやオフラインなど、アプリに近い扱いができる作りの総称。決まった 1 つの仕様名ではなく、よく言われる呼び方。

Q

queries (ログ)query count in request logs(くえりーずろぐ)練習と総まとめ

1 回の要求でアプリが出した SQL の件数を、応答ログや計測に載せた値。回数が多いときは N+1 など形を疑う手がかりになる。

R

ReactReact(りあくと)運用と設計

状態から画面を宣言的に書くためのライブラリ。状態を変えると、前回との違いを計算して変わった DOM だけ直す、という考え方で使うことが多い。

READ COMMITTEDREAD COMMITTED(りーどこみってぃど)サーバの中

PostgreSQL の既定の分離レベル。各文の開始時点のスナップショットを見る。同時の二人がどちらも「まだ無い」を見て INSERT すると、二重登録になりうる。

readiness probereadiness probe(れでぃねすぷろーぶ)開発の進め方

コンテナやプロセスが「要求を受けてよいか」を外から確かめる仕組み。Kubernetes では準備ができる前の Pod に Traffic を流さない。この記録の API も、準備中は /ready と本体が 503 を返す。

rebasegit rebase(りべーす)開発の進め方

一連のコミットを、別の土台の先へ付け直す操作。付け直したコミットは別ハッシュになる。歴史を一直線にしやすい。

redirect_uriredirect_uri(りだいれくとゆーあーるあい)守る作り方

ログイン後にブラウザが戻る先の URL。IdP に登録した値と一字一句一致させる。登録外を指定すると、この記録では IdP が 400 で断り、ログイン画面を出さない。

reflogreflog(りふろぐ)開発の進め方

HEAD やブランチ参照がいつどこへ動いたかの記録。amend でポインタが新し側へ移っても、古いコミットのハッシュをここから辿れることがある。

request_idrequest id(りくえすとあいでぃー)サーバの中

1 回の要求を追うための短い識別子。例外の詳細はログにだけ書き、応答にはこの id を載せて突き合わせる。この記録の 500 応答の JSON に含まれる。

res.okResponse.ok(れすおーけー)ブラウザの中

fetch の応答が成功 (状態コードが 200〜299) かどうか。HTTP のエラーは例外にならないので、これを確かめる。

関連: fetch

RESTRepresentational State Transfer(れすと)通信と API

資源を URL で指し、操作を HTTP のメソッドで表す API の作り方の一つ。予約アプリでは部屋・予約を名詞のパスにする。

関連: API資源

retries (Playwright)test retries(りとらいずぷれいらいと)開発の進め方

落ちたテストを決められた回数までやり直す設定。やり直しの途中で通ると flaky と数えられ、通った本数だけ見ると見逃しやすい。

rpsrequests per second(あーるぴーえす)サーバの中

1 秒あたりにさばけた要求の回数 (requests per second)。同じ仕事なら、道やプロセスが増えると上がりやすい。

runs-onruns-on(らんずおん)開発の進め方

job をどの種類のランナー (実行環境) で動かすかを書く欄。例: ubuntu-latest。act では手元のイメージへ置き換えて動かすことがある。

関連: jobact

S

s-maxages-maxage(えすまっくすえいじ)通信と API

Cache-Control の指示。共有キャッシュ向けの保持秒数。共有キャッシュでは max-age よりこちらが優先される。

SameSiteSameSite cookie attribute(せいむさいと)守る作り方

Cookie の属性。別のサイトから来た要求に Cookie を付けるかを決める。Lax はトップレベルの GET には付け、クロスサイトの POST などには付けない。Strict は別サイトからの遷移にも付けない。

script-srcscript-src (CSP directive)(すくりぷとそーす)守る作り方

CSP の指示。スクリプトの読み込み元を制限する。'self' なら同じオリジンのファイルだけを許す、など。

関連: CSPXSS

scryptscrypt(えすくりぷと)守る作り方

パスワードを保存するための、わざと遅い鍵導出関数の一つ。塩とコスト引数を付けて保存する。速いハッシュだけだと、漏れた表を総当たりしやすい。

Secure 属性Secure cookie attribute(せきゅああぞくせい)守る作り方

Cookie の属性。付けると HTTPS の要求にだけ Cookie が付く。暗号化なしの http:// では送られない。

関連: CookieTLS

SELECT FOR UPDATESELECT … FOR UPDATE(せれくとふぉーあっぷでーと)サーバの中

選んだ行を更新用にロックする SELECT。同じ行を押さえているあいだ、他のトランザクションは待たされる。部屋の行を押さえてから予約を確かめる、などに使う。

Seq ScanSequential Scan(せっく・すきゃん)設計と概念

表を先頭から順に読む実行計画の節。索引が使えない・使わない方が安いと判断されたときに出る。条件に合わない行は読んでから捨てる。

SERIALIZABLESERIALIZABLE(しりあらいざぶる)サーバの中

分離レベルのうち、同時実行の結果が直列に実行したときと同じになることを目指す段階。競合を検出すると直列化失敗 (SQLSTATE 40001) になり、やり直しが要る。

Server-TimingServer-Timing header(さーばーたいみんぐ)入門

サーバの中で使った時間 (DB・アプリなど) を、応答のヘッダでブラウザに伝えるしくみ。開発者ツールや Resource Timing で読める。

関連: TTFB

Service WorkerService Worker(さーびすわーかー)ブラウザの中

ページとネットワークのあいだに入り、要求を受け取るスクリプト。ページとは別のスレッドで動き、ためた応答を返したり、オフライン時の振る舞いを決めたりできる。

service_healthyservice_healthy(さーびすへるしー)開発の進め方

depends_on の条件の一つ。相手サービスの healthcheck が成功してから、こちらを起動する。順番だけでは足りないときに使う。

sessionStoragesessionStorage(せっしょんすとれーじ)ブラウザの中

文字の組をタブごとに残す置き場所。別のタブからは見えず、タブを閉じると消える。

関連: localStorage

show_trgmshow_trgm(しょーとりぐらむ)設計と概念

pg_trgm の関数。文字列から作られる 3 文字の組を一覧する。索引が何を見ているかの確かめに使う。

SIGTERMSIGTERM(しぐたーむ)開発の進め方

プロセスへ「終わってほしい」と伝える合図 (シグナル)。受けた側が新しい要求を断り、処理中を終えてから終了すると、入れ替え中の失敗を減らせる (この記録)。

similaritysimilarity (pg_trgm)(しみらりてぃ)設計と概念

pg_trgm の関数。2 つの文字列が 3 文字の組でどれだけ重なるかを 0 から 1 で表す。% 演算子は基準以上かを見る。

simple 辞書simple text search configuration(しんぷるじしょ)設計と概念

Postgres に入っている全文検索の設定の一つ。空白と記号で単語に分ける。日本語向けの形態素辞書は既定では入っていないことが多い。

singleflightsingleflight / request coalescing(しんぐるふらいと)設計と概念

同じ鍵を取りに行く途中なら、後から来た要求はその結果を待ち、データ源へ行くのを 1 回にまとめる手法。一斉取りを抑えるよく言われるやり方の一つ。決まった仕様名ではない。

spanspan(すぱん)運用と設計

トレースの中の 1 区間。名前・始まり・長さ・属性を持ち、親の下に子が並ぶ。この記録では「通知を送る」や「題名で探す」などが span になる。

squashsquash merge(すかっしゅ)開発の進め方

複数のコミットの変更を 1 つのコミットにまとめて取り込む合わせ方。履歴は短くなるが、途中の細かいコミットは残らない。

SSEServer-Sent Events(えすえすいー)通信と API

Server-Sent Events。HTTP の応答を開いたまま、サーバからブラウザへ出来事を一方向に書き足すしくみ。通知の配信に向く。

SSGStatic Site Generation(えすえすじー)ブラウザの中

前もって 1 回だけ HTML を作っておき、ただのファイルとして配る作り方。速いが、データが変わったら作り直しが要る。

関連: SSRCSR

SSOSingle Sign-On(えすえすおー)守る作り方

Single Sign-On。一度 IdP にログインすると、アプリ側だけログアウトしても IdP のログインが残り、次はパスワードなしで戻れることがある。アプリのログアウトと IdP のログアウトは別。

SSRServer-Side Rendering(えすえすあーる)ブラウザの中

要求のたびに、サーバで HTML を作って返す作り方。届いた HTML にもう中身が入っている。予約アプリのトップがこれ。

関連: CSRSSG

stateOAuth state parameter(すてーと)守る作り方

ログイン開始時にアプリが作り、戻り先の問い合わせに付けて返すでたらめな文字列。戻ってきた要求が、このブラウザで始めたログインの分かを照合する。

stepstep (GitHub Actions)(すてっぷ)開発の進め方

1 つの job の中の 1 段。uses で用意された動作を呼ぶか、run でコマンドを書く。

sticky セッションsticky session / session affinity(すてぃっきーせっしょん)運用と設計

同じ利用者の要求を、いつも同じ台へ送ること。nginx では ip_hash などで実現する。動くが、その台の故障や入れ替えには弱い。

T

TemporalTemporal (ECMAScript)(てんぽらる)設計と概念

JavaScript の新しい日付・時刻 API。日付だけ・時刻・タイムゾーンなどを型ではっきり分けるねらいがある (一般論)。実行環境によってはまだ無い。

timestamp (場所なし)timestamp without time zone(たいむすたんぷばしょなし)設計と概念

PostgreSQL の型。日付と時刻の文字を持つが、タイムゾーンの情報は持たない。文書上の正式名は timestamp without time zone。接続の場所を変えても同じ文字のまま読める。

timestamptztimestamp with time zone(たいむすたんぷてぃーぜっと)設計と概念

PostgreSQL の型。時の一点を保持し、接続のタイムゾーンに合わせて表示する。文書上の正式名は timestamp with time zone。

timingSafeEqualcrypto.timingSafeEqual(たいみんぐせーふいこーる)守る作り方

Node.js の crypto が提供する、秘密の比較。長さが同じとき、短絡せずにバイト列を比べる。合言葉の照合に使う。

TLSTransport Layer Security(てぃーえるえす)入門

通信を暗号化し、相手のサーバが本物かを証明書で確かめるしくみ。TLS 1.3 の完全なハンドシェイクは 1 往復。

関連: 往復HTTP/2

to_tsvectorto_tsvector(とぅーてぃーえすべくたー)設計と概念

文字列を全文検索用のベクトル (単語と位置) に変換する関数。どの辞書で切るかで結果が変わる。

Trace viewerTrace viewer (Playwright)(とれーすびゅあー)開発の進め方

Playwright が残した操作の記録を、画面とタイムラインで見返す道具。いつ何をクリックし、どの確かめが外れたかを追うときに使う。

traceparenttraceparent(とれーすぺあれんと)運用と設計

W3C Trace Context が決める HTTP ヘッダ。呼び出し元のトレースの番号を、次のサービスへ渡す。受ける側が引き継ぐと、別プロセスの span も同じトレースに並ぶ。

trace_idtrace id(とれーすあいでぃー)運用と設計

一つのトレースを指す番号。ログの行にも載せ、遅い要求のログとトレースの内訳を突き合わせる。request_id と同じく「追うための印」だが、トレース全体の親子をつなぐ側の名前。

transferSizetransferSize(とらんすふぁーさいず)通信と API

Resource Timing が測る、ネットワークで運んだバイト数。0 ならブラウザのキャッシュから出したとみなせる (この記録の実験)。

transformCSS transform(とらんすふぉーむ)ブラウザの中

要素を移動・拡大・回転させる CSS のプロパティ。レイアウトと描画をやり直さずに動かせることが多いので、アニメーションに向く。

treetree object(つりー)開発の進め方

ディレクトリの写し。モード・種類・ハッシュ・名前の並びで、blob や別の tree を指す。ファイル名はこの側が持つ。

trunk-basedtrunk-based development(とらんくべーすど)開発の進め方

共有の主系列 (trunk) へ短い寿命のブランチから頻繁に合わせる、よく言われる考え方。長く分岐したまま放置しないことを重視する。これも仕様ではなく運用の型。

TTFBTime to First Byte(てぃーてぃーえふびー)入門

要求を送ってから、応答の最初のバイトが届くまでの時間。サーバの処理と、要求と応答の往復が含まれる。

U

UnicodeUnicode(ゆにこーど)設計と概念

世界の文字に番号を付けた規格。アプリでは、その番号の並びを UTF-8 や UTF-16 で運ぶ。版の番号は処理系ごとに違う。この記録の Node では process.versions.unicode に出る。

unified diffunified diff(ゆにふぁいどでぃふ)開発の進め方

古い側と新しい側を並べて示す差分形式。@@ の行に範囲の行数が付き、+ は足した行、− は消した行。

UNIQUE 制約UNIQUE constraint(ゆにーくせいやく)入門

表の中で、指定した列の組が重複しないという約束。予約アプリでは (room_id, date, slot)。破る INSERT は失敗し、アプリが 409 に変える。

UpgradeHTTP Upgrade(あっぷぐれーど)通信と API

HTTP の接続を別のプロトコルへ切り替えるためのヘッダと手続き。WebSocket では Upgrade: websocket と Connection: Upgrade を使う。途中のプロキシが落とすと失敗する。

upstreamupstream(あっぷすとりーむ)サーバの中

nginx が後ろに中継する先のサーバ群の名前。proxy_pass で参照する。この記録では app:8090 を 1 台登録し、keepalive で接続を使い回す。

URL の状態URL state / state in the query string(ゆーあーるえるのじょうたい)設計と概念

今見ている部屋など、画面の状態を URL の問い合わせに載せたもの。再読み込みで残り、人に送ると同じ所から始められる。

URLSearchParamsURLSearchParams(ゆーあーるえるさーちぱらむす)設計と概念

URL の問い合わせ文字列を読み書きするブラウザの API。部屋の番号などを取り出したり、書き戻したりする。

USERUSER (Dockerfile)(ゆーざー)開発の進め方

Dockerfile の指示。以降の命令や、コンテナ起動時の利用者を切り替える。アプリを root (uid 0) のまま動かさない、というよく言われる考え方に使う。

UTCCoordinated Universal Time(ゆーてぃーしー)設計と概念

世界で共通の「いつ」を表す基準の時刻。起きた時刻を一点で持つときの土台によく使う。場所の時計の文字そのものではない。

UTF-16 の単位UTF-16 code unit(ゆーてぃーえふじゅうろくのたんい)設計と概念

JavaScript の String.length が数える単位。BMP の外の文字は 2 単位 (サロゲートペア) になる。

V

Vary: OriginVary: Origin(ばりーおりじん)通信と API

応答が Origin 要求ヘッダによって変わることを、キャッシュに伝える Vary の値。CORS で相手ごとに Allow-Origin を返すとき、誤って別オリジン向けの応答を使い回さないために付ける。

ViewView(びゅー)運用と設計

画面の型分けで、表示を担当する側の呼び名 (よく言われる分け方)。MVC では描くだけ、MVP では言われたとおり出す受け身の画面、とされることが多い。

関連: MVCMVPDOM

ViewModelViewModel(びゅーもでる)運用と設計

MVVM で、画面に出す状態と、画面から呼ぶ操作を持つ側の呼び名 (よく言われる分け方)。変わったら知らせ、結びつけ側が描き直す。

visibilitychangevisibilitychange event(びじびりてぃちぇんじ)設計と概念

ページの見え方が変わったときに起きる Document の出来事。隠れていたページがまた見えるとき、写しを読み直す合図に使える。

VueVue(びゅー)運用と設計

テンプレートに状態を書いて画面を組み立てるフレームワーク。状態を変えると、その状態を使っている所を描き直す、という考え方で使うことが多い。

W

WAI-ARIA の最初の規則First Rule of ARIA Use(わいありあのさいしょのきそく)設計と概念

まず HTML の意味のある要素を使い、足りないときだけ ARIA を足す、という規則。決まった仕様の文書に書かれている。role を付けるより button などを選ぶ方が先、という趣旨。

waitingwaiting (ServiceWorker)(うえいてぃんぐ)ブラウザの中

新しい Service Worker がインストール済みだが、まだ古い版がページを受け持っているあいだの状態。開いているタブをすべて閉じるなどすると、新しい版へ切り替わることが多い。

WCAGWeb Content Accessibility Guidelines(だぶりゅーしいえーじー)設計と概念

Web Content Accessibility Guidelines。Web のアクセシビリティの指針。この記録の自動検査は、主に WCAG 2.x の A・AA と best-practice の規則を使う。

Web VitalsWeb Vitals(うぇぶばいたるず)ブラウザの中

ページの体験を測る物差しのまとまり。中心の 3 つ (LCP・INP・CLS) は Core Web Vitals と呼ばれる。

関連: LCPINPCLS

Web WorkerWeb Worker(うぇぶわーかー)ブラウザの中

メインスレッドとは別のスレッドで JavaScript を動かすしくみ。重い計算を任せられるが、DOM には触れず、結果はメッセージで返す。

Web アプリマニフェストWeb application manifest(うぇぶあぷりまにふぇすと)ブラウザの中

名前・アイコン・開始 URL・表示の仕方 (display) などを書いた JSON。ブラウザが「インストールできるアプリ」として扱う材料になる。

Web サーバweb server(うぇぶさーばー)サーバの中

ブラウザからの HTTP 要求を受け、ファイルや応答を返すサーバ。静的な CSS/画像の配信や、アプリへの中継の入口になる。この一連の動画では主に nginx。

web-first の確かめweb-first assertion(うぇぶふぁーすとのたしかめ)開発の進め方

expect(locator).toHaveText のように、条件が満たされるまで何度も見直す確かめ。既定では最大およそ 5 秒。一度だけ読む expect(値) とは違う。

webServer (Playwright)webServer (Playwright config)(うぇぶさーばーぷれいらいと)開発の進め方

Playwright の設定で、テストの前にローカルのサーバを起動する仕組み。url に届くまで待ち、終わったら止める。この実験では予約アプリを起動する。

WebSocketWebSocket(うぇぶそけっと)通信と API

HTTP から切り替えたあと、同じ接続で双方向にメッセージを送り合うプロトコル。チャットや共同編集のように、画面からもサーバへすぐ送りたいときに使う。

weight (upstream)weight (ngx_http_upstream_module)(うえいとあっぷすとりーむ)開発の進め方

nginx の upstream で、各 server に付ける相対的な重み。大きいほど多くの要求が向かう。カナリアでは新しい版を小さくして一部だけ流す (この記録では 1 割)。

will-changewill-change(うぃるちぇんじ)ブラウザの中

これから変わるプロパティを前もってブラウザに伝える CSS。要素を別の層にしておけるが、付けすぎるとメモリを使う。

workers (Playwright)test workers / parallelism(わーかーずぷれいらいと)開発の進め方

テストを同時に何本流すかの設定。この記録では同じ 40 本を 1 と 4 で比べ、4 のほうが壁時計の中央値が短かった。

worker_processesworker_processes(わーかーぷろせすず)サーバの中

nginx の設定。ワーカープロセスの数。auto にすると、おおむね CPU の数だけ立つ。この記録では Docker の VM の CPU 数と同じになった。

関連: nginxcluster

worker_threadsworker_threads(わーかーすれっず)サーバの中

Node.js で、同じプロセス内の別スレッドに JavaScript を渡すしくみ。重い計算をイベントループの外へ移せる。DOM は無いサーバ側の話。

workflowworkflow (GitHub Actions)(わーくふろー)開発の進め方

GitHub Actions などで、いつ・何を走らせるかを書いた説明の文書。出来事 (例: push) と、jobs・steps の並びを定義する。

関連: CIjobneeds

X

XSScross-site scripting(くろすさいとすくりぷてぃんぐ)ブラウザの中

ページに悪い JavaScript を入れられてしまう脆弱性。入れられた JS は、そのページの localStorage や、HttpOnly でない Cookie を読める。

関連: HttpOnly

Z

ZWJZero Width Joiner(ぜっとだぶりゅーじぇい)設計と概念

Zero Width Joiner (U+200D)。絵文字どうしをつないで、家族など 1 つの絵にする列に使う。

あ

アウトボックスtransactional outbox(あうとぼっくす)運用と設計

同じトランザクションで「送る予定」を表に書き、別の流れが後で外へ送る置き方。この記録では通知の予定を outbox に書き、送れなければ次の回にまた試す。よく言われる形であり、決まった一つの仕様名ではない。

空き待ちconnection pool wait(あきまち)サーバの中

接続プールの上限に達しているとき、接続が返されるまで要求が待つこと。上限が小さいほど待ちの列が長くなりやすい。

アクセシビリティaccessibility(あくせしびりてぃ)設計と概念

目・手・耳などの使い方が人によって違う前提で、同じ情報や操作へ届けること。キーボードだけ・読み上げソフト・拡大・色の見分けにくさなどを含む。

アクセストークンaccess token(あくせすとーくん)守る作り方

API などへの要求に付ける、短い寿命のしるし。この実験では署名付きの JWT。サーバは署名を確かめるだけで、個々の値を覚えなくてよいことが多い。

アダプタadapter(あだぷた)設計と概念

差し込み口の約束を、実際のデータベースや時計で満たす外側の部品 (よく言われる呼び名)。この実験では Postgres 版・メモリ版の保存先と、システム時計・決めた日付の時計。

アプリサーバapplication server(あぷりさーばー)サーバの中

予約の作成や認証など、アプリ固有の処理を行うプロセス。この記録では Node.js の server.ts (1 プロセス、または cluster で複数)。

安全なメソッドsafe method(あんぜんなめそっど)通信と API

サーバの状態を変えないと定められた HTTP のメソッド。RFC 9110 では GET・HEAD・OPTIONS・TRACE。予約アプリの読み取りはこれ。

依存の向きdependency direction / dependency rule(いぞんのむき)設計と概念

どの部品がどの部品を知っているか (import の向き)。よく言われる考え方では、外側が内側を指し、芯のルールは外の世界を知らない。決まった仕様はない。この実験では domain が何も import しない。

一意制約違反unique_violation(いちいせいやくいはん)サーバの中

UNIQUE 制約に反する INSERT / UPDATE が拒否されたこと。PostgreSQL では SQLSTATE 23505。予約アプリではこれを検知して 409 に変える。

一覧の絞り込みquery-level filtering (list)(いちらんのしぼりこみ)守る作り方

一覧 API で、問い合わせの WHERE などにより、その人に見せてよい行だけを返すこと。画面で行を隠すだけでは足りない。この実験では WHERE owner = ? (受付係は全部)。

一斉取りcache stampede / thundering herd(いっせいとり)設計と概念

キャッシュの期限が切れた直後など、同じ鍵へ多くの要求が同時に来て、データ源へ何度も取りに行くこと。stampede や thundering herd とも呼ばれる。よく言われる注意点。

イベントループevent loop(いべんとるーぷ)ブラウザの中

タスクを 1 つ取って実行し、終わったらマイクロタスクを全部片付け、また次のタスクを取る、を繰り返すしくみ。

意味のある要素semantic HTML elements(いみのあるようそ)設計と概念

button・label・h1・main など、名前と役割が仕様で決まっている HTML の要素。見た目だけの div に onclick を足すより、これらを先に使う。

イメージの層image layer(いめーじのそう)開発の進め方

イメージを積み重ねた 1 段。Dockerfile の指示に対応することが多い。docker image history で段ごとの作り方と大きさが見える。前の層に書いたものは、後で消しても残ることがある。

色の濃さの比contrast ratio(いろのこさのひ)設計と概念

前景と背景の明るさの比 (コントラスト比)。薄い字は読みにくい。この記録では注意書きが 2.16 で、目安 4.5:1 を下回った (axe の color-contrast)。

インストール可能installable (PWA)(いんすとーるかのう)ブラウザの中

ブラウザがホーム画面などへ追加してよい、と判断できる状態。マニフェストやアイコン、Service Worker など、製品ごとの条件を満たす必要がある (MDN Making PWAs installable)。

インストール時のスクリプトinstall lifecycle scripts(いんすとーるじのすくりぷと)守る作り方

パッケージが install / postinstall などで、入れたときに動かすコマンド。止めるときは --ignore-scripts。止めるとビルドが要るパッケージは別途用意が要る。

関連: lockfile

インデックスindex(いんでっくす)設計と概念

表とは別に持つ、列の値から行の場所への近道。条件に合う行だけを探すときに、表を全部読まずに済むことがある。作る・直す・置く場所の分だけ書き込みと大きさが増える。

インフラinfrastructure(いんふら)入門

アプリを届ける土台。Web サーバ (nginx)、TLS の証明書、コンテナ、ネットワークなど。誰が・どこへ・どう安全に届けるかを担う。

インラインスクリプトinline script(いんらいんすくりぷと)守る作り方

HTML の中に直接書いた <script>…</script>。CSP の script-src が 'self' だけのとき、ブラウザは動かさないことが多い。

受け持ちの Service WorkerServiceWorkerContainer.controller(うけもちのさーびすわーかー)ブラウザの中

いまそのページの要求を受け持っている Service Worker (controller)。初回訪問ではまだ無く、再読み込みのあとから付くことが多い。

打ち消しの処理compensating transaction / compensation(うちけしのしょり)運用と設計

先に進めた変更を、後続が失敗したときに戻す処理。この記録では予約を書けなかったとき、減らした残り回数を利用者サービスへ返す。サーガの一部としてよく説明される。決まった仕様のコマンド名ではない。

エスケープHTML escaping(えすけーぷ)通信と API

HTML に埋め込む文字のうち & < > " ' などを、文字参照に置き換えて、タグや属性として解釈されないようにすること。入力の確かめとは別の仕事。

往復round trip time (RTT)(おうふく)入門

データを送ってから、その返事が戻るまでの 1 回のやり取り (RTT)。接続を作る・要求を送るたびに往復がいるので、遠いサーバほど回数が効く。

送り直しclient resend of the same request(おくりなおし)設計と概念

返事が届かないときなど、利用者が同じ注文をもう一度送ること。サーバでは処理が終わっているかもしれず、鍵が無いと二重に作られることがある。

帯の段layer band (learning map)(おびのだん)練習と総まとめ

ブラウザ・通信・サーバ・守り・届け方・運用のように、予約の旅を横切る大きなまとまり。決まった規格の名前ではなく、このサイトの見取りのための分け方。

オブジェクトストレージobject storage(おぶじぇくとすとれーじ)サーバの中

ファイル本体をアプリのディスク以外に置く保管の形。アプリは識別子やメタデータだけ持つことが多い。アップロードの本体を分け、配信を別ドメインにすることもできる (一般論)。

オブジェクトデータベースobject database(おぶじぇくとでーたびーす)開発の進め方

.git/objects に blob・tree・commit などを置く Git の置き場。はじめはバラのファイル、後から pack にまとまることがある。

オリジンorigin(おりじん)ブラウザの中

通信の方式・ホスト名・ポート番号の組。https://reserve.example.com のように書き、保存や JavaScript の許可の範囲を決める単位になる。

関連: localStorage

オーバーフェッチover-fetching(おーばーふぇっち)通信と API

画面が使わない項目まで応答に付いてくること。資源ごとの REST では固定の JSON になりやすく、GraphQL では問い合わせに書いた項目だけを頼める。

関連: GraphQLREST

か

開発者ツールbrowser developer tools(かいはつしゃつーる)入門

ブラウザに付属する、ページを開いたときに起きた記録を見る道具。多くの環境では F12 で開き、要素・コンソール・ネットワーク・性能・アプリケーションなどのタブがある。

変えてよい項目allowlist of editable fields(かえてよいこうもく)守る作り方

PATCH で受け取る欄をあらかじめ列挙したもの。この実験では date と room (EDITABLE)。owner や id は本文に入っていても使わない。

可観測性observability(かかんそくせい)運用と設計

外から見える返事だけでなく、中で何が起きたかを記録からあとで追えるようにしておくこと。ログ・メトリクス・トレースを組み合わせて使う、とよく説明される。

鍵の差し替えsecret rotation(かぎのさしかえ)守る作り方

漏れた、または古くなった鍵やパスワードを新しいものに替えること (ローテーション)。移行中は新旧を一時的に両方受け付け、そのあと旧を外す。ファイルから消すだけでは足りない。

関連: 秘密HMAC

鍵の表idempotency key store(かぎのひょう)設計と概念

冪等キーと、要求の中身・状態・前の返事を残す表。この記録では idem_keys。中身が違う要求は 422 で断る。

鍵の保持期限idempotency key retention / TTL(かぎのほじきげん)設計と概念

冪等キーをサーバがいつまで覚えるかの目安。よく言われる考え方として期限を付ける。万能の秒数は草案にも無く、製品ごとの文書を確かめる (一般論)。

カナリアリリースCanary Release(かなりありりーす)開発の進め方

新しい版へ、最初は一部の要求だけを流して様子を見るやり方。nginx の upstream では server の weight で割合を付けられる。不具合があればその版を外して戻す。よく言われる考え方。

環境変数environment variable(かんきょうへんすう)守る作り方

プロセスの外から渡す名前と値の組。アプリは process.env などから読む。秘密をソースに埋め込まず、起動時に渡す置き方の一つ。

関連: 秘密.env

関係ない道unrelated path also slow(かんけいないみち)練習と総まとめ

遅くなった機能とは別の画面や API まで遅くなっている状態。共通の資源 (接続プールなど) の詰まりや道連れを疑う手がかりになる。

監視の値monitoring sample / scrape(かんしのあたい)運用と設計

動いているアプリから定期的に読むメトリクスや状態。この実験では 1 秒ごとの p95 と接続待ちの数。警報の決まりの入力になる。

外部キーforeign key(がいぶきー)通信と API

別テーブルに実在する行だけを指せる、という DB の制約。確かめを外すと、無い room_id はここで止まり 500 になりうる。

外部のキャッシュ置き場shared / remote cache store(がいぶのきゃっしゅおきばしょ)設計と概念

アプリの外にある、複数の台が同じ答えを見られる置き場。本物では Redis などを使うことが多い。通信の時間と、置き場が止まったときを考える。

係job worker(がかり)サーバの中

仕事の列から 1 件ずつ取り出し、メール送信などの本体を実行する別プロセス。取ったら locked_until で期限付きの印を付け、終わったら done にする。

画面専用 APIbackend-for-frontend / aggregate endpoint(がめんせんようえーぴーあい)通信と API

特定の画面が要る形に合わせて、サーバが 1 回でまとめて返す API。資源ごとの REST を何回も呼ぶ代わりに使え、REST のまま要求回数を減らせる。

関連: RESTAPI

画面だけの状態ephemeral UI state(がめんだけのじょうたい)設計と概念

詳しくパネルの開閉のように、再読み込みで消えてよい一時の状態。人に送る必要も、ほかの人と共有する必要もないとき、メモリに置くことが多い。

カーソルcursor(かーそる)通信と API

一覧の区切りに、前のページの最後の id など位置を使う方式。予約アプリでは before で「この id より前」を取る。

揮発の既定値volatile DEFAULT(きはつのきていち)設計と概念

ADD COLUMN で付ける、行ごとに違う既定値 (random() など)。表の全行を書き直すため、書き込みが長く止まりやすい (文書)。

決まった既定値constant / non-volatile DEFAULT(きまったきていち)設計と概念

ADD COLUMN で付ける、どの行でも同じ既定値。揮発でない既定なら、新しい版の PostgreSQL では表を全部書き直さずに済むことが多い (文書)。

決まった時間だけ待つfixed timeout wait (waitForTimeout)(きまったじかんだけまつ)開発の進め方

waitForTimeout などで固定のミリ秒だけ眠ってから読む書き方。この記録では 100ms 待ちを 20 回試し、遅れが待ちを超えると落ちた。

決めた日付の時計fixed clock (test double)(きめたひづけのとけい)設計と概念

テスト用に、今日の日付を固定して返す時計。この実験の fixedClock で、「過ぎた日」と「今日はまだ予約できる」の境目を本当の今日に左右されず試す。

キャッシュcache(きゃっしゅ)入門

一度取ったものを手元に残し、次は取りに行かずに使うしくみ。HTTP では Cache-Control などのヘッダで、残してよいか・いつまでかをサーバが決める。

関連: 往復

キャッシュの期限TTL (time to live)(きゃっしゅのきげん)設計と概念

ためた答えを、これ以上使わないと決めるまでの時間 (TTL)。消さずに期限だけに任せると、最大でそのあいだ古いまま見える。

キャッシュの無効化cache invalidation(きゃっしゅのむこうか)設計と概念

データが変わったとき、ためた答えを消すか使えない印を付けること。書いただけではキャッシュは勝手に直らない、という前提で設計する。

境界値boundary value(きょうかいち)通信と API

許す範囲の端の値。予約アプリの slot では 9 と 17 は通し、8 と 18 は 422 にする、のように端の内側と外側を両方確かめる。

共有の置き場所shared session store(きょうゆうのおきばしょ)守る作り方

複数のアプリプロセスが同じセッション表を見ること。メモリだけだと、ログインしたプロセス以外は状態を知らない。ファイルや DB、Redis などに置く。

許可した項目allowlist (of fields)(きょかしたこうもく)通信と API

受け取る JSON のキーをあらかじめ決めた集合に限ること。知らない項目 (例: paid) は「知らない項目です」と断る。

記録の1数字one measured number from the lab record(きろくのいちすうじ)練習と総まとめ

総まとめで各段に添える、実測の中央値や状態コードなど 1 つ。手で書いた値ではなく、各動画の記録 JSON から読む。

記録の手がかりevidence from lab / telemetry clues(きろくのてがかり)練習と総まとめ

原因を当てるために画面に出す、実測の断片。LCP・ログの queries・EXPLAIN の節・トレースの span など。推測だけで直さず、記録の文字と数字に戻る。

空白を無視した差分ignore whitespace in diff(くうはくをむししたさぶん)開発の進め方

字下げなど空白だけの違いを数えない差分の見方 (git diff -w など)。整形と中身の変更が混ざったときに、中身の差だけを追いやすくする。

クライアントの写しclient-side copy of server data(くらいあんとのうつし)設計と概念

サーバが持つデータの、ブラウザ側のコピー。開いたあとにサーバ側が変わると古くなりうる。正しい値はサーバが持つ。

詳しい動画へlink to the detailed episode(くわしいどうがへ)練習と総まとめ

総まとめの各場面から、同じ数字を詳しく扱った本編の動画へ進む案内。総まとめは地図で、深さは本編側にある。

警報alert(けいほう)運用と設計

監視の決まりに当たったときに出す合図。この実験では直近の p95 がしきい値を続けて超えたら発報する。中の都合だけでなく、利用者が困っている速さで鳴らす、とよく言われる。

警報の決まりalerting rule(けいほうのきまり)運用と設計

いつ警報を鳴らすか・いつ解消とするかの条件。この記録では「直近 10 秒の p95 > 0.5 秒が 3 回続いた」。しきい値の選び方に唯一の正解があるわけではない。

結合テストintegration test(けつごうてすと)開発の進め方

本物のサーバと DB など、複数の部品を通して確かめるテスト。この記録では別プロセスのサーバとメモリ上の SQLite へ HTTP で 6 本送った。

公開の場所の外store outside the web root(こうかいのばしょのそと)サーバの中

Web サーバがそのまま配るディレクトリ (この記録の /data/public) ではなく、別の置き場 ( /data/uploads ) に保存すること。配る経路をアプリが制御し、拡張子だけで実行・表示されないようにする。

更新異常update anomaly(こうしんいじょう)設計と概念

同じ事実が多くの行に書き写されているため、直すときに何千行も書き換えたり、一部だけ古いまま残ったりすること。正規化で起きにくくする、とよく言われる (一般論)。

国際化internationalization(こくさいか)設計と概念

言葉や数・日付の書き方を差し替えられるように、アプリの作りを分けておくこと。英語では i18n (internationalization の先頭と末尾、間の文字数) とも書く。

壊れた原因を探すbug cause investigation (practice)(こわれたげんいんをさがす)練習と総まとめ

症状 → 状態コードやログ・テストの失敗という手がかり → 原因、の練習の進め方。遅い原因を探すの対になる。決まった手順の規格ではない。

コンソールconsole(こんそーる)入門

開発者ツールのタブの 1 つ。ページが出したログやエラーを見る。ここに JavaScript を書いて、fetch などで API をその場で試すこともできる。

コンテナイメージcontainer image(こんてないめーじ)開発の進め方

アプリと、それを動かすのに要るものをまとめた写し。同じ写しを、手元・試験・本番など別の場所で起動できる。

合成compositing(ごうせい)ブラウザの中

塗った層を重ね合わせて画面に出す段。transform や opacity の変化は、この段だけで済みやすい。

コードポイントcode point(こーどぽいんと)設計と概念

Unicode が文字に付けた番号 (例: U+304C)。1 つの見た目の文字が、複数のコードポイントになることもある。

さ

再試行retry(さいしこう)サーバの中

一時的な失敗のあと、待ち時間を置いて同じ仕事をもう一度試すこと。この記録では待ちを 1 秒・2 秒と倍にする。何度も失敗したら failed にして諦める。

探してから書くcheck-then-insert (idempotency)(さがしてからかく)設計と概念

冪等キーを表で探し、無ければ処理してから鍵と返事を書く方式。探すと書くのあいだに隙間があり、同じ鍵が割り込むと二重になりうる (この記録の check)。

探す順番investigation order (performance)(さがすじゅんばん)練習と総まとめ

遅い原因を追うときの、よく言われる手順。層を絞る → その層の記録を見る → 直前の変更を疑う。規格で固定された手順ではない。

先に鍵を書くclaim-then-process (idempotency)(さきにかぎをかく)設計と概念

処理の前に冪等キーを一意制約の表へ書き込み、書けた要求だけが処理する方式。処理中の鍵には 409、終わった鍵には前の返事を返す (この記録の claim)。

削除異常deletion anomaly(さくじょいじょう)設計と概念

予約など子の行を消すと、部屋の定員のように親の事実までいっしょに消えてしまうこと。事実の置き場が子の行だけになっているときに起きやすい、とよく言われる (一般論)。

差し込み口port (hexagonal architecture)(さしこみぐち)設計と概念

本体の処理が外に求めるものの約束 (ポート)。中身はアダプタ側が用意する。この実験では保存先と時計の二つの約束。DB を直接呼ばず約束に置き換える。

差分更新DOM diff / reconciliation(さぶんこうしん)運用と設計

画面全体を作り直さず、前回との違いがある所だけ DOM を直すこと。React や Vue などが、状態の変化からこの直し方を仕組みとして担うことが多い。

サンプリングsampling(さんぷりんぐ)運用と設計

全部の要求のトレースは残さず、一部だけを残すこと。量と費用を抑えるために、よく行われる。残す割合の決め方に、唯一の仕様があるわけではない。

サーガsaga pattern(さーが)運用と設計

複数のサービスにまたがる仕事を、局所のトランザクションと打ち消しの流れで進める考え方。1 つの分散トランザクションの代替としてよく言われる。決まった一つの仕様があるわけではない。

サーバが決める名前server-generated filename(さーばがきめるなまえ)サーバの中

保存時のファイル名を、送られた名前ではなくサーバ側 (この記録では UUID) で付けること。上書きやパストラバーサルを防ぎ、公開 URL と元の表示名を切り離す。

サーバ側キャッシュserver-side / application cache(さーばがわきゃっしゅ)設計と概念

ブラウザや CDN ではなく、アプリやその近くの置き場に DB などの答えをためること。HTTP の Cache-Control とは別の層。速いが古さの扱いが要る。

サービスごとの DBdatabase per service(さーびすごとのでーびー)運用と設計

各サービスが自分のデータベースだけを持ち、他サービスの表を直接書かない置き方。この記録では部屋・利用者・予約がそれぞれ別の DB。境界ははっきりするが、またぐ更新は HTTP と打ち消しが要る。

サービスの境界service boundary(さーびすのきょうかい)運用と設計

どの仕事をどのサービスに置くかの切れ目。データと出し方の単位にもなる。曖昧なまま分けると、通信と失敗の形だけが増えやすい、とよく言われる。

塩salt (password hashing)(しお)守る作り方

パスワードを保存するときに足す、人ごとのでたらめな値。同じパスワードでも保存の形が変わり、あらかじめ計算した表との照合を難しくする。

関連: scrypt

式の索引index on expression / expression index(しきのいんでっくす)設計と概念

列そのものではなく、lower(列) のような式の結果に付ける索引。問い合わせ側も同じ式で比べるとき使う。

止血mitigation / stop the bleeding(しけつ)運用と設計

原因が全部分かる前でも、利用者への影響を先に止めること。直前の変更を戻す、が典型例。直してから、トレースやログで場所を探す、という順にすることが多い。

資源resource(しげん)通信と API

API が扱う「もの」(部屋・予約など)。URL はその住所で、動詞はパスに埋め込まずメソッドで表す。

関連: REST

仕事の流れapplication service / use case(しごとのながれ)設計と概念

「予約する」のように、一つの仕事の手順を並べた部分 (アプリケーションの層、よく言われる呼び名)。ルールはドメインに任せ、保存と時計は差し込み口に任せる。

仕事の列job queue(しごとのれつ)サーバの中

すぐでなくてよい仕事をいったん貯めておく置き場。この記録では PostgreSQL の jobs 表。要求の中でメール送信などを待たず、列に積んでからすぐ応答を返す。

失敗時のスクリーンショットscreenshot on failure(しっぱいじのすくりーんしょっと)開発の進め方

テストが落ちたときにブラウザの画面を画像として残す機能。この記録では only-on-failure で fail_shot = 2 枚残った。

遮断器Circuit Breaker(しゃだんき)設計と概念

続けて失敗したらしばらく外を呼ばずに断り、たまには 1 回だけ試して戻る、よく言われる仕組み。閉・開・半開の状態で表す。決まった仕様の文書は無く、このサイトでは一般論として扱う。

主キーprimary key(しゅきー)設計と概念

その表の行を一つに決める列 (または列の組)。他の表から番号で指すときの土台になる。

障害対応incident response(しょうがいたいおう)運用と設計

利用者が困っている状態に気づき、影響を止め、記録から原因を追い、再発を減らす一連の動き。決まった唯一の仕様は無く、現場ごとの手順として語られることが多い。

衝突の印conflict markers(しょうとつのしるし)開発の進め方

衝突中のファイルに入る区切り。<<<<<<<・=======・>>>>>>>。残す行を決めたら印ごと消してからコミットする。

書記素grapheme cluster(しょきそ)設計と概念

人が 1 文字に見るまとまり (grapheme cluster)。Intl.Segmenter の granularity "grapheme" で分けられる。濁点の結合や、ZWJ でつないだ絵文字も 1 つに数えられることがある (UAX #29)。

署名の検証signature verification (JWS)(しょめいのけんしょう)守る作り方

トークンのヘッダと中身が、発行者の鍵で付いた署名と一致するかを確かめること。中身だけ変えると署名が合わず拒否できる。受け付ける方式 (alg) は先に決める。

知らせる領域status region (role=status)(しらせるりょういき)設計と概念

結果やエラーなど、後から変わる文を読み上げ側へ渡すための領域。この記録では role="status"。色を変えるだけでは役割が付かない。

実行計画query plan / execution plan(じっこうけいかく)設計と概念

データベースが問い合わせをどう実行するかの段取り。どの節で読むか・何行見積もるかなどが並ぶ。遅いときはまずここを見る。

状態コードの読み分けreading HTTP status codes for diagnosis(じょうたいこーどのよみわけ)練習と総まとめ

401・403・409・415・422 などを、「だれか分かっているか / してよいか /衝突か / 送り方か / 中身か」で見分けること。壊れた原因を当てるときの手がかり。決まった探し方の規格ではなく、よく言われる読み方。

冗長redundancy (data)(じょうちょう)設計と概念

同じ事実が複数の行や列に重複して置かれていること。読む形は簡単になるが、更新や削除のずれの温床になりやすい (一般論)。

推移的依存transitive dependency(すいいてきいぞん)守る作り方

自分が直接頼んでいないが、頼んだパッケージがさらに頼んでいるパッケージ。少数を頼んでも、合計の packages と深さが大きくなりうる。

垂直スケールvertical scaling / scale up(すいちょくすけーる)運用と設計

1 台の CPU やメモリを大きくして、さばける量を増やすこと。台数は増やさないので、状態の置き場所の問題は水平ほど目立たないが、上限は 1 台の大きさに縛られる。

水平スケールhorizontal scaling / scale out(すいへいすけーる)運用と設計

同じ役割のサーバやコンテナを並べて台数を増やし、さばける量を増やすこと。この実験では nginx の後ろに API を 1・2・4 台並べ、各台の CPU を制限して測った。

水平 Pod 自動スケールHorizontal Pod Autoscaler (HPA)(すいへいぽっどじどうすけーる)運用と設計

Kubernetes などで、負荷の指標に合わせて Pod の台数を増減する仕組みの一例。考え方は一般論として「台数を負荷に合わせる」であり、アプリ側の状態の置き方も別途決める必要がある。

すぐのやり直しimmediate retry(すぐのやりなおし)設計と概念

失敗の直後に、待ちをほとんど置かず同じ呼び出しを再度試すこと。一時的な失敗では成功が増える一方、止まっている相手では呼び出し回数だけが増えやすい。

スタイル計算style calculation (recalculate style)(すたいるけいさん)ブラウザの中

どの要素に、どの CSS の値が効くかを決める段。DOM と CSS のどちらが変わってもやり直しになる。

捨てた行Rows Removed by Filter(すてたぎょう)練習と総まとめ

実行計画で、条件に合わず読み飛ばされた行の数 (PostgreSQL の Rows Removed by Filter など)。Seq Scan で大きいと、索引が効いていないサインになりやすい。

ステータスコードHTTP status code(すてーたすこーど)入門

HTTP の応答が成功か失敗かなどを示す 3 桁の番号。200 は成功、409 は資源の状態と矛盾する、など。開発者ツールのネットワーク一覧で確認する。

ステータスチェックstatus check(すてーたすちぇっく)開発の進め方

pull request や保護したブランチで、所定の検査 (CI のジョブなど) が成功したかを見る印。通るまでマージできない、といった門に使える (サービスの設定。運用の型)。

ステートレスstateless(すてーとれす)運用と設計

各台がログインなどの状態を自分のメモリだけに持たず、共有の置き場所を見る作り。どの台でも同じ答えができ、台を止めても残りで続けやすい。

素の JSvanilla JavaScript(すのじぇいえす)運用と設計

画面のフレームワークを使わず、ブラウザの DOM API を直接書いて画面を動かすやり方。小さなページでは十分だが、大きな画面では直す所の管理が増えやすい。

正規化normalization (database design)(せいきか)設計と概念

同じ事実を何度も書き写さず、1 か所に置いて番号などで指す、という表の分け方の考え方。決まった仕様書の名前ではなく、よく言われる設計の指針 (一般論)。

静的ファイルstatic file(せいてきふぁいる)サーバの中

要求のたびに中身を計算しない、ディスク上のファイル (CSS・画像・ビルド済みの JS など)。nginx の location で直接返すと、アプリの忙しさに引きずられにくい。

セッションsession (server-side)(せっしょん)守る作り方

サーバ側に置く、ログイン中の人の状態の置き場所。ブラウザにはその入口の ID だけを Cookie で持たせる。HTTP 自体は前の要求を覚えないので、この仕組みでログインを続ける。

セッション IDsession ID(せっしょんあいでぃー)守る作り方

セッションを指すでたらめな文字列。推測できない長さにし、ログイン成功時には作り直す。置き場所には ID そのものではなくハッシュを入れることが多い。

接続の束maxSockets / connection pool to a dependency(せつぞくのたば)設計と概念

同じ相手への HTTP 接続を使い回すときの本数の上限 (この実験では http.Agent の maxSockets)。複数の用事で分け合うと、遅い呼び出しが枠を埋めて道連れになりうる。

接続プールconnection pool(せつぞくぷーる)サーバの中

あらかじめ開いたデータベースへの接続を使い回す仕組み。毎回つないで切ると、つなぐだけの時間が積み重なる。

宣言的 UIdeclarative UI(せんげんてきゆーあい)運用と設計

「状態がこうなら、画面はこう見える」と書いておくやり方。どこをどう直すかの手順を一つずつ書かず、状態を変えれば画面が追いつく、という考え。

選択性selectivity(せんたくせい)設計と概念

条件に当たる行が全体の何割か、という見方。当たる行が多いと、索引より表を順に読む方が安いと判断されることがある (一般論)。

絶対期限absolute timeout(ぜったいきげん)守る作り方

ログインしてから一定時間がたつと、操作していてもセッションを切ること。盗まれた ID の使える時間を限る。

全体地図に戻るreturn to the site map(ぜんたいちずにもどる)練習と総まとめ

総まとめのあと、全動画の配置を 1 枚で見直すこと。足りない段や、線でつながる前後関係を拾い直す入口。

全文検索full text search(ぜんぶんけんさく)設計と概念

文書を単語に分けてから探す仕組み。Postgres では to_tsvector と to_tsquery など。単語分けの辞書が前提。

操作なしの期限idle timeout(そうさなしのきげん)守る作り方

最後の操作から一定時間がたつとセッションを切ること。長く放置した端末のログインを終わらせる。

総まとめdigest / end-to-end recap(そうまとめ)練習と総まとめ

会議室を 1 つ予約するまでを、これまでの動画の段で順にたどり直す動画。各場面は「起きていること・記録の数字 1 つ・詳しい動画」の三つ組で見せる。

層を絞るnarrow the layer / localize the tier(そうをしぼる)練習と総まとめ

遅いという訴えのとき、まず画面・API・DB のどれが遅いかを利用者の症状から見当をつけること。層が違うと見る記録も違う。決まった仕様ではなく、よく言われる探し方の一歩。

その時点の値point-in-time value / snapshot attribute(そのじてんのあたい)設計と概念

予約したときの料金のように、後からマスタが変わっても残しておきたい当時の記録。こういう列は書き写すのが正しいことが多い (一般論)。今の正しい値とは別物。

ソースの表示view page source(そーすのひょうじ)入門

サーバが返した HTML の文字列をそのまま見る機能。要素タブに出る DOM (JavaScript が組み立てたあとの木) とは別物で、中身が違うことがある。

た

タイムゾーンtime zone(たいむぞーん)設計と概念

地球上の場所ごとの時計のずれのルール。名前は Asia/Tokyo のように場所で書く。同じ「時の一点」でも、場所が違えば表示の文字は違う。

正しい動きcorrect / intended behavior (not a defect)(ただしいうごき)練習と総まとめ

利用者には「壊れた」ように見えても、仕様どおりの拒否や制限であること。例: 持ち主でない人の取り消しが 403 になる。直す対象ではなく、説明の対象。

単一ファイルコンポーネントSingle-File Component(たんいつふぁいるこんぽーねんと)運用と設計

テンプレートとスクリプトなどを 1 つのファイルにまとめた部品の書き方。Vue では拡張子 .vue のファイルがこれで、コンパイラが JavaScript に直してから使う。

関連: Vueesbuild

単語ごとの差分word diff(たんごごとのさぶん)開発の進め方

行全体ではなく、変わった単語だけを印す差分の見方 (git diff --word-diff など)。同じ行の中の置き換えが追いやすい。

単純な要求CORS simple request (CORS-safelisted)(たんじゅんなようきゅう)通信と API

プリフライトなしで送られる、メソッドとヘッダが限られた要求 (MDN のいわゆる simple request)。text/plain の POST などが該当し、CORS の許可が無くてもサーバまで届くことがある。

単体テストunit test(たんたいてすと)開発の進め方

サーバや DB を動かさず、関数や小さな単位だけを呼んで確かめるテスト。この記録では予約の入力の確かめを node:test で 8 本走らせた。

地域化localization(ちいきか)設計と概念

ある場所向けに、文・数・日付・書字方向などを実際に当てはめること。英語では l10n (localization の先頭と末尾、間の文字数) とも書く。国際化のあとに行う作業、という分け方がよく言われる。

遅延読み込みlazy loading(ちえんよみこみ)ブラウザの中

画面に近づくまで画像などを取りに行かないしくみ (loading="lazy")。最初に見える大きな画像に使うと LCP が遅れる。

関連: LCP

長時間接続long-lived connection(ちょうじかんせつぞく)通信と API

SSE や WebSocket のように、応答やソケットを開いたままにする使い方。画面の数だけサーバの接続を占め、途中の機器の無通信タイムアウトにも注意が要る。

重複の印deduplication key(ちょうふくのしるし)サーバの中

同じ message_id を二度送らないための印。この記録では sent 表へ先に INSERT し、衝突したら送らず done にする。送る前に落ちると送られないまま印だけ残る弱みがある。

直前の変更を疑うsuspect the latest change(ちょくぜんのへんこうをうたがう)練習と総まとめ

遅くなり始めた時刻の直前に出した版や設定を、まず疑うこと。障害対応では止血として戻すことも多い。よく言われる考え方。

直列化失敗serialization failure(ちょくれつかしっぱい)サーバの中

SERIALIZABLE などで、同時実行を直列とみなせないと検出したときの失敗。PostgreSQL では SQLSTATE 40001。アプリはロールバックしてやり直す。

使い回しの検出refresh token reuse detection(つかいまわしのけんしゅつ)守る作り方

一度使ったリフレッシュトークンが再び来たとき、写しがあるとみなして同じ系統を全部止める作り。盗まれた写しと正当な更新の競合に備える。

テストピラミッドtest pyramid(てすとぴらみっど)開発の進め方

速い下の層を多く、遅い上の層を少なく揃える、よく言われる考え方。決まった仕様ではなく、速さと見える範囲のバランスの話として使われる。

手元では通るpasses locally, fails in CI(てもとではとおる)練習と総まとめ

自分の環境では緑なのに、CI だけが赤い状態。入れた変更・データの前提・一意制約の有無など、手元と CI の差を疑う手がかり。

データバインディングdata binding(でーたばいんでぃんぐ)運用と設計

状態が変わったら、画面をその中身どおりに描き直す結びつけ。この実験の MVVM では bind が購読して表を描く。React や Vue は同様の更新を仕組みとして持つ。

データローダーDataLoader(でーたろーだー)通信と API

同じ種類の問い合わせを一度にまとめて取り、N+1 を抑えるサーバ側の技法の一例。GraphQL のリゾルバと組み合わせて使うことが多い (一般論)。

関連: N+1GraphQL

時の一点instant / point in time(ときのいってん)設計と概念

世界で一つに決まる「いつ」。UTC や timestamptz で表す。画面に出す「その場所の何時何分」とは別物。

トライグラムtrigram(とらいぐらむ)設計と概念

連続する 3 文字の組。前後の空白を含む組もある。日本語は show_trgm でハッシュ番号として出ることがある (版・文字による)。

トランザクションtransaction(とらんざくしょん)サーバの中

複数の文を一つのまとまりとして扱い、全部成功するか全部取り消すかの単位。包んだだけでは、確かめと INSERT のあいだの競合は防げないことがある。

トレースtrace(とれーす)運用と設計

一つの要求の中で、どの処理が何 ms かかったかを、親子の span として残した記録。サービスをまたいでも、同じトレースの番号でつながる。

同一オリジンポリシーSame-Origin Policy(どういつおりじんぽりしー)通信と API

ブラウザが、あるオリジンの文書の JS から、別オリジンの資源を読むのを制限する基本の決まり。利用者の Cookie 付きで、別サイトの応答を読まれるのを防ぐ。

同時実行concurrency(どうじじっこう)サーバの中

複数の要求を、時間を重ねて進めること。待っているあいだに次を受け付けられる仕事は重ねやすく、CPU を使い続ける計算は 1 本の道では並べることになる。

.env.env file(どっとえんぶ)守る作り方

手元で環境変数の名前と値を並べたファイルの慣例的な名前。本物の値を入れることが多く、git には入れない。.gitignore に書く。

.env.example.env.example(どっとえんぶいぐざんぷる)守る作り方

どの名前の設定が要るかだけを書いた見本。値は空かダミーにし、本物の秘密は入れない。リポジトリにはこちらを残す。

.gitignoregitignore(どっとぎっといぐのあ)守る作り方

git が追跡しないパスを列挙するファイル。.env などを書いて、秘密がコミットに入るのを防ぐ。

.dockerignore.dockerignore(どっとどっかーいぐのあ)開発の進め方

ビルドコンテキストから除く経路を書いた一覧。node_modules・書き出し・テスト・.env など、写したくないものを送らないために使う。

.protoProtocol Buffers schema (.proto)(どっとぷろと)通信と API

Protocol Buffers / gRPC で、サービス名とメッセージの欄を書く約束ファイル。サーバもクライアントも、このファイルから型や手続きのコードを作る。

どの層が気づくかwhich test layer catches the bug(どのそうがきづくか)練習と総まとめ

同じ誤りでも、単体・結合・E2E・CI のどれが落ちるかが違うこと。落ちた層が、原因の置き場所の見当になる。よく言われる切り分け。

ドメイン層domain layer(どめいんそう)設計と概念

予約の可否のような、業務のルールだけを置くところ (よく言われる呼び名)。この実験では引数の値だけで決まり、データベースも時計も知らない。

な

内容アドレスcontent-addressable storage(ないようあどれす)開発の進め方

中身から計算したハッシュを、オブジェクトの置き場所や名前に使うやり方。同じ中身は同じハッシュになり、Git では objects 以下に 1 つだけ置ける。

長いタスクlong task(ながいたすく)ブラウザの中

50 ms を超えて道をふさぐタスク。その間はクリックの処理も描画も待たされる。分けたり、後に回したりして避ける。

夏時間daylight saving time (DST)(なつじかん)設計と概念

一部の地域で、季節により時計を進める・戻すこと。1 日が 23 時間や 25 時間になる日がある。無い時刻や、同じ時計の文字が 2 回ある時刻も出る。

名前解決name resolution(なまえかいけつ)入門

reserve.example.com のような名前を、通信に使う IP アドレスに変えること。インターネットでは DNS に問い合わせ、答えはしばらくキャッシュされる。

関連: 往復

名前つきボリュームnamed volume(なまえつきぼりゅーむ)開発の進め方

Compose で名前を付けて宣言する、データの置き場所。コンテナを止めても残り、消す指定付きで止めると消える。

二重書きdual write (during migration)(にじゅうがき)設計と概念

移行のあいだ、古い列と新しい列の両方に同じ意味の値を書くこと。古い版と新しい版のアプリが同時に動けるようにする。

二重実行at-least-once / duplicate execution(にじゅうじっこう)サーバの中

同じ仕事が、落ちや取り直しのせいで 2 回以上実行されること。メールなら同じ通が 2 回届く。期限で取り直す仕組みの裏返しとして起きうる。

二重送信duplicate request / double submit(にじゅうそうしん)設計と概念

同じ「作る」要求が、利用者や通信の都合で二度以上サーバに届くこと。二度押し・返事が届かないときの送り直し・途中の層の自動送り直しなどで起きる。

二重予約double booking / lost update (check-then-act)(にじゅうよやく)サーバの中

同じ部屋・同じ日・同じ枠に、複数の予約が入ってしまうこと。空いているか確かめてから入れるまでの隙間に、別の要求が割り込むと起きやすい。

偽の Viewfake view / test double(にせのびゅー)運用と設計

本物の画面の代わりに渡す、テスト用の受け口。この実験では FakeView が showRows と showMessage を覚え、Presenter を node:test で確かめる。

二度押しdouble click / double tap(にどおし)設計と概念

注文ボタンなどを短いあいだに二回押してしまい、同じ「作る」要求が二度出ること。ボタンを押せなくする対策はここに効くが、送り直しには効かない。

入力の確かめinput validation(にゅうりょくのたしかめ)通信と API

届いた要求の本文が、アプリの決めた形・型・範囲かをサーバで調べること。画面の確かめは飛ばせるので、サーバでもう一度行う。

認可authorization(にんか)守る作り方

ログインなどで「だれか」が分かったあと、その人がこの資源にこの操作をしてよいかを確かめること。認証の次の段。決まりは 1 か所にまとめ、どの入口もそこを通す。

認可コードフローAuthorization Code Flow(にんかこーどふろー)守る作り方

ブラウザには短い認可コードだけを戻し、トークンへの引き換えはアプリと IdP のサーバ同士で行う流れ。トークンを URL に載せない。この実験の response_type は code。

認証authentication(にんしょう)守る作り方

要求の送り手がだれかを確かめること。セッションやトークンでログイン状態を知る。認証だけでは、他人の予約を変えてよいかは決まらない。

ノンブロッキングnon-blocking(のんぶろっきんぐ)サーバの中

待ちのあいだ道を空けておき、ほかの要求を進められること。タイマーや DB・外の API を待つ処理がこれに近い。

ノードnode(のーど)ブラウザの中

DOM の木の 1 つの節。要素のほか、文字 (テキスト) やコメントもノードになる。

関連: DOM

は

ハイドレーションhydration(はいどれーしょん)ブラウザの中

サーバが作った HTML に、ブラウザの JavaScript が後からつながって、ボタンなどを動くようにすること。SSR と CSR を組み合わせるときに使う。

関連: SSRCSR

半開half-open(はんかい)設計と概念

遮断器が開いてしばらくしたあと、試しに 1 回だけ外を呼ぶ状態 (よく言われる呼び名)。成功すれば閉に戻し、失敗すればまた開く。この記録では変わり目の時刻が残っている。

版の範囲version range (semver)(はんのはんい)守る作り方

package.json の dependencies に書く「この版以上・次のメジャー未満」などの指定。先頭の ^ がその一例。確定した版そのものではない。

関連: lockfile

場所の時計local civil time / wall-clock time(ばしょのとけい)設計と概念

あるタイムゾーンのカレンダーと時計に出る日付・時刻の文字。未来の会議のように「その土地の火曜 10 時」を表すときに使う、とよく言われる (一般論)。

バックエンドbackend(ばっくえんど)入門

サーバ側のアプリとデータ。予約アプリでは server.ts が要求をさばき、db.ts の SQLite に予約を書く。成功は 201、矛盾は 409 など。

バックフィルbackfill(ばっくふぃる)設計と概念

新しく足した列へ、既存の行の値を後から埋めること。一度に全部やらず、件数を区切って少しずつ進めることが多い。

パストラバーサルpath traversal / directory traversal(ぱすとらばーさる)サーバの中

ファイル名に ../ などを含め、意図したディレクトリの外へ読み書きする攻撃の型。この記録の確かめない版では、送られた名前をそのまま結合して /data/config.txt に書けた。

パーサHTML parser(ぱーさ)ブラウザの中

HTML の文字の並びを上から読んで、DOM の木を組み立てるブラウザの部品。普通の script に出会うと、それが実行されるまで読むのを止める。

ヒストグラムhistogram(ひすとぐらむ)運用と設計

かかった時間を「何秒以下が何件か」という箱 (バケット) に入れた集計。箱の件数は累積で、尾に遅い一件が残ると p95 が跳ねる理由が見える。

非正規化denormalization(ひせいきか)設計と概念

読みやすさや速さのために、わざと同じ値を複数の行へ書き写すこと。今の事実のコピーが増える一方、その時点の値を残したいときは意図して使う (一般論)。

人を責めないblameless(ひとをせめない)運用と設計

ふりかえりで個人の過失探しをせず、再現できる条件や欠けていた防護を直す、という姿勢。SRE Book の Postmortem Culture などで語られる。唯一の規格ではない。

秘密secret (credential)(ひみつ)守る作り方

パスワード、API キー、署名の鍵、データベースの接続文字列など、外に出してはいけない値。コードや公開の場所に書かず、漏れたら差し替えられるように扱う。

秘密の管理サービスsecrets manager / vault(ひみつのかんりさーびす)守る作り方

本番などで秘密を置き、アプリが実行時に取りに行くための専用の置き場所。誰が読めるかの権限を分け、コードや git には置かない (一般論)。

表記のゆれorthographic variation / character variant(ひょうきのゆれ)設計と概念

同じ意味なのに半角・全角・かなカナなどで書き方が違うこと。NFKC でそろうものと、そろわないものがある。

関連: NFKC

広げて縮めるexpand/contract (schema migration)(ひろげてちぢめる)設計と概念

列の名前や置き場を変えるとき、新しい列を足して両方に書き、写してから古い列を消す進め方。よく言われる考え方で、決まった仕様の名前ではない。各段で前の版に戻しやすくする。

描画paint(びょうが)ブラウザの中

色や文字などを、層ごとに塗る命令を作る段 (ペイント)。色を変えるとここからやり直しになる。

描画を止める資源render-blocking resource(びょうがをとめるしげん)ブラウザの中

届くまでブラウザが画面を描かない資源。head の CSS が代表で、崩れた画面を一瞬見せないためにこうなっている。

関連: FCP

ビルドキャッシュbuild cache(びるどきゃっしゅ)開発の進め方

以前のビルドで作った層を再利用するしくみ。上の段から順に使い、内容が変わった段から下はやり直す。依存の入れ方をソースより前に置くと、ソースだけ変えたときに依存の段が残りやすい。

ビルドコンテキストbuild context(びるどこんてきすと)開発の進め方

イメージを作るときに、デーモンへ送る作業フォルダの中身。不要なものまで送ると遅くなり、写したくないものまで入る心配がある。

不安定なテストflaky test(ふあんていなてすと)開発の進め方

同じコードなのに、通ったり落ちたりするテスト。Playwright の報告ではやり直しで通ったものを flaky と数えることがある。

フィールドデータfield data(ふぃーるどでーた)ブラウザの中

利用者の本当の端末と回線で集めた速さの記録。決まった環境で測る実験室の値とは違い、遅い端末や回線も混ざる。

関連: Web Vitals

フォーカスで読み直しrefetch on focus / visibility(ふぉーかすでよみなおし)設計と概念

タブに戻ってきたときや、ページが見え始めたときに、サーバへデータを取りに行くやり方。開いたときだけ読むより、写しの古さが残りにくい。

負荷分散load balancing(ふかぶんさん)運用と設計

複数のサーバへ要求を振り分け、1 台に集中しないようにすること。振り方には順番回しや ip_hash などがある。振り分け自体は状態の共有を保証しない。

複合原因contributing factors / multiple causes(ふくごうげんいん)運用と設計

一つの失敗だけでは起きず、作りの弱点と外の遅れなどが重なって初めて大きくなること。この記録では v2 の「接続を握ったまま通知を待つ」と、通知の遅れが重なった。

複数列の索引multicolumn index(ふくすうれつのいんでっくす)設計と概念

2 つ以上の列を並べた索引。先頭の列から条件に使う、とよく言われる。版や条件によっては、後ろの列だけでも使える場合がある。

ふりかえりpostmortem / retrospective運用と設計

障害のあと、時間の流れ・何が効いたか・次にすることを残す文書や話し合い。人を責めず仕組みと手順を直す、とよく言われる。決まった仕様の文書ではない。

フロントエンドfrontend(ふろんとえんど)入門

ブラウザで動く部分。HTML・CSS・JavaScript。予約アプリでは client.ts がクリックを受け、fetch で API を呼び、表の文字を書き換える。

ブラウザが止めるbrowser blocks the response from JS(ぶらうざがとめる)練習と総まとめ

サーバまで要求が届き応答していても、ページの JS に本文を渡さないこと。CORS の失敗などで、画面は「つながりません」に見える。

ブランチ (参照)branch (ref)(ぶらんしさんしょう)開発の進め方

あるコミットのハッシュを書いた参照。refs/heads 以下のファイルで、中身はハッシュと改行程度の短い文字。

ブルーグリーンBlue-Green Deployment(ぶるーぐりーん)開発の進め方

いま利用者に見えている組 (青) の横に、新しい版の組 (緑) を用意し、準備ができてから向き先を一度に切り替えるやり方。戻すのも向き先の切り替えだけ、になりやすい。そのかわり台数がおよそ二倍いる。よく言われる考え方 (決まった単一仕様ではない)。

ブロッキングblocking(ぶろっきんぐ)サーバの中

今の仕事が終わるまで、同じ道で次の仕事を始められないこと。CPU を使い続ける計算は、そのあいだイベントループをふさぐ。

分離レベルtransaction isolation level(ぶんりれべる)サーバの中

同時に動くトランザクションが、互いの変更をどの程度見えるかの段階。PostgreSQL の既定は READ COMMITTED。SERIALIZABLE まで上げると直列化の失敗が出ることがある。

プリフライトCORS preflight(ぷりふらいと)通信と API

本番の要求の前に、ブラウザが OPTIONS で「このメソッドとヘッダで送ってよいか」を聞く下見。application/json の POST など、単純ではない要求で起きる。

プルリクエストpull request(ぷるりくえすと)開発の進め方

提案した変更を、差分と会話で見てもらい、入れてよいかを決める場。Git 本体の機能ではなく、GitHub などのサービスの機能。

プレースホルダparameterized query / prepared statement(ぷれーすほるだ)守る作り方

SQL の文と値を分けて渡す書き方。文の中に ? などの印を置き、値は別に渡す。値に ' が含まれても、文の形は変わらない。

プロセス内キャッシュin-process / local memory cache(ぷろせすないきゃっしゅ)設計と概念

そのプロセス (その台) のメモリだけに答えをためること。速いが、別の台とは共有されない。書いた台だけ消しても、ほかの台のメモリは古いまま残ることがある。

ヘキサゴナルアーキテクチャHexagonal Architecture / Ports and Adapters(へきさごなるあーきてくちゃ)設計と概念

芯の処理を、差し込み口とアダプタで外の世界から守る、よく言われる設計の型。ポートとアダプタとも呼ばれる。決まった仕様の文書は無く、このサイトでは一般論として触れる。

ヘッダHTTP header(へっだ)入門

HTTP の要求や応答で、本体の前に付く名前と値の組。種類 (Content-Type)・キャッシュの指示 (Cache-Control)・サーバの中の時間 (Server-Timing) などを伝える。

ヘッドレスheadless browser(へっどれす)開発の進め方

画面ウィンドウを出さずにブラウザを動かすモード。E2E の自動実行ではヘッドレス Chromium を使うことが多い。

冪等idempotent(べきとう)通信と API

同じ要求を何回送っても、サーバ上の結果の状態が同じであること。安全なメソッドに加え、PUT と DELETE も冪等。POST は冪等ではない。

ベースイメージbase image(べーすいめーじ)開発の進め方

Dockerfile の FROM で指定する、土台のイメージ。同じアプリでも、フル・slim・alpine などで大きさと中身の差が出る。

ページ分けpagination(ぺーじわけ)通信と API

一覧を一度に全部返さず、limit などで件数を区切って返すこと。次のページは next の URL で取る。

保護されたブランチprotected branch(ほごされたぶらんし)開発の進め方

直接の force push や無審査のマージを制限し、レビューや検査を通してから入れる設定。サービスの機能であり、Git のオブジェクト形式そのものではない。

__Host-__Host- cookie prefix(ほすとぷれふぃっくす)守る作り方

Cookie の名前の接頭辞。ブラウザは Secure・Path=/・Domain 属性なしのときだけ受け取る。サブドメインへ広げる Domain 付き Cookie を防ぎやすい。

ポーリングpolling(ぽーりんぐ)通信と API

画面が決まった間隔でサーバに「変化はあるか」と聞きに行くやり方。変化がなくても要求が飛ぶ。遅れは間隔の半分前後になりやすい。

関連: API往復

ま

マイクロサービスmicroservices(まいくろさーびす)運用と設計

役割ごとにサービスとデータを分け、ネットワーク越しに協調する形。チームや台数を分けやすい一方、通信・失敗の形・データのずれ・運用の単位が増える。

マイクロタスクmicrotask(まいくろたすく)ブラウザの中

今のコードが終わった直後、次のタスクより先に全部実行される小さな仕事。Promise の then や queueMicrotask で積まれる。

マジックナンバーmagic number / file signature(まじっくなんばー)サーバの中

ファイル先頭の決まったバイト列で種類を判別する印。この記録では PNG・JPEG・PDF だけを受け付ける。拡張子や Content-Type の名乗りは送る側が自由に決められるので、中身の印を見る。

待ち行列queue (request queue)(まちぎょうれつ)サーバの中

まだ処理できていない要求が、前の仕事が終わるのを待つ並び。1 本の道で重い計算が続くと、後ろの要求ほど待ち時間が伸びる。

待ちの上限request timeout(まちのじょうげん)設計と概念

外の応答を待つ時間の上限。超えたら接続を切って失敗とする。この記録では 300 ms。相手が 2 秒かかるとき、予約は早く失敗し部屋一覧は守られた。

まとめた形tangled / all-in-one handler(まとめたかたち)設計と概念

確かめ・ルール・SQL・今日の日付を一つの関数に全部入れた書き方。短いが、確かめるたびにデータベースが要り、日付の境目が本当の今日に左右されやすい。

まとめて読むbatch loading / eager load(まとめてよむ)サーバの中

親の一覧を取ったあと、子を親の件数だけ個別に取らず、IN や ANY などで一度に取るやり方。ORM の include / preload やデータローダーも同じ発想 (一般論)。

守りを重ねるdefense in depth(まもりをかさねる)守る作り方

同じ事故に対して、種類の違う対策を複数置く考え方。1 つ漏れても次が止める。例: エスケープと CSP、SameSite と CSRF トークン。

マージコミットmerge commit(まーじこみっと)開発の進め方

親コミットを 2 つ以上持つコミット。分かれた歴史を 1 つに結んだ印。早送りでは作られない。

マージの衝突merge conflict(まーじのしょうとつ)開発の進め方

同じ箇所を両側が別々に変えたため、自動では合わさらない状態。Git はどちらを残すか決めず、人の選択を待つ。

見えるフォーカスvisible focus / :focus-visible(みえるふぉーかす)設計と概念

キーボードで操作しているとき、今どの要素にいるかが枠線などで分かること。この記録では :focus-visible の枠線。全体の outline: none だと分かりにくい。

道連れcascading delay / pool saturation(みちづれ)設計と概念

遅い・止まっている外の呼び出しが、接続の束などを占有し、関係ない速い用事まで待たされること。この記録では相手が毎回 2 秒のとき、部屋一覧の p95 も秒単位まで伸びた。

三つ組の場面three-part digest scene(みつぐみのばめん)練習と総まとめ

総まとめの 1 場面の型。「この段で起きていること」「記録の数字」「詳しい動画」を並べる。症状から探す練習動画とは進め方が違う。

ミドルウェアmiddleware(みどるうぇあ)サーバの中

要求が本体に届く前後で動く層。ログ・認証・エラー処理などを、本体の外に並べて挟む。多くの枠組みでは next で次の層へ渡し、呼ばなければそこで止まる。

見る順番suggested watch order(みるじゅんばん)練習と総まとめ

catalog の PATH に並んだ段の順。入門から練習と総まとめまで。全部を一度に見る必要はなく、足りない段から拾い直してよい。

メインスレッドmain thread(めいんすれっど)ブラウザの中

ブラウザで、HTML の解析・JavaScript の実行・レイアウト・描画・入力の処理を順番に行う 1 本の道。ここが長くふさがると画面が固まる。

メッセージ鍵message key(めっせーじけー)設計と概念

画面に出す文を、コード中の文字列そのものではなく、title・book のような名前で引くための印。言葉を増やすときは表の中身を差し替える。

メトリクスmetrics(めとりくす)運用と設計

回数やかかった時間などを集計した数値の記録。経路ごとの件数や、時間のヒストグラムのバケットなど。平均だけでは尾の遅さが見えにくいので、p95 と合わせて読む。

文字参照character reference(もじさんしょう)守る作り方

HTML で & < > " ' などを &amp; &lt; のように書き、タグや属性として解釈されないようにした形。出力のエスケープの結果として現れる。

モジュールの scriptmodule script(もじゅーるのすくりぷと)ブラウザの中

type="module" を付けた script。import と export が使え、何も書かなくても defer と同じく解析の後に実行される。

関連: defer

持ち主resource owner(もちぬし)守る作り方

その予約を作った利用者。この実験では見る・変える・取り消すができる。本文の owner 欄ではなく、サーバがログイン中の人から決める。

モノリスmonolith / monolithic application(ものりす)運用と設計

予約など複数の仕事を、1 つのプロセスと 1 つのデータベースにまとめた形。1 つのトランザクションで一貫性を守りやすい一方、出し方や台数の単位もまとまりやすい。

モノリスファーストMonolithFirst(ものりすふぁーすと)運用と設計

まずはモノリスで育て、境目がはっきりしてからサービスに分ける、という考え方。MonolithFirst (Fowler) として知られる。決まった仕様ではなく、分け方の判断の話。

や

役割role(やくわり)守る作り方

利用者に付ける種類 (この実験では member と staff)。受付係 (staff) は見る・取り消すはできるが、中身は変えない。

ゆらぎjitter設計と概念

やり直しの待ち時間に乱数を足し、多くの客が同じ時刻にやり直さないようにすること (ジッター)。待ちを倍々に延ばすやり方と組み合わせて語られることが多い。決まった仕様ではない。

要素タブElements panel(ようそたぶ)入門

開発者ツールで、いまの DOM の木を調べるタブ。スタイルの当たりや、JavaScript が足した要素も見える。「ソースの表示」より、画面に近い状態を見る。

呼ばずに断るfail fast / short-circuit(よばずにことわる)設計と概念

外を実際には呼ばず、すぐ失敗として返すこと。遮断が開いているあいだに起きる。この記録の fast_fail。相手への呼び出しを抑え、接続の束を空けておく。

予約の横断one booking across bands(よやくのおうだん)練習と総まとめ

1 回の予約が、画面・API・DB・認可・キュー・CI・観測など複数の帯をまたぐこと。どこか 1 本の動画だけでは、全体のつながりが見えにくい。

ら

ラウンドロビンround-robin (load balancing)(らうんどろびん)運用と設計

向き先のサーバへ、要求を順番に振り分けるやり方。nginx の upstream では、重みを付けないときの既定に近い。

リバースプロキシreverse proxy(りばーすぷろきし)入門

ブラウザの手前で要求を受け、後ろのアプリへ中継するサーバ。TLS の終端や静的ファイルの返却を任せることが多い。この記録では nginx。

リフレッシュトークンrefresh token(りふれっしゅとーくん)守る作り方

新しいアクセストークンを取るための、長い寿命のしるし。サーバ側に置き、ログアウトや使い回しで止められるようにする。

ルーティングrouting(るーてぃんぐ)サーバの中

URL の道と HTTP メソッドから、動かす本体 (ハンドラ) を選ぶこと。該当が無ければ 404 を返す。この記録では apps/server_lab の router 層が担う。

レイアウトlayout(れいあうと)入門

ブラウザが各要素の大きさと位置を決める段。要素が増えたり大きさが変わったりすると、やり直しになる。

レイアウトの空回りlayout thrashing (forced synchronous layout)(れいあうとのからまわり)ブラウザの中

大きさを書いた直後に読む、を繰り返すと、ブラウザが毎回その場でレイアウトし直すこと。全部読んでから全部書くと避けられる。

ログlog(ろぐ)運用と設計

一件ずつの出来事の記録。この実験では要求ごとに 1 行の JSON (経路・状態・ms・trace_id など) を出す。遅い一件を拾い、トレースと突き合わせるときに使う。

ログだけでは見えない止まりfailure invisible in server access logs alone(ろぐだけではみえないとまり)練習と総まとめ

サーバの要求ログは 200 なのに、画面や fetch は失敗している状態。ブラウザが止めた結果は、アプリのログ行だけでは分からないことが多い。

ロケールlocale(ろけーる)設計と概念

言葉と地域の組み合わせ (例: ja-JP・de-DE)。Intl の整形や並べ替えの決まりを選ぶときに使う。

ローリングアップデートrolling update(ろーりんぐあっぷでーと)開発の進め方

台を一度に全部止めず、一部ずつ新しい版に入れ替えていくやり方。向き先から外す・処理中を終える・準備ができてから戻す、を落とすと失敗が残ることがある (この記録)。Kubernetes の Deployment にも同名の更新がある。よく言われる考え方でもある。

ロールバック (デプロイ)rollback (deployment)(ろーるばっくでぷろい)開発の進め方

出した版に問題があるとき、前の版や前の向き先へ戻すこと。青緑なら向き先の読み直し、カナリアなら新しい版を外す、など。出す操作より先に戻し方を決めておく、という見方がある (一般論)。