用語の標準表 — 原語・定訳・使わない言い換え

技術文書で使う用語の標準表。デリバリー・DB マイグレーション・進化的アーキテクチャ・可観測性・認証認可・データ連携、基礎理論(情報理論・データベース理論・グラフ理論と統計・ネットワーク・OS)と、古典の書籍(1960〜90 年代の論文と本、SOLID とその周辺の設計原則、リファクタリング、PoEAA・DDD・EIP・Release It!・継続的デリバリー・ヘキサゴナル・XP/TDD・Google のソフトウェアエンジニアリング・マイクロサービス・ソフトウェアアーキテクチャの基礎とハードパーツ・Accelerate・チームトポロジー)の語について、標準の語・原語・近い語との使い分け・使わない言い換え・出典をまとめる。原語が英語なら英語のまま、定訳があればそれ、列挙では英語に統一し、比喩は作らない。

技術文書で使う用語の標準表である。先に規則を書き、グループごとの表を置き、 最後に使わない言い換えの一覧と出典をまとめる。表は増やしていく。

規則

  1. 原語が英語の用語は英語のまま書く。 promotion gate、bake、expand / contract、 outbox。訳語を新しく作らない。カタカナ表記が定着しているもの(デプロイ、 カナリア、ロールバック、バックフィル)はカタカナでよい
  2. 定訳があればそれを使う。 fitness function は『進化的アーキテクチャ』の訳書に 従って適応度関数、observability は可観測性。定訳と原語の両方が通る場合は、 初出で「適応度関数(fitness function)」のように併記する
  3. 比喩を作らない。 「レバー」「被弾」「置く・当てる・見せる」のような言い換えは、 具体的な語(巻き戻しの手段、失敗したリクエスト、デプロイ・トラフィック切替・ リリース)で書く
  4. 文脈で語が変わるものは、どの文脈でどれを使うかを決める。 同じ「戻す」でも、 デプロイはロールバック、フラグは OFF に戻す、一般論は巻き戻し
  5. 固有の語は固有の語として書く。 ECS の stopDeployment、Keycloak の client_credentials のような API や設定の名前は、コード体で原文どおり
  6. 列挙や図の並びでは英語に統一する。 「promotion gate・カナリア・bake・ロールバック」のように 英語とカタカナが混ざると読みづらい。並べるときは「promotion gate・canary・bake・rollback」と 英語でそろえる。単独で本文に出るときはカタカナでよい
  7. 書いたら機械で確認する。 使わない言い換えの一覧を grep で当てる。 タイトルの長さ規約と同じく、人の記憶に頼らない

デリバリー

標準の語原語意味文脈による使い分け使わない
デプロイdeploy / deployment新しいバイナリを本番環境に配置する「デプロイする」。配置の完了と公開は別置く、投入
トラフィック切替traffic shifting実ユーザーのリクエストをどの版にどれだけ向けるか表記は「切替」に統一当てる、振り分け
リリースrelease機能をユーザーの目に触れさせるフラグによる公開も含む見せる、公開(単独では使わない)
プログレッシブデリバリーprogressive deliveryデプロイ・トラフィック切替・リリースを分解し、段階的・可逆的にする考え方段階的デリバリー
Blue/Green、B/Gblue/green deployment新旧 2 系統を並走させ、向き先を一斉に掛け替える本文は Blue/Green、表や図は B/G青緑
rolling updaterolling updateタスクを少しずつ入れ替える。旧版を温存しないので bake ができないB/G との対比で使うローリング
recreaterecreate旧版を全部止めてから新版を起動する。停止を伴う対比でのみ再作成
カナリアcanaryまず n% だけ新版に向けて観測する本文中の単独ではカナリア、英語の語と並ぶ列挙や図では canary試験投入
A/B テストA/B testing複数の版を同時に出して効果を比べる。壊れていないかを見る canary とは目的が違う対比でのみ
dark launchdark launch新機能をユーザーに見せずに本番で動かす。feature flag で実現するダークローンチ
promotion gatepromotion gate本番トラフィックを向ける前に、テスト経路で新版を検証する段ECS では deployment lifecycle hook(POST_TEST_TRAFFIC_SHIFT)で実装昇格ゲート
bakebake(bake time)全量切替の後も旧版を落とさず併走させる監視時間「bake 2 分」焼き込み、様子見
ロールバックrollbackデプロイを前の版に戻すデプロイの文脈。ECS では stopDeployment。列挙では rollback巻き戻し(デプロイの文脈では)
roll forwardroll forward戻さずに修正版を前に出す。DB の contract 後など戻せないときの選択rollback との対比前進修復
巻き戻し—デプロイ・トラフィック・フラグを問わず「戻す」一般複数の手段をまとめて言うとき戻し
フィーチャーフラグfeature flag / feature toggleコードをデプロイしたまま機能の公開を制御するOpenFeature に合わせて flag。Fowler の原語は toggle。列挙では feature flagスイッチ、トグル
キルスイッチkill switch機能を即座に止めるためのフラグ緊急停止フラグ
ops toggle、release toggleops toggle / release toggleフラグの種類。運用で切るものと、段階公開のためのものFowler の分類。寿命が違うので混ぜない
ロールアウトrollout新版や機能を段階的に広げることrelease は「公開する」、rollout は「広げていく過程」展開
リリーストレインrelease train決まった時刻にまとめて出す方式歴史の文脈リリース列車
無停止zero-downtime切替をまたいでも失敗したリクエストが無い「非 200 ゼロ」のように数字を添えるノーダウンタイム
失敗したリクエストfailed requests壊れた版に流れて失敗したリクエストの数「0 / 1,679」のように分母を添える被弾、犠牲

DB マイグレーション

標準の語原語意味文脈による使い分け使わない
expand / contractexpand / contract(Parallel Change)互換を保って先に広げ、旧版が消えてから縮める「expand を適用」「contract は後続リリースで」拡張 / 縮退
バックフィルbackfill新カラムに過去分のデータを埋める「batch 50、pause 100ms」のように刻みを添える。列挙では backfill埋め戻し
dual writedual write新旧両方に書く。expand の期間中の書き込み「書き込みは常に両方」二重書き込み
マイグレーションmigrationスキーマを変える手順と、その適用データ移行(data migration)と区別する
無停止移行online migrationサービスを止めずにスキーマを変えるオンラインマイグレーション(併記は可)
N-1 互換性N-1 compatibility新旧 1 世代差のバイナリが同時に正しく動くトラフィック切替の前提として後方互換(API の文脈と混ざる)
ALGORITHM=INSTANTMySQL の DDL オプションメタデータだけで終わる DDLコード体で原文即時 DDL
COPYALGORITHM=COPYテーブル全体を作り直す DDL「COPY は 2M 行 56 秒」フルコピー
カラム改名column renameexpand → backfill → feature flag → contract で改名する「改名」で統一リネーム

進化的アーキテクチャ

標準の語原語意味文脈による使い分け使わない
適応度関数fitness function守りたい性質が保たれているかを機械で判定する検査定訳。初出で原語を併記フィットネス関数、健全性チェック
漸進的変更incremental change小さく変えて小さく確かめる定訳インクリメンタルな変更
アーキテクチャ量子architectural quantum独立して変えられる最小の単位定訳クォンタム
fail open / fail closedfail open / fail closed検査自体が壊れたとき、通す側に倒れるか止める側に倒れるか英語のまま開放故障、閉鎖故障
fail fastfail fast続行せず早く失敗させる。通らない DDL をエラーで返すなどfail closed は検査の倒れ方、fail fast は処理の止め方
モジュラーモノリスmodular monolith1 つのデプロイ単位の中で境界を機械で守る構成分散モノリスの対義ではない
腐敗防止層anti-corruption layer他システムのモデルを自分の境界で変換する層DDD の定訳ACL(アクセス制御と混ざる)
境界boundaryモジュール・サービス・DB の分かれ目「境界を機械で守る」バウンダリ
分散モノリスdistributed monolith分かれているのに独立してデプロイできない状態
共有カーネルshared kernel分割せず参照データとして共有する中核DDD の語共通部品

可観測性

標準の語原語意味文脈による使い分け使わない
可観測性observability外から見える出力で内部の状態を推定できること定訳。「o11y」は会話のみ監視(monitoring とは別)
三本柱three pillarsメトリクス・トレース・ログ
トレース、スパンtrace / span1 リクエストの経路と、その中の 1 区間trace_id / span_id はコード体追跡
構造化ログstructured logging1 行 1 JSON のログJSON ログ
canonical log linecanonical log line1 リクエスト 1 行に詰めたアクセスログ英語のまま要約ログ
相関 IDcorrelation IDログとトレースを結ぶ鍵。W3C Trace Context の trace_id追跡 ID
昇格シグナル—構成を見直すべきかの判断材料となるメトリクス(プール使用率・authz レイテンシ・outbox 滞留)greenfield の固有語。初出で説明を添える
エラーバジェットerror budgetSLO を満たしつつ許容できる失敗の量許容誤差
SLI / SLO / SLA—指標 / 目標 / 契約3 つを混ぜない。SLA は契約の語
監視monitoring既知の状態を閾値で見張る可観測性は未知の問いに答えられること。別の語モニタリング(併記は可)
ヘルスチェックhealth check稼働を確認する問い合わせliveness(生きているか)/ readiness(受け付けられるか)/ startup(起動中か)を区別する死活監視
グレースフルシャットダウンgraceful shutdown受け付けを止め、処理中を終えてから終了する「drain」は接続を抜く段階排水、優雅な停止
タイムアウト、デッドラインtimeout / deadline待つ上限 / 期限の時刻。デッドラインは下流へ残り時間として伝播する時間切れ
リトライ、バックオフretry / backoff / jitter再試行と、その間隔の延ばし方とゆらぎ冪等な操作にだけ再送
サーキットブレーカーcircuit breaker失敗が続く呼び先への呼び出しを一時的に遮断する遮断器

認証・認可

標準の語原語意味文脈による使い分け使わない
認証 / 認可authentication / authorization誰かを決める / 何をしてよいかを決める必ず分けて書く認証認可(ひとまとめ)
OIDCOpenID Connectログインのプロトコル発行元は issuer
issuerissuerトークンの発行元 URL(iss)英語のまま発行者
M2Mmachine-to-machineサービス間の認証。client_credentials「M2M トークン」サービス間認証(併記は可)
ステップアップ認証step-up authentication危険操作の前に追加の認証を求める再認証(一般語と混ざる)
AALAuthenticator Assurance Level認証の強度。NIST SP 800-63B「AAL2」認証レベル
IAL / FALIdentity / Federation Assurance Level身元確認の強度 / 連携の強度。NIST SP 800-63-3AAL と並ぶ 3 軸
RBAC / ABAC / ReBACrole / attribute / relationship-based access control役割 / 属性 / 関係で判定する認可3 つを区別する
トークンイントロスペクションtoken introspectionトークンの有効性を発行元に問い合わせるJWT のローカル検証との対比
ReBACrelationship-based access control関係タプルで判定する認可OpenFGA の文脈関係ベース認可
スコープscopeトークンに付く権限の範囲internal:* はコード体権限(authorization と混ざる)

構造とデータ連携

標準の語原語意味文脈による使い分け使わない
モノレポmonorepo複数のサービスを 1 つのリポジトリで持つ単一リポジトリ
outbox / inboxoutbox / inbox pattern業務の書き込みと同じトランザクションでイベントを記録し、別経路で配送・受信する英語のまま送信箱、受信箱
relayrelayoutbox の未送信をバスへ送る常駐処理英語のまま中継
at-least-onceat-least-once delivery重複はあるが欠落はない配送英語のまま最低 1 回配送
at-most-onceat-most-once delivery欠落はあるが重複はない配送英語のまま
exactly-onceexactly-once(processing)配送は at-least-once のまま、受信側の重複排除で処理を 1 回にする「exactly-once の配送」とは書かない。処理の性質として書く厳密 1 回
重複排除deduplication同じメッセージを 2 回処理しないinbox や冪等キーで実現するデデュープ(併記は可)
順序保証ordering同じグループ内で送信順に届くSNS / SQS FIFO の文脈
強整合性strong consistency書き込み直後に全員が同じ値を読める結果整合性との対比
トランザクション境界transaction boundary1 つのトランザクションに含める範囲「outbox への追記は同じトランザクション」
ストラングラーstrangler fig旧システムを少しずつ置き換える移行パターンFowler の語絞め殺し
冪等キーidempotency key同じ操作の試行を同一と見なす鍵Idempotency-Key はコード体重複防止キー
結果整合性eventual consistency時間がたてば整合する定訳最終的整合性
配送delivery(メッセージ)バスがメッセージを届けることSNS → SQS の文脈配信(放送の語感)

基礎理論の語

設計の語の下にある理論の語。原典の著者と年を添える。

情報理論と符号

標準の語原語出典(著者・年)意味この文書群での対応
情報量、ビットinformation / bitClaude Shannon, “A Mathematical Theory of Communication”(1948)。bit の語は John Tukey不確かさの減り方を測る単位
エントロピーentropyShannon(1948)情報源の不確かさの平均比喩として「コードのエントロピー」とは書かない。使うなら乱数の品質など本来の意味で
冗長性redundancyShannon(1948)伝えたい量より多く送る分。誤りの検出と訂正に使う冗長構成(Multi-AZ)とは別の語。文脈で区別する
信号と雑音、SN 比signal / noise、signal-to-noise ratio通信工学。Shannon–Hartley の定理(1948)本物の信号と、それを隠す揺れアラートの「ノイズ」、差分運用で「揺れる検査を飼う」はこの比喩。使うときは何が信号かを書く
誤り検出、誤り訂正error detection / correctionRichard Hamming, “Error Detecting and Error Correcting Codes”(1950)受け取った側で壊れを見つける / 直すチェックサム、CRC
チェックサム、CRCchecksum / cyclic redundancy checkCRC は W. Wesley Peterson(1961)データの壊れを検出する短い値転送や保存の検証
ハッシュ、ダイジェストhash / digest暗号学的ハッシュは Merkle–Damgård 構成(1979)。SHA-2 は NIST FIPS 180-2(2001)任意長の入力から固定長の値を作る。暗号学的ハッシュは衝突を見つけにくいイメージの digest、cosign の署名対象、秘密の比較はハッシュで
圧縮(可逆 / 非可逆)lossless / lossy compressionHuffman 符号(1952)、Lempel–Ziv(1977 / 1978)元に戻せる圧縮 / 戻せない圧縮ログの保管、画像
符号化encoding—情報を別の表現にする(圧縮も暗号化も含む広い語)base64 は符号化であって暗号化ではない。混同しない
乱数、疑似乱数random / pseudorandom—真の乱数 / 決定的に生成した乱数列trace_id、冪等キーには暗号学的に安全な乱数を使う

データベース理論

標準の語原語出典(著者・年)意味この文書群での対応
関係モデルrelational modelEdgar F. Codd, “A Relational Model of Data for Large Shared Data Banks”(1970)データを関係(表)で表し、関係代数で操作するリレーショナルモデルと併記は可
関係代数relational algebraCodd(1970)選択・射影・結合などの演算SQL の背後にある語
SQLStructured Query LanguageChamberlin & Boyce(1974)。ISO/IEC 9075関係データベースの問い合わせ言語
正規化、正規形normalization / normal formsCodd(1971–74)。BCNF は Boyce & Codd(1974)更新時の矛盾を防ぐために関数従属に沿って表を分ける第 3 正規形、ボイス・コッド正規形
関数従属functional dependencyCodd(1971)ある属性が決まれば別の属性が決まる正規化の判定基準
非正規化denormalization—読みの速さのために意図的に冗長を持つreadmodel、replicaview
候補キー、主キー、外部キーcandidate / primary / foreign keyCodd(1970)行を一意に決める属性の組 / 選んだもの / 他の表の主キーへの参照外部キーのグラフが habakiri の入力
参照整合性referential integrityCodd(1970)。SQL の制約として SQL-89外部キーの先が必ず存在するDB をまたぐ外部キーを禁じる話。CASCADE はライフサイクル一体の印
結合joinCodd(1970)複数の表を条件で組み合わせる内部 / 外部 / 自己結合
トランザクション、ACIDtransaction / ACIDGray(1981)、Haerder & Reuter(1983)古典の表と同じ
直列化可能性serializabilityEswaran, Gray, Lorie, Traiger(1976)。Papadimitriou(1979)並行実行の結果が、何らかの直列実行と同じになる分離レベルの最上位
分離レベルisolation levelsANSI SQL-92。批判は Berenson ほか, “A Critique of ANSI SQL Isolation Levels”(1995)READ UNCOMMITTED / READ COMMITTED / REPEATABLE READ / SERIALIZABLE異常の語: ダーティリード、ノンリピータブルリード、ファントムリード
2 相ロックtwo-phase locking(2PL)Eswaran ほか(1976)ロックを取る段階と放す段階を分けて直列化可能性を保証する2 相コミット(2PC)とは別の語
MVCCmultiversion concurrency controlDavid Reed(1978)。Bernstein & Goodman(1981)行の複数の版を持ち、読みがロックを待たないInnoDB の読み。「読みがロック待ち行列に並ばない」
スナップショット分離snapshot isolationBerenson ほか(1995)トランザクション開始時点の版を読む
ロック待ち、デッドロックlock wait / deadlock—他のトランザクションのロックを待つ / 互いに待ち合うMySQL の 1205 はロック待ちのタイムアウト、1213 がデッドロック。区別する
WALwrite-ahead loggingGray(1978)。ARIES は Mohan ほか(1992)変更を先にログへ書き、障害後に復元する永続性の実装。レプリケーションもこれを使う
B ツリー、B+ ツリーB-tree / B+ treeBayer & McCreight(1972)ディスク向きの平衡木。RDB のインデックスの標準インデックスの追加は ALGORITHM=INPLACE
LSM ツリーlog-structured merge-treeO’Neil, Cheng, Gawlick, O’Neil(1996)追記して後でまとめる。書き込み重視のストアRDB との対比でのみ
インデックスindex—検索を速くするための補助構造索引と書かない
レプリケーションreplication—同じデータを複数のノードに持つプライマリ / レプリカ。マスター / スレーブとは書かない
読み取りレプリカread replica—読みだけを受けるレプリカReplicaView の語源
パーティショニング、シャーディングpartitioning / sharding—1 つの表を範囲やハッシュで分ける / 複数のノードに分けるDB をサービスごとに分けるのはどちらでもない。「分離」と書く
マテリアライズドビューmaterialized view—問い合わせの結果を表として保存するreadmodel の一形態
オンライン DDLonline DDLMySQL 5.6(2013)以降の機能名読み書きを止めずにスキーマを変えるDB マイグレーションの表と同じ
CQRSCommand Query Responsibility SegregationGreg Young(2010)書きと読みのモデルを分けるCQS(Meyer)はメソッドの原則、CQRS はアーキテクチャ。greenfield は CQS
イベントソーシングevent sourcingMartin Fowler, bliki(2005)状態でなく出来事の列を保存する複式簿記からの説明は別の記事
冪等idempotentBenjamin Peirce(1870、代数学)何度適用しても結果が同じ冪等キー、Idempotent Receiver

グラフ理論と統計(構造の分析で使うもの)

標準の語原語出典(著者・年)意味この文書群での対応
グラフ、頂点、辺graph / vertex / edgeEuler(1736)に始まる点と、点をつなぐ線テーブルを頂点、外部キーを辺にする
次数degree—頂点につながる辺の数hub の判定(次数の閾値)
連結成分connected component—互いに辿れる頂点の集まり孤立テーブル = 大きさ 1 の成分
橋、2-辺連結成分bridge / 2-edge-connected componentTarjan(1974)取ると分断される辺 / 橋を含まない塊切断点、ブロック
媒介中心性betweenness centralityLinton Freeman(1977)最短経路がどれだけその辺(頂点)を通るかGirvan–Newman の判定基準
コミュニティ検出community detection—内側が密で外とは疎な部分集合を見つける分割案
Girvan–Newman 法Girvan–Newman algorithmGirvan & Newman(2002)媒介中心性の高い辺から順に取り除く決定的なので採用。大規模では遅い
モジュラリティ QmodularityNewman & Girvan(2004)分割の良さ。偶然より内側の辺がどれだけ多いか0.3 以上で構造あり、の目安
Louvain 法 / Leiden 法Louvain / LeidenBlondel ほか(2008)/ Traag ほか(2019)モジュラリティを貪欲に最適化する速い手法大規模入力の代替候補
調整済みランド指数adjusted Rand index(ARI)Hubert & Arabie(1985)2 つの分割の一致度。1 で同じ、0 で偶然と同程度Physical × Logical の比較
自己相互情報量、NPMIpointwise mutual information / normalized PMIChurch & Hanks(1990)。正規化は Bouma(2009)2 つの出来事が偶然より一緒に起きる度合い同一トランザクション共起の重み
変異テストmutation testingDeMillo, Lipton, Sayward(1978)コードを少し壊してテストが落ちるかを見るゲート自身を壊して確かめる

ネットワークとプロトコル

標準の語原語出典(著者・年)意味この文書群での対応
TCP/IPTransmission Control Protocol / Internet ProtocolCerf & Kahn(1974)。RFC 791 / 793(1981)インターネットの基盤。IP が届け、TCP が順序と再送を保証する
OSI 参照モデルOSI reference modelISO 7498(1984)7 層のモデル。L4 / L7 の呼び方の由来ALB は L7、NLB は L4
DNS、名前解決Domain Name System / name resolutionPaul Mockapetris, RFC 1034 / 1035(1987)名前から IP アドレスを引くissuer の名前を全員が同じ名前で解決できることが要る
スプリットホライズン DNSsplit-horizon DNS—同じ名前を、問い合わせ元の場所によって別の宛先に解決する本番で Keycloak の issuer を 1 つに固定しつつ VPC 内から到達させる手段
TTLtime to liveIP ヘッダ(RFC 791)。DNS のキャッシュ期間にも転用生存時間。期限が来たら捨てるDNS キャッシュ、フラグ定義のキャッシュ
HTTPHypertext Transfer ProtocolBerners-Lee(1991)。現行は RFC 9110–9112(2022)Web の要求と応答
HTTP/2、SETTINGSHTTP/2RFC 7540(2015)→ RFC 9113(2022)1 接続で多重化する版。SETTINGS フレームは接続の設定交換CVE-2026-78669 は SETTINGS の洪水による DoS
TLS、終端Transport Layer Security / TLS terminationRFC 8446(TLS 1.3、2018)通信の暗号化と相手の認証 / 暗号化を解く場所ALB の 3 責務の 1 つ。アプリは TLS を知らない
mTLSmutual TLSTLS の仕様内(クライアント証明書)双方が証明書で認証するサービス間認証の代替案。greenfield は M2M トークンを選んだ
リバースプロキシ、ロードバランサreverse proxy / load balancer—手前で受けて振り分けるCaddy(ローカル)、ALB(AWS)
CIDR、サブネットClassless Inter-Domain Routing / subnetRFC 1519(1993)→ RFC 4632アドレスの範囲の書き方 / 分けた範囲VPC の設計
NATnetwork address translationRFC 1631(1994)内側のアドレスを外側に変換するNAT Gateway を置かない判断(費用)
VPC、セキュリティグループvirtual private cloud / security groupAWS の語(2009)仮想ネットワーク / インスタンス単位のステートフルな到達制御到達制御は SG で行う
Transit Gateway(TGW)AWS Transit GatewayAWS(2018)複数の VPC とアカウントをハブで接続する本番系の接続方式。greenfield は模擬しない
PrivateLink、VPC エンドポイントAWS PrivateLink / VPC endpointAWS(2017)インターネットを通さずにサービスへ到達するSNS / SQS をアカウント越えで使うときの選択肢
ingress / egressingress / egress—入ってくる通信 / 出ていく通信英語のまま。「イングレス」と書かない
idle timeout、keep-aliveidle timeout / keep-aliveHTTP/1.1(RFC 2068、1997)で keep-alive が既定無通信で切る時間 / 接続を使い回すALB の idle timeout とアプリのタイムアウトヒエラルキー
Cookie、SameSiteHTTP cookie / SameSiteRFC 6265(2011)。SameSite は RFC 6265bisブラウザが保持する小さな状態 / 他サイトからの送信制限SSR はブラウザに Cookie だけを渡す
CORSCross-Origin Resource SharingW3C(2014)→ Fetch Standard他オリジンからの読み取りをサーバが許可する仕組み
OAuth 2.0、OIDCOAuth 2.0 / OpenID ConnectRFC 6749(2012)/ OpenID Foundation(2014)認可の委譲 / その上の認証層認証・認可の表と同じ
JWT、JWKSJSON Web Token / JSON Web Key SetRFC 7519 / RFC 7517(2015)署名付きのクレーム / 検証用の公開鍵の集合issuer の JWKS を取って JWT を検証する
PKCEProof Key for Code ExchangeRFC 7636(2015)認可コードの横取りを防ぐSSR と agent クライアント
client_credentialsclient credentials grantRFC 6749 §4.4サービス自身がトークンを得るM2M
ステップアップ認証チャレンジOAuth 2.0 Step Up Authentication ChallengeRFC 9470(2023)401 で acr_values を要求し、再認証後に通す危険操作の前の AAL2 要求
Problem DetailsProblem Details for HTTP APIsRFC 7807(2016)→ RFC 9457(2023)エラー応答の標準形式「エラーは problem で返す」。パニックも problem に変換する
Idempotency-KeyIdempotency-Key headerIETF draft(draft-ietf-httpapi-idempotency-key-header)同じ要求の再送を同一と見なすヘッダサービス間の紐付け
traceparentW3C Trace ContextW3C 勧告(2020)trace-id と parent-id を運ぶヘッダ可観測性の表と同じ。壊れていれば捨てて採番し直す
バックプレッシャーbackpressureReactive Streams(2014)で定式化受け手が処理できる量まで送り手を抑えるキューの消費速度、relay のバックオフ
レイテンシ、スループットlatency / throughput—1 件にかかる時間 / 単位時間あたりの件数「rps」「p99」のように単位を添える

OS とランタイム

標準の語原語出典(著者・年)意味この文書群での対応
プロセス、スレッドprocess / threadUnix(1971–)。POSIX スレッド(1995)独立したアドレス空間を持つ実行単位 / その中の実行の流れallinone は 1 プロセスに複数サービス
カーネル空間、ユーザー空間、システムコールkernel / user space、system call—OS の中 / アプリの側 / その境界を越える呼び出し
標準入出力、標準エラーstdin / stdout / stderrUnixプロセスの 3 つの既定ストリームログは stdout だけ。stderr と混ぜると行の順序が保証されない
終了コードexit statusUnix。0 が成功プロセスが返す整数go run は終了コードを伝播しないので先にビルドする
シグナルsignal(SIGTERM / SIGINT / SIGKILL)Unix。POSIX.1プロセスへの非同期の通知SIGTERM を受けてグレースフルシャットダウン。SIGKILL は捕まえられない
環境変数environment variableUnixプロセスに渡す名前と値の組つなぎ先は全部環境変数。秘密は SSM から
パイプ、リダイレクトpipe / redirectUnix(1973)プロセスの出力を次の入力へ / ファイルへtee でログをファイルにも書く
ソケットsocketBSD 4.2(1983)通信の端点Listen するポートだけをアプリが知る
ファイルディスクリプタ、ulimitfile descriptor / ulimitUnix開いたファイルや接続の番号 / その上限接続プールの上限と合わせる
名前空間、cgroupsnamespaces / control groupsLinux(namespaces 2002–、cgroups 2007)見える範囲を分ける / 資源を制限するコンテナの実体
コンテナ、イメージ、OCIcontainer / image / Open Container InitiativeDocker(2013)。OCI(2015)名前空間と cgroups で隔離した実行環境 / その雛形 / 標準規格Dockerfile、ECR、digest
非 root、capabilitiesnon-root / Linux capabilitiesLinux 2.2(1999)管理者権限で動かさない / 権限を細かく分ける最終ステージに USER。secure-defaults の検査
読み取り専用ルートファイルシステムread-only root filesystem—コンテナの / を書き込み不可にする非 root とセットで設計
競合状態race condition—実行の順序で結果が変わる不具合
TOCTOUtime-of-check to time-of-useMcPhee(1974)に遡る確認と使用の間に状態が変わる競合シンボリックリンクの差し替えなど。検査の後に対象が変わる
デッドロックの 4 条件Coffman conditionsCoffman, Elphick, Shoshani(1971)相互排除・保持と待機・横取り不可・循環待ちDB のデッドロックも同じ条件
時刻:壁時計と単調時計wall clock / monotonic clock—現在時刻 / 進むだけで戻らない時計経過時間は単調時計で測る。デッドライン伝播を相対時間にする理由
UTC、RFC 3339、ISO 8601—ISO 8601(1988)。RFC 3339(2002)協定世界時 / 日時の文字列形式ログの時刻は RFC 3339 の UTC 固定
NTP、時計のずれNetwork Time Protocol / clock skewRFC 958(1985)→ RFC 5905時刻を合わせる / サーバ間の差絶対時刻でデッドラインを送らない理由
fsync、ページキャッシュfsync / page cacheUnixディスクへ書き切る / OS がメモリに持つファイルの写し永続性(ACID の D)の実装
OOM killerout-of-memory killerLinuxメモリ不足時にプロセスを強制終了するメモリ上限と cgroups
単一障害点single point of failure(SPOF)—そこが落ちると全体が止まる要素Single-AZ の RDS は検証用。Multi-AZ の実測

古典の書籍の語

設計の語の多くは特定の本が定義し、その邦訳が定訳になっている。本ごとに、 この文書群で使う語と、コードの中での対応を書く。

PoEAA — Fowler『エンタープライズアプリケーションアーキテクチャパターン』

Martin Fowler, Patterns of Enterprise Application Architecture(Addison-Wesley, 2002)。 邦訳は翔泳社(2005)。パターン名はこの邦訳の表記に従う。

標準の語(定訳)原語意味この文書群での対応使わない
ドメインモデルDomain Model振る舞いとデータを持つオブジェクトでドメインを表すdomain パッケージ。書き込み経路だけが通るドメインオブジェクト層
トランザクションスクリプトTransaction Script手続きを 1 本の関数で書くusecase が長くなったときの退化形として対比に使う手続き型
サービスレイヤService Layerアプリケーションの操作の入口を定義する層usecase。業務の手順を持ち、バージョンを持たないサービス層
アクティブレコードActive Record行に対応するオブジェクトが自分で DB を読み書きするYii 1.x / Rails の ORM の型。habakiri の解析対象ActiveRecord(クラス名として書くとき以外)
データマッパーData Mapperオブジェクトと DB の対応を別の層が担うsqlc の生成コード + repositoryORM(一般語なので限定して使う)
リポジトリRepositoryコレクションのようにオブジェクトを出し入れする口repository。Atomic な書き込みDAO(別のパターン)
ユニットオブワークUnit of Work1 業務の変更をまとめて 1 トランザクションで確定するAtomic.Do。outbox への追記も同じトランザクション作業単位
アイデンティティマップIdentity Map同じ行を 1 トランザクション内で 1 つのオブジェクトに保つ使っていない。対比でのみ
レイジーロードLazy Load必要になるまで読み込みを遅らせるORM の挙動として言及するとき遅延読み込み(併記は可)
楽観的オフラインロックOptimistic Offline Lockバージョン番号で競合を検出する冪等キーと組み合わせる場面で楽観ロック(併記は可)
悲観的オフラインロックPessimistic Offline Lock先にロックを取って競合を防ぐDDL のロック待ち(1205)の対比で悲観ロック(併記は可)
ゲートウェイGateway外部システムへのアクセスを 1 つのオブジェクトに包むgearlink(他サービスの client)、blobstoreラッパー
リモートファサードRemote Facade粗い粒度のリモート呼び出し口internal リスナーの API
データトランスファーオブジェクトData Transfer Object(DTO)呼び出しの間でデータを運ぶだけのオブジェクトhuma の入出力型。「DTO」と略してよい転送オブジェクト
セパレートインタフェースSeparated Interfaceインタフェースと実装を別のパッケージに置く差し込み口(consistency.Bus、blobstore、flagsource)。core は口だけを持つ差し込み口(独自語なので初出で対応を書く)
プラグインPlugin実装を設定で差し替えるeventbus/snssqs のような実装モジュール
レジストリRegistryよく使うオブジェクトを探すための既知の場所使っていない。グローバルの TracerProvider は後勝ちになるので明示渡しにした
バリューオブジェクトValue Object同一性でなく値で比べる小さなオブジェクトDDD の値オブジェクトと同じ値型
スペシャルケースSpecial Casenull の代わりに特別な振る舞いを持つオブジェクトを返すno-op の Tracerヌルオブジェクト(併記は可)
フロントコントローラFront Controller全リクエストを 1 か所で受けて振り分けるcore/httpapi のルータと基盤ミドルウェア

DDD — Evans『エリック・エヴァンスのドメイン駆動設計』

Eric Evans, Domain-Driven Design(Addison-Wesley, 2003)。邦訳は翔泳社(2011)。

標準の語(定訳)原語意味この文書群での対応使わない
エンティティEntity同一性で識別されるオブジェクトdomain の型
値オブジェクトValue Object値で比べるオブジェクトPoEAA のバリューオブジェクトと同じ。表記は「値オブジェクト」
集約Aggregate1 つのトランザクションで整合を保つ境界Atomic の範囲。FK グラフから集約の境界を推定する話は habakiriアグリゲート
リポジトリRepository集約の出し入れ口PoEAA と同じ
ドメインサービスDomain Serviceエンティティに属さない業務の操作
境界づけられたコンテキストBounded Contextモデルが一貫して通用する範囲サービス(photo / gear)の単位境界コンテキスト、バウンデッドコンテキスト
ユビキタス言語Ubiquitous Languageチームとコードで同じ語を使うことこの用語表の目的共通言語
コンテキストマップContext Mapコンテキスト間の関係の図C4 の Context 図に相当する部分
共有カーネルShared Kernel複数のコンテキストが共有するモデルhub として割らないテーブル群共通部品
腐敗防止層Anti-Corruption Layer他コンテキストのモデルを変換して受ける層replicaview(他サービス由来の表示用データ)ACL
公開ホストサービスOpen Host Service他コンテキスト向けに公開する一連のサービスinternal API
公表された言語Published Languageコンテキスト間でやり取りする共通の形式OpenAPI、イベントの envelope

EIP — Hohpe & Woolf『Enterprise Integration Patterns』

Gregor Hohpe, Bobby Woolf, Enterprise Integration Patterns(Addison-Wesley, 2003)。 パターン名は英語のまま使う(邦訳の表記が定着していない)。

標準の語原語意味この文書群での対応使わない
Publish-Subscribe Channel同1 つのメッセージを複数の受け手へSNS トピック → 受け手ごとの SQS キューpub/sub(略記は可)
Point-to-Point Channel同1 つのメッセージを 1 つの受け手へSQS キュー
Guaranteed Delivery同送り手が落ちてもメッセージを失わないoutbox(DB に永続化してから送る)到達保証
Transactional Client同メッセージの送受信をトランザクションに含めるoutbox への追記を業務のトランザクションに含める
Idempotent Receiver同同じメッセージを 2 回受けても結果が 1 回分inbox による重複排除冪等な受信者
Competing Consumers同複数の受け手が 1 つのキューを分担するSQS の consumer を複数にしたとき
Polling Consumer同受け手が能動的に取りに行くgear の consumerポーリング
Correlation Identifier同要求と応答・ログを結ぶ IDtrace_id(W3C Trace Context)相関 ID(併記は可)
Dead Letter Channel同処理できないメッセージの退避先SQS の dead-letter queueデッドレター(併記は可)
Message Translator同形式を変換する腐敗防止層の実装手段

Release It! — Nygard

Michael T. Nygard, Release It!(Pragmatic Bookshelf, 2007、第 2 版 2018)。邦訳はオーム社(2009)。

標準の語原語意味この文書群での対応使わない
サーキットブレーカーCircuit Breaker失敗が続く呼び先への呼び出しを遮断する可観測性の表と同じ遮断器
バルクヘッドBulkhead障害を区画に閉じ込めるDB 接続プールのサービス分離隔壁
タイムアウトTimeouts待ち続けないタイムアウトヒエラルキー、デッドライン伝播
フェイルファストFail Fast続行できないならすぐ失敗する通らない DDL をエラーで返す早期失敗
定常状態Steady State人手なしで動き続けられる状態回収ジョブ、ログの保持期間
ハンドシェイクHandshaking受け付けられるかを先に確かめるreadiness

継続的デリバリー — Humble & Farley

Jez Humble, David Farley, Continuous Delivery(Addison-Wesley, 2010)。邦訳は アスキー・メディアワークス(2012)。Blue/Green とカナリアの出典はここである。

標準の語原語意味この文書群での対応使わない
デプロイメントパイプラインdeployment pipelineコミットから本番までの自動化された段CI → image-release → deploy.ymlビルドパイプライン
コミットステージcommit stageコミットごとに走る最初の検査mise run check と CI
Blue/Green デプロイblue-green deployment新旧 2 系統を並走させて切り替えるデリバリーの表と同じ
カナリアリリースcanary releasing一部のユーザーにだけ新版を出すデリバリーの表のカナリア
構成管理configuration management環境と設定をコードで管理するcompose、Terraform、realm-as-code

ヘキサゴナル / クリーンアーキテクチャ

Alistair Cockburn, Hexagonal Architecture(2005)。Robert C. Martin, Clean Architecture (Prentice Hall, 2017。邦訳はアスキードワンゴ、2018)。

標準の語原語意味この文書群での対応使わない
ポートとアダプタPorts and Adapters中心のロジックを口(ポート)で囲み、外側の実装(アダプタ)を差し替えるhandler は HTTP のアダプタ。v1 / v2 は同じ usecase への別アダプタヘキサゴナル(通称。初出で併記)
ユースケースUse Caseアプリケーション固有の業務の手順usecase パッケージアプリケーションサービス(DDD の語。同じものを指すときは usecase に寄せる)
依存の向きdependency rule内側は外側を知らないcore は差し込み口だけを持ち、実装は外のモジュール

もっと古い古典 — 1960〜90 年代の論文と本

上の本が前提にしている語。原典の著者と年を添える。

標準の語原語出典(著者・年)意味この文書群での対応
コンウェイの法則Conway’s lawMelvin Conway, “How Do Committees Invent?”(1968)システムの構造は、それを作る組織の通信構造を写すサービスの境界とチームの境界を合わせる話。チームトポロジーの前提
情報隠蔽information hidingDavid Parnas, “On the Criteria To Be Used in Decomposing Systems into Modules”(1972)変わりやすい決定をモジュールの中に閉じ込める。分解の基準モジュール境界を機械で守る理由。マイクロサービスの表と同じ
結合度、凝集度coupling / cohesionYourdon & Constantine, Structured Design(1979。Constantine の 1960 年代後半の仕事に基づく)モジュール間の依存の強さ / モジュール内の関連の強さ疎結合・高凝集。コナーセンスはこれを細かくしたもの
関心の分離separation of concernsEdsger Dijkstra, “On the role of scientific thought”(1974)1 つの側面ずつ考えられるように分ける横断的関心事(core)と業務(usecase / domain)を分ける
構造化プログラミングstructured programmingDijkstra, Dahl, Hoare, Structured Programming(1972)goto を使わず、順次・分岐・反復で組む
人月の神話The Mythical Man-MonthFrederick Brooks(1975。邦訳『人月の神話』)人と月は交換できない書名として使う
ブルックスの法則Brooks’s law同上遅れたプロジェクトに人を足すとさらに遅れる
概念的統一性conceptual integrity同上設計が 1 つの考えで貫かれていること規約と ADR を 1 か所に持つ理由
セカンドシステム効果second-system effect同上2 作目は機能を盛りすぎる螺旋の歴史で扱う
本質的複雑性 / 偶有的複雑性essential / accidental complexityBrooks, “No Silver Bullet”(1986)問題そのものの難しさ / 道具や表現が生む難しさ道具で消せるのは偶有的なものだけ
銀の弾などないNo Silver Bullet同上1 桁の生産性向上をもたらす単一の技術は無い
ソフトウェア進化の法則Lehman’s laws of software evolutionMeir Lehman(1974 / 1980)使われるシステムは変わり続け、何もしなければ複雑さは増す進化的アーキテクチャの前提。「設計は放っておくと崩れる」
ウォーターフォールwaterfallWinston Royce(1970。本人は改良版を提案していた)工程を順に 1 回ずつ通す螺旋の歴史で扱う
スパイラルモデルspiral modelBarry Boehm(1986)リスク駆動で反復する同上
早すぎる最適化premature optimizationDonald Knuth(1974)測る前に最適化しない「測れることは測ってから主張する」
堅牢性の原則robustness principle(Postel’s law)Jon Postel, RFC 761(1980)、RFC 1122(1989)送るときは厳密に、受けるときは寛容に壊れた traceparent は黙って捨てて採番し直す。ただし境界では厳密さを優先する場面もある
エンドツーエンド原則end-to-end argumentSaltzer, Reed, Clark, “End-to-End Arguments in System Design”(1984)正しさの保証は端点でしか完結しない。途中で頑張っても端点の検査は要るat-least-once の配送と受信側の inbox。配送基盤に exactly-once を求めない
論理時計、happened-beforelogical clocks / happened-beforeLeslie Lamport, “Time, Clocks, and the Ordering of Events in a Distributed System”(1978)分散した出来事の順序は物理時刻で決められない順序保証、デッドライン伝播を相対時間にする理由
ACIDatomicity / consistency / isolation / durabilityHaerder & Reuter(1983)。Jim Gray, “The Transaction Concept”(1981)トランザクションの 4 性質Atomic の範囲。outbox を同じトランザクションに含める
2 相コミットtwo-phase commit(2PC)Gray(1978)ほか複数の資源にまたがる原子的な確定使わない。outbox で代替する理由として言及
契約による設計design by contractBertrand Meyer, Object-Oriented Software Construction(1988 / 1997)事前条件・事後条件・不変条件で振る舞いを約束するAPI の「契約」という語の由来
コマンドクエリ分離command-query separation(CQS)同上状態を変える操作と値を返す操作を分けるADR 0005。repository(書き)と readmodel(読み)。CQRS とは別の語
CAPconsistency / availability / partition toleranceEric Brewer(2000)分断時に一貫性と可用性は両立しない結果整合性を選ぶ根拠
結果整合性(原典)eventually consistentWerner Vogels, “Eventually Consistent”(2008)更新が止まれば全レプリカは同じ値に収束するデータ連携の表と同じ
デザインパターンdesign patternsGamma, Helm, Johnson, Vlissides(1994。邦訳『オブジェクト指向における再利用のためのデザインパターン』)再利用できる設計の型 23 種次の行で使うものだけ
アダプタ、ファサード、デコレータ、ストラテジAdapter / Facade / Decorator / Strategy同上変換して合わせる / 入口を 1 つに / 振る舞いを包んで足す / 差し替え可能な手順handler はアダプタ、ミドルウェアはデコレータ、差し込み口の実装はストラテジ
シングルトンSingleton同上インスタンスを 1 つに限るグローバルの TracerProvider は後勝ちになるので使わず、明示渡しにした

設計原則 — SOLID とその周辺

原則は 1 冊の本ではなく、論文や記事が出どころである。略語はそのまま使い、初出で展開する。

標準の語原語出典(著者・年)意味この文書群での対応
SOLID—原則は Robert C. Martin がまとめた(2000 年ごろ、Agile Software Development 2003)。頭字語は Michael Feathers下の 5 原則の総称略語のまま。「SOLID 原則」と書く
単一責任の原則single responsibility principle(SRP)Martin(2003)。Parnas の情報隠蔽と DeMarco の凝集に由来モジュールを変える理由は 1 つであるべきcore/logger 以外の core はログしない、のような「誰が何をするか」の線引き
開放閉鎖の原則open-closed principle(OCP)Bertrand Meyer, Object-Oriented Software Construction(1988)拡張に開き、修正に閉じる差し込み口(consistency.Bus など)に実装を足し、core は変えない
リスコフの置換原則Liskov substitution principle(LSP)Barbara Liskov(1987)。Liskov & Wing, “A Behavioral Notion of Subtyping”(1994)派生型は基底型の約束を破らずに置き換えられるv2 アダプタは同じ usecase の約束を守る。契約による設計と対で読む
インタフェース分離の原則interface segregation principle(ISP)Martin(1996)使わないメソッドに依存させないBus と Handler を別のインタフェースにする
依存性逆転の原則dependency inversion principle(DIP)Martin, “The Dependency Inversion Principle”(1996)上位は下位の実装でなく抽象に依存するcore が口を持ち、実装モジュールが core に依存する(ADR 0022)
依存性注入dependency injection(DI)Martin Fowler, “Inversion of Control Containers and the Dependency Injection pattern”(2004)依存を外から渡す合成ルート(cmd / app)で組み立てる。TracerProvider の明示渡し
制御の反転inversion of control(IoC)Fowler(2004)。語は Johnson & Foote(1988)呼ぶ側と呼ばれる側を逆にする。フレームワークが自分のコードを呼ぶDI と区別する。IoC は性質、DI はその一手法
合成ルートcomposition rootMark Seemann, Dependency Injection in .NET(2011)依存を組み立てる唯一の場所各サービスの cmd / app(ADR 0003)
非循環依存の原則acyclic dependencies principle(ADP)Martin(1996、パッケージ原則)モジュールの依存に循環を作らないgo.mod の replace から作る依存グラフ。affected の前提
安定依存の原則stable dependencies principle(SDP)同上変わりやすいものから変わりにくいものへ依存するcore は軽依存に保つ
DRYDon’t Repeat YourselfHunt & Thomas, The Pragmatic Programmer(1999)知識の表現を 1 か所にするタイトル規約を schema と検査スクリプトで同じ関数にする
KISSKeep It Simple, StupidKelly Johnson(1960 年代、Lockheed)単純に保つ
デメテルの法則Law of DemeterLieberherr, Holland, Riel(1988)直接の相手にだけ話す。a.b().c().d() を書かない
Tell, Don’t AskTell, Don’t AskAndy Hunt & Dave Thomas(Pragmatic Programmers, 2003)状態を聞いて判断せず、やってほしいことを伝えるドメインモデルに振る舞いを置く理由
継承より合成composition over inheritanceGoF(1994)の原則の一つ振る舞いの再利用は継承でなく合成でミドルウェアはデコレータで積む
最小驚きprinciple of least astonishment1960 年代後半から。Geoffrey James, The Tao of Programming(1987)などで定式化使う人が驚かない振る舞いにする既定値の決め方
最小権限principle of least privilegeSaltzer & Schroeder, “The Protection of Information in Computer Systems”(1975)必要な権限だけを与えるtask role、スコープ internal:*、非 root
フェイルセーフ既定値fail-safe defaults同上(1975)許可は明示、既定は拒否fail closed の原典。「未設定は本番として扱う」(ADR 0016)
多層防御defense in depth軍事用語から。NSA の文書(2000 年代)で定式化1 つの防御に頼らないネットワーク・認証・認可・DB の GRANT を重ねる
ゼロトラストzero trustJohn Kindervag, Forrester(2010)ネットワークの位置を信用しない「到達制御の実効性はネットワーク層でなく GRANT・scope・JWT 検証に置く」

リファクタリング — Fowler『リファクタリング』

Martin Fowler, Refactoring: Improving the Design of Existing Code(Addison-Wesley, 1999 / 2nd ed. 2018)。 邦訳『リファクタリング(第 2 版)』(オーム社, 2019)。臭いとリファクタリングの名前は第 2 版の邦訳に従う。

標準の語原語意味この文書群での対応使わない
リファクタリングrefactoring外から見た振る舞いを変えずに内部構造を変える。小さな手順の名前付きカタログ「用語を直す」「ファイルを移す」はリファクタリングではないリファクタ、作り直し
2 つの帽子two hats機能追加とリファクタリングを同時にやらないPR を「振る舞いの変更」と「構造の変更」で分ける
準備のためのリファクタリングpreparatory refactoring変更を楽にするために先に構造を直すexpand の前の整理
機会的リファクタリングopportunistic refactoring触ったついでに少し良くするボーイスカウトルールと同じ
コードの臭いcode smell構造に問題がある兆候。語は Kent Beck臭いの名前は下の行の表記でコードスメル(併記は可)
重複したコードDuplicated Code同じ知識が複数の場所にあるDRY と対で読む重複コード
長い関数Long Function1 つの関数が長すぎる第 1 版は「長いメソッド」
変更の偏りDivergent Change1 つのモジュールが別々の理由で何度も変わる単一責任の原則の裏返し発散的変更
変更の分散Shotgun Surgery1 つの変更のために多くのモジュールを触る境界の引き直しドリルで数えた「34 ファイル・230 箇所」はこの臭い散弾銃手術
特性の横恋慕Feature Envy他のオブジェクトのデータばかり使うドメインモデルに振る舞いを置く理由属性の横恋慕
データの群れData Clumpsいつも一緒に現れるデータの組パラメータオブジェクトの導入へ
基本データ型への執着Primitive ObsessionID や金額を文字列や数値のまま持つ値オブジェクトへプリミティブ型への執着
疑わしき一般化Speculative Generalityいつか使うための仕組みYAGNI と対で読む。「使われない公開 API を先に生やさない」
メッセージの連鎖Message Chainsa.b().c().d()デメテルの法則と対で読む
仲介人Middle Man委譲するだけのクラス
内部的相互依存Insider Tradingモジュールどうしが内部をやり取りしすぎる境界を越える import を lint で止める不適切な関係(第 1 版)
データクラスData Classデータだけで振る舞いが無いクラスDTO は意図的なデータクラス
関数の抽出Extract Function関数の一部を名前付きの関数にする第 1 版は「メソッドの抽出」
関数のインライン化Inline Function抽出の逆
変数名の変更Rename Variable名前を意図に合わせる用語表に合わせる改名はこれ
関数の移動Move Function関数を使う側に近いモジュールへ移す
クラスの抽出Extract Class責務ごとにクラスを分ける
パラメータオブジェクトの導入Introduce Parameter Objectデータの群れを 1 つの型にする
条件記述のポリモーフィズムによる置き換えReplace Conditional with Polymorphism型による分岐を多相で置き換える
抽象によるブランチBranch By Abstraction差し替えたいものの前に抽象を置き、新旧を並走させて切り替えるPaul Hammant(2007)、Fowler の bliki(2014)。expand/contract と同じ構造を コードで行う。長命なブランチを作らない抽象化ブランチ
技術的負債technical debt今の近道が将来の利子になるWard Cunningham(1992)。Fowler は「負債の象限」(2009)で意図的 / 無謀の軸を足した技術的借金

XP と TDD — Beck『エクストリームプログラミング』『テスト駆動開発』

Kent Beck, Extreme Programming Explained(Addison-Wesley, 1999 / 2nd ed. 2004。邦訳はオーム社, 2015)、 Test-Driven Development: By Example(2002。邦訳『テスト駆動開発』オーム社, 2017)。

標準の語原語意味この文書群での対応使わない
継続的インテグレーションcontinuous integration(CI)変更を頻繁に統合し、毎回自動で検査するCI は略語として使う。「CI が止める」継続的統合
テスト駆動開発test-driven development(TDD)失敗するテストを先に書き、通してから整理する「red / green / refactor」は英語のままテストファースト(手順の一部)
ペアプログラミングpair programming2 人で 1 つのコードを書くペアプロ(会話のみ)
小さなリリースsmall releases小さく頻繁に出すデプロイ分離・プログレッシブデリバリーの背景
シンプルな設計simple design今必要なものだけを作る
YAGNIYou Aren’t Gonna Need It必要になるまで作らない英語のまま。「使われない公開 API を先に生やさない」
共同所有collective ownershipコードは誰でも直してよい共同所有権
持続可能なペースsustainable pace残業に頼らない速さで続ける
10 分ビルドten-minute buildビルドと検査を 10 分以内にaffected で変更モジュールだけ検査する動機

Google のソフトウェアエンジニアリング — Winters, Manshreck, Wright

Titus Winters, Tom Manshreck, Hyrum Wright (eds.), Software Engineering at Google (O’Reilly, 2020)。邦訳『Googleのソフトウェアエンジニアリング』(オライリー・ジャパン, 2021)。

標準の語原語意味この文書群での対応使わない
ハイラムの法則Hyrum’s Law利用者が十分いれば、契約に書いていない振る舞いにも依存されるAPI の破壊的変更の検査を機械にする理由
トランクベース開発trunk-based development長命なブランチを作らず main に小さく入れるPR は短命、main へ squash
モノレポmonorepo1 つのリポジトリで複数のシステムを持つ構造の表と同じ
大規模変更large-scale change(LSC)リポジトリ全体に及ぶ機械的な変更用語の一括修正、依存の一括更新
フレーキーテストflaky test同じコードで成功と失敗が揺れるテスト差分運用で「揺れる検査」を扱う話不安定なテスト(併記は可)
テストサイズtest sizes(small / medium / large)使う資源で分類する。DB を使うテストは medium 以上「DB 系のテストは mysql 到達時のみ」単体 / 統合(分類軸が違う)
廃止deprecation古いものを計画的に止めるAPI の旧版は deprecated を 1 リリース挟む非推奨(状態の語としては可)
左シフトshift left問題の検出をプロセスの早い段階へ寄せる手元の mise run check を CI と同じにするシフトレフト(併記は可)
可読性readabilityコードが読めることを組織で保証する仕組み
時間で積分したプログラミングprogramming integrated over timeソフトウェアエンジニアリングの定義。寿命を考える適応度関数が要る理由

マイクロサービス — Newman、S. Fowler

Sam Newman, Building Microservices(O’Reilly, 2015 / 2nd ed. 2021。邦訳『マイクロサービスアーキテクチャ』オライリー・ジャパン, 2016 / 2022)、 Monolith to Microservices(2019。邦訳『モノリスからマイクロサービスへ』2020)。 Susan J. Fowler, Production-Ready Microservices(O’Reilly, 2016。邦訳『プロダクションレディマイクロサービス』2017)。

標準の語原語意味この文書群での対応使わない
情報隠蔽information hiding境界の内側を外に見せない「サービスは他サービスの内部を知らない」カプセル化(オブジェクトの語)
疎結合、高凝集loose coupling / high cohesion境界をまたぐ依存を少なく、中は密にモジュラリティ Q の意味
コレオグラフィ / オーケストレーションchoreography / orchestrationイベントで各自が動く / 指揮役が順に呼ぶoutbox → SNS → SQS はコレオグラフィ振り付け
サーガsaga複数サービスにまたがる処理を、補償で整合させるpending 状態パターン、回収ジョブ
コンシューマ駆動契約consumer-driven contracts利用側がテストとして契約を持つapi:breaking は提供側の契約検査。対比で
API ゲートウェイAPI gateway外部からの入口を 1 つに束ねるALB の 3 責務(TLS 終端・振り分け・到達制御)
ストラングラーstrangler fig旧システムを少しずつ置き換える構造の表と同じ
並行実行parallel run新旧を同時に動かして結果を比べるカラム改名の columncheck
合成トランザクションsynthetic transaction本物に似た操作を流して正しさを測るpromotion gate のフックが流すテスト書き込み合成監視(併記は可)
プロダクションレディproduction-ready安定性・信頼性・スケーラビリティ・耐障害性・大惨事対応・性能・監視・ドキュメントの基準を満たす守りの既定値の検査、Runbook、アラート本番対応
耐障害性fault tolerance依存先が落ちても自分は動くフラグ基盤が死んでも既定値で稼働フォールトトレランス(併記は可)
大惨事対応catastrophe-preparedness障害を起こしてみて備えるMulti-AZ フェイルオーバーとリストアの実測
Runbookrunbookアラートごとの対処手順docs/runbooks/。英語のまま手順書(一般語)

ソフトウェアアーキテクチャの基礎 / ハードパーツ — Richards, Ford ほか

Mark Richards, Neal Ford, Fundamentals of Software Architecture(O’Reilly, 2020。邦訳『ソフトウェアアーキテクチャの基礎』オライリー・ジャパン, 2022)。 Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani, Software Architecture: The Hard Parts (O’Reilly, 2021。邦訳『ソフトウェアアーキテクチャ・ハードパーツ』2022)。

標準の語原語意味この文書群での対応使わない
アーキテクチャ特性architecture characteristics機能以外に満たすべき性質適応度関数が測る対象非機能要件(併記は可)
トレードオフtrade-off何かを取れば何かを失う「すべてはトレードオフ」。ADR の「却下した代替」妥協
ADRarchitecture decision record判断と根拠と却下した案を記録するdocs/adr/設計判断記録(併記は可)
コナーセンスconnascence片方を変えるともう片方も変えなければならない関係結合の強さの語彙。静的 / 動的
アーキテクチャ量子architectural quantum独立してデプロイでき、高凝集で、静的・動的に結合した単位進化的アーキテクチャの表と同じ
静的結合 / 動的結合static / dynamic quantum coupling依存で結ばれる / 実行時の通信で結ばれる同期の内部 API は動的結合。契約・一貫性・通信の 3 軸
分解decompositionモノリスを部品に分けるコンポーネントベース分解と戦術的フォーク分割(粒度の語と混ざる)
戦術的フォークtactical forking全体を複製して不要な部分を削る分解法境界の引き直しドリルの対比
データの所有権data ownershipどのサービスがどのテーブルに書くかlint:queries、DB をまたぐ FK の禁止
データ分解の駆動要因data disintegrators / integrators分ける理由と、まとめる理由FK グラフから分割を出す話の背景
契約(厳格 / 緩い)strict / loose contractsスキーマで固く結ぶか、名前だけで緩く結ぶかOpenAPI は厳格、イベントの envelope は緩い

Accelerate『LeanとDevOpsの科学』— Forsgren, Humble, Kim

Nicole Forsgren, Jez Humble, Gene Kim, Accelerate(IT Revolution, 2018)。邦訳『LeanとDevOpsの科学』(インプレス, 2018)。

標準の語原語意味この文書群での対応使わない
4 つの指標four key metricsデプロイ頻度・変更のリードタイム・変更失敗率・復旧時間デプロイ分離が効く先DORA 指標(併記は可)
デプロイ頻度deployment frequency本番へ出す回数
変更のリードタイムlead time for changesコミットから本番までの時間affected CI 20 秒、独立ロールバック 32 秒
変更失敗率change failure rate本番で障害になった変更の割合promotion gate が下げる
復旧時間time to restore service障害から戻るまでの時間stopDeployment 32 秒、フラグ 14 秒MTTR(併記は可)

チームトポロジー — Skelton, Pais

Matthew Skelton, Manuel Pais, Team Topologies(IT Revolution, 2019)。邦訳『チームトポロジー』(日本能率協会マネジメントセンター, 2021)。

標準の語原語意味この文書群での対応使わない
ストリームアラインドチームstream-aligned team価値の流れに沿って担当するチームサービス単位のチーム機能チーム
プラットフォームチームplatform team他チームの認知負荷を下げる基盤を提供するplatform/(authz)、Keycloak の運用共通基盤チーム
イネイブリングチームenabling team他チームが能力を得るのを助ける
認知負荷cognitive loadチームが抱えられる複雑さの量サービスの粒度を決める基準
チーム APIteam APIチームが外に約束する接点internal API と Runbook

使わない言い換えの一覧

これまでに記事で使い、直したもの。grep で当てる対象でもある。

使わない代わりになぜ
昇格ゲートpromotion gate原語が英語。訳語を作ると検索でも通じない
レバー、引くレバー手段、巻き戻しの手段、操作比喩。何を指すかが文脈に依存する
被弾失敗したリクエスト、影響を受けた比喩。数字(0 / 1,679)と並べると分母が見えなくなる
置く・当てる・見せるデプロイ・トラフィック切替・リリース定着した語がある概念に新しい日本語動詞を当てていた
配線依存の解決(go.mod と import)DI の「配線(wiring)」と紛らわしい
リリース列車リリーストレインカタカナが定着している

出典

用語の意味と原語は次を参照した。表の「原語」はこれらの語に合わせている。

← Back to all posts