ソフトウェア開発 50 本ノック
学部50 問。全問無料です。
対象読者: 本テーマ第 1〜5 章(Git、コンテナと Kubernetes、データベース設計、クラウド、TCP/IP)の内容を学んだ学部生。各章の要点と簡単な計算を復習済みであることを仮定します。
執筆: Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12
読み込んでいます…
この冊について(出典・構成・使う定理)
主な参考文献
- Scott Chacon, Ben Straub, Pro Git
- A. Silberschatz, H. F. Korth, S. Sudarshan, Database System Concepts
- J. F. Kurose, K. W. Ross, Computer Networking: A Top-Down Approach
- M. Kleppmann, Designing Data-Intensive Applications
問題はすべて Rikai の書き下ろしです。参考文献の演習や本文は転載していません。
構成
- 1〜10: Git:オブジェクト・コミットグラフ・マージ
- 11〜20: コンテナと Kubernetes
- 21〜30: データベース設計と正規化
- 31〜40: クラウド:費用・待ち行列・可用性
- 41〜50: ネットワーク(TCP/IP)
形式: 単一選択 16・複数選択 10・○× 5・数値 8・並べ替え 3・誤り探し 4・記述 4。難易度 ★〜★★★★: 6 / 28 / 16 / 0。
この冊で使う定義・定理(58)
- 系 5.3 負荷を n 台に均等分散したときの応答時間 クラウドコンピューティング:オンプレミスとの分岐点を数式で見る → 33, 36, 38 番
- 定義 6.1 可用性 クラウドコンピューティング:オンプレミスとの分岐点を数式で見る → 35, 40 番
- 定義 2.2 サービスモデル(IaaS・PaaS・SaaS) クラウドコンピューティング:オンプレミスとの分岐点を数式で見る → 31, 37 番
- 定義 3.1 平均利用率と損益分岐利用率 クラウドコンピューティング:オンプレミスとの分岐点を数式で見る → 32, 39 番
- 命題 6.2 直列構成と並列構成の可用性 クラウドコンピューティング:オンプレミスとの分岐点を数式で見る → 35, 37, 40 番
- 命題 3.2 従量課金が有利になる条件 クラウドコンピューティング:オンプレミスとの分岐点を数式で見る → 32, 39 番
- 命題 5.2 M/M/1 待ち行列の平均応答時間 クラウドコンピューティング:オンプレミスとの分岐点を数式で見る → 33, 36, 38 番
- 命題 5.5 拡張則とスループットの最大点 クラウドコンピューティング:オンプレミスとの分岐点を数式で見る → 37 番
- 定理 5.1 リトルの法則 クラウドコンピューティング:オンプレミスとの分岐点を数式で見る → 34, 36 番
- 系 7.3 相関故障による可用性の上限 Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 16, 17, 20 番
- 定義 3.1 コンテナ Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 11, 12 番
- 定義 6.1 宣言的 API と調整ループ Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 18 番
- 定義 4.1 イメージとレイヤ Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 13, 14 番
- 命題 4.2 ビルドキャッシュの前置性 Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 13, 15 番
- 命題 7.4 HorizontalPodAutoscaler の一段収束 Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 19 番
- 命題 4.5 レイヤ削除の非可換性 Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 14 番
- 命題 6.2 調整ループの有限収束 Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 18 番
- 注意 6.3 Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 18 番
- 注意 4.4 Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 15 番
- 注意 3.2 Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 12 番
- 定理 7.1 独立故障の下での冗長化 Docker と Kubernetes:コンテナはなぜ軽く、クラスタはなぜ自己修復するのか → 16, 17, 20 番
- 系 4.4 スーパーキーの判定 データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 23, 25 番
- 定義 4.2 属性閉包 データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 22, 23, 24, 28, 30 番
- 定義 4.1 関数従属 データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 22, 25, 26 番
- 定義 2.2 スーパーキー・候補キー・主キー・外部キー データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 23, 24, 28 番
- 定義 6.1 無損失結合分解 データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 27, 29 番
- 定義 5.1 第 1・第 2・第 3 正規形 データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 24, 25, 30 番
- 定義 2.1 関係スキーマと関係 データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 21, 29 番
- 補題 4.3 属性閉包定理 データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 22, 25 番
- 命題 5.2 キーでない決定項は必ず冗長を生む データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 28, 30 番
- 定理 6.3 ヒースの定理 データベース設計の基礎:関係モデル・SQL・正規化を「事実の置き場所」から考える → 27, 30 番
- 定義 3.2 カプセル化 ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 41, 46 番
- 定義 4.1 IPv4 アドレスと CIDR プレフィックス ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 42, 43 番
- 定義 3.3 MTU と MSS ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 46 番
- 定義 2.1 プロトコルと PDU ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 41 番
- 定義 5.1 接続を識別する 4 つ組 ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 44, 48 番
- 例 5.5 帯域遅延積とウィンドウスケール ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 47 番
- 例 4.2 プレフィックスの計算 ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 42 番
- 例 5.2 1 台のクライアントが張れる同時接続数 ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 48 番
- 例 7.1 往復回数から所要時間を見積もる ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 49 番
- 補題 4.3 プレフィックスの入れ子性 ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 43, 44 番
- 命題 8.5 インターネットチェックサムが検出できない誤り ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 50 番
- 命題 2.2 端点間遅延の分解 ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 49 番
- 命題 5.3 2 ウェイでは接続確立が安全でない ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 44, 49 番
- 命題 5.4 ウィンドウによるスループットの上限 ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 45, 47 番
- 定理 4.4 最長プレフィックス一致の一意性 ネットワーク(TCP/IP):URL を入力してからページが表示されるまで → 43 番
- 定義 4.1 コミットグラフと祖先関係 バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 4, 6 番
- 定義 2.1 内容アドレス格納庫 バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 2, 9 番
- 定義 3.1 Git オブジェクト バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 1, 2, 7, 10 番
- 定義 3.2 参照・ブランチ・HEAD バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 1, 7, 8 番
- 定義 5.1 3-way マージ バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 5 番
- 命題 5.5 マージ結果はマージベースの選び方に依存する バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 6 番
- 命題 2.2 誕生日境界による衝突確率の上界 バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 3, 9 番
- 命題 5.3 fast-forward の特徴づけ バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 4 番
- 命題 5.2 3-way マージの基本性質 バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 5 番
- 命題 5.7 rebase は必ず別のコミットを作る バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 3, 8 番
- 注意 3.5 インデックス(ステージ領域) バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 7 番
- 定理 3.3 ハッシュによる履歴全体の同定 バージョン管理システム Git:Merkle DAG としての履歴と共同開発フロー → 3, 8, 10 番
運営: 夢現技研合同会社 ・料金 ・利用条件 ・特定商取引法に基づく表記