ホーム / ラボ
ラボ
ブラウザの中で実際に動かして試せる教材です。職種で絞り込めます。
職種のタグがないものは、全職種向けの基礎です。
DBラボ (41)
本物の MariaDB(MySQL互換)・PostgreSQL・SQLite・Redis。セッション A・B の2つの端末で同時実行まで。Redis はキャッシュ・キュー・ランキング・メモリの上限も。 DBラボを開く →
| 演習 | 職種 | ID |
|---|---|---|
| まずは触ってみる 本物のクライアントで自由に SQL | 基礎 | basic |
| EXPLAIN を読む フルスキャンかインデックスか | 基礎 | explain |
| インデックスの効果を測る 作る前と後の時間を比べる | 基礎 | index |
| 複合インデックスと左端一致 列の順番で使える・使えないが決まる | 基礎 | composite |
| N+1問題 ループで1件ずつ vs まとめて1回 | 基礎 | n1 |
| トランザクション ROLLBACK と原子性 | 基礎 | tx |
| 行ロックの待ち FOR UPDATE とロック待ち | 基礎 | lock |
| デッドロック お互いに相手のロックを待つ | 基礎 | deadlock |
| 分離レベルの違い 他の人のコミットが見えるか | 基礎 | isolation |
| ダーティリード READ UNCOMMITTED | 基礎 | dirty |
| ギャップロックとファントム 範囲のロックで挿入を防ぐ? | 基礎 | gap |
| MVCC(行のバージョン) 更新は「書き換え」ではない | 基礎 | mvcc |
| 楽観ロック バージョン列で同時更新を検出 | 基礎 | optimistic |
| ウィンドウ関数 ランキング・前月比 | 基礎 | window |
| 正規化と更新異常 同じ情報を何か所にも持つと | 基礎 | normalize |
| 論理削除と監査ログ deleted_at とトリガー | 基礎 | softdelete |
| ページング(OFFSET とキーセット) 深いページほど遅くなる理由 | WebApp | paging |
| UPSERT(あれば更新・なければ追加) カートに同じ商品を入れたら | WebAppData | upsert |
| 二重登録の競合 アプリのチェックでは防げない | WebApp | unique-race |
| SQL インジェクション 文字列をつなげて SQL を作ると | Web | sqli |
| 全文検索 LIKE '%…%' の代わり | WebData | fulltext |
| 稼働中の ALTER TABLE メタデータロック待ちの連鎖 | WebSRE | online-ddl |
| スキーマの移行(マイグレーション) アプリの更新で DB の形を変える | WebApp | migration |
| オフライン同期の衝突 2台の端末で同じメモを編集 | App | offline-sync |
| 特徴量づくり(リークに注意) ウィンドウ関数で過去だけを集計 | MLData | ml-features |
| ベクトル検索(似ているものを探す) 埋め込みと近傍検索 | WebML | vector |
| 集計(ROLLUP・CUBE・ピボット) 小計・合計を1回で | MLData | olap |
| パーティション分割 月ごとに分けて、必要な月だけ読む | SREData | partition |
| 履歴を残す(SCD Type 2)と冪等な読み込み 「当時の値」で集計する | Data | scd2 |
| データ品質チェック NULL・重複・孤児・範囲・鮮度 | MLData | data-quality |
| アカウントの棚卸し 退職者・不明なアカウントを探す | 情シス | account-audit |
| Redis:Redis のデータ型 文字列・ハッシュ・リスト・セット・ソート済みセット | WebAppSRE | redis-basic |
| Redis:キャッシュと TTL cache-aside・期限切れ・キャッシュの削除 | WebAppSRE | redis-cache |
| Redis:レート制限とカウンター INCR と EXPIRE | WebAppSRE | redis-ratelimit |
| Redis:ランキング ソート済みセット(ZADD・ZREVRANGE) | WebApp | redis-ranking |
| Redis:キューとストリーム LPUSH / BRPOP・XADD / XREADGROUP | WebAppSRE | redis-queue |
| Redis:Pub/Sub 2つの接続でメッセージを配る | WebApp | redis-pubsub |
| Redis:分散ロックとトランザクション SET NX PX・MULTI / WATCH | WebAppSRE | redis-lock |
| Redis:KEYS で止まる SCAN・SLOWLOG・大きなキー | WebSRE | redis-keys |
| Redis:メモリがいっぱい maxmemory と追い出し(eviction) | WebSRE | redis-memory |
| Redis:永続化(RDB と AOF) メモリのデータをディスクに残す | SRE | redis-persist |
動くネットワーク図 (36)
立体図・構成図・シーケンス図・レイヤー・タイムラインで、パケットの流れを再生。 動くネットワーク図を開く →
Linux ラボ (7)
本物の Linux のシェル。CPU・ディスク・メモリ・ポート・ログの障害を作って調べる。 Linux ラボを開く →
| 演習 | 職種 | ID |
|---|---|---|
| まずは全体を見る uptime・top・free・df | WebSRE情シス | linux-basic |
| CPU 使用率が高い 犯人のプロセスを見つけて止める | WebSRE情シス | cpu-high |
| ディスクがいっぱい rm したのに空かない理由 | WebSRE情シス | disk-full |
| メモリ不足(OOM キラー) プロセスが突然消える | WebSREML | oom |
| ポートとつながるか LISTEN・Connection refused | WebSRE情シス | ports |
| ログを調べる grep・awk・sort・uniq | WebSREData情シス | logs |
| プロセスの中をのぞく /proc・lsof・strace | WebSRE | strace |
障害対応の演習 (17)
アラートから始めて、機器のログ・メトリクスを調べて原因を当てる。 障害対応の演習を開く →
| 演習 | 職種 | ID |
|---|---|---|
| API が遅い(p99 悪化) どこで時間がかかっている? | WebSRE | slow-api |
| 502 が半分くらい返る ロードバランサの後ろで何が? | WebSRE | lb-502 |
| 「CORS エラー」で注文できない 本当の原因は別のところ | Web | cors-500 |
| 本番アプリだけ通知が届かない 開発ビルドでは届く | App | push-prod |
| 推論 API が時々とても遅い p50 は普通なのに p99 が悪い | SREML | ml-coldstart |
| DWH のデータが更新されない ダッシュボードが2時間前のまま | Data | cdc-stale |
| 会議室の PC だけネットにつながらない 社内 LAN の切り分け | 情シス | dhcp-full |
| 朝から全員 SaaS にログインできない SSO の切り分け | 情シス | saml-cert |
| Gmail 宛てだけメールが届かない 送信ドメイン認証 | SRE情シス | mail-gmail |
| DB に接続できない(Too many connections) キャンペーンで台数を増やしたら | WebSRE | db-connections |
| 注文したのに履歴に出ない レプリカの遅延 | WebSREData | db-replica-lag |
| 決済だけタイムアウトする ロック待ちの犯人 | WebSRE | db-lock-wait |
| デプロイ後に DB の CPU が 95% クエリの数が急増 | WebSRE | db-n1 |
| 書き込みが全部失敗する(ディスクフル) PostgreSQL の WAL が消えない | SREData | db-wal-full |
| 全部の API がときどき止まる Redis が1つのコマンドで詰まる | WebSRE | redis-keys |
| ログインできない・カートに入らない Redis の書き込みが OOM で失敗 | WebAppSRE | redis-oom |
| ファイルサーバーのファイルが開けない ランサムウェアの初動 | SRE情シス | ransomware |