4時に寝て7時に起きた。やや寝坊したけど、夜中に作業してよく眠れたのでまぁいっかとしておく。昨日のかぼちゃの煮物が残っていたので19時に帰って晩ご飯食べて、ちょっと休んでからウォーキングに出た。ウォーキングの途中でオフィスに寄って一作業してからまたウォーキングして帰るという、運動と作業の一石二鳥になることを思いついた。ちょっと天才。ウォーキングの合計時間は1時間強ぐらい。

データ指向アプリケーションデザイン

8章分散システムの問題のうち、8.1, 8.2, 8.3を読んだ。

とくに 8.3 信頼性の低いクロックは私がこれまでアプリケーションを開発していて全く意識したことがなかった問題を扱っていてすごく勉強になった。おそらくミリ秒レベルでの障害調査をほとんどやったことがなかったので気にしてなかったのかもしれない。Cassandra が採用している LWW (last write wins、最後の書き込みを勝たせる) だと、短時間に連続して行われた書き込みと、本当に並行して行われた書き込みとの区別がつかないのでクロックの同期の状況によって因果律違反が発生する懸念がある。

NTP を使っていてもクロックの同期はミリ秒から秒レベルで正確ではない可能性があり、そこにプロセスの一時停止なんかも加わると容易に数秒の時間がズレてしまい、トランザクションにおける因果律違反が発生する可能性があるという話が丁寧に説明されている。実際に同じリソースに対してミリ秒レベルでトランザクションを発行するというのはあまりない状況だろうし、状態がよければあっても正常に動作する。但し、正常にトランザクションが実行されない懸念があるという理屈を知っておくのは大事なことに思えた。Google の Spanner が原子時計を導入して精度の高い時刻同期をしているというのは記事を見聞きして知っていたが、それがないとどんな問題が発生するのかが 8.3 節を読むと理解できる。

選考面談

そろそろお仕事をしないと会社の財務がやばいので選考を受けている。今日は2社の選考を受けた。1つは Go の開発案件、もう1つは Java の開発案件。どちらも業務内容はマッチングしていて勤務形態もフルリモートなのでいまの生活のまま、お仕事ができる。1社は正式にオファーが届いて、もう1社もおそらくオファーがくる想定。どちらかを選択する。転職だと面接を何回もして選考を受ける必要があるけど、業務委託だと大半が1回で決まる。昔フリーランスやってたときもそうだったかな?調整の管理コストが下がって望ましいことではある。もう私の中では承諾する方の案件は決まっているけど、念のため、1日寝かして顧問さんとも相談した後、最終決定しようと思う。

韃靼そば茶

少し前から家では 大阿蘇万能茶 を煮出して冷やして飲んでいる。村田園のサイトにはないので商品名が変わった?のかもしれない。この万能茶は、よく言えば後味すっきり、わるく言えば刺激がないと言える。おいしくないわけではない。近所のドラッグストアでノンカフェインのお茶を求めて購入した。もう少しお茶の主張がほしいなと思って、にっこくの 韃靼そば茶 を購入した。そば茶もノンカフェイン。これは水出しもできる。試しに水筒にティーパックを入れて、オフィスのウォーターサーバーで水を入れて作ってみた。時間が経つごとにそば茶の味が濃くなっていくけど、これはこれで私は好みなので問題なさそう。なるべく1日で飲みきって水筒を洗えばよさそう。

夜にうまく眠れなくなってから、夜にカフェインの入った飲みものを避けるようになった。ノンカフェインだとわかっているお茶なら安心して飲める。しばらく試してみる。