Valibotは文字列の長さをどう数えているのか
Valibotのメンテナーである筆者が、JavaScriptで文字列の長さを数える難しさと、Valibotが提供する3種類の文字数カウント方法を解説しています。JavaScriptのString.lengthはUTF-16コード単位(文…
全90記事
Valibotのメンテナーである筆者が、JavaScriptで文字列の長さを数える難しさと、Valibotが提供する3種類の文字数カウント方法を解説しています。JavaScriptのString.lengthはUTF-16コード単位(文…
ポートフォリオ「Hubpin」を開発中の著者が、Supabaseのservice role(RLS=行レベルセキュリティをバイパスできる特権ロール)の権限について、誤解と訂正を重ねた実体験を記しています。当初は「service role…
会社用と個人開発の両方でCodex CLIを使う著者が、設定ファイルやMCPサーバー設定、セッション履歴が混在してしまう課題を、CODEX_HOME環境変数で解決する方法を紹介しています。デフォルトの~/.codexではなく、~/.co…
著者Giuliano氏が、Go言語でLAN内のP2Pマルチノードサービスを実装した自作コードをZennで紹介しています。単一ファイル・外部依存なしという構成で、ノードの自動発見にUDPマルチキャスト、ノード間の実データ転送にTCPを組み…
Claude Codeの新機能「スキル(Agent Skills)」の入門記事です。毎回同じ指示を貼り付ける手間を、SKILL.mdという1ファイルにまとめることで解消できる仕組みを、公式ドキュメントと実機検証をもとに解説しています。
chot株式会社のエンジニアhirayama氏が、WebMCPを実際に試した感想をZennに投稿しています。WebMCPは、Webページ側がAI向けの操作(ツール)を直接ブラウザ上に提供する仕組みで、従来のMCP(AIとツールをつなぐ標…
Next.js App RouterにおけるServer Components/Client Componentsの設計術を解説する記事です。App RouterのコンポーネントはデフォルトではServer Componentとして扱わ…
パスキーは暗号学的には破られていないのに、認証セッションを乗っ取られてしまう攻撃手法が紹介されています。パスキーには複数デバイス間で同期される「同期パスキー」と、特定デバイスに紐づく「デバイスバインドパスキー」の2種類があります。
AIエージェントの普及に伴い、APIキーを.envファイルに保存するといった従来の秘密情報管理方法ではセキュリティ上不十分になっているという指摘が出ています。Gartnerは2028年までに人間の承認とAIエージェントの連携の重要性が増…
Next.js 16で導入されたCache Componentsについて、従来のApp Router(Next.jsのファイルベースのルーティング機構)が抱えていた制約とその解決策を整理した記事です。従来はcookies()やheade…
ゆめみのmpyw氏が、Goのフラットなパッケージ構造にファイル単位のprivateスコープを持ち込むLinter「declscope」を開発し、解説しています。Goの可視性はExported(全パッケージから可視)とUnexported…
Go言語のencoding/json/v2を高速化するツール「odjson」を、作者本人であるmazrean氏が紹介しています。encoding/json/v2の安定性を保ちながら、サードパーティ製JSONライブラリ並みの速度を実現する…
SmartHRのプロダクトエンジニア・ani氏(入社3か月時点)が、Claude Codeを活用した独自の開発フレームワーク「ハーネス」の設計・実践を報告しています。オーケストレータ・実装エージェント・レビュアー・機械検査という4種類の…
Tanner Linsley氏が、Reactのコンポーネントやフックの書き方をそのまま引き継げる軽量ランタイム「TanStack Redact」を開発しました。Preactのように互換レイヤーを重ねる方式とは異なり、Reactの公開AP…
FIDO2は、共有秘密(パスワード)ではなく公開鍵暗号を用いる現代的な認証標準です。記事はRP(サーバー)・クライアント(ブラウザ)・認証器(セキュリティキーなど)の3者構成と、登録時の鍵ペア生成、ログイン時の署名検証という2つの「セレ…
ブレインパッドでRtoaster GenAIを開発する依田健人氏が、Claude CodeにDesign docやPRの説明文を書かせた際に生じる「読みにくさ」の原因を分析しました。生成AIが書く文書は、重要度による取捨選択をせず全観点…
ラビー合同会社のK@zuki氏は、Claude Codeに特定のコマンド実行を禁止する際、単にブロックするだけだとClaudeが「ユーザーに拒否された」と誤解し、作業が止まってしまう問題を紹介しています。
Next.jsを運用するある筆者が、環境変数の落とし穴について実体験をもとに解説しています。NEXT_PUBLIC_*で始まる環境変数はビルド時にソースコードへ直接インライン化(焼き込み)されるため、Vercelのダッシュボード上で値を…
Zennに掲載されたuhyo氏の記事では、React 19.3で追加された「Fragment Refs」機能を使い、公式サポート外の方法でActivityコンポーネント(React 19.2で導入、内部要素にdisplay: noneを…
筆者(p1ass氏)が、AIが生成した日本語に頻出する単語・言い回しを検出するtextlintルールプリセット「textlint-rule-preset-ai-words-ja」を開発し、その仕組みを紹介しています。検出対象は「効く」「…
Go言語のdefer文がどのように動作するかを解説する技術連載の第1回です。defer文は実行時(到達した時点)で関数値と引数がメモリに保存され、実際の呼び出しは関数終了時まで遅延されます。引数は登録時の値で評価・固定されるため、ループ…
筆者が自身の運営するサービス「SparMate」のローンチ当日に遭遇したインシデントの体験記です。Next.js 16.0.0(2025年10月リリース)でimages.minimumCacheTTLのデフォルト値が60秒から14,40…
Next.js 16で導入されたキャッシュ無効化APIの新顔「updateTag」と、既存の「revalidateTag」の使い分けを解説する記事です。両者の最大の違いは「古いキャッシュを一時的に返してよいか」という点だと説明しています…
マイクロソフトの開発部門でRustツールチームのプリンシパルエンジニアであるVictor Ciura氏が、Rust Foundation公式サイトへのゲスト投稿で、Rust言語が社内でC++、C#、TypeScriptと並ぶTier 1…