プログラマのための IT 教科書
シェルの使い方から gRPC・Kubernetes まで、プログラマとして働くために必要な基礎を順番に積み上げる教科書です。読むだけで終わらないよう、本文のコマンドはそのまま手元で打てる形にしてあります。
読み進め方
シェル・Git と、読む・直す・伝える技術。ここが分からないと業務の会話が成立しません。
コンピュータとネットワークの仕組み、そして JavaScript・Go から HTML・React まで。
gRPC・DB・Kubernetes・設計・安全性・運用。実際に触りながら読む章です。
目次
はじめに
第1部 開発者の道具箱
- 未読マシンとシェル30 分
シェルとは何か、zsh、PATH、環境変数、macOS と Linux の違い
- 未読コマンドラインで生きる40 分
ファイル操作、パイプ、grep / find / sed、権限、プロセス
- 未読正規表現35 分
メタ文字、貪欲マッチ、キャプチャと置換、方言、ReDoS と使ってはいけない場面
- 未読vim35 分
モード、移動、編集、検索置換。サーバー上で編集するための最低限
- 未読Git50 分
コミットの正体、ブランチ、マージ、rebase、やらかしからの復旧
- 未読GitHub で共同作業する45 分
Issue、Draft PR、レビュー、マージ方式、ブランチ保護、Actions、fork、gh コマンド
- 未読Docker を使いこなす60 分
コンテナの正体、イメージとコンテナ、調べ方、Dockerfile とレイヤー、ボリューム、Compose
- 未読開発環境を作る45 分
言語バージョンの管理、Docker と Compose、エディタと LSP、デバッガ、動かない時の切り分け
第2部 開発の進め方と技術
- 未読開発の流れ35 分
要求から運用までの1周。PR の出し方、完了の定義
- 未読既存コードを読む45 分
大きなコードベースの歩き方、入口の見つけ方、影響範囲の追い方、読むための道具
- 未読デバッグの技術50 分
スタックトレースの読み方、再現手順、二分探索、デバッガ、思い込みの外し方
- 未読ドキュメントを書く40 分
設計ドキュメント、ADR、README、手順書、相談の文面、書き方の技術
- 未読AI と一緒に開発する30 分
得意と苦手、頼み方の型、テストは自分で書く、ハルシネーション、情報の扱い、学習への影響
- 未読ライセンスと依存ライブラリ35 分
OSS ライセンスの違い、コピーレフト、表示義務、脆弱性、サプライチェーン攻撃、依存を足す判断
- 未読アジャイルとチーム開発35 分
スクラム、見積もり、ユーザーストーリー、報連相
- 未読エンジニアとしての立ち振る舞い35 分
信頼の作られ方、AI との付き合い方、障害対応、1on1、学び方
- 未読ルールを守る — 情報を扱う者の日常35 分
業務端末の使い方、標的型メール、パスワード、情報持ち出しの法的責任、実際の被害事例
第3部 コンピュータとネットワークの基礎
- 未読ビットとバイト35 分
2進数、bit 演算、文字コード、浮動小数点誤差
- 未読文字コードと改行コード40 分
なぜ複数あるのか、Unicode と UTF-8、正規化、Shift_JIS の罠、LF と CRLF、OS の違い
- 未読プロセスとメモリ45 分
プロセスとスレッド、スタックとヒープ、システムコール、シグナル、OOMKilled
- 未読Linux サーバーの歩き方50 分
FHS、ユーザーと sudo、パッケージ管理、ディスク、systemd と journalctl、cron、SSH
- 未読計算量とデータ構造40 分
O 記法、配列とマップの使い分け、N+1、INDEX が効く理由、測ってから直す
- 未読ネットワークの基礎45 分
層、MAC と ARP、IP アドレスとサブネット(CIDR)、プライベート IP と NAT、ルーティング、ポート、MTU
- 未読DNS・TCP・TLS45 分
DNS、IP、TCP、TLS、HTTP/2
- 未読つながらない時に何を見るか45 分
dig / ping / nc / ss / openssl / curl -v / tcpdump、refused とタイムアウトの差、経路上の装置
- 未読通信の形式いろいろ35 分
HTTP / WebSocket / SOAP / gRPC / MQTT / SMTP / SFTP / レガシー連携の地図
- 未読Web と HTTP45 分
URL、メソッド、ステータス、Cookie、キャッシュ、CORS
- 未読規格は誰が決めているのか35 分
IETF と RFC、ISO・IEEE・W3C・Ecma、MUST と SHOULD、ISO 8601 と RFC 3339、デファクト
- 未読ブラウザはなぜ動くのか40 分
DOM、CSSOM、レンダリング、JS エンジン、イベントループ
第4部 プログラミングとクライアント
- 未読JavaScript の基礎55 分
値と比較、参照、クロージャ、this、配列メソッド、Promise と async/await、モジュール
- 未読TypeScript の型45 分
strict、unknown と型ガード、null 安全、判別可能ユニオン
- 未読Go50 分
error を返す文化、interface、goroutine、context
- 未読新しい言語をどう学ぶか30 分
学ぶ順番、慣用句、一次情報、言語をまたいで持ち運べる知識
- 未読HTML と CSS50 分
セマンティックなタグ、フォームと HTTP、アクセシビリティ、詳細度、Flexbox と Grid
- 未読UI/UX デザインの基礎40 分
UI と UX、使いやすさの原則、レイアウトの4原則、色と文字、5つの状態、フォーム、アクセシビリティ
- 未読React で画面を組み立てる50 分
宣言的 UI、props と state、key、useEffect を使う前に、Next.js の描画方式
- 未読フロントエンドの実務45 分
ビルド、状態の4分類、URL は状態、4つの画面状態、API 連携の型、フォーム、性能、テスト、協業
- 未読モバイルアプリの実務45 分
複数バージョンの同時稼働、強制アップデート、ライフサイクル、オフライン、権限、課金、リリース
第5部 サービスをつくる
- 未読スキーマと RPC50 分
protobuf、ワイヤフォーマット、gRPC、後方互換性
- 未読API を設計する45 分
RPC の粒度、命名、ページネーション、エラー設計、バージョニング、破壊的変更の避け方
- 未読データベース55 分
SQL、INDEX、トランザクション、N+1、Spanner の主キー設計
- 未読SQL の書き方50 分
実行順序、JOIN で集計が二重になる罠、NULL、CTE、ウィンドウ関数、安全な更新、EXPLAIN
- 未読ファイルとストレージ40 分
オブジェクトストレージ、署名付き URL、アップロードの検証、公開設定、削除と整合性
- 未読非同期処理とメッセージング45 分
キューとトピック、at-least-once と冪等性、順序、DLQ、Outbox パターン、滞留の監視
- 未読RabbitMQ と Kafka45 分
ブローカー型とログ型の違い、Exchange と Queue、ack と prefetch、パーティションとオフセット
- 未読バッチとジョブ40 分
再実行できる設計、多重起動の防止、日付の扱い、チャンク処理、成功の監視、ドライラン
- 未読コンテナと Kubernetes55 分
Pod / Deployment / Service、宣言的であること、Probe、障害の読み方、リソース制限
- 未読マイクロサービスの実務45 分
タイムアウト、リトライ、冪等性、分散トレース、構造化ログ
- 未読性能と負荷対策50 分
パーセンタイル、ボトルネックの見つけ方、キャッシュ、負荷制限、バックオフ、静的安定性
- 未読AI を製品に組み込む50 分
確率的な出力、コストとレイテンシ、構造化出力、RAG、ツール利用、評価データセット
- 未読間違えられない処理を作る50 分
冪等性、結果不明という状態、状態機械、突合。在庫・予約・ポイント・決済に共通する設計
第6部 設計と品質
- 未読ドメインとは何か45 分
業務の知識、ユビキタス言語、エンティティと値オブジェクト、境界づけられたコンテキスト
- 未読ドメイン駆動設計の実践50 分
戦略と戦術、集約とトランザクション境界、リポジトリ、ドメインイベント、腐敗防止層
- 未読設計の基礎45 分
責務、依存の向き、interface と依存性注入、抽象化のタイミング、リファクタリング、技術的負債
- 未読読まれるコードを書く40 分
命名、関数の大きさ、コメント、レビュー、テスト、運用
- 未読テストを書く40 分
何をテストするか、テストが書けない設計、モック、壊れやすいテスト、CI で回す
- 未読見つけにくいバグ45 分
浮動小数点の桁落ち、境界値、文字列とロケール、時刻、参照の共有、環境差、見つける手段
第7部 安全性
- 未読セキュリティ45 分
XSS、SQL インジェクション、認証と認可、秘密情報の扱い
- 未読Web の脆弱性を体系的に45 分
OWASP Top 10、アクセス制御の不備、マスアサインメント、SSRF、セキュリティヘッダ、レース
- 未読認証と認可の実装50 分
パスワードの保存、セッションと JWT、Cookie 属性、OAuth 2.0 と OIDC、IDOR
- 未読暗号と鍵の扱い45 分
ハッシュ・HMAC・共通鍵・公開鍵・署名・証明書・乱数、そして鍵の管理とローテーション
- 未読AI とセキュリティ45 分
プロンプトインジェクション、間接注入、権限で守る、出力の扱い、RAG の権限、OWASP LLM
- 未読セキュリティを設計に組み込む45 分
シフトレフト、脅威モデリングと STRIDE、設計の原則、CI への組み込み、インシデント対応
- 未読エンジニアと法律45 分
個人情報保護法、GDPR、不正アクセス禁止法、ウイルス罪、業法、漏洩時の報告義務
- 未読技術者の社会的責任35 分
作れることと作ってよいこと、実際に起きた事故、倫理綱領、ダークパターン、どう行動するか
第8部 動かし続ける
- 未読なぜ DevOps が必要になったか35 分
開発と運用の対立、クラウドと IaC が壊した前提、Four Keys、SRE とエラーバジェット
- 未読クラウドの基礎40 分
GCP の構成要素、IAM と権限、ネットワーク、GKE と Cloud Run の使い分け、コスト
- 未読Terraform と Infrastructure as Code45 分
宣言的な管理、state が本体、plan の読み方、import、module、環境分割、CI での運用
- 未読CI/CD40 分
CI で何を回すか、パイプラインの設計、デプロイ戦略、ロールバック、壊れた CI の直し方
- 未読監視とオンコール45 分
ログ・メトリクス・トレース、SLI/SLO、アラート設計、障害対応の動き方、ポストモーテム