覚えたことを、作りきる。

コースは順に読んで覚えるためのもの、プロジェクトはひとつのものを 作りきるためのものです。要件だけ渡して放り出すのではなく、手順と回答例、 つまずきやすいところまで置いてあります。

全 18 件

入門 📊

売上が落ちた原因を絞り、1 枚のレポートにする

注文の CSV 1 枚から、売上が落ちている場所を「全体 → 内訳 → 絞り込み」の順に特定します。pandas の集計だけで、結論・根拠・言えないこと・次の一歩を書いた 1 枚のレポートまで作りきります。

PythonpandasCSVレポート
入門 🧾

どの幅でも崩れない料金表を 1 枚作る

3 つのプランを並べた料金表を、スマホの 360px から広い画面まで崩れない形で組みます。@media を 1 つも書かずに、中身の都合で折り返させるのが狙いです。

HTMLCSSGridアクセシビリティ
入門 ⚡

遅い集計を、測ってから速くする

どこが遅いかの勘はたいてい外れます。時間を出してから直し、直したら答えが変わっていないことを確かめます。効かなかった書き換えを 1 つ見つけるところまでやります。

Python計測計算量cProfile
中級 🔐

自分のコードに穴を開けてから、塞ぐ

検索欄に文字を入れるだけで全員分のメールアドレスが出る様子と、ファイル名で公開フォルダの外が見える様子を実際に再現し、そのうえで塞ぎます。

Pythonsqlite3入力検証パス操作
上級 🧵

データ競合を、コンパイル時に止める

他の言語なら動いてしまい数が合わなくなるコードが、なぜ Rust では書けないのか。Send が何を言っているかを読み、通る形に直して 3 つの書き方を実測します。

Rust並行処理Send/SyncArc/Mutex
上級 📉

メモリを、測ってから減らす

tracemalloc で山の高さを出し、2 つの方向で減らします。1 件を小さくする(__slots__)のと、同時に持つ数を減らす(ジェネレータ)の。効くのは後者です。

Pythontracemalloc__slots__ジェネレータ
上級 🔒

壊れた状態を作れないクラスにする

決まりを __init__ の中だけで守っていると、作ったあとは素通りです。記述子で代入のたびに確かめ、計算で出る値は持たずに出すようにします。

Python記述子__set_name__不変条件
上級 🧭

呼ぶ側が分岐できるエラー型を設計する

Box<dyn Error> だと「失敗した」としか分かりません。起きうる失敗を enum に書き出し、種類を増やしたときコンパイラが呼ぶ側を止める形にします。thiserror と anyhow の境目まで。

Rustエラー設計thiserroranyhow
上級 💳

Django で EC サイトを作る(後編)注文と決済

在庫 1 個に 2 人が同時に来ると、ふつうに書いたコードは 2 人とも通します。PostgreSQL で再現させてから直し、決済の通知が 2 回来ても 1 回しか処理しない形にします。

DjangoPostgreSQLトランザクション冪等性