Web Dev Digest: 2026‑05‑24
Top 20
複数のAIエージェントを1画面で管理するCLIツールを作った
Source: Zenn | Published: 2026-05-24 20:55 JST
- 複数の対話型AIエージェントCLI(claude-code、codex、gemini-cli、copilot)をタブ切り替えなしで並行操作できるラッパー「mav」をTypeScript+node-pty+blessedで実装し公開した
- ESCシーケンスは「25ms以内に続きが来てシーケンスが完成したら戻る」というタイムアウト判定で誤検知を回避している
- ターミナルが送る制御シーケンス(キーボード拡張プロトコル応答など)は子エージェント側に流してはいけないというPTYパススルー特有の落とし穴を指摘
- Ctrl+]の送信バイト列がkitty/ghosttyでは
\x1b[93;5u、それ以外では\x1dと異なるなどターミナルエミュレータ依存性が大きい - claude-codeはシェル経由でなくプロセス自身で
process.chdir()を呼ぶため、worktree追従はシェルポーリングではなく子プロセスPIDのCWDをlsofで監視する形に実装した
Reactで「取り消し機能」を実装しようとして気づいた設計ミス
Source: Zenn | Published: 2026-05-24 21:24 JST
- 草野球の投球記録アプリでundo機能を実装しようとした結果、
pitches/balls/strikesを個別のuseStateとして持たせていた設計が破綻、Single Source of Truth違反だったと結論 - 修正前は
setBallssetStrikesを複数箇所から呼ぶため、undo時に「1球前のball/strikeカウントをどう復元するか」が解決できなかった - 修正後は元データの
pitches配列のみをstateとし、balls/strikesはderiveGameState(pitches)で都度導出、undoはsetPitches(pitches.slice(0, -1))の1行で済むようにした - 派生値を独立stateとして抱えると、複数箇所の
setPitches呼び出しで同期漏れが起きカウントが矛盾するという具体的な危険性を例示 - React公式ドキュメントの「State should be the minimum amount of data needed」原則を実装変更でなぞった事例として整理されている
【Next.js】重い非同期処理で”client-side exception”が発生した原因と対策
Source: Zenn | Published: 2026-05-24 12:10 JST
- ECS Fargateで動かすNext.jsで約50回に1回の頻度で出ていた
Application error: a client-side exception has occurredの根本原因はALBのIdle Timeout(デフォルト60秒)でRSCストリームが切られていたことだった - RSC内でRDSから大量データを取得し生成AIで要約する処理が約2分かかり、ALBが先に接続を切ったためブラウザ側ではフロントエンドのバグに見えていた
- 対策はALBのIdle Timeoutを60秒→180秒に延長するインフラ側の変更で、100回連続テストでエラーゼロを確認している
- React Server Componentsはストリーミング途中で接続が断たれるとクライアント側で例外として観測される、というRSCの仕様とALBの仕様の相互作用が落とし穴
- 「一見クライアントエラーに見えるが実体はインフラ層」というRSC運用の典型的なデバッグ手順として参照価値が高い
【GitHub】GitHub PagesのプロジェクトサイトにReactアプリをデプロイする
Source: Zenn | Published: 2026-05-24 20:17 JST
- Vite + React 19.2 + gh-pages 6.3 構成でGitHub Pagesのプロジェクトサイトに無料デプロイする手順を、最小限のpackage.json/vite.config.ts変更例まで含めて提示
package.jsonにhomepage: "https://<user>.github.io/<repo>"、predeploy: "tsc -b && vite build"、deploy: "gh-pages -d dist"を追加し、pnpm run deploy単発で再デプロイ完結vite.config.tsのbase: '/<リポジトリ名>/'設定漏れがあると XやDiscordのアイコンなど絶対パス読み込みのアセットが404する具体例を提示- アセットを相対パスに揃えないと画像欠落が発生するため、Pages特有のサブパス制約に合わせた
baseの指定が必須という落とし穴を強調 - 著者検証バージョンは React ^19.2.6 / Vite ^8.0.12 / gh-pages ^6.3.0 と新しめで、Vite 8世代の現行プロジェクトにそのまま流用しやすい
AIエージェント検証用PCを作るメモ⑤:Ubuntu側にNode.jsとnpmを入れる
Source: Zenn | Published: 2026-05-24 16:21 JST
- WSL上のUbuntuにのみNode.js LTSをnvm経由で導入し、Windows本体には開発ツールを入れない「Windows本体は薄く、作業はWSL」方針を採用したセットアップ記録
- aptではなくnvmを選んだ理由として「複数Node.jsバージョンの切り替えとLTS選択がしやすい」点を明示し、
nvm install --lts→node -v/npm -vの検証フローを提示 - 配置先は
/home/<user>/.nvm/versions/node/に統一し、PowerShell側でnode -vを実行する運用は明示的に非推奨としている - nvmインストール直後に
nvmコマンドが認識されない罠を指摘し、. "$HOME/.nvm/nvm.sh"の読み込みを明示 - Codex CLIなどエージェントツールはこの段階ではまだ入れず、ランタイムだけ準備しておく段階的構築の方針を示している
LSPを整理してみた
Source: Qiita | Published: 2026-05-24 23:03 JST
- LSPはエディタと言語サーバーを別プロセス・JSON-RPC通信で結ぶ標準プロトコルで、AIコーディングツールに繋ぐと精度が上がるのは検索結果が絞られコンテキスト消費を削減できるためだと結論
- VS Codeなどの「定義へジャンプ」「参照を検索」は
textDocument/definition/textDocument/referencesというLSPメソッドの呼び出しに対応していると具体的にマッピング - grep系の単純検索ではキーワード一致で無関係なヒットが大量に返るのに対し、LSP経由なら「対象関数の定義と呼び出し箇所のみ」を正確に絞り込めるという比較を提示
- AIエージェントのコンテキストウィンドウを無駄遣いしないために、AIツール側からLSPを呼べるよう構成することが精度改善の本質という観点で整理している
- 著者は実機検証としてTypeScript Language Server接続時に
find_referencesが実際にAIから呼ばれることを確認している
TS Kaigi2026に参加してきました
Source: Qiita | Published: 2026-05-24 22:41 JST
- 5/22-23に羽田で開かれたTS Kaigi 2026の2日目参加レポートで、技術力は前提として「課題解決とユーザーフィットが今後の差別化軸」という気付きを結論として示す
- Plaid社のセッションでは、ファネル/リテンション分析特化のOLAP DB「mila」がAIエージェントから複数回クエリされる前提で設計されている点が紹介された
- Park Direct(月極駐車場手続きのオンライン化)が「電話・FAX依存業界へのデジタル切り込み」事例として取り上げられた
- CodeRabbitのAIコードレビューでは
.coderabbit.yamlでのカスタマイズ性がOpenAI系との差別化点として紹介された - REST vs GraphQLの比較セッションでは「単一エンドポイント+スキーマ駆動の型安全」とTypeScriptの自動生成型との相性の良さが繰り返し強調されたとレポート
Node.jsのメモリ構造を理解する(スタック・ヒープ・V8の世代別GC)
Source: Qiita | Published: 2026-05-24 21:44 JST
- heap out of memoryエラーを起点に、Node.jsのV8ヒープがNew Space/Old Space/Large Object Spaceの3領域に分かれ世代別GCで管理されていることを整理した解説
- New Spaceにはスカベンジ方式(Cheney’s algorithm)、Old SpaceにはMark-Sweep-Compactと、領域ごとに別アルゴリズムが適用される対応関係を明示
- Large Object Spaceは大きなオブジェクトのコピーコストを避けるためコンパクション対象外、という設計上の例外を具体的に取り上げている
process.memoryUsage()の出力例でheapTotal/heapUsed/external/arrayBuffersの各項目が何を指すかを実値ベースで対応付け- 「新しく作ったオブジェクトはすぐ不要になる」という世代別仮説を出発点に、なぜ世代分けが効率化につながるのかを設計動機から説明する構成
【個人開発】文字列から「盆栽」が育つWebアプリを作りました
Source: Qiita | Published: 2026-05-24 21:37 JST
- 文字列入力に応じてTrie木が3D盆栽としてリアルタイムに成長する個人開発Webアプリ「Trie Bonsai」をCloudflareエッジスタックで構築・公開
- フロントはNext.js 16 / React 19 / TypeScript 5 と Three.js + React Three Fiber + Drei + Postprocessing、バックはHono on Workers + Drizzle ORM + D1、画像はR2配信
- 通常の家系図的Trie描画ではなく「親ノードを中心に子を放射状に配置し、深さに応じて枝角度を傾ける再帰的放射状レイアウト」で盆栽の枝振りを数学的に再現したのが独自実装の核
- R2からのCDN直接配信でEgress課金ゼロ化、画像とメタデータは
Promise.allで並列保存しレスポンスを短縮するコスト最適化テクが盛り込まれている - D1はSingle Table Design採用で正規化を省略しつつ、JSON型カラムで設定拡張性を確保するというWorkers/D1ならではの設計判断を明示
DjangoアプリをNext.js + DRF + JWT + AWSに移行してみた #5 Terraform・AWSデプロイ編
Source: Qiita | Published: 2026-05-24 18:16 JST
- Django→Next.js + DRF + JWT + AWS移行シリーズの第5回として、Terraformで34リソースを一括構築しECS Fargate上のバックエンド動作確認まで到達したインフラ実装レポート
- ネットワーク層はVPC 10.0.0.0/16 + パブリック/プライベートサブネット + NAT Gateway + IGWの典型構成、アプリは ALB → ECS Fargate(プライベート) → RDS PostgreSQL の3層
- 機密情報はSSM Parameter Store暗号化保存、コンテナはECR管理、フロントエンドはAmplifyホスティング、と各レイヤのAWSサービス選択も明示
- 落とし穴として「RDSパスワードは8文字以上必須」「ALBヘルスチェック通過のため一時的に
ALLOWED_HOSTS="*"と matcher に401許可」「M1/M2 Macは--platform linux/amd64でビルド」など実運用で踏みやすい点を列挙 - 月額コスト試算はNAT Gateway $45 + RDS $19 + ALB $18 + ECS $5 ≈ $87 と概算を提示。Amplify SSR自動検出失敗は次回(#6 静的エクスポート編)で対応予定と明示
Show HN: HtmlUnit 5.0.0 Is Available
Source: Hacker News | Published: 2026-05-24 23:12 JST
- JavaのヘッドレスブラウザHtmlUnit 5.0.0がリリースされ、最低要件がJava 17に引き上げられJPMSモジュールシステムに対応した
- xercesImpl依存とXerces関連ヘルパー3クラス(XmlUtilsXercesHelper、XmlUtilsSunXercesHelper、XmlUtilsHelperAPI)を削除し、依存関係を整理
- 新たに
SubtleCryptoが実装され、Web Crypto APIを利用するページのJavaScript実行が可能になった - エミュレートするブラウザバージョンが Firefox 150 / Chrome 148 / Edge 148 まで引き上げられ、最新サイトの再現性が向上
- core-jsの大幅更新とJetty WebSocket Client 12.1.8への更新も同梱され、JavaのE2Eテスト用基盤として現代的なWeb APIへの追従が進んだ
All Articles
Zenn
| # | Title | Summary | Author | Published |
|---|---|---|---|---|
| 1 | React × Tailwind CSS 入門 #06|React Routerでページ遷移を実装する | SPA再読込で画面が白くなるのを避けるためReact Routerを導入し、Router設置とリンク置換でアプリ的画面遷移にする入門記事第6回 | @Hiro | 17:11 |
| 2 | Stripe SDK v21+をVercelで動かす時のハマりポイント|createFetchHttpClient必須の話 | Stripe SDK v21+ をVercelサーバーレスで動かすと createFetchHttpClient() 明示指定が必須、Webhook署名検証もv21で書き換え必要 | @REON | 14:04 |
| 3 | 「ORMって結局なに?」を型の話から理解してみる | アプリ層オブジェクトとリレーショナル表現の型変換がORMの本質、というレイヤ間データ表現差から「mapping」概念を解きほぐす入門記事 | @AOI Kurokawa | 22:50 |
| 4 | 「そのツール、ありません」とAIが言う本当の理由は、DDNSだった | MCPサーバの「tool not available」がアプリ稼働中にも発生する原因をDDNS解決失敗まで切り分けた診断記録、ポート監視だけでは漏れる事例 | @QuoLu | 20:18 |
| 5 | Cloud Runで済むならCompute Engineを選ばないほうがいいと改めて思った話 | OS/LB/パッチ/ネットワーク等の運用範囲がCompute Engineでは肥大化する、と現場目線でCloud Run優位の判断軸を整理した運用論 | @choimake | 16:33 |
| 6 | Lighthouse改善をAIに頼む前に、見る指標を1つに絞った話 | フォトサイトのLCP/TBT改善でスコア満点を狙わず、ヒーロー画像と初期JSという2軸に絞り込んでAIに依頼した実践記 | @シュージ | 13:20 |
| 7 | 【AWS VPC(第1回)】:VPCとサブネットの基本設計(CIDR、マルチAZ、パブリック/プライベート) | プロダクション想定でのCIDRブロック選定、マルチAZでのサブネット分割、public/private使い分けの判断軸を整理したVPC設計入門 | @shota_arai | 18:54 |
| 8 | Google Search Console APIを使ってSEO改善を自動化する | GSC APIを叩いてクエリ・CTR・掲載順位を定期取得し、SEO改善サイクルを手動運用から自動化する実装フローを示した記事 | @asoventure | 10:01 |
| 9 | PlaywrightとffmpegでWebアプリの操作デモGIFを自動生成する | Playwrightで連番PNGを撮りffmpegでGIF化するスクリプト化により、3つの技術スキルチェッカーアプリのデモGIFを自動生成 | @何でも自作する人 | 19:27 |
| 10 | 源内 Webに接続する生成AIアプリ(メトリクスチェッカー)を作ってみた | デジタル庁OSSの「源内 Web」APIに接続するメトリクスチェッカーを、AWS/Azure/GCPそれぞれの構成例つきで実装してみた記録 | @J.Gando | 22:36 |
| 11 | AWS資格の価値は「誰が取ったか」で変わる | AWS全資格保持者(2023以降)が、肩書きだけでなく「資格×実務文脈×既存専門性」で資格の市場価値が変わると論じる評価論 | @beli | 19:58 |
| 12 | Google Cloud の勉強を習慣化している話 | 2月中旬からGoogle Skillsで学習を続け11,880XP到達・Professional Data Engineer受験資格獲得までの学習習慣化レポート | @Rick2200 | 16:53 |
Qiita
| # | Title | Summary | Author | Published |
|---|---|---|---|---|
| 1 | DjangoアプリをNext.js + DRF + JWT + AWSに移行してみた #6 Amplify静的エクスポート&デプロイ完結編 | #5で詰まったAmplifyのSSR自動検出失敗を、Next.js静的エクスポート構成へ切り替えてAmplifyデプロイまで完了させた完結編 | @soh506 | 18:11 |
| 2 | React + Rails API構成で作る認証状態の責務を考え、zustandを採用した話 | RUNTEQ受講後のポートフォリオで、認証状態をContextでなくzustandに寄せた理由を「責務分離」軸でまとめたアーキテクチャ判断記 | @yuji2534 | 23:59 |
| 3 | 【AIと一緒に】債務管理アプリを作る Day 8 〜バックエンド接続でハマったエラーを一つずつ・・・〜 | React×ASP.NET Core Web APIの債務管理アプリでフロント-バック接続時に踏んだCORS等のエラーを1つずつ潰した開発ログDay 8 | @dev-rabbit-mkt | 22:57 |
| 4 | Windows + VSCodeでReact環境構築する手順【Vite / React / TypeScript / npm】 | Windows + VS Codeターミナルから Vite + React + TypeScript + npm 環境を初期化する手順を一直線にまとめた最小構成ガイド | @rabbit2145 | 20:52 |
| 5 | Node.jsのスクレイピングでWi-Fiが死んだ話 | Node.jsスクレイパーの同時接続増で家庭Wi-Fiが切れた事象を、WinsockカタログとDHCPリース回りまで切り分けた家庭ネット障害分析 | @Kitabu-Namekuji | 18:22 |
| 6 | 「NODE_TLS_REJECT_UNAUTHORIZED=0」にサヨナラバイバイ!社内プロキシ配下で AWS CLI や Node.js の TLS エラーを安全に直そう! | 社内プロキシ環境での NODE_TLS_REJECT_UNAUTHORIZED=0 運用を、AWS CLIとNode.js双方で社内CAバンドルを正しく信頼させる構成に置き換える手順 | @_YukiOgawa | 17:12 |
| 7 | 【node:test】ESM でモジュールをモックする | Node.js v26.2.0時点のネイティブテストランナー node:test を使い、ESMでモジュールモックを行う方法と「機能が未成熟」な現状の制約を整理 | @m-nakasato | 14:30 |
| 8 | React × TypeScript開発で必須のZodとは?【ビギナー向けに解説】 | React×TypeScript現場で頻出のZodを、なぜスキーマと型を一元化できるかという観点から具体例つきで初学者向けに解説 | @monotein | 12:18 |
| 9 | .ts と .tsxの違いとは | JSX(HTMLライク構文)を扱えるかどうかで .ts と .tsx が分かれる、というファイル拡張子の境界を最短で整理した記事 | @hey_miii | 04:59 |
| 10 | pgAdmin 4起動エラー対応方法「The pgAdmin 4 server could not be contacted」 | Java研修2ヶ月目のWeb転向初学者が、pgAdmin 4の server could not be contacted エラーをAI支援で切り分けた対応手順記録 | @OS0713 | 21:19 |
| 11 | 【Rails API】Rails API プロジェクト作成と PostgreSQL 接続 | WSL2上のRails API構成第2回。rails new --api -d postgresql でのDB接続設定と database.yml まわりの実作業をまとめている | @tsuzuri_lab | 12:50 |
| 12 | PostgreSQL 17の変化を実測する ─ t3.microで確かめるCOPY性能向上・ストリームI/O・ON_ERRORオプション | t3.micro上でPostgreSQL 16→17を実測比較し、COPY性能・ストリームI/O・新しい ON_ERROR オプションの効きどころを定量検証 | @matsutomu | 09:22 |
| 13 | 【Rails API】WSL2 + Ruby + Rails + PostgreSQL を理解しながら環境構築する | Vue3+TS連携前提のRails API向けに、WSL2+rbenv+PostgreSQLを自動セットアップに頼らず各層の意味を確認しながら構築する手順 | @tsuzuri_lab | 06:59 |
| 14 | URL.hostname は example.com. をそのまま返す | JavaScriptの URL.hostname が末尾ドット付きFQDN(example.com.)を正規化せずそのまま返す仕様を、コード例で実証した小ネタ記事 | @mori-dev | 22:09 |
| 15 | Terraform実務Tips:stateファイル管理とモジュール設計のベストプラクティス | 2026年時点のstateバックエンドはS3 nativeロック主流(DynamoDBはレガシー扱い)と整理、破損state復旧手順とThin/Thickモジュール選定指針 | @similarmetal | 22:24 |
| 16 | なぜ Tailwind CSS で w-[22px] を避け、w-5.5 と書くべきなのか? ── 任意値からの脱却と設計思想 | Tailwindの4px刻みスケールに沿ったユーティリティ採用が制約ベース設計を支える、と任意値多用を避けるべき設計理由を整理 | @hey_miii | 05:08 |
| 17 | AI間違いシリーズ:CopilotにTailwindの ! の位置を指摘されたので確認した話 | CopilotがTailwindの !important 修飾子の位置を間違って指摘してきた事例を、公式ドキュメントで反証した「AI誤指摘」検証記録 | @hey_miii | 05:05 |
| 18 | Amazon Transcribe × AWS Glue DataBrew で日本語音声ファイルの文字起こしとマスキングを実装してみた | 日本語音声をAmazon Transcribeで起こしGlue DataBrewでPIIマスキングする構成を実装、結果は「精度・運用性ともに混在」と率直に評価 | @tyskJ | 21:30 |
Publickey
2026-05-24 付の記事はありませんでした。
gihyo.jp
2026-05-24 付の記事はありませんでした。
GIGAZINE
2026-05-24 付のWeb開発関連記事はありませんでした。
ITmedia News
2026-05-24 付のWeb開発関連記事はありませんでした。
TypeScript Blog
2026-05-24 付の記事はありませんでした。
Node.js Blog
2026-05-24 付の記事はありませんでした。
Astro Blog
2026-05-24 付の記事はありませんでした。
Cloudflare Blog
2026-05-24 付の記事はありませんでした。
Vercel Changelog
2026-05-24 付の記事はありませんでした。
AWS What’s New
2026-05-24 付の記事はありませんでした。
Google Cloud Blog
2026-05-24 付の記事はありませんでした。
Supabase Blog
2026-05-24 付の記事はありませんでした。
web.dev
2026-05-24 付の記事はありませんでした。
Mozilla Hacks
2026-05-24 付の記事はありませんでした。
CSS-Tricks
2026-05-24 付の記事はありませんでした。
Smashing Magazine
2026-05-24 付の記事はありませんでした。
Hacker News
対象日の該当記事はすべて Top 20 に掲載されています。