0時過ぎに寝て7時に起きた。けれど、なんかしんどくて起き上がれなくてそのまま2度寝した。1時間ほど寝たらすぐに起きれた。あのしんどさは何だったのか。とはいえ、気付いたら8時半にはオフィスにいたので普段の仕事始めと変わらない見た目になった。お昼に体温を測っていたら37.1℃になってたので熱っぽい雰囲気。日中は特にしんどくはないんだけど。

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

4章エンコーディングと進化を読んだ。だんだん内容が難しくなってきて読むのに時間がかかる。これで第一部のデータシステムの基礎を読了した。4章のまとめ。

データシステムの変更のしやすさ、アジリティのことを本書では 進化性 を呼んでいる。

進化性を高めるには、システムのバージョンアップが容易にできなくてはならない。このとき、サーバーサイドアプリケーションは、大抵の場合、一度にすべてのノードをのバージョンアップができないことから、 ローリングアップグレード という手法を用いる。ローリングアップグレードを可能にするには、データフォーマットやスキーマの変更に対して、新旧どちらのフォーマットも、新旧どちらのコードからも扱えないといけない。データフォーマットやスキーマの 前方/後方互換性 を維持することが進化性を高めることに大きく影響する。

メモリを共有していないプロセス間でデータを渡すとき、そのデータをバイト列へエンコードしないといけない。通常プログラムはデータを (少なくとも) 2つの異なる表現で扱う。

  1. CPU によるアクセスや操作が効率的になるよう最適化されてメモリ内で表現される
  2. ファイルやネットワーク経由でデータをやり取りするにはバイト列にエンコードしないといけない
    この表現はメモリ内のデータ構造とはまったく異なる

この2つの表現の間で何らかの変換が必要になる。インメモリの表現からバイトの並びへの変換は エンコーディング (シリアライゼーション、マーシャリングとも呼ぶ) 、その逆は デコーディング (パース、デシリアライぜーション、アンマーシャリングとも呼ぶ) と呼ぶ。

データエンコーディングフォーマットと、それらの互換性に関する特性。

  • プログラミング言語固有のエンコーディングは1つのプログラミング言語に限定され、しばしば前方及び後方互換性を欠く
  • JSON, XML, CSV といったテキストフォーマットは広く利用されており、その互換性は利用の方法に依存する
    • オプションのスキーマ言語はあるが、それらは助けになることもあればむしろ障害になることもある
    • これらのフォーマットはデータ型について多少の曖昧さがあるので、数値やバイナリ文字列などについては注意が必要
  • thrift, protocol buffers, aro といったスキーマを持つバイナリフォーマットではコンパクトで効率的なエンコーディングが可能であり、前方及び後方互換性のセマンティクスも明確に定義されている
    • これらのスキーマは、ドキュメンテーションと静的型付き言語でのコード生成に役立つ
    • ただし、バイナリフォーマットにはデコードしなければ人にはデータが読めないという欠点もある

データフローの形態とエンコーディング。

  • データベースでは、データベースへの書き込みを行うプロセスがデータをエンコードし、データベースからの読み取りを行うプロセスがそのデータをデコードする
  • RPC と REST API では、クライアントがリクエストをエンコードし、サーバーはそのリクエストをデコードしてレスポンスをエンコードする。そして最後にクライアントがレスポンスをデコードする
  • 非同期のメッセージパッシング(メッセージブローカーあるいはアクター)では、ノードはお互いにメッセージを送信することによって通信し、送信側がメッセージをエンコードし、受信側がそのメッセージをデコードする
    • kafka などを使ったイベント駆動アーキテクチャはこの形態になる

多少の注意を払うことで前方/後方互換性やローリングアップグレードは十分に実現可能となる。

霖 (ながめ)

プロダクトの名前を考えるために万葉集を眺めてた。ふとみつけた ということばを気に入った。一文字だと「ながめ」または「ながあめ」と読む。霖雨と書くと「りんう」と読むらしい。万葉集では次の和歌で詠まれている。和歌では「長雨」と「眺め」をかけて使うのが常套句らしい。また古文でいうところの眺めはぼんやり見ながら物思いに耽るという意味になるそうだ。

4217 卯(う)の花を 腐(くた)す霖雨(ながめ)の 始水(みずはな)に 寄るこつみなす 寄らむ児(こ)もがも 大伴家持

(現代語訳) 卯の花を腐らせるほどに痛めつける長雨、この雨のせいで流れ出す大水の鼻先に寄りつく木っ端のように、私に寄り添ってくれる娘でもいてくれたらなあ

新版 万葉集 四 現代語訳付き

ジョギング

あまり調子がよくなかったので19時にお仕事を終えて近所の公園にジョギングに行ってきた。ワクチンを接種してから運動を控えていたのでジョギングしたのは初めてかな。2-3日に1回ぐらいの頻度でジョギングしている。ワクチン接種した週はウォーキングに留め、次の週は実家で田んぼ仕事でバテてて、今週は初めて行ってきた。ちょっと早い時間帯だったせいか、2つの陸上部が練習していてやや人が多かった。400m級のトラックがあって陸上部の人たちが練習している。練習の邪魔にならないよう、トラックの内側を20-30分とぼとぼジョギングしている。疲れたら歩きながらなのでそんなに距離は走ってない。ジョギング終えてから30分ぐらいストレッチをした。