BACKEND DEVELOPMENT · GO × JUPYTER

Backend in One Go

Goで、バックエンドを一気にひと通り。

00-setup — 環境チェック

00.0
環境チェック — Go / HTML表 / グラフ / SQLite の動作確認

01-oop — オブジェクト指向(Go流)

01.1
構造体とメソッド [解答] — 銀行口座で学ぶオブジェクトの基本
01.2
カプセル化 [解答] — 自動販売機で学ぶ内部状態の保護
01.3
埋め込みと合成 [解答] — 動物で学ぶ継承の代わり
01.4
インターフェース [解答] — 通知で学ぶ抽象化とポリモーフィズム
01.5
ジェネリクス [解答] — 型に依存しない再利用
01.6
SOLID と定番パターン [解答] — 変更に強い設計

02-database — データベース

02.1
リレーショナルモデル [解答] — 非正規化テーブルの重複・更新異常を実測する
02.2
SQLのCRUD操作 [解答] — CREATE/INSERT/SELECT/UPDATE/DELETEを動かす
02.3
集計とJOIN [解答] — GROUP BY・HAVING・JOINの罠を実データで確認
02.4
データモデリングと正規化 [解答] — 1NF〜3NFで更新異常を消す
02.5
トランザクションとインデックス [解答] — ロールバックとEXPLAIN QUERY PLANで検索方式を見る

03-network-server — ネットワークとサーバー

03.1
クライアント・サーバーとTCP [解答] — 生ソケットでポート・接続を実感する
03.2
HTTP解剖 [解答] — メソッド・パス・ヘッダー・ステータスの関係を実測する
03.3
net/httpでWebサーバーを書く [解答] — ServeMuxとハンドラを0から
03.4
RPC [解答] — 遠隔手続き呼び出しの呼び出し境界を実感する

04-api — API設計とアーキテクチャ

04.1
REST設計 [解答] — 良いAPI・悪いAPIを実リクエストで比較する
04.2
REST APIを作る [解答] — encoding/json と httptest でCRUDを実装する
04.3
3層アーキテクチャとDAO [解答] — ハンドラ・サービス・DAOの役割分担を実ログで見る
04.4
認証・ウェブセキュリティ [解答] — SQLインジェクション対策・bcrypt・自作JWTを実演する

05-framework — フレームワークと自作

05.1
フレームワークが無いと何が辛いか [解答] — 定形処理の重複を実測する
05.2
自作ミニWebフレームワーク [解答] — ルーティング・ミドルウェア・コンテキスト・バリデーションを組み立てる
05.3
統合プロジェクト [解答] — DB制約・ルーティング・ミドルウェアが無いと何が壊れるかを実演する