Skip to main content

ログ取得ツール

僕たちがAIに「昨日どうだった?」って聞くためにやったこと (2)

(1)の続き。

どこまで書いたんだ、えーと、ログを.parquetにするところまでか。まあそれでいいや。そこまででも、duckdbのmcpサーバを定義した上でAIにスキーマとかファイル名を調べてスキルを作ってよ、と言うだけで作ってくれる。それを呼び出せば何があったか概要を答えてくれるだけの力は、AIにはある。かなり余裕で。スキルを使ってみて、改善点を出してもらってパターンを追加してクエリを出しやすい.parquetに作り替えしながら、少しずつ育てていけばいい。

ログに関してはこれでいい。次はメトリクス情報だ。

このサーバは2002年からのものだから、骨格自体は骨董品だ。代替わりはあったし途中から自宅サーバではなくVPSになったりしたが、基本は変わってない。まあ今はコンテナ化されているしstatic site generatorを使うようにしたり、static site専門のWebサーバ(AI以前の時代に書いたやつ)なんかも自作して作り込まれている。まあ古参の自宅サーバ勢は自作のWebサーバを自分でメンテしながら使ってる人も多いんだよ。そういう四半世紀の歴史を持つのがこのサーバというわけだ。

僕たちがAIに「昨日どうだった?」って聞くためにやったこと (1)

このサーバにはいくつかの役割が与えられている。まあこのページの世の中への提供もその一つ。最近はAIの餌になるだけだが。そんな中で、ほとんど放置にも近かった管理系のタスク。これをどうにかしたかった。どういうイメージかというと、、、

claude codeを起動して、

最近調子どう?

って聞いたら

  • 最近の主要なログを確認
  • 最近のメトリクス情報を確認
  • どんなだったかサマリを作って返してくる

という世界を作りたかった。タイムレンジは適当にプロンプトで与える。去年の同じ時期と比べて今年はどうよ? でもいいわけだし。

どうすればいいのか。LLMがログとメトリクスにアクセスできればいい。

実際のところ、データソース…ログやメトリクス情報は完璧ではないにしろ、ある程度保存されるようにしてある。今まで見てなかっただけで。これにLLMからアクセスする手段を作る。つまりMCPサーバだ。

そうこうしているうちに私(わたなべ)はduckdbにMCPサーバがついていて、.parquetファイルにLLMがクエリを投げられるようにできるということを知った。ログを解析して、特定のパターンを持つログを特定のスキーマに入れた.parquetファイルを作っていけば、duckdbで効率的にクエリを投げてサクサク理解が進むというわけだ。これは理想の世界に近づける。というわけで、僕たち(sonnetとopus、あとお手伝いのわたなべ)は日々ログを.parquetに変換する部分のコードを書くことにしたのだった。

川崎3-1清水 (雨の国立)

いやーこれまでクソスタ扱いしてごめんなさい。今回は奮発して1層の前の方の、高価な席を確保してみました。モロにベンチ裏です。ヒーローインタビューも真ん前でした。座席番号的に、前すぎるので雨にかかるかなと思ったんですが、意外とあの屋根が強力なんですね。ほとんど濡れなかった。小雨になって、ちょっと風が吹けば降り込んでくるものの、実質ノーダメージ。濡れるつもりの格好で行ったんだけど、空振りになりました。ベンチの屋根でタッチラインが見えなかったけど、かなり見やすくて感動しました。やるじゃないか。雨がすごいことになってたけど水はけも強力。意外と、現代的な仕様のスタジアムなんですねえ。

まあ、相変わらず座席は狭くて出入りの苦労は絶えないのだが、いつもの上層よりは緩和されていた印象。この仕様はどうにかしてほしいものだなあ。

試合の方は持山の先頭打者ゴールで流れを掴みました。ダイレクトで前に送ったのは佐々木かな。技を見せた。そして紺野がDOGSOを誘発して数的優位に。これは余裕で勝つでしょ。と思った瞬間もありました。ハンドでPK食らって同点にされたり、色々あってVARが活躍した試合になった。国立はVARのカメラも立派なやつが装備されてそうでいいですね。

川崎4-2千葉 (涼しい夜に今季初勝利)

今日は季節外れのような涼しさ。長袖を着て行きました。あいにく少々雨も降っていたが、ほどよく過ごしやすい。こういう日ばかりだといいのだが。

今日は序盤のロマニッチ負傷からのデリキ・ラセルダ緊急出場が全てみたいな感じでした。デリキはファーストタッチゴールを含む1G2Aの活躍。ゴールはGKにプレスに行ったのが奏功しました。キックミスを誘ってマルシーニョがカット、ラストパスを受けてしっかり打った。ドリブルとパスは光るものを見せている。チームとしても、いろんな場所でドリブルで相手を回避できるようになるとスムーズに主導権を握れる。ただ実際それが難しいのだが。

試合自体はホマーノのフィードからあっさり加点したところで勝負ありか。それまでは取ってもすぐに取り返されて、試合運びは安定しなかった。千葉もしっかり戦えて待望の得点も取れたし、川崎としても今日も相手の100%を出し切らせて、それをさらに上回って勝つという川崎らしい試合を見せられたので満足だろう。まあ千葉にしてみれば順位表が厳しさを見せているのはストレスだろうけども。

川崎3-1栃木SC (夏の夜の天皇杯)

平日夜の等々力。さすがにこの季節、暑い。

デリキ・ラセルダ? セラルダじゃないよな、ラセルダだよな。とスタメンを確認しつつ定時ダッシュで向かう。大関に松長根もいる、丸山も復帰している。こりゃ熱いぜ。相手は栃木SCで、あの米山が監督をやっている。そしてサブに矢野貴章…懐かしい名前もメンバーに入っていた。やっぱ新潟時代の印象が強いよなあ。

試合の入りは悪くなかったと思いますが、徐々に押し返されてこっちゴールに近いところでプレーを進めることに。やがて落ち着かないやり取りを経て失点。まあいつもながら川崎らしい失点というか。地力を見せて早めに逆転できたので不安はなかったが。

デリキはイエローカードもらうあたりまではちょっとハズレかと思ったけど、後半通したラストパス2本には痺れました。あの狭いスペースで細かいコントロールで入れ替わって、あのコースが見えてたってことだよな。もうトップ下でいいんじゃないの。

川崎2-2京都 (ホーム開幕戦)

創立30周年の記念すべきシーズン。なんかくれるかなと思ったけどチラシしかくれなかった。そうか。まあ、いいんだけど。その代わり、チラシには千葉戦でポケモンのエコバッグをくれると書いてあった。なるほど。

ヴェルディ戦から1週間。どう変えてきたのか。まあ、改善はしてましたね。よりゴールに近い場所でプレーできるようになっているし、点も取れた。選手交代も悪くないように思えた。最後の怪我は心配になったけど、この調子で上げていけば、上位陣にも立ち向かえるようになるのでは。

こういう試合は勝っておきたかった。

ヴェルディ1-1川崎 (ついに開幕!)

連日の味スタになったが今日は川崎の開幕戦。仕上がりはどうか、新戦力はどうか、何を変えて何を変えなかったのか、ワクワクしますね。

立ち上がりから攻め込んでずっと川崎のターンという感じ。これは1点取れれば勝ち確じゃん、みたいな。ただその1点が遠いのが難点。ただこれって単に時間の問題では? こないだのブラジル戦の展開とか考えても、むしろ終盤に取った方が勝ちやすいんだよな、なんてことを考えていた。よく考えるとペナルティエリアに入って行けてないし、可能性のあるシュートはほぼゼロだったんだけどね。技術はあるのに、危険なとこに入り込めてないですからね。変わっとらん。ホマーノはなかなかいいんじゃないですか。サイズがあってパワー負けせず、安定感がある。そこそこ運べるし。逆に言えばホマーノ以外の戦力はまだ使える状況にないということなのか。

そんなこんなで、後半は開始早々にゴール前のゴチャつきから失点。この1点が重くのしかかる後半を過ごすことに。どうやって点取るの問題が今季も継続している。中央も使えていたし前には進めていたから重症度は低いが。まあそこそこクロスは放り込めてたかな。ただ精度が低いのかタイミング問題か中の選手が強くないのか、あんまり効果的とは言えなかった。最後はラストプレーで佐々木が根性で送り込んだボールをゴール前でゴチャつかせてロマニッチが劇的同点ゴール。結局これだよね。危険なエリアでプレーすれば得点の目が出る。

東京1-5町田 (開幕戦!)

副首都は町田に決まりでいいかな。程よい近さ。首都壊滅シミュレーションを軽くしてみたが、旧都心復興の司令塔は近い方がいいだろうし。狛江よりは町田の方がいい感じがするな。有望なんじゃないかな。

会場ではエコバッグを配っていた。割としっかりした作りで助かる…と思ったけどドロンパの絵とかあるから普段使いできないじゃん。まあでも、使ってもいいかな。今使ってるの、ボロボロがすぎるから。

試合前に長友が出てきて現役復帰宣言。いや引退してないからね。契約してなかっただけで。まあクラブとしては彼は引退時期を自分で決められる存在、ということなんだろうな。まあ代表も含めて、それだけの活躍は見せてきた。FC東京時代で思い出深いのは(いやまだ今後もあるって話だけど)、森勇介をカモにしたあの試合。高畠さん時代かな。どうにも止められなくて、最後は井川が出てきてどうにかしたのを覚えている。まあいいや、5番のユニフォームの販売も宣言されて、東京のオールドファンは感涙していた(はず)。俺はどちらかと言うと梶山や森重の方が好きだった。あー森重はまだ現役か。

$100の価値

Anthropicがなんかの記念で100ドルのクレジットをユーザに渡してくれる、という事件があった💰。月20ドルくらいの契約で5時間/7日間のトークンリミットを睨みながら作業している私にとって、100ドルはでかい…

というわけでちょうど7日間のトークンを使い切った昨日、このクレジットに手をつけてみた。適当に家事をしたり昼寝をしたり本を読んだりしながらチンタラ作業していると、夕方には使い切ってしまった。うあー、このタスクだけで? 1日で終わるなんて聞いてないよ。superpowersがトークン爆食いするからというのも原因ではあるが。

仕事アカウントの方でもクレジットを使うことがあるけど、確かに100ドルは瞬殺という印象がある。仕事だともっとペースが早いし、worktreeで並列作業を多めにするからなあ。あんまり激しいと怒られが発生する可能性がある and 使ってないと剥奪される可能性がある。ので、使用量を確認しながら、控えめに使う感じ。

最近どうしてます?

ワールドカップも佳境に入ってきましたねー。寝不足がひどい。電話の目覚ましを長らく使ってきましたが、こういう時はfitbitで起きるようにするといいと気づいたので、そうしてます。仕事のある日の決まりきった起床は電話のアラームでいいんですけど、朝3時に起きたいとか、1時間後に起きたいとか、そういう時。うるさくないけど、かなり確実に起きることが可能。あとはお茶を入れるときの5分待つとかそういう時もfitbitがいいですね。

fitbitは、アプリがgoogle healthになって良くなったんだか悪くなったんだか。というわけで最近は睡眠スコアが悪い。でもエナジースコアはそんなに悪化してないからまあいっか、って感じ。昼間の仕事中はかなり眠い。年齢によって無理の利かない体になっている。

昭和の頃から趣味に仕事に暇つぶしに、まさに人生の一部としていたコーディングですが、コードはもう自分では書いていません。claude codeに全部やってもらう。仕事ではteamプランと無限のenterpriseプランを両方もらっていて、自宅ではproプランを使ってます。開発スタイルも自宅と職場でちょっと違うかな。