2024/12
2024/12月 総括
新年が始まってもう一週間も経っているので、12月の記憶はおぼろげですが……。
プライベートでは
- PAS TASTA のライブ
- クリスマスイルミネーション
- 牛タンを焼く
- 良い蕎麦屋を見つける
などがあり楽しかった。いくつかの忘年会が新年会になったのは財布に優しい話。
会社の話はしづらいけど、だるい仕事を倒していろいろ面白いことを進められそうな感じになってきた。 技術的にも、事業的にも。Rubyとはしばらくお別れになりそうな気配が漂っている……。
2024-12-02
- (toC)Webサービスでディズニーランドは作れるだろうか?
- ディズニーランドは様々なアトラクション(機能)がある
- 一方でユーザがWebサービスに対して期待するメイン機能はそれほど多くなさそう
- X, Instagram: 投稿・閲覧ができる。細かくはプロフィールがなんとかあるが、トイレみたいなものでしょう。
- そして閲覧に偏重する傾向もある
- そうすると、メインの機能はブラッシュアップされていく
- X, Instagram: 投稿・閲覧ができる。細かくはプロフィールがなんとかあるが、トイレみたいなものでしょう。
- 逆にtoB SaaS はなんかディズニーランド的でそこに様々が集約されていることに価値がありそう
- 多くの人が使うtoC Webサービスを目指すにはユニクロやドンキホーテを目指す必要がある?
2024-12-03
- MCP というのが流行っているらしくて気になっている
- おおよそ野生状態だった Function Calling をプロトコル化しましたみたいな話
- で、どうやら自然言語でSQL書いて分析みたいなのが楽に用意できそうなのが気になっている
-
@ai_syacho: しゃ、来たわ。
-
Claude MCPと昔作ったサンプルSupabaseが繋がった。ずらずら情報が出てくるしデータ分析もできる。
-
もう。
-
なんだろう。言葉が出ない。
-
-
-
-
@ai_syacho: Claude MCP + Supabase 連携手順
-
- Claude 公式クイックスタートをやっておく
-
-
- supabaseダッシュボードで
-
Project Settings > Database
-
URLを取得
-
- MCPのjsonファイルに以下の(〜〜〜〜〜〜〜)のところをURLで埋める
-
{
-
"mcpServers": {
-
"postgres": {
-
- へ〜と思いつつ、うちは MySQL と Athenaしか使っていないので↓を待つ
- awesome 系もあってもちろん野良?MCP実装も出てきている
- 1つのBFFに対して複数Frontendがあるのは微妙?
- 分けたいモチベーション
- v0.devなどを使ってフロントエンドの開発を加速したい
- 現状 Next13+Pages+Emotion みたいな形でやってるやつと相性が悪い
- 分けたいモチベーション
- ソフトウェア開発のインターフェイス部分はエンジニアからすると、一番末端だけどエンジニアリングに明るくない人からするとかなり中心と捉えられるのは意識しなければなぁという気持ちになった。
- 右側の末端をどれだけ広く高く見せられるかが(特にビジネスだと)大事で、そのためのという気持ち。
- まぁでもそうだよな。「パソむず〜」って言いながら型パズル解いてるのが本質なわけない。
- App RouterでuseAppContext みたいなのってどうやるの
- よくわからんな〜-
layout.tsx
を Client Component にして、<AppContext>{children}</AppContext>
としました - そして、page.tsx
はServer Component として動きます - うれしい -page.tsx
の中に Client Component を入れてその中に Server Component を入れたら怒られます - うれしくない - > Error: async/await is not yet supported in Client Components, only Server Components. This error is often caused by accidentally adding'use client'
to a module that was originally written for the server. - 俺も同じ認識だったけどなんでlayout.tsx
は Client Componentであることが許されてるの?- Rendering: Composition Patterns | Next.js - 100億回読んだけど Client Component で得た結果を下に渡せないの不便 - 100億回読んだ証左 2024-09-09#66de43c7188b52000039a9eb
- よくわからんな〜-
- https://the-guild.dev/graphql/codegen/plugins/presets/preset-client
2024-12-04
- 最近朝が早い
- 程よい寒さのおかげか
- どちらかと言えばやや楽しいエンジニアリングをやってる期間なので、それなりにハードに指と頭動かしてるし、寝付きがいいからかもしれない
- コーヒー豆を使い切ったから猿田彦珈琲に行った。なんか割とデカいサイズがモーニングで400円だったのでちょっと得した気持ち。
- 程よい寒さのおかげか
- 通常Geminiの出来が微妙すぎてAdvancedに課金するモチベーションが生まれない
- しばらく無料開放するとかしてほしい…。
- NextAuthの再実装みたいなやつが作れて気分がいい
- ブラックフライデーで買った龍が如くを早くやりたくて仕方ない
- これこの辺の話で一番納得に近づいてる。
-
@windymelt: Int ← Int型の値ですね、そうですね
-
List Int ← IntがListに入っていますね、そうですね
-
Future Int ← Intがそのうちやってくるらしい
-
Stream Int ← Intがじゃぶじゃぶやってくる
-
〜抽象化〜
-
F Int ← Intがもらえるけど、その評価戦略はFというパラメータに外出しされています。
- まだ
flatMap
よくわかってない!
-
2024-12-05
- バッチ管理全部Event Bridgeに任すことは出来ないだろうか
- Vercelとsolid_queueでいまやってるけど、これサービス増えたら一元管理できないとつらくなりそうだ
- まぁ先の話ということにしたい
- だいぶ楽しい仕事をやっておりだいぶ楽しい
- 具体的にはApp Routerの実戦投入
- shadcn/uiやTailwindも入れて非常に楽しく画面を作らせていただいております
- App Router, 脳のメモリをPages Router比3倍くらい持って行く
- JSXが Server だけで動くやつ / Template みたいなやつ / Intaraction が発生するやつ のどれかを当てるゲーム
- Pages Routerは gSSR / gSSG などで明確だったから Intaraction に集中すればよかった
- App Routerでも同様に
'use client';
を書いて回ればいいという感じ(妥協)があるが、Container / Presentational Componentみたいなみたいなところに落とすときに再設計が必要でう〜ん
- JSXが Server だけで動くやつ / Template みたいなやつ / Intaraction が発生するやつ のどれかを当てるゲーム
- MCPの MySQL のやつ Close されてた…
- Awesome リポジトリには GitHub - designcomputer/mysql_mcp_server: A Model Context Protocol (MCP) server that enables secure interaction with MySQL databases があった
- 200行行かない tiny なやつだし自分も書いてみるか
- どうでもいい画面、v0.devに聞きながらshadcn/uiで書いていくの本当に楽でいいな〜〜
- 2年近くほぼ売れてないサービスを1人で開発してるの狂気の沙汰な気がするけどそろそろ1000 Pull Request になる
"2024-12-5"
をZodでDateにする
2024-12-06
- designcomputer/mysql_mcp_server試してみる
- これを書けと書かれているが、手元にuv入れてないんだよな
- 環境変数でこれを使えとも書かれているけどどっちが必要なんだ?
- uv 入れて、
uv tool install mysql_mcp_server
してみたけど動かない。- 動かないとは、
Claude MCP can't connect to SQLite MCP server
やClaude MCP can't connect to SQLite mysql server
が出るということ
- 動かないとは、
- これを書けと書かれているが、手元にuv入れてないんだよな
- 素直にまずはMCPのQuick Startに従ってみる
- ググるとこんなコメントが
- https://www.reddit.com/r/ClaudeAI/comments/1h0my0y/comment/lzlhrw5/ - > Instead, in your terminal type: - > which uvx - > then copy paste the output of that into the "command" field instead of
uvx
- > For me for example - > $> which uvx - > results in - > /Users/bob/.local/bin/uvx - > so I changed it to - > { - > "mcpServers": { - > "sqlite": { - > "command": "/Users/bob/.local/bin/uvx
", - > "args":["mcp-server-sqlite", "--db-path", "/Users/YOUR_USERNAME/test.db"]
- > } - > } - > } - これだ〜〜〜
- Claude Appが
uvx
を適切に掴めなかったことと、そのエラーがわかりにくかったことには目をつぶろう - Claude DesktopからMySQLに接続できた!
- https://www.reddit.com/r/ClaudeAI/comments/1h0my0y/comment/lzlhrw5/ - > Instead, in your terminal type: - > which uvx - > then copy paste the output of that into the "command" field instead of
- MCPに対応したアプリ作りたい!
- つまり自前でMCPへのインターフェイスを持ちたいのだけど、Anthoropic の Client SDKとかには含まれてないんだなぁ
- vercel/aiみたいなやつにもない
- Home - Anthropic
- GitHub - modelcontextprotocol/inspector: Visual testing tool for MCP servers
- これを改造する?
- つまり自前でMCPへのインターフェイスを持ちたいのだけど、Anthoropic の Client SDKとかには含まれてないんだなぁ
2024-12-07
- MCPを引き続き見てる
- 超社内向け YouTubeのセッション動画をClaude MCPを使ってブログ化する方法 | DevelopersIO
-
環境準備
-
必要なツールとライブラリは以下の通りです:
-
Claude Desktop on mac
-
Claude MCP(Claude Proのサブスクリプションが必要)
-
mcp-youtube(YouTubeコンテンツ読み込み用MCP)
-
mcp-installer(MCPインストール用MCP)
-
Homebrewを使用して以下のライブラリをインストールします:
-
node.js
-
python
-
npx
-
uv
-
yt-dlp
- カジュアルにyt-dlp紹介されてるけど大丈夫か
-
- MCP Serverを眺めるをしている
- 超社内向け YouTubeのセッション動画をClaude MCPを使ってブログ化する方法 | DevelopersIO
2024-12-09
- PAS TASTA最高 一番好きな TASTA です
- chore / ops ? な作業を減らしたい
- 自分の学習の原動力は「いまの面倒を楽をしたい」が大きいな
- パソコンやプログラミング、AIとか
- 小学校の頃、字をうまく書くのが苦手かつ努力したくなくて、「将来は多分パソコンでみんな文字書くから汚くてもいい」ってごねてたのいまだに覚えてる
- 結果としてうまいに越したことはなかったが
- なので?突き詰める気持ち・センスが育ってなさすぎてこれは器用貧乏の特徴だと思う
- クックパッドで働けたのは本当に良くって、自分のこの程度でいいだろの水準をいくらか高められたし(まだまだ低そうだけど)、適当にやったツケについて考られるようになった気がする
- bunのrepl でバグ踏んでいる
await fetch
うまくいくときと行かない時がある- Passing objects in await expressions in REPL · Issue #10422 · oven-sh/bun · GitHub
- open-graph-scraperを使ってYouTubeのOGP作ろうとすると失敗しがち
- なぜか1回目のアクセスでは
-
YouTube でお気に入りの動画や音楽を楽しみ、オリジナルのコンテンツをアップロードして友だちや家族、世界中の人たちと共有しましょう。
- というのが返ってくる
-
- 2回アクセスするということをしているが遅くなる……。
- なぜか1回目のアクセスでは
- GitHubでGithub ActionsではないCI(つまりVercel)の通知を受け取りたい
- 微妙にCI終わったかな〜に頭を持っていかれている
- Gitの commit message, 特に description? body?の部分誰が読むんだよと思っていたけど、本当にAIが読むので書いたほうがいい。今からでも遅くないと思い始めた。
- 最近 rubocopがエラーを出して終了することが多くてかなわん
-
@pastak: 今年はNode.js実装ことTypeScript参考実装を担当しました!皆さんのチャレンジの手助けが出来ていれば幸いです。是非フィードバックなどあればブログなどでお願いします!!! #isucon
- ISUCON13ではNewRelicいれるの大変だったから助かりました!!!
- AIのトークン消費がもったいないので感謝を伝えなくなる人類
- ChatGPTの横に「今から送るメッセージで消費される金額予想」とか表示されたら面白そう。
- 高級AIに長く相談する人ほどAIに感謝を述べなくなるみたいな
2024-12-10
- ISUCON 14 (言語別, Node.js )で Top10 に入ってたようでかなりうれしい
- 「まだまだ精進しなはれ」なスコアではあるけど
- Cursor便利すぎて失職
- 仕事のメインがマジでコードレビュー
- 機械を入れて高速化したらどうなる?仕事量が増えるだけじゃ
- 1つのリポジトリに複数 Vercel Projectが入っていると、ビルドが並列化されずつらい
- GitHub App でやっていたものを Github Actionsにして解決!
- 問題はビルドが並列化されてないというより、関係ないPJのビルドが走ることだったので
- How can I use GitHub Actions with Vercel?
- GitHub App でやっていたものを Github Actionsにして解決!
- Claude Desktopからバンバンコメント投げまくってMCP使いまくってたら普通に rate limit かかった
2024-12-11
- ISUCON, 知らぬ間にスピードアップするゲームじゃなくなってた
-
@soudai1025: isuconで負けたことに言い訳する気は無いし、それは実力不足なので受け入れているけどチームとしてpostgres移行と向き合ってるし、それによって世の中に実績を出していく事に価値があると思っています。
-
例えばmysqlからpostgresに移行するハマりどころを一つ一つ潰すことには社会的な価値があると思ってます。
-
そんな我がチームがどんな気持ちでどんなコンセプトで何を価値としているるかも理解せずに結果だけでマウント取られるのが単純に不愉快でした。
-
じゃあ
-
@songmu
-
さんはisucon終わって世の中にどんな価値を提供してるんですかね?
-
何をアウトプットされたんですかね?
-
世の中の何をよくされたんですかね?
-
isuconは仕事じゃないから楽しみ方は人それぞれです。
-
なので各チームのコンセプトや取り組みに物言いをするつもりはありません。
-
ですが少なくとも僕は今日、isuconの反省点として履歴テーブルの扱いをブログにしました。
-
お仕事が忙しいからアウトプット難しいですかね?
-
まこぴーやまさよしと俺らがどんな気持ちでisuconに課題感をもってチャレンジしてるか想像できないのにエンジニア採用やりますって本気でいってるんですかね?
-
酒の勢いで話されてると思いますが会社の看板を背負っている人の発言としては心配です。
-
他人ならスルーしますが知ってる人だからこそ、ちゃんとフィードバックするべきだと思うので書きました。
- 週末仲間と集まってスプラやるに近い感覚なんだけどな
-
- 昨日VercelでビルドしていたものをGithub Actionsに移した結果、
- Preview ビルド時間が 8分→ 20分
- Production ビルド時間 6分 →
- になっていて最悪
- 通常業務の中にCapCutとかを使った動画編集が入ってるのおもしろい
- 機能に気持ちがあるサービスの開発に携わるのは避けたい
2024-12-12
- 最近無印のカレー食べると 2/2 でお腹壊しててショック
- NotionからCosenseにしてよかったこと・悪かったこと
2024-12-13
-
リッチなフロントエンドが求められるWebアプリをめっちゃ短い期間で作らなきゃいけないと言われたときあなたならどうする?俺は困ってる
-
- ちょっとくだらない言葉遊びに思えるけど、どの段階でどこまでを求めるか
-
Next.jsのcookieの取り扱いにまたハマってる
-
Next.js v14 ログアウト時にCookieを削除する機能実装に少しハマった件の対処法 - まさにそれ!と思ったけど関係なかった - > ⨯ Internal error: Error: NextResponse.next() was used in a app route handler, this is not supported. See here for more info: https://nextjs.org/docs/messages/next-response-next-in-app-route-handler - これ App Router でもそうなの?
-
Auth.jsの実装を参考にする
-
next-auth/packages/next-auth/src/lib/actions.ts at main · nextauthjs/next-auth · GitHub
-
createActionURLなに
-
Auth なに
-
- あまり気持ちがわからない。cookieJarでcookieをなんでセットし直してるの
- ていうかわかってないのは
cookies
のほうかもしれない
-
-
cookies でサーバ側で返す、
Set-Cookie
ヘッダのはそうなっていて、フロント側のやつが残っている? -
httpOnly
!!!!!Secure
!!!! -
Server Actionsで操作しましょう &
--experimental-https
-
-
Kaigi on Railsのアーカイブでてる
2024-12-17
- UXライティングっていつから使われてるんだろう
- みんな文字絵文字に適合していった
- #思い出すシリーズ Slack の風習で苦手なもの - @kyanny's blog
2024-12-18
- 芸歴6年目だけどいまだにいい commit message の書き方わかってない
- 俺も〇〇に移ってからのほうが長いってやつ言ってみたい気がする
- ckpd: 2020/04-2022/12: 32ヶ月?
- fssy: 2023/01-2024/12: 24ヶ月?
- 割ともうそんなに時間が経っていたか………………絶望
- Railsでの改行問題みんなどうしてるん
- Pattern Aは個人的には
- にも見えて微妙だ
- じゃあ右代入使ってこれは?
- 見慣れなさすぎて変数の宣言見落とすわな
- ま、そんなに気にしてないんすけどね自分は。こだわりある人に任せたい。
- 気乗りしない日はコードがアルファベットの壁に見えてダメだなあ、終わらせたい仕事なのだけど
2024-12-19
- Github Actionsが異常に遅くなった回が以前あったけど、もしかしたら GitHub Actionsがホストされてるのはアメリカだからか?
- https://yucali.fussy.fun/checkin
- PCだと早いけどSPだと何故か20秒近くかかる?
- AIアイコンの人が書いたテックブログ、内容もAIが書いているのか…?と思えて妙に信用できなくて笑った
- そもそもそのくらいの信用度で野生ブログ読めって話でもある気がする
- 基盤、いつでも戦える状態にしておくために必要という感じがすごい募る
- ガタガタの足元でチャンスが降ってきても戦えない
- Railsのうまい例外の使い方身につけたいですね
2024-12-20
- 社内の勉強会で 【総集編】15年間のC向けサービスづくりで得た学び|Shota Horiiを読みながらみんなであーだこーだ言う会をやったけどよかった
- ヒットを4回打って1点取るのかいきなりホームランなのかみたいな話はある気がする
2024-12-21
- モスバーガーのチーズバーガー意外と美味しいし高くないし最高
- CQRS+ESカンファレンス - connpass
- CQRS+ESカンファレンス 来た
- 渋谷駅の新南改札から比較的スムーズに来れた
- ドメインイベントで描く未来: CQRS/ESが変えるシステムとDXの可能性
- CQRS, 理屈としては雰囲気わかるけど例えば複数のイベントを集計する必要があったりしてすごいややこしくなりそう
- 新規にイベントを生やしたときの migration とか
- リソース上はsnapshot を取るのはわかる気がする
- CQRS+ES の話なのか CQRS の話なのかよくわからない時あるな
- 必ずセットなの?
- 前提としてモデルとイベントモデル(ドメインイベント)を分離している必要があると思うけどその話が薄そう
- 何に対するイベントなのかがわからない
- SSoTの source はどこにあるんだろう?バックエンドでずっと持っているわけではないのかな
- 状態を得るためにバックエンドに都度フロントエンドからアクセスするわけではなさそう
- event stromingのbig pictureなに?
- CQRS, 理屈としては雰囲気わかるけど例えば複数のイベントを集計する必要があったりしてすごいややこしくなりそう
- 2年間の実運用を経て振り返るイベントソーシングの実際
- データ数が多くてデバッグが難しい
- 読み取り速度の話
- キャッシュやスナップショットを使ってやっていく
- この辺はストレージをもとにシステム組んで revalidation とか含めていい感じになってほしいな
- コードのアプデごとにスナップショットの作り直し。賢い。
- キャッシュやスナップショットを使ってやっていく
- Azure Cosmos DBのServerless モードなら月100円マジ?!
- 書き込み時にトランジションはってない
- マジ?
- 複数イベントを書き込むときにエラー出るかもなるほど
- CQRS+ES やってる人、かなり真面目にやってそう(?)
- 「ビジネス上のアーキテクチャ特性」便利な言葉だ
- (結果整合性があるので)「更新されるには時間がかかります」
- ??
- GitHub - nrslib/cqrs-sample-codes
- user_events じゃなくて domain_event_entry みたいなやつに一行入れてくの乱暴に感じる
user.create
は users へのレコード書き込みではなくてevent { type: "user.created" }
作成なのすごいな- ん。このあとに
users
テーブルにも作ってるのか user.created
- ん。このあとに
- 全体的に裏でどんなSQLクエリが発行されているのか気になる
- イベント
- Sagaってやつで workflow を作ってやっているっぽい
- 個人情報は encrypt しておくなるほど?
- 関数型ドメインモデリング - アスキードワンゴを最近読んでいたけど、いわゆるドメインモデルとは合わない形でテーブル定義をしてパフォーマンスチューニングをすることがあった。
- え〜〜〜全然どんな事例だったか覚えてないのもったいない気がする
- こういうときってどうするんだろう?ドメインモデルとリポジトリパターンみたいな感じで分けて、DB側の都合はそこら辺で解決するようにするのかな
- なんかコード量がどのくらい増えるのかいまいちわからない
2024-12-22
- CDN(というかCloudflare)環境を前提にしたWebアプリの構成について考えている
- ざっくり
- フロントエンドの配信(assets? ) 早いといいですね
- バックエンドの処理
- 国をまたぐと遅いですね
- DBの場所
- バックエンドと近いほうがいいですね
- Blobストレージ
- これはなんかずっと前からCDNで配信されているイメージはある
- でも上りもユーザに近いといいですね
- Next.js(App Router)をCloudflareとどう組み合わせましょうというのが難しい
- Route Handler を Honoにする事例は結構ある
- Next.jsでサーバーがほしいのはRoute Handlerだけじゃなくって、Server Componentもそう。
- Next.jsではなくて honox ならなんかそんな感じになるのかな
- Google認証とかはトークンを取得した国でされるとかある?
- Vercel も Edge 環境があって Server Components はそいつにやらす?
- remix というのもある?
- Cloudflare workersでの気持ち
- ユーザに近いところでプロセスが走っているのでSQLiteのようなインプロセスな形が相性がいい
- 他に Workers KV みたいなやつ
- GitHub - cloudflare/next-on-pages: CLI to build and develop Next.js apps for Cloudflare Pages
- というよりはこっちを読むほうがよさそう
- 話が伸びそうなので別ページで
- Next.js on Cloudflare Pages
- というよりはこっちを読むほうがよさそう
- ざっくり
- D1のための REPL とかあるんだ
2024-12-23
- OAuth2本当にだるい…Refresh tokenなんなんですか……。
2024-12-24
- App Routerの嫌いなところいっぱい踏めて楽しい
- ちょっと朝思いついた面白を仕込んでみたけど全くウケなかった
- クリスマス前後にリリースをするべきではない
- というのは心を休めるために言ってます…
- クリスマス前後にリリースをするべきではない
- 今年はクリスマスケーキを買わなかった
- 逆張りじゃないって!!
- なんか大きなケーキを飽きるほど食べる贅沢に浸れるほどお金と気持ちに余裕がなかった
- ussu
-
@funwarioisii: 乞食たもうた
-
-
2024-12-25
- NHKだけ東京に残して放送キー局全部地方に散ったら面白いことにならないかな
- お笑いは難しい
- 無難に進めるところと攻めるところの緩急が自分には全くわからない
- ある時よくてある時ダメになったりもする
- アップデートが求められるけど
- Possible race condition in postgresql type_map initialization · Issue #51780 · rails/rails · GitHub
- 半年以上オープンだ
- 完璧な人間なんていないんだから、その組織が置かれてる状態に応じてうまくやろうよ……という気持ちでいっぱいです。
- クリスマスだからね
- 一方で自分の都合のために相手を捻じ曲げようとする人間は退場すべし
2024-12-26
-
Rubyの
Data.define
いい感じに階層作れるとめっちゃ良いんだけどな〜-
こう書きたい
-
こういうのを満たすにはどうするんだってはなしですが
-
てきな
-
-
めでたい