System Designとは
設計は、正解の図を描く仕事ではありません
System Design と聞くと、きれいな構成図を思い浮かべるかもしれません。
ですが実際に求められるのは、図そのものではありません。なぜその形にしたのかを説明できることです。
このコースでは席の予約サービスを題材にします。公演の席を並べ、利用者が予約する、あの仕組みです。
決まっていません。同じ予約サービスでも、1日100人と1日100万人では形が変わります。
予算が3万円か300万円かでも変わります。条件が違えば答えが変わるので、覚えるべきは答えではなく決め方です。
選ばなかった案を残す
設計の価値は、選んだ案よりも選ばなかった案に出ます。
半年後に「なぜ A ではなく B にしたのか」と聞かれたとき、理由が残っていないと最初から考え直すことになります。
Python
plans = [
{"name": "A", "cost": 3, "speed": 2},
{"name": "B", "cost": 8, "speed": 9},
]A は安く、B は速い。どちらが正解かは、いま何を優先するかで決まります。
探して見つかるなら、それが一番です。見つからないときにどちらを捨てるか決めるのが設計です。
捨てた側を記録しておくと、条件が変わったときに拾い直せます。
演習
2つの案と優先するものを受け取り、選んだ案・捨てた案・理由に加えて、捨てたことで何を失ったかまで返します。
要件
- priority が "cost" のときは cost が小さい案を選び、理由は "コストを優先しました" とする
- priority が "speed" のときは speed が大きい案を選び、理由は "速さを優先しました" とする
- lost には、捨てた案のほうが優れていた面を入れる。cost を優先したなら "速さ"、speed を優先したなら "コスト"
ヒント
編集 ゆめさく編集部