1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

S01: 用語集_現場で詰む単語を先に潰す

Posted at

S01 知ったかぶり禁止の用語整理: 現場で詰む単語を先に潰す ― 壁の先へ

連載Index(読む順・公開済(リンク)はここが最新): S00_門前の誓い_総合Index

知らない単語が1つでも混ざると、その場は「たぶんこうだろう」で話を通してしまう。
会話のテンポを止めたくなくて、分かったふりで流してしまう。
そうして前に進むと、後で辻褄が合わない箇所が出て、指摘された瞬間に根拠が言えずテンパる。
このページは、そのズレを最初に潰すための用語整理。

このページのゴール

  • 単語の意味を「何の話か(言語/ランタイム/画面/運用)」まで含めて揃える
  • 似ている概念を先に切り分け、混同による詰みを減らす
  • よくある誤解パターンを対比表で先に潰す
  • 個別記事の前提をここへ寄せ、同じ説明の再発を減らす
  • 切り分け時に見る場所(どこを見るか)を短く残す

カテゴリ別索引(カテゴリへジャンプ)

カテゴリ ジャンプ
型と省略 型と省略
関数とラムダ 関数とラムダ
捨てると分解と分岐 捨てると分解と分岐
非同期と画面 非同期と画面
画面とWindows連携 画面とwindows連携
例外とログ 例外とログ
文字列とロケール 文字列とロケール
依存と配布 依存と配布
テストと依存注入 テストと依存注入
開発フローと自動化 開発フローと自動化
数値と精度 数値と精度

誤解しやすい対比表(混ざると詰む所)

取り違え 別物である理由 迷った時に見る場所
var vs dynamic varはコンパイル時に型が決まる(静的)。dynamicは実行時バインドが混ざる 型が確定するタイミング(コンパイル/実行)
async(非同期) vs parallel(並列) asyncは待ち(I/O等)でスレッドを塞がない話。並列は同時実行の話 CPU仕事か、待ち仕事か
await vs Task.Run awaitは待つ構文。Task.Runはスレッドプールへ投げる手段 「待ち」か「CPUを別スレッドへ逃がす」か
SynchronizationContext vs TaskScheduler 前者はawait後の継続(続き)の戻り先。後者はTaskをどこで実行するか 継続の戻り先か、実行の行き先か
Invoke/BeginInvoke vs .Result/.Wait() 前者は画面スレッドへ投げる。後者は同期ブロックで画面スレッドを塞ぐ 画面スレッドを塞いでいないか
SendMessage vs PostMessage SendMessageは同期で相手が処理し終わるまで戻らない。PostMessageは非同期でキューに積む 呼び出し側が待つか、待たないか
StringComparison.Ordinal vs CurrentCulture Ordinalはコードポイント準拠。CurrentCultureはロケール依存の比較 比較がロケールに依存してよいか
float/double vs decimal 前者は二進浮動小数で誤差が出る。後者は十進で金額向き 金額/桁/丸めの要件
discard variable() vs discard pattern() 代入/outでの _ は「使わない」。パターンの _ は「それ以外」 _ が出ている構文(代入/パターン)
throw; vs throw ex; throw;はスタックトレースを保持。throw ex;は痕跡を崩しやすい catch内の投げ直しの書き方
CI vs CD CIは統合を壊さないための自動化。CDは配布/リリースまでの自動化 自動化の対象(ビルド/テスト/配布)
DI vs Service Locator DIは依存を外から渡す。Service Locatorは中で探して引く 依存が見えるか、隠れるか

型と省略

用語 ひとことで 混ざりやすい相手 最短チェック
var 右辺から型推論する省略記法(静的) dynamic, object 右辺だけで型と役割が読めるか
dynamic 実行時にメンバ解決が混ざる var 実行時例外を許容できる局所か
object なんでも入る箱 dynamic 取り出す側で型判定が増えていないか
null 値が無い状態 ""(空文字) 仕様として無しを許すか、例外か
null許容注釈 コンパイラ警告を増減する情報 ランタイムのnull 「落ちる」か「警告」かを分ける
ジェネリクス(TSourceなど) 型を引数で受け取る var 入力→出力の型対応を追う

関連: R02 var裁判の終わらせ方(可読性/型推論の迷いどころ)

補足: 言語機能とターゲット(.NET 8 / .NET Framework 4.8)の切り分け

varやdiscard等は、ランタイム差というより「コンパイラ(言語機能)側」の要素が強い。
同じ.NET Framework 4.8でも、言語バージョン設定で使える記法が変わる。
議論が割れたら「どのランタイムか」ではなく「どのC#記法か」へ戻すと速い。


関数とラムダ

用語 ひとことで 混ざりやすい相手 最短チェック
delegate 関数を値として持つ型 Action/Func 受け口(引数)と返り口(戻り値)を確認
Action 戻り値なしのdelegate Func 戻り値が要らない場面か
Func 戻り値ありのdelegate Action 戻り値が「判定」なら捨てない
ラムダ式 その場で関数を作る記法 メソッド参照 長くなるなら名前付きへ戻せるか
クロージャ(キャプチャ) 外側変数を掴んだラムダ ループ変数 いつ実行され、何を掴むかを見る

関連: K26 いまさら聞けないラムダ式入門(delegate/Action/Func/クロージャ)


捨てると分解と分岐

用語 ひとことで 混ざりやすい相手 最短チェック
discard(_) 受け取ったが使わない意思表示 例外握り潰し 切り分けに必要な値まで捨てていないか
out 追加の戻り値を返す手段 戻り値 成否判定の主役がどこかを見る
タプル 複数値をまとめて返す out 要素の役割が名前で読めるか
分解代入 タプル等を要素で受け取る discard 判定軸(ok/status等)を捨てていないか
パターン(switch/is) 値の形で分岐する if/else 条件の漏れが“それ以外”に落ちていないか
discard pattern(_) switch等の「それ以外」 discard(_) 代入の _ と同じ見た目で意味が別

関連: R14 _ (discard) の使いどころ(out/戻り値を捨てる基準)


非同期と画面

用語 ひとことで 混ざりやすい相手 最短チェック
Task 非同期処理の結果(将来値) Thread スレッドそのものではない
async/await 待ちでスレッドを塞がない構文 並列 待ち(I/O)かCPU仕事か
デッドロック 互いに待ち続けて進まない フリーズ .Result/.Wait() が混ざっていないか
画面スレッド 画面更新を担う主スレッド ワーカースレッド 画面操作が別スレッドに出ていないか
メッセージループ 入力/描画を回す仕組み DoEvents ループを塞ぐと固まる
SynchronizationContext await後の継続(続き)の戻り先 TaskScheduler 継続の戻り先と実行の行き先を分ける
ConfigureAwait(false) 文脈へ戻らない指定 画面更新 画面更新が混ざる層では扱いが変わる
Invoke/BeginInvoke 画面スレッドへ処理を投げる Task.Run 画面更新のために必要かどうか
Application.DoEvents 画面を無理やり回す 正攻法の非同期 緊急止血以外で常用しない

関連: R06 非同期の掟(UIスレッド/awaitの帰還/デッドロック典型)


画面とWindows連携

用語 ひとことで 混ざりやすい相手 最短チェック
WndProc Windowsメッセージの受け口 イベント どのWM_*が来ているかを見る
WM_* メッセージ種別(入力/IME等) 独自イベント 発火条件と順序を確認
DefWndProc 既定処理へ委譲する return; 既定処理を飛ばしていないか
SendMessage 同期で相手に処理させる PostMessage 呼び出し側が待つ必要があるか
PostMessage 非同期でキューに積む SendMessage 処理順序が前提になっていないか
SetWindowPos 位置/最前面等を操作 TopMost 副作用(フォーカス/Z順)込みで考える
ホットキー OSに登録するショートカット アプリ内ショートカット 解除漏れ/競合を想定する
RegisterHotKey ホットキー登録API キーイベント 解除(Unregister)と対で扱う
Mutex 多重起動を制御する プロセス一覧 “二重起動”を仕様として扱う
NotifyIcon トレイ常駐の起点 終了導線 終了/復帰の導線が破綻していないか
IME 入力変換(確定前の状態を持つ) TextBoxのTextChanged フォーカス遷移と確定タイミングを見る
ImeMode IMEの振る舞い指定 フォーカス コントロール単位/フォーム単位を分ける
SuspendLayout レイアウト計算を止める 描画 ResumeLayoutと対で扱う
DoubleBuffer ちらつき抑制の代表手段 OnPaint ちらつきの原因(再描画頻度)を見る

関連: E04 UIフリーズの正体(メッセージループ/Invoke/async), G11 メッセージループ入門(Application.Run/固まる理由), G13 UIスレッドと非同期の実戦(SynchronizationContext/await)


例外とログ

用語 ひとことで 混ざりやすい相手 最短チェック
例外 異常の証拠 戻り値の失敗 例外を消していないか
throw; 痕跡(スタックトレース)を保った投げ直し throw ex; どこで壊れたかが残るか
握り潰し 異常を無かったことにする リトライ 証拠が残らず再現不能にならないか
ILogger ログの窓口 Console.WriteLine 運用で集計できる形か
構造化ログ キーと値で残すログ 文字列連結 検索/集計のしやすさ
ログレベル 情報の重さの区分 なんでもInfo ノイズと重要度の線引き

関連: R04 例外設計の掟(握り潰し禁止/throw;), R05 ログ設計の掟(証拠を残す/構造化ログ)


文字列とロケール

用語 ひとことで 混ざりやすい相手 最短チェック
StringComparison 比較のルールを指定する デフォルト比較 ロケール依存にしてよいか
Ordinal コードポイント準拠の比較 CurrentCulture 安定性優先か
CurrentCulture 現在ロケールに依存する比較 Ordinal UI表示向けか、識別子か
InvariantCulture ロケールに依存しないカルチャ CurrentCulture 国/端末差を避けたいか
CultureInfo ロケール情報の器 グローバル設定 どの層で決めるか
正規表現 パターンで扱う文字列処理 Contains/IndexOf 性能と可読性の見積り

依存と配布

用語 ひとことで 混ざりやすい相手 最短チェック
NuGet 依存を配布する単位 DLL手配 依存ツリー(推移依存)を見る
推移依存 依存の依存が入ってくる 直接参照 どこから来たか
参照競合 バージョン違いで壊れる ビルド成功 実行時に読む実体DLL
アセンブリ 実行単位(DLL/EXE) パッケージ 読み込み元パス
バージョン 互換性の約束 リビジョン運用 破壊的変更の有無
破壊的変更 互換性を壊す変更 内部変更 公開APIに影響するか
bindingRedirect バージョンの寄せ(主にFramework側で登場) NuGetの解決 実行時の解決先が揃うか

関連: E02 参照が壊れる NuGet競合の止血と恒久対策(実行時だけ壊れるやつ)


テストと依存注入

用語 ひとことで 混ざりやすい相手 最短チェック
単体テスト 依存を絞って速く回す 結合テスト 何を保証するか
結合テスト 実物をつないで保証する E2E どの層まで含めるか
モック 代役で振る舞いを作る スタブ 目的(相互作用/状態)が明確か
テストダブル 代役の総称 モック 用語の粒度を揃える
DI(依存注入) 依存を外から渡す new直書き 依存方向が逆流していないか
IoC 生成や流れの主導権が反転する考え方 DI 注入だけの話になっていないか
ServiceProvider 依存を解決するコンテナ new直書き 解決が散らばっていないか
ライフタイム 生成の寿命(使い回し) static いつ作り、いつ捨てるか
Singleton 1つを共有する生成戦略 Transient 状態が混ざって事故らないか
Transient 毎回生成する生成戦略 Singleton 生成コストと状態の要件

開発フローと自動化

用語 ひとことで 混ざりやすい相手 最短チェック
CI 変更を統合して壊れないことを自動で確認 CD 対象がビルド/テストまでか
CD 配布/リリースまで自動化 CI 配布が自動かどうか
パイプライン 自動手順の流れ バッチ 失敗点が追えるか
アーティファクト ビルド成果物 ソース どれを配布したか追えるか
静的解析 ルール違反を機械で拾う 人の指摘 人が見る前に弾けるか
ビルド 生成物を作る工程 テスト 同じ入力で再現できるか

数値と精度

用語 ひとことで 混ざりやすい相手 最短チェック
float 単精度(誤差が出る) double 桁と速度の要件
double 倍精度(誤差が出る) decimal 誤差許容と丸め
decimal 十進(主に金額向き) double 金額/税率/端数処理
丸め 端数の扱い 切り捨て 仕様の基準(いつ/どこで)
桁落ち 近い数の差で精度が落ちる 例外 入力スケールの確認

この用語整理の使いどころ(運用)

  • 途中で単語が詰まったら、まず「何の話か(言語/ランタイム/画面/運用)」を揃える
  • 議論が噛み合わない時は、対比表へ戻して混同がないかを疑う
  • 新しい記事で「前提として必要な単語」が出たら、このページへ追記して前提を一本化する
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?