きょうの日報 2018.04.30

🐳 やったこと

vending_machine_2nd

きょうはほとんどコードは書かなかった。テストを書いたくらいかなあ…

「釣り銭ストックを導入する」というところの課題をやっているのだけど、「自販機が持てる金種のうちより大きい金種から順に釣り銭として出す」 というところのロジックが、どうもむずかしくて思い浮かばずにいる。

なんとなく、 if 文なり case 文なりでお釣りの金額を判定して、なんか再帰的なやつを書くといいのかなということを考えていた。

しかしこのへんを実装するとなると、もしかするとお金に関するデータの保持のしかたを、金額(Integer)ではなく金種ごとの枚数(Hash)にしたほうがいいのかもしれない、と思い始めた。枚数じゃなく金額を取得するメソッドも必要になるとは思うけど、リアルの自販機もおつりは硬貨なりお札なりが金額に対応する枚数だけ出てくるわけで、金額だけがわかるというインタフェースではないよね。

SQL 書き方ドリル

ひさしぶりにやった。第3章・その3「複数テーブルの結合を行う(2)」をやった。 INNER JOIN が出てくるところ。

このテキストの練習問題には

「Sales テーブル・Customers テーブル・CustomerClasses テーブルを結合し CustomerClasses テーブルの CustomerClassID カラムでグループ化のうえ、Sales テーブルの Quantity 合計値、CustomerClassID 、CustomerClassName を取得しなさい」

みたいな形式で問題が出される。SQL をそのまま人間語に変換したような文の設問にすることで、解答が導きやすくなるよう配慮してくれているのかな?とエスパーしているけど、個人的にはそういう書き方よりは

「CustomerClass の種別(つまり CustomerClassID)ごとの販売総数、CustomerClassName、CustomerClassID を取得しなさい」

みたいによりリアルな要件としての記述のほうが SQL が浮かびやすいなーと思い、毎回こういう形に頭の中で変換してから書いている。

そのほか

Vue.js オンライン読書会が開催された。キー修飾子 のところからこの章の最後まで。わたしの睡眠時間確保のために いつもの半分の時間で 30 分だけにしてもらったんだけど、結果的にちょうどいいボリュームだった。

🍟 他に書きたいこと

あしたもあさっても仕事です。