20250523 TSKaigi 2025 Day 1

n円払って有給取って行ってきました。

SignalとObservable―新たなデータモデルを解きほぐす

https://x.com/laco2net

https://docs.google.com/presentation/d/1c7fYqn7-v3hnbKtmwXHbvwuCs6cNq_ThLKVDZ7rvbA0/preview?slide=id.g260298bad6d_0_77

UI開発における状態管理の話に始まり、歴代の状態管理ライブラリを概観しつつ「結局やりたいのって状態+派生状態+イベントドリブンな副作用なんだよね」と整理する(mobxが言及されて嬉しい)。さらにそれを「値の生産」というレベルにまで抽象化し、見慣れた同期/非同期・単一/複数という軸に新たにpull/pushという軸を加えることで、Signalの話とObservableの話はFunctionやIterator、Promiseから全部つながっていたんだと最後に納得させられる大回転。

すごいことをすごいスピードで流し込まれたのでわかったようなつもりで大してわかってないんだけど、すごいので忘れない。きっと必要なときに思い出せると思う。すごすぎてこんな顔になった。

Language Serverと喋ろう

https://x.com/pizzacat83b

https://speakerdeck.com/pizzacat83/language-server-todie-rou-tskaigi-2025

Language Serverとは何か、意義、使い方、応用、AIなど幅広く理解できた。なぜLanguage Serverを使うのかという点も発表者のバックグラウンドから納得のいく説明がなされて、TSだけ書いていてはわかりにくい一段階高い視点が得られて有意義だった。

AI Coding Agent Enablement in TypeScript

https://x.com/yukukotani

https://speakerdeck.com/yukukotani/ai-coding-agents-enablement-in-typescript

AIコーディングエージェントを速く正確に動かすため、我々は何をすればよいのか。意味があることとないことが最新の研究成果の引用とともに紹介され、基本的な結論はそりゃそうだよねという感じでありつつも、そこに至る筋道が明確で非常に参考になった。「入力方法はどうでもいい(中略)大事なのは入力に値する情報の整備」は名言。開発を効率化するという包括的な視点の中でツールチェインに対しても考察されており良い。

fast-checkとneverthrowのPBT+Result型で堅牢なビジネスロジックを実現する

https://2025.tskaigi.org/talks/kueda

TSにはthrow型が無いのが辛い、という積年の問題について、現状を分析した上でneverthrowのようなライブラリをどのような形で、どこになら導入できるのかというのが経験に基づいて丁寧に考察されており、同じ問題に苦労している人間として地に足がついた報告が参考になった。さらにPBTという独特な手法についても知ることができた。

Rust製JavaScript/TypeScript Linterにおけるプラグイン実装の裏側

https://x.com/unvalley_

https://speakerdeck.com/unvalley/typescript-linters

Rust製LinterはESLintをパフォーマンスで上回るものの、ESLintが支持される理由であるプラグインシステムの再現にはRustがRustであるがゆえの困難がある。針の穴を通すような技術的な挑戦が僕らが日常的に使うツールチェーンを支えていることが実感される感動的な発表だった。yukukotani氏の発表でLinterの速度の重要性を再認識したところでこの発表が出るというのもアツかった。

その他

そこそこ知り合いがいたのと、スポンサーブースが普通に盛り上がっていて楽しい。エンジニアは問題を解きたがりなのでわかるかな?的な挑戦問題の掲示が多かった。お弁当おいしい。30分単位の発表は長くはないけど連打されるとそこそこ疲れる。集中してるし。自分的安牌みたいな発表を聞きがちだけど裏でトンデモアイデアみたいな発表もあったりして分身したい。数年前なら全然わかんねえよって話題ばっかりだったと思うけど、今はどの話題もそこそこ意義やポイントが理解できるので成長したなという実感がある。楽しいね。

20250521 肉に謎の硬いものが入ってた

項目 内容 得点 換算点
睡眠時間 7時間34分 100 13.0/13.0
起床 8:27 78 6.2/8.0
散歩 実施・ゴミ拾いなし 100 5.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 ノー 0 0.0/5.0
労働 passion: 75点, discipline: 75点 75 18.0/24.0
ジム 休養日 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 ノー 0 0.0/7.0
あすけん - 61 5.5/9.0
総合 1日の総合評価 - 77

よく眠れた。が、8時前後に散歩したいので起床時間をもっと前にしたい。ということで入眠を早める努力をしてみる。睡眠力で、世界を制覇する。

昼食は松屋のいつものセット。自動呼び出しシステムが止まってたし肉に謎の硬いものが入ってたし、割と悲しい寄りの食事だった。

Gemini2.5-flashの新バージョンが出たそうですね。前の2.5-flashはなかなかやるなという感想で、今回の2.5-flashもなかなかやるなと思った(違いがあまりわからない)。安くて強いモデルが出てくるのはいいことだ。最近は仕事でも上手くAIにやらせることを意識しているが、残念ながらかなりシンプル目のタスクでもAIがまともにやれたものは1つもない。長々指導していても途中で集中が切れるのか俺もAIも理解できないぐちゃぐちゃの変更を入れ始めて矢面海!!と絶叫することになる。既存プロダクトにAIが触れるような仕組みを用意してやるのは結構大変そうで、新規プロダクトの初速の方が強そうだ。

20250520 隠れ肥満

項目 内容 得点 換算点
睡眠時間 7時間16分 100 13.0/13.0
起床 8:58 52 4.2/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 2色カバー 80 4.0/5.0
体操 実施 100 5.0/5.0
労働 passion: 75点, discipline: 75点 75 18.0/24.0
ジム 有酸素+筋トレ 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 53 4.8/9.0
総合 1日の総合評価 - 80

ジムで久々に有料の体組成測定をやったら、鍛えつつ頑張って体重付けていたのに体脂肪の伸びの方が大きくて隠れ肥満判定されてキレてます。とりあえず食事は体重増ではなく維持を目的とした量に減らし、トレーニングは強度を種目を増やすことにする。一応筋肉も増えてはいたので無駄ではなかった。

↑に時間を取られてしまって相撲の一番いいところを運動しながら見れなかった。

今日は暑かったけどまた冷えるらしい。金土はTSKaigiに参戦するのだが、上着が必要そうだ。

個人開発ではパケットキャプチャが一段落した。TCP以上はTLSのせいで中身が見れない。よほどの工夫をすれば見ることもできるだろうが、そこまでやりたいかというとな…本当はやりたいんだ。HTTPリクエストの書き換えができれば開発ではとても便利だからね。まあとりあえず、今はフィルタリングをつけようと思っている。

20250520 フラッシュ!

項目 内容 得点 換算点
睡眠時間 6時間19分 73 9.5/13.0
起床 7:40 100 8.0/8.0
散歩 実施・ゴミ拾いあり 100 5.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 実施 100 5.0/5.0
労働 passion: 80点, discipline: 85点 83 19.9/24.0
ジム 有酸素+筋トレ 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 80 7.2/9.0
総合 1日の総合評価 - 91

最近はひたすらGemini2.5で色々やっている。こいつは本当に賢い。そしてproとflashの間には確実な知性の差がある。しかしAIは周囲の文脈を読んでそれに合わせることが得意だ。proである程度下地を固めてやると、その後のパターン量産はflashでもかなりいい線いける(それでもproには劣るが)。

今月は珍しく完全な家計簿を付けている。不意の出費が多く、単月黒字になるかギリギリのラインだ。22日までに3000円くらいでやりくりすることになる。ちょっと意識していれば余裕か?だからgeminiもflash使いたいんだよな。

謎の思索 1

米の値段について考えている。安くなってほしいが、特に国産米については国土の制約から技術による効率化があまり期待できず、安くなってほしいと願うことが従事者の給料が低くなってほしいと願うことにつながってしまい、それなら誰にババを引かせるかという話にしかならないなあと思っている。でもまあ国民の腹を満たすのは経済だけで語って良いものではないし、バカほど関税かけて市場歪ませてる政府がなんとかしろよと思わなくもない。

謎の思索 2

介護従事者と市役所についても考えている。人口ピラミッドが極端な形で無い限り、人口が2倍になれば要介護者も介護従事者も2倍になるので、介護従事者の不足に対して国外の労働力を入れるのは、一時的にピラミッドの形を変えて対策にはなるが、その人たちもいずれ要介護者になるとすれば根本的な解決にならないという考え方を前江添さんが言っていて、そのときは納得した。しかしよく考えると要介護者が2倍になったときに必要な介護従事者が2倍になるのか?という問題だ。スケールメリットが効くとすれば、社会の人口増加はエッセンシャルワーカー比率の低下を可能にし、その結果僕のように謎の何かを作る人間が生きられるようになる。

ここで問題になるのは職種ごとのスケールメリットの効く度合いだ。たとえば市役所のような集約管理型業務は効きやすいだろう。実際行政効率化のために合併するという話はよく効く。逆に介護従事者は?これは効きにくいだろう。

20250516 髪map

歯科定期検診→上中里でちょっと用事して昼食。また帰ってきて散髪。

上中里、めっちゃ電波悪い。

用事をまとめて3つ片付けていい休暇だったような気がしないでもないが、夜はもう暇でしょうがなかった。何をしても楽しくないし、そういうときに何かをしようと思うとカスみたいなニュースを見てしまって一層嫌な気持ちになるんだよな。自由な時間というのは本当にろくなもんじゃない。かと言って寝たいとも思わない(早く寝ることによって明日の時間を増やそうとも思わない)。

散髪ってmapかなって考えてた。僕はいつも3cm短くしてと言うので

hairs.map(hair => ({ ...hair, len: hair.len - 30 }))

なんですよ。ただ、JavaScriptで考えるとmapは新しい配列を再生成するのだが、髪はinplaceで変更する。なので

hairs.forEach(hair => hair.cut(30))

の方が良さそう?でも実際は散髪ってmapじゃないんですよ。全部の要素に同じ処理は行えない。毛根が頭皮座標系において2次元的に、空間座標系においては3次元的に分布している一方でハサミの切断部分は線分として存在しており、ハサミを使って複数の毛髪に同じ切断操作を行うことはできないし、そもそも髪にできる操作って「ncm切る」ではなく「切った後の長さがこのくらいになる」なんですよね。

毛根が切断線分を軸とする円筒面上に分布すれば一発で同じ長さに揃えることはできるだろう

hairs.forEach(hair => hair.setLength(40))

しかし頭部は基本的に凸構造だ。凹構造の人体と言えば…そう、消化管!

オチはない。

20250515 前足を使って器用に食べます

項目 内容 得点 換算点
睡眠時間 5時間28分 39 5.1/13.0
起床 7:03 100 8.0/8.0
散歩 実施・ゴミ拾いあり 100 5.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 ノー 0 0.0/5.0
労働 passion: 75点, discipline: 75点 75 18.0/24.0
ジム 休養日 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 ノー 0 0.0/7.0
あすけん - 80 7.2/9.0
総合 1日の総合評価 - 72

睡眠に関するスパースベッド仮説(ベッド上の物体を減らすことで睡眠姿勢が安定し睡眠の質が向上する)、第1日は仮説を指示する結果が得られた。引き続き実験を続ける。

いつも朝食のタンパク質・カルシウムを担当している魚肉ソーセージだが、内側の包装皮を破るのが困難だ。まず説明によるとつまみしろに直角に切り込みを入れるように破り、切り込みの上と下をそれぞれ魚肉ソーセージ長軸に対して時計回りと半時計周りに破り広げることで包装を除去せよとのことだ。

しかしこれは成功しない。直角に切り込みは入る。しかい破り広げることはできず、ただつまみしろがきれいに破り取られるだけだ。そしてこの状態になるともう人間の前足では手出しができず、カッターナイフで切り開くしかない。とてもとても悲しい。

実際にworkする開封方法はこうだ。つまみしろを破らないように引っ張り、巻物を開くように剥がしていく。これで6割くらいは成功する。しかし残りの4割はやはり上の失敗パターンに落ち着く。

興味深いのは、この魚肉ソーセージは4本セットで売っているのだが、成功するときは4本とも成功するし失敗するときは4本とも失敗する。製造や運送の過程における温度変化等に影響を受けるのだろうか。ちなみにいま食べてるやつはダメなやつです。

明日はちょっとした用事が複数重なったのでそれらをまとめて片付けるべく休みにした。グフフ。

20250514 51%

項目 内容 得点 換算点
睡眠時間 5時間45分 50 6.5/13.0
起床 7:18 100 8.0/8.0
散歩 実施・ゴミ拾いなし 100 5.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 実施 100 5.0/5.0
労働 passion: 65点, discipline: 65点 65 15.6/24.0
ジム 有酸素+筋トレ 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 ノー 0 0.0/7.0
あすけん - 60 5.4/9.0
総合 1日の総合評価 - 75

散歩、犬豊漁。7:50くらいに行けると散歩犬と通学小学生で賑やかい。今どきの小学校は何時までに登校なんだろう。いろいろなことを考えながら歩いていた気がするけど全部忘れた。最近は睡眠が短く雑念が多いのですぐ忘れてしまう。そもそも雑念しかなかったかもしれない。

今日は相撲の時間に退勤できていなかったので、その後ジムで漕ぎながらYouTubeで見た。横綱豊昇龍、またも平幕相手に取りこぼしてしまう。今日は豊昇龍がそこまで弱かったわけではないと思うのだが、阿炎の長い手から繰り出される両手に勢いを止められ、たまらず左足を引いてしまったために両足が揃ってしまい、続く引き技で落ちてしまった。両手を受け止める力と体勢が甘かったと言われればまあそうなのだが、阿炎の両手は大の里すら止める必殺技だ。どちらかと言えばマインドゲームに負けてしまったという展開に見え、それは確率的には仕方ないんじゃないかなあと思う。

対戦ゲームだったら心を殺して51%勝てる行動を繰り返せばいい(人生は?)。しかし横綱は51%では許されない。勝たねばならないという責任が重圧になり、動きを硬くしてしまうこともあるのだろう。現役の力士の中で1番か2番くらいに強いのは間違いないのだが、必死で戦った結果、地位に対して実力が足りないと言われてしまうのは辛そうだ。

はあ。ゴミを捨てて寝よう。寝ないと何も始まらない。

そうだ、最近睡眠が良くないことについてある仮説がある。冬は掛け布団と毛布をしっかりセッティングして僕がその中に収納された状態で寝るのだが、春はそれだと若干暑い。なので毛布やタオルケットを適当にかけて寝るのだが、適当に配置されたそれらが僕の睡眠中の体動によって移動し、僕の姿勢を阻害することで睡眠の質を低下させているのではないか。今晩はそうならないようにベッドの上のものを減らして寝てみよう。

20250513 faviconを変えるか!

項目 内容 得点 換算点
睡眠時間 6時間30分 80 10.4/13.0
起床 8:00 100 8.0/8.0
散歩 実施・ゴミ拾いなし 100 5.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 実施 100 5.0/5.0
労働 passion: 65点, discipline: 60点 63 15.1/24.0
ジム 休養日 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 72 6.5/9.0
総合 1日の総合評価 - 86

ランチは吉野家の親子丼。外食日だが特に食べたいものが思いつかなかったので牛丼チェーンになる。食事に油が足りておらず、カロリーが少ない。しかし塩分はオーバーしている。バランスが難しい。

ジムは休養日。若干膝が痛かったので丁度いい。時間があったのでパケットキャプチャの続きをやっていた。IPのフラグメント再構成が相変わらず難しい。1つフラグメントが届くたびに再構成が可能かどうかチェックしなければならないのは非効率な気もするが、避けようがなさそうだ。いや、でも前回のチェックの情報を利用してチェックを単純化することはできるのか。たぶん実際に稼働している機器ではその辺もゴリゴリにやってるんだろうなあ。

時間はあったんだけどさ、ジムの休養日に時間があるのは当たり前なんだよな。ジムに行った日でも余裕があったなと思えるように最適化を進めたい。

watch-duty-managerのfaviconを変えるか!と急に思い立ってClaude3.7+Roo CodeのOrchestratorモードにやらせてみた。Orchestratorモードというのはあるセッションが管理役になってタスクを細分化して別のセッションに割り振るので、割り振られた方は背景情報をあまり知る必要がなくコンテキスト(つまり費用)が節約できるというやつだ。この仕組みはなかなかいい感じに機能したが、頼んだタスク自体はClaudeがどれだけやってもicoファイルを作ることができず頓挫した。悲しいね。

最近の日記、つまんねェ〜〜〜〜。まあアレなんですよ、僕の日記道は何かあるたびにネタ帳に書いておいて日記には夜それをまとめて書くというあり方を良しとしていないので、朝から夜まで何かしら思い悩んだことがないと面白いこと書けないんだよな。でも「日を記す」という原義に立ち返るなら、その日の出来事をきちんと記せるようにメモを使うというのも正しいあり方のように思える。

20250512 CUDAがサスペンド復帰後に壊れるやつ/パイプライン処理

20250511 CUDAがサスペンド復帰後に壊れるやつ

のんびり起床。朝食(論理)。無慈悲な掃除。ジムで相撲見る。昼寝、夕食、ゴミ捨て。

ローカルでollamaを使うときに、OS(Ubuntu24.04)がサスペンドから復帰して以降はGPUが利用されないという問題があった。GPUを利用するSpeech Noteも同じ問題があった。

これはollamaやSpeech Noteがサスペンド中もnvidia_uvm(CPUとGPUでメモリ空間を共有するためのモジュール)を掴み続けており、nvidia_uvmが再起動すべき?なのにできないのが問題のようだ。

なので一旦stopで利用を止めてやってモジュール再起動を再起動してやると直った。
https://github.com/ollama/ollama/issues/8426

sudo fuser -v /dev/nvidia*
sudo systemctl stop ollama && sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm && sudo systemctl start ollama

CUDAを利用するいろいろなアプリケーションで起きるのかもしれない。

RAM32GB, VRAM6GBの僕のマシンだとqwen3:8bとか、ものによっては12Bのモデルも動いたりする。でもしっかり電力は平常時の倍くらい食ってるので、効率はよくはないよなあ。

20250512 パイプライン処理

項目 内容 得点 換算点
睡眠時間 5時間54分 56 7.3/13.0
起床 9:17 36 2.9/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 実施 100 5.0/5.0
労働 passion: 80点, discipline: 70点 75 18.0/24.0
ジム 有酸素 100 12.0/12.0
勉強会 ノー 0 0.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 80 7.2/9.0
総合 1日の総合評価 - 64

昼は松屋。ブルーレットを買うときにクーポンを使い忘れて40円くらい損した。もやし買えるじゃん。ジムで相撲観戦。最近人生最大に体重が増えていて56.8kgあった。

ジムでストレッチマットを使った後は、

  1. 消毒液を噴霧
  2. モップをかける

の2つの作業を順番に行う必要がある。消毒液もモップも1つしかないが、2人が同時にこの作業を行いたい。その場合Aがまず消毒液を噴霧し、Aがモップかけに移行した段階でBが消毒液噴霧を行う。そしてAのモップかけとBの消毒液噴霧が終わったら、Bがモップかけを行う。これはマット後処理という作業が2つのステップに分割されているから可能な、パイプライン処理である。ということがあり、こういうことを考えていた。

紙ゴミを縛るか。書くことがない。

20250507 スーパーカップ『トロピカルミックス』

項目 内容 得点 換算点
睡眠時間 6時間57分 98 12.7/13.0
起床 7:50 100 8.0/8.0
散歩 実施・ゴミ拾いなし 100 5.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 ノー 0 0.0/5.0
労働 passion: 80点, discipline: 60点 70 16.8/24.0
ジム 有酸素+筋トレ 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 96 8.6/9.0
総合 1日の総合評価 - 87

散歩でいつも同じ場所で寝転がってる犬、柴だと思ってたけどもしかしたら柴コギかもしれない。

仕事初め。いつも通りの時間に起きて働けたので上々だろう。いや、連休の後だからできて当然かも。

昼食は松屋の牛めし大+生野菜+半熟卵。松屋の牛めしは意外と栄養バランス良いんですよ定期。スーパーでスーパーカップの新味『トロピカルミックス』を発見してしまったので食す。まあチョコで良いと思います(ちなみに栄養成分もチョコに近い)。

ジムは連休でサボっていたので少し衰えていた。夜はEffectのドキュメントを読みつつfp-tsの気になる点についてGeminiにまとめさせていた。集中しなきゃいけないタスクを倍速でできるのは単純にありがたい。