実装が〜〜〜進まん!
フォローとフォローリクエストを受けてどう振る舞うかは実装できた(とと思う)が、こちらからフォローするためにはリクエストに署名する必要がある。そのためにはリクエストを送る各々の場所にアカウントの秘密鍵を引っ張ってくる必要があるが、そうするとリポジトリの定義にアカウントがついて回ることになって、それはかなり外側の事情に振り回されてる感があってイケてないなと思う。うーむ。まあ妥協するしかないか。
明日こそはフォローできるようになりたい……。
寝ます。
実装が〜〜〜進まん!
フォローとフォローリクエストを受けてどう振る舞うかは実装できた(とと思う)が、こちらからフォローするためにはリクエストに署名する必要がある。そのためにはリクエストを送る各々の場所にアカウントの秘密鍵を引っ張ってくる必要があるが、そうするとリポジトリの定義にアカウントがついて回ることになって、それはかなり外側の事情に振り回されてる感があってイケてないなと思う。うーむ。まあ妥協するしかないか。
明日こそはフォローできるようになりたい……。
寝ます。
最近肩こりが一段とひどくなった気がする。ギターのせいか?ううむ。
Twitter2は今日はほとんどコードは書いていない。昨日書いたところを修正する必要があるので方法を考えていた。なんとか紙の上ではうまくいきそうな気がしてきたが、やってみないとわからない。
ギターの練習はコードチェンジから逃げるな週間。CとG、それからEとAとDを順番に弾いている。この中だとCが難しい。Dもか。他のはわりと適当にやってもなんとかなるが、CとかDはごまかしが利きづらい。
少し早いが寝ます。ちょっとだけマンガ読む。
日付だけ覚えてたって、意味なんかないよ。
Twitter2の実装、ようやくフォローリクエストに応じることができるところまで来た。しかしアンフォローには対応していない。というかActivityStreamsの理解がすこし誤っていて、フォローリクエストとフォローには区別がなく、アンフォローとフォローリクエストの取り消しにも区別がないので、すこし実装を直さなければならない。でもとりあえず形にはなったから、大きな前進だ。
SeaORMは使いづらい。単にチュートリアルが不足しているという話ではあるけれど。まあでも、素直にsqlxでクエリを書き下すのとどっちがいいのかというと微妙ではあるな。いや、DBエンジンに依存しない形で書いておけばテストはしやすくなるか。まだテスト書いてないけども。
寝ます。
1230 >> 1;
すごい寝不足で眠かった。二時半まで起きてれば当然だ。
Twitter2の進捗は目立ったところがない。結局盆栽はまだ続いているが、ようやくいくつかの悩みに結論が出つつあるから、明日には進むのではないかと思う。ところで、暫定的であるにせよプライマリキーを文字列にしたのだけど、これはパフォーマンス上の懸念になり得るよなあと思い、悩ましい。オブジェクトIDからプライマリキーを引くための呼び出しコストと、オブジェクトID自身をプライマリキーにするコストなら、どっちが大きいんだろうか。
夕方に病院に行った。順調に回復しているとのこと。しかし、火傷を負ってからもう一ヶ月が経つことを思うと、火傷って怖いのだな。やれやれ。
忙しい。いや忙しくはない。眠い。やることが多い日の常として変に早くに目が覚めてしまい寝不足だった。少しだけ昼寝はした。
ギターの練習をした。コードチェンジから逃げない。しばらくはちゃんとメトロノームで計りながらコードチェンジを練習するようにしよう。
Twitter2はDomain Driven 盆栽フェーズに入ってしまった。ユーザーのフォロー関係はどのレイヤでどう扱うべき?みたいな。自明に多対多関係なのでインフラ層では中間テーブルが生えることになるが、ドメイン層に対応するエンティティはあるのか?とか。集約??
半日悩んだがどうにかそれらしい形を見つけられたような気がしている。ただまだ抽象的な型定義だけで実装はできていない。これはけっこう馬力がいる気がする。
寝る。また、まだ夜更かしを……。
そういえば昨日書きそびれたのだけど、Twitterがサードパーティ製クライアントを禁止したらしい。先日からTweetbotやその他のクライアントが動作しなくなっていたのはそのせいらしいのだが、昨日になって開発者利用規約が更新されたとのこと。こういう完全な後出しが道義上許されるわけがなく、やはり現経営陣は狂ってんなと思った。バージョンアップを重ねながら10年以上使っていたTweetbotをアンインストールした。
こんなことがあったので、早くTwitter2(いつまでそんな名前で呼ぶんだ?)を完成させてfediverseのほうに移らねばと思う。やれやれ。
Twitter2(仮称)の進捗はあまりよくない。すこしずつリファクタもしつつDBアクセスなどもできるようになりつつだが、まだフォローもできない。ActivityStreamsの仕様は自由すぎてまともに型がつけられないから、そこはMastodonと連携できればいいやと割り切って実装するしかなさそうだ。うーん、スキーマレスなDBだったらこういうのもっと雑にできるのか?そんなことないか。
どうでもいいけどドメインモデル貧血症だなあという気がする。基本的には単純なCRUDしかないのでロジックなんてそもそもそんなにないのだが。
夜は回転寿司を食べに行った。けっこう満足した。
寝ます。
やはり5連勤は大変だなと思いながら金曜日。まあでも、そのうちまた慣れるでしょう。
快気祝い(?)ということで夜は焼肉を食べた。うまかった。
Twitter2は、いったんはRDBMSをやめてMongoDBにしようかと思ったのだけど、スキーマ設計が難しいのでやめにした。データの柔軟性とかは、最悪JSON型でオリジナルを持てばいいかなと思うが、実際そういう柔軟性が必要なのかは知らない。
そのあたり試したり戻したりしていたので実装自体はあまり進まなかった。いい加減ユーザーのテーブルを作ってフォローくらいできるようになりたい。
ずいぶん体調が良くなった。足の火傷もかなり治りかけている。ただ夜更かしが続いていて眠い。
Twitter2の実装のためにSeaORMを試している。こういうの使わずクエリビルダだけで頑張るみたいなのも考えはしたけども、別にそんな柔軟性いらない気がするので気にせずやってみることにした。ピンと来なかったらやめる。
とりあえずsqliteでテーブル作るところまではやったけど、実際に使うのは明日から。
寝ます。昨日くらいからずっと金曜日な気がしていたが、ようやく本当の金曜日。
「青春コンプレックス」のイントロが1/2倍速で80%くらい弾けるようになった。残りの20%は普通にミスるところと速すぎて弾けない三連符を無視しているところ。これの完成度をゆっくりと高めていけばよいのだが、本当にこれが今の2倍で弾けるようになるのか……?
Twitter 2はリファクタ盆栽。リクエストの検証をUseCaseに切り出して、証明書の取得をRepositoryに抽象化した。これで事前の準備なしで余所のmastodonサーバーからフォローされることができるようになった(はず)が、まだフォローリクエストに対して何の応答もしていない。そこは明日以降かな。そろそろDBも作らなくてはなるまい。
このところずっと夜更かしをしている。ギターもフィンランド語もプログラミングも、もちろん仕事もしていると忙しくてかなわない。夜更かしをやめて早起きをせよというのは自明な解決策に思えるが、なぜかうまくいったためしがない。
二日続けて夜更かしをしてしまったが案外元気。ただ会議が多くてあまり手を動かす時間はなかった。頑張ってテストをたくさん書いたのになぜか全体のテストカバレッジは下がった。理不尽。思うに集計ロジックがいくつかのファイルを無視しているのではないかと思うが、それでいいのか?
Twitter2はようやくリクエストの署名を検証できるようになったのでリファクタをした。とりあえずClean Architectureを意識してUseCaseを切り出す。検証自体はドメインサービスに切り出す。ミドルウェアも切り出したかったが時間切れ。あとはリクエストハンドラも切り出していく。盆栽し過ぎないように注意。
寝るぞ