🔩 ねじき教室 Go と Web の教室

用語集

読了目安 約7分

本編に登場する用語を五十音順とアルファベット順で引ける用語集です。

30秒でつかむ わからない言葉から、説明した章へ戻る
わからない言葉から、説明した章へ戻る用語を探し、短い定義を読み、詳しく説明した教材ページへ移動します。1用語を探す五十音から選ぶ2定義を読む一文で確認3章へ戻る文脈ごと読む
  1. 用語を探す 五十音から選ぶ
  2. 定義を読む 一文で確認
  3. 章へ戻る 文脈ごと読む
この章の目次

本編に出てくる用語を、五十音順とアルファベット順に並べました。 各項目の末尾のリンクは、その用語を本編で説明している章を指します。

あ行

  • アムダールの法則:全体のうち一部だけを速くしたとき、全体が何倍速くなるかを表す式です。速くする部分が全体に占める割合が小さいと、その部分をどれだけ速くしても効果はわずかです。(→ 速くしても全体はそこまで速くならない
  • インデックス:テーブルの特定の列について作る索引です。目的の行を全行走査せずに見つけられるようになり、検索が速くなります。(→ インデックスはなぜ速いのか
  • インターフェース:Go で、メソッドの集まりだけを定めた型です。そのメソッドをすべて持つ型なら、何でも同じように扱えます。(→ インターフェース
  • エンドポイント:Web サービスが公開する個々の窓口で、URL のパスと HTTP メソッドの組で表されます。(→ ルーティングとハンドラ

か行

  • キャッシュ:計算や取得に時間のかかる結果を保存しておき、次回以降はそれを使い回す仕組みです。(→ キャッシュ
  • クエリ:データベースへの問い合わせ文です。SQL で書きます。(→ SELECT でデータを取り出す
  • クライアント:サーバーにリクエストを送る側のプログラムです。ブラウザが代表例です。(→ URL を打ってから画面が出るまで

さ行

  • サーバー:クライアントからのリクエストを受け取り、レスポンスを返す側のプログラム(またはそれが動く計算機)です。(→ URL を打ってから画面が出るまで
  • サービス需要:1 リクエストを処理するために、あるリソース(CPU など)を占有する時間です。これが分かると、そのリソースが毎秒何件まで捌けるかを割り算で見積もれます。(→ 1 リクエストがリソースをどれだけ使うか
  • シャーディング:データをキーで分割して、1 つのデータベースを複数台に分けることです。書き込みの容量を増やせますが、シャードをまたぐ JOIN やトランザクションの処理が難しくなり、実装と運用の費用が増えます。(→ 書き込み分散は難しい
  • ステータスコード:レスポンスの先頭に付く 3 桁の数字で、処理の結果を表します。200 は成功を、404 は「見つからない」を表します。(→ HTTP を生で読む
  • ステートレス:やり取りのたびに、前回までの状態を覚えていない性質です。HTTP はステートレスなので、ログイン状態の保持にはセッションなどの仕組みが要ります。(→ Cookie とセッション
  • スプリットブレイン:ネットワークの分断が起きたとき、分断した両側が「自分は書き込んでよい」と思い込み、両方が書き込みを受け付けてしまう事故です。(→ 書き込み分散は難しい
  • セッション:ステートレスな HTTP の上で、同じユーザーからの一連のアクセスを結びつける仕組みです。ログイン状態の保持に使います。(→ Cookie とセッション

た行

  • トランザクション:複数のデータベース操作を「全部成功」か「全部なかったこと」のどちらかにまとめる仕組みです。(→ トランザクション

は行

  • ハンドラ:特定のリクエストを受け持ち、レスポンスを作る関数です。(→ ルーティングとハンドラ
  • ベンチマーカー:ISUCON で、サービスに大量のアクセスを送り、さばけた量からスコアを算出するプログラムです。(→ ゴールと ISUCON
  • ボトルネック:全体の速度を決めてしまっている、いちばん遅い箇所です。(→ ゴールと ISUCON
  • ホスト名:ネットワーク上の計算機を指す名前です。DNS によって IP アドレスに変換されます。(→ URL を打ってから画面が出るまで
  • ポート:一台の計算機の中で、通信をどのアプリに渡すかを示す窓口番号です。(→ URL を打ってから画面が出るまで

ま行

  • ミドルウェア:ログ出力や認証のように多くのハンドラに共通する処理を、ハンドラの前後に挟む部品です。(→ ミドルウェア

ら行

  • リクエスト:クライアントがサーバーに送る依頼です。(→ URL を打ってから画面が出るまで
  • リバースプロキシ:クライアントとアプリケーションのあいだに立ち、リクエストを受け取って後ろのサーバーへ振り分けるサーバーです。(→ Web サービスの全体像
  • ルーティング:リクエストの URL とメソッドを見て、どのハンドラに処理させるかを決める仕組みです。(→ ルーティングとハンドラ
  • レスポンス:リクエストへの返事として、サーバーがクライアントに送るデータです。(→ URL を打ってから画面が出るまで
  • レプリケーション:正とするサーバー(プライマリ)への変更を、別のサーバー(レプリカ)へ流し続け、同じ中身のコピーを保つ仕組みです。(→ 書き込み分散は難しい
  • ロードアベレージ:実行したいのに CPU の順番を待っているプロセスの数を含めた指標です。コア数を超えていること自体は、応答時間の規定を破っていなければ問題ではありません。(→ 使用率 8 割から先が急に遅い

アルファベット

  • ACID 特性:トランザクションが守る 4 つの性質(原子性、一貫性、分離性、永続性)の総称です。(→ トランザクション
  • API:プログラム同士がやり取りするための取り決めです。Web では、JSON などを返すエンドポイントの集まりを指すことが多いです。(→ HTML と JSON
  • CAP 定理:ネットワーク分断が起きているあいだは、一貫性と可用性を同時には保証できない、という定理です。ここでの一貫性は ACID 特性の一貫性とは別物です。(→ 書き込み分散は難しい
  • Cookie:サーバーがブラウザに保存させる小さなデータです。ブラウザは、以後のリクエストにそれを自動で添えて送ります。(→ Cookie とセッション
  • DNS:ホスト名から IP アドレスを引くための、インターネット全体で共有された仕組みです。(→ URL を打ってから画面が出るまで
  • goroutine:Go の軽量な並行実行の単位です。go キーワードで関数を並行に走らせます。(→ goroutine と並行性
  • HTML:Web ページの構造を記述する言語です。ブラウザはこれを解釈して画面を描きます。(→ HTML と JSON
  • HTTP:クライアントとサーバーがリクエストとレスポンスをやり取りするための、通信の約束事です。(→ HTTP を生で読む
  • IP アドレス:ネットワーク上で、データの届け先を指定する数値の住所です。(→ URL を打ってから画面が出るまで
  • JOIN:SQL で、複数のテーブルを結びつけて一度に取り出す操作です。(→ 複数のテーブルと JOIN
  • JSON:データをテキストで表す記法です。プログラム間のデータ交換、特に API のレスポンスに広く使われます。(→ HTML と JSON
  • N+1 問題:一覧を 1 回のクエリで取ったあと、その各行について 1 回ずつクエリを発行してしまい、クエリ回数が件数に比例して膨らむ問題です。(→ N+1 問題
  • NAT:ルーターがプライベート IP アドレスとグローバル IP アドレスを変換し、家の複数の機器で一つのグローバル IP アドレスを共有する仕組みです。(→ URL を打ってから画面が出るまで
  • RDB:テーブルの形でデータを持つ、関係データベース(Relational Database)です。MySQL などが該当し、条件で絞る・テーブルをつなぐ・トランザクションで守るができる万能型です。(→ ツールはアクセスパターンで選ぶ
  • SQL:データベースへの問い合わせや書き込みを記述する言語です。(→ なぜデータベースが要るのか
  • SQL インジェクション:ユーザーの入力を SQL 文にそのまま埋め込んだとき、入力に仕込まれた SQL が実行されてしまう攻撃です。プレースホルダを使えば防げます。(→ Go から SQL を使う
  • URL:Web 上の資源の場所を表す文字列です。ホスト名やパスなどからなります。(→ URL を打ってから画面が出るまで
  • USL:Universal Scalability Law の略で、資源を増やしたときの相対容量を、競合と協調という 2 つの係数で表す式です。増やしすぎると容量がかえって落ちる現象も表せます。(→ 増やすほど遅くなることがある
  • XSS:ユーザーの入力を HTML にそのまま埋め込んだとき、入力に仕込まれたスクリプトが他のユーザーのブラウザで実行されてしまう攻撃です。(→ 投稿と一覧