diary

1128

土曜日。趣味プロジェクトを触っていたのだけど、途中でルーティングの抽象化について考えたいという気持ちが起こり、夜はそちらを考えていた。以前考えていたルーティング機構は、まあルーティングを簡単に書けるDSL的なもので、特に抽象化を想定していたわけではないのだけど、ルーティングをViewから切り離せればUseCase側に書けるじゃん、という着想があり、じゃあやってみるかとなった次第。しかし型合わせゲームが厳しくてなかなか大変。associated typeがあるプロトコルは自動でexistential typeを生成してくれないのだけど、これが結構厳しい制約で、というかプロトコルを型として書いているところは基本的に暗黙的なexistential typeを指定していたことになっていたのであって、それができない(associated typeを持つ)場合は全然そんな風には書けないのだった。このあたりの制約を理解するのにだいぶ時間がかかってしまった。とりあえず今は適当に型を消去して実行時に呼び出しを切り替える方法でなんとかしているが、これもなぜ動いているのかはよくわかっていない。この動的ディスパッチ、ほんとに大丈夫なのか?

あとは餃子を作って食べたりした。餃子はだいぶ上達してきた感じがある。かなり無難に作れる。


1129

今日もコード書いていた。ルーティングの続き。とりあえず基本的な動きは満足できる感じになった。いま趣味プロジェクトで動かしてるものよりもインターフェイスが扱いやすい。テストも通っているが、親階層へのアクセスがまだできていない。ここも型安全に書きたい気持ちはあったけど、遷移元が複数あることなどを考えると難しそうだ。
あと本題であるところの画面遷移とUIKitとの分離もうまくできている。これでUIKit依存性はプレゼンテイション層に集約しつつ、ユースケースが画面遷移をプロトコルベースで定義・呼び出しすることができるであろう。嬉しい。

夜は友人とスキヤキを食べに行った。ソーシャルディスタンス仕様で小分けになっていた。ふーむ、風情がないが仕方なかろう。肉はおいしかった。いい肉の日だしな。


さて明日は仕事。Reactをやる日?本業は今月の間は放置していいでしょう、まあ今月は明日で終わりだけども。