用語集
読了目安 約5分
本編に登場する用語を五十音順とアルファベット順で引ける用語集です。
この章の目次
本編に出てくる用語を、五十音順とアルファベット順に並べました。 各項目の末尾のリンクは、その用語を本編で説明している章を指します。
あ行
- インデックス:テーブルの特定の列について作る索引です。目的の行を全行走査せずに見つけられるようになり、検索が速くなります。(→ インデックスはなぜ速いのか)
- インターフェース:Go で、メソッドの集まりだけを定めた型です。そのメソッドをすべて持つ型なら、何でも同じように扱えます。(→ インターフェース)
- エンドポイント:Web サービスが公開する個々の窓口で、URL のパスと HTTP メソッドの組で表されます。(→ ルーティングとハンドラ)
か行
- キャッシュ:計算や取得に時間のかかる結果を保存しておき、次回以降はそれを使い回す仕組みです。(→ キャッシュ)
- クエリ:データベースへの問い合わせ文です。SQL で書きます。(→ SELECT でデータを取り出す)
- クライアント:サーバーにリクエストを送る側のプログラムです。ブラウザが代表例です。(→ URL を打ってから画面が出るまで)
さ行
- サーバー:クライアントからのリクエストを受け取り、レスポンスを返す側のプログラム(またはそれが動く計算機)です。(→ URL を打ってから画面が出るまで)
- ステータスコード:レスポンスの先頭に付く 3 桁の数字で、処理の結果を表します。200 は成功を、404 は「見つからない」を表します。(→ HTTP を生で読む)
- ステートレス:やり取りのたびに、前回までの状態を覚えていない性質です。HTTP はステートレスなので、ログイン状態の保持にはセッションなどの仕組みが要ります。(→ Cookie とセッション)
- セッション:ステートレスな HTTP の上で、同じユーザーからの一連のアクセスを結びつける仕組みです。ログイン状態の保持に使います。(→ Cookie とセッション)
た行
- トランザクション:複数のデータベース操作を「全部成功」か「全部なかったこと」のどちらかにまとめる仕組みです。(→ トランザクション)
は行
- ハンドラ:特定のリクエストを受け持ち、レスポンスを作る関数です。(→ ルーティングとハンドラ)
- ベンチマーカー:ISUCON で、サービスに大量のアクセスを送り、さばけた量からスコアを算出するプログラムです。(→ ゴールと ISUCON)
- ボトルネック:全体の速度を決めてしまっている、いちばん遅い箇所です。(→ ゴールと ISUCON)
- ホスト名:ネットワーク上の計算機を指す名前です。DNS によって IP アドレスに変換されます。(→ URL を打ってから画面が出るまで)
- ポート:一台の計算機の中で、通信の宛先になるプログラムを区別する番号です。(→ URL を打ってから画面が出るまで)
ま行
- ミドルウェア:ログ出力や認証のように多くのハンドラに共通する処理を、ハンドラの前後に挟む部品です。(→ ミドルウェア)
ら行
- リクエスト:クライアントがサーバーに送る依頼です。(→ URL を打ってから画面が出るまで)
- リバースプロキシ:クライアントとアプリケーションのあいだに立ち、リクエストを受け取って後ろのサーバーへ振り分けるサーバーです。(→ Web サービスの全体像)
- ルーティング:リクエストの URL とメソッドを見て、どのハンドラに処理させるかを決める仕組みです。(→ ルーティングとハンドラ)
- レスポンス:リクエストへの返事として、サーバーがクライアントに送るデータです。(→ URL を打ってから画面が出るまで)
アルファベット
- API:プログラム同士がやり取りするための取り決めです。Web では、JSON などを返すエンドポイントの集まりを指すことが多いです。(→ HTML と JSON)
- Cookie:サーバーがブラウザに保存させる小さなデータです。ブラウザは、以後のリクエストにそれを自動で添えて送ります。(→ Cookie とセッション)
- DNS:ホスト名から IP アドレスを引くための、インターネット全体で共有された仕組みです。(→ URL を打ってから画面が出るまで)
- goroutine:Go の軽量な並行実行の単位です。
goキーワードで関数を並行に走らせます。(→ goroutine と並行性) - HTML:Web ページの構造を記述する言語です。ブラウザはこれを解釈して画面を描きます。(→ HTML と JSON)
- HTTP:クライアントとサーバーがリクエストとレスポンスをやり取りするための、通信の約束事です。(→ HTTP を生で読む)
- JOIN:SQL で、複数のテーブルを結びつけて一度に取り出す操作です。(→ 複数のテーブルと JOIN)
- JSON:データをテキストで表す記法です。プログラム間のデータ交換、特に API のレスポンスに広く使われます。(→ HTML と JSON)
- N+1 問題:一覧を 1 回のクエリで取ったあと、その各行について 1 回ずつクエリを発行してしまい、クエリ回数が件数に比例して膨らむ問題です。(→ N+1 問題)
- SQL:データベースへの問い合わせや書き込みを記述する言語です。(→ なぜデータベースが要るのか)
- SQL インジェクション:ユーザーの入力を SQL 文にそのまま埋め込んだとき、入力に仕込まれた SQL が実行されてしまう攻撃です。プレースホルダを使えば防げます。(→ Go から SQL を使う)
- URL:Web 上の資源の場所を表す文字列です。ホスト名やパスなどからなります。(→ URL を打ってから画面が出るまで)
- XSS:ユーザーの入力を HTML にそのまま埋め込んだとき、入力に仕込まれたスクリプトが他のユーザーのブラウザで実行されてしまう攻撃です。(→ 投稿と一覧)