20250601 Imperative

今日ものんびり起きてDota2、コードリーディング、天気が回復したので布団カバーの洗濯などをしていた。論理午前中にジムで軽く有酸素し、また近所の新デパートに行ってみたが今日も激混みだったので食事は諦め、6月分の二郎枠を消費してきた。ミニ・ニンニク少なめ・アブラ少なめが丁度いい。

帰宅して、極上の昼寝。普段はロフトベッドで寝ているがたまには布団を床におろしてちゃぶ台にお茶を置いて1時間くらいゴロゴロしていた。これが贅沢というものだ。

今日もGeminiとプログラミングについて対話していた。ある処理のあとに別の処理を行うという命令を、JavaScriptでは

f1();
f2();

と書けるが、これ全然自明じゃないよね、みたいな話をしていた。SQLとか、Haskellの遅延評価とかね。JavaScriptの言語仕様の範囲内でもこれの次にこれを行えという指示は上記以外に

f2(f1());

とか

f1().f2();

とか書き方がある。これがf1, f2が非同期処理になったり失敗しうるようになったりするとそれぞれ進化していくが、やはり基本は一番上の命令形になるだろう。

ところでGeminiとずっと話していると思うのは、会話が単線的なのはポテンシャルを浪費しているのではないかということだ。一般的なAIチャットのUIは人間同士で会話するLINEのように自分の発言と相手の発言が交互に時系列的に並ぶだけのシンプルなものだ。しかし、特にAIが得意とする論理的に込み入った会話では、論点Aから生じた論点B、論点Cに対してそれぞれ別々の会話ブランチを伸ばしていきたいことがある。もちろん私は同時に1つの文章しか入力できないから並列性を上げられるわけではないが、あとから見直して話の筋がわかりやすくなる。コンピュータ上で行う会話なら、そのように進化しても良いはずだ。

冷静にこれSlackのスレッドじゃん。

20250530 褒められ欲

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

今週はTSKaigiのモチベバフと睡眠好調が相まってかなりモーレツ気味(当社比)で働いていたけど、金曜日はさすがに疲労を感じる。意外と体は習慣通りに動きそうなんだけど、精神力が上がりきらない。

https://github.com/susisu/tskaigi2025

これがめっちゃ難しくてClaudeに解説させながら読んでる。AI教師、対応範囲が(人間よりは)広いし能力は間違いないし時間も場所も感情も気にする必要ないし優しいのでかなりすごい。AIに褒められて褒められ欲(結構ある)の充足を感じるけどこれでいいのかなあと疑問。でも確実に僕の役に立っているしなんなら僕を賢くしている。

明日は久々の完全オフ。ジム以外特にすることなさそうなのでのんびり布団でも干すかな。うまいものも食いたい。食いに行きたい。休養だけでなくリフレッシュの気持ちになっているのもモーレツの反動かもしれない。

20250527 キユーピー

項目 内容 得点 換算点
睡眠時間 6時間58分 99 12.9/13.0
起床 7:42 100 8.0/8.0
散歩 実施・ゴミ拾いなし 100 5.0/5.0
朝食の栄養カバレッジ 3色カバー 100 5.0/5.0
体操 ノー 0 0.0/5.0
労働 passion: 90点, discipline: 85点 88 21.1/24.0
ジム 休養日 100 12.0/12.0
勉強会 参加 100 12.0/12.0
個人開発 実施 100 7.0/7.0
あすけん - 43 3.9/9.0
総合 1日の総合評価 - 87

今日は結構いい日だったな。何より睡眠が良く、それに伴って労働も良い。良いこともあった。一日の中でやりたいことが減ってきて、残り少なくなったやりたいことに集中できる感覚がある。

スーパーで新商品のメロンパンがあってつい買って食べてしまった。いつも通り、メロンパンってそこまでメロンでもないよねという感想。野菜を食べるご褒美としてドレッシングはちょっと良いやつを買っていて、今日はキユーピーテイスティドレッシングイタリアン。ちょっと良いかもしれない…?なんか油ばっかり出てきて撹拌が足りなかった気がする。ところで今コピペして気づいたんだけど大きいユが正しいの?

https://www.kobe-np.co.jp/rentoku/omoshiro/202303/0016174625.shtml

デザイン上の理由らしい。へぇ〜

なんか今日はGitHub Copilot経由のClaudeやGeminiの利用がよく「申し訳ございません。応答が返されませんでした」で止まる。Copilot Chatの出力を見ると503でrate limitのせいらしいが、そこまで酷使してないぞ…?よくわからないな。計算資源の取り合いは激しくなっていく(今はユーザー囲い込みのためにどこも出血大サービスしてる価格のはず)だろうから、コスパのいいモデルが進歩してほしいなあ。まあ必ずしもベストなモデルを使う必要はなく、今はClaude4に利用が殺到しているだろうけど別に3.7や3.5でもそこそこやれるんだよな。

20250524 TSKaigi 2025 Day 2

TypeScriptネイティブ移植観察レポート TSKaigi 2025

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

https://speakerdeck.com/berlysia/typescript-native-porting-observation-tskaigi-2025

tsgoの歩みについてのレポート。コンテキストから細部までよくわかる話だった。Compiler APIどうなっちゃうんだろうなあ。

フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない

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

https://speakerdeck.com/hanhan1978/php-is-not-bad

TSKaigiとしては異色の発表。ベテランバックエンドエンジニアの視点から、バックエンド/フロントエンドの歴史について振り返る。後半はPHPの圧倒的なシェアの高さを見せた上でのPHPはいいぞという話。トーク力が素晴らしく、楽しみながら頭に入ってくる発表だった。

Pragmatic Functional Programming in TypeScript

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

TSのプロジェクトにFPを導入したいということはよくあるが、チームとしてそれを採用する判断ができるかは難しい。まず単純化した5つの原則とその嬉しさを把握し、実利ベースで導入を進めていこうというのがPragmaticということ。

君だけのオリジナル async / await を作ろう

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

https://speakerdeck.com/susisu/tskaigi-2025

ジェネレータにおけるyieldを文脈から値を取り出す処理?と捉えて、async/awaitのみならずResult、エフェクトシステムまで実装してしまう話。とても難しいが興味のある分野なのでよく読み直したい。プログラミング理解の足腰が強い人は「結局こういうことなんだよね」と抽象化して裏返して思いもよらない使い方を編み出したり、足りない場所に気づいて埋めに行ったりする。基礎力だなあ。

TS特化Clineプログラミング

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

https://tskaigi.mizchi.workers.dev

効くプロンプトとうまくいかないプロンプトの事例集。AIエージェントを使い倒してる発表者ならではの、AIとはどのような学習の結果何ができて何ができないのか考察が深い。

OST (Open Space Technology)

参加者がテーマごとの10のグループに別れて自由にディスカッションする企画。僕はフロントエンドのディレクトリ構造のグループに参加した。自分たちのチームが採用している構造についてあまりうまく話せなかったのは後悔が残るところだが、いろいろな人の重視するポイントが聞けて面白かった。

総括

TypeScriptの領域は広く深く、仕事でwebアプリケーションを開発してるだけでは浅瀬もいいところなんだなと感じた。いろいろな分野で非常に深く研究している人がいてかっこいいなあ。久しく忘れていたすごいエンジニアはカッコいいという感情を思い出した。そう思うと同時に、いくらやっていきを得ても全部ガチるのは無理なので、どこに軸足を置いてやっていくかを冷静に見極める必要がある。現状のプログラミングに満足しちゃいけないな。もっと楽にできる、もっと安全にできるという強い気持ちを持つべきだ。

2日間ガッツリ参加して学ぶというのはそこそこ大変。移動も大変。弁当は美味しかった。いろいろな縁がある人に会えたり新たに縁が生まれたりというのは物理会場ならではの良さだったな。

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 フラッシュ!

項目 内容 得点 換算点
睡眠時間 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倍になるのか?という問題だ。スケールメリットが効くとすれば、社会の人口増加はエッセンシャルワーカー比率の低下を可能にし、その結果僕のように謎の何かを作る人間が生きられるようになる。

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

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つのステップに分割されているから可能な、パイプライン処理である。ということがあり、こういうことを考えていた。

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

20250425 チーズバーガー丼

項目 内容 得点 換算点
睡眠時間 3時間30分 0 0.0/13.0
起床 8:31 74 5.9/8.0
散歩 ノー 0 0.0/5.0
朝食の栄養カバレッジ 0色カバー 0 0.0/5.0
体操 ノー 0 0.0/5.0
労働 passion: 70点, discipline: 70点 70 16.8/24.0
ジム 休養日 100 12.0/12.0
勉強会 ノー 0 0.0/12.0
個人開発 ノー 0 0.0/7.0
あすけん - 45 4.0/9.0
総合 1日の総合評価 - 39

↑結構いろいろ改修した(させた)。今回はGemini2.5Pro。小規模アプリケーションだとめっちゃ賢いよ。ちゃんと.clinerulesに従うしpackage.jsonのコマンドも読める。まあコスト的にはハイエンド側だからね。コメントが過剰気味なのは変わってない。そう言えばYouTubeのある英語話者がジェミナイって読んでたけど、本人(?)に聞いたら発音はジェミニって言ってたな。


(世代がバレる)

夜眠れず、眠れないことにイラついて開き直って5時頃まで起きてた。健康も精神も全てが破滅している。

友人からのタレコミで松屋の新メニューチーズバーガー丼を食べた。美味いかまずいか以前に「普通にパンでバーガーにすれば良いのでは…?」という疑問が湧くほどには単にチーズバーガー。味の評価は米に酸味を合わせることをどう思うか次第。僕は若干懐疑(しかし改めて考えてみると酢飯・ケチャップライス・ケバブ・ドリア等は違和感なく食べてはいるな…)。シンプルに肉がデカいのは満足感がある。

休みが多い期間に入る。と言ってもカレンダー通りだが、憂鬱だ。休みは退屈で、休みを退屈にしてしまう自分の至らなさを思い知るのは辛いからだ。

基本的に僕はポイントカードアンチなのだが、ここに住み始めて結構長く、そろそろ近所のスーパーで使えるカードなら作ってもいいかなという気分になってきた。しかし僕は基本的にデジタル国粋主義者なので、GAFAにピンハネさせないでポイントカードを活用するためにはどういう方法がいいかなと考えている。