トップ 追記 RSS feed

HsbtDiary


2026/07/31 (金) [長年日記]

前日に雹が降ったからか酔芙蓉が開花した

昨日の夜に窓の外からバラバラバラ!と音がして何これとみたら雹が降り注いでいて、雷はなるわ暴風でいろんな鉢が倒れるわで「なんじゃこりゃー」となっていたのだけど、鉢が倒れただけで苗は無事でよかった。

で、早朝にとぼとぼ掃除するか、とベランダに出たらこんな時期というのに酔芙蓉が開花していた。秋とまではいかなくても8-9月くらいだと思っていたけど、こんな時期だったっけ...?

とりあえず、綺麗に咲いたのでよしとする。

CVE-2026-66066 の対応をしていた

昨日 Rails の脆弱性が公開され CVE-2026-66066 がアサインされたのだけど、この内容が libvips の untrusted なローダーをブロックするという内容で、普通の画像しか使わないっすということなら何も考えずにアップデートすればよかったのだが、PDF/SVG は使いたい、ということならちょっと大変で頭を抱えて考えていた。

https://github.com/rails/rails/security/advisories/GHSA-xr9x-r78c-5hrm

で、この話は Rails 単体の話でもなく、libvips には昔からある話で untrusted なローダーをふさぐというのは当たり前の話というのを初めて学んで、うーんうーんと頭を抱えていた。

何が難しいのかというと、CVE が発行されて Crtitical ということは、何かしらの untrusted なフォーマットで確実に Rails が攻撃されるわけで、とはいえ自分たちは SVG や PDF を扱いたくて、それらが exploit の対象の場合はどうすりゃいいんだ、というのを右往左往しながら考えていたところに Rails の方から公式に inspect するための agent skill が公開された。

https://github.com/rails/rails-forensics-CVE-2026-66066

agent skill と言っても中身はただの .md なので中に書いてある通り MATLAB 形式が今回の exploit のようなので SVG と PDF については libvips へ通すような設定をいれつつ、既知の CVE につては緩和できるような設定をするってことにした。

久しぶりに攻撃の成立条件などを頭抱えて考えたのでどっと疲れてしまった。


2026/07/30 (木) [長年日記]

三か月でマスターする西洋美術を見た

NHK の三か月シリーズが UNext に来ていたので一番興味がある西洋美術から全12話をザーッと見た。

https://www.web.nhk/tv/an/3months-seibi/pl/series-tep-PW26759L5K

芸大に行っているというナイツの司会や取り上げている題材はよかったけど、講師役の女性の話し方が病院などにある「相手を子ども扱いして話す話し方」で最初から最後まで受け付けないまま終わってしまった。

放送大学とまでいかなくても NHK の教育系の番組なのでもう少し講義って感じにふってほしかったなあ。

Ruby CI のドメイン管理を dnscontrol でやる

空前の IaC ブームが来ているので、なんでも claude にやらせられるようにしようと思い rubyci.org を IaC にするのに適したものはないか検討して claude が提案してきた dnscontrol というソフトで管理することにした。

https://dnscontrol.org/

terraform でもよかったけど、DNS は別に記載されている通りにてきようしてくれればそれでいいというのと、Cloudflare を扱えるやつ、ということで dnscontrol にした。credential を通してから一度単純な js に export して、apply して差分なし、というのを確認して取り込みは完了。

Ruby CI のログ配信を fastly に乗せた

で、Ruby CI のログはこれまでは S3 の public acccess で配信していたけど、貧乏な話で転送量もなあというのがあるので fastly をかぶせて配信するようにした。

そのために fastly も IaC で扱えるにする必要があったので、これは素直に terraform を採用して、claude に言われるがまま credential を用意し、terraform の初期化をし、apply で差分なしというところまで終わらせた。

で、ここからが本当に便利なところで DNS と CDN が IaC で扱えて、安全に credential を渡せるようになってるので、「rubyci.org の CI 結果のログを S3 配信から logs.rubyci.org というドメインで fastly から配信するようにして」と claude に投げるだけで 10分くらいで dnscontrol と terraform を使ってさらに証明書も発行して設定してしまった。本当にすごい。

こういうのを見ると、AI にやらせると壊される心配が、というのはわかるがこれを使っている側と使ってない側とでスピードに圧倒的な差が出るのは明白なので、積極的に活用して、AI が動きやすくなるという方に賭けていこうと思う。


2026/07/29 (水) [長年日記]

Ruby CI に検索機能を作った

最近は無限にインフラ整備をしているんだけど、これは自分が AI Agent、ような Claude をフル活用して Ruby と RubyGems の開発をできるようにするという作業をしていて、その一環ではある。

この日は https://rubyci.org/ に検索機能をつけていた。Ruby CI はデータはあるけど、探すのが人間の直感と記憶という状態だったのでまずは claude に db のダンプのありかと Rails のコードを渡してから現状を把握させてから、このテーブルは不要、とかこういう情報が欲しい、というようなのを渡していた。

最終的には https://rubyci.org/search という形でビルドの失敗ログを PostgreSQL の trigram 検索できるようにして、これを使ってみようと思う。あまりに一般的すぎる名称だと使い物にならないのだけど、テスト名などで検索するとよく落ちるやつだな、とかマシンを指定して SEGV とかやれば特定のマシンでだけ abort する奴、などが見つかると思う。

Ruby CI に MCP をつくった

で、検索ができるようになったので、それはそれとして MCP サーバーを Ruby CI につけた。

Redmine に MCP をつけた時はもともとある REST にたいする写像っぽく Tool を作ればよかったけど、Ruby CI の場合は API があるわけではないので、Model やController、それらを組み合わせた用途を自分なりに組み立てて、こんなんで、という Tools を用意してみた。

まだ使いこなせているか、というと怪しいけど、bugs, rubyci, github が MCP でつながるので、テストがなんか失敗したのはこの変更が原因、とかこのテストに関連する修正は過去にあったか、というようなのを claude にぶん投げて調べられるようになったと思う。

自分で作って効果的になってるか、というのは少しずつ調整って感じで。