Blog
Total 92 postsCloudflareのグローバルネットワーク上でヘッドレスChromeを実行するBrowser Rendering
Cloudflare Browser RenderingのREST APIを使って、WebページをMarkdownに変換するAPIを構築する方法を解説します。不要な要素の削除やリソース最適化など、実践的な実装例を紹介します。
ブログのSVGアイコンがチラついてムカついたのでやったこと
Next.jsのImageコンポーネントで発生するSVGアイコンのちらつき問題を、SVGインライン化によって解決した実装記録です。publicフォルダ配置では解消できなかった初回表示時のちらつきを、ビルド時にSVGコードを埋め込むことで無くしました。
Next.js App RouterとPagefindで爆速のサイト内検索を実装する
Next.js (App Router) のブログに Pagefind で全文検索機能を実装する手順を紹介します。public ディレクトリへのインデックス出力設定や、クライアントサイドでの動的インポートなど、実装に必要なポイントをコード付きで解説します。
今日から学ぶGitHub Actionsのセキュリティ設定の基本と最低限の対策
GitHub Actionsで発生しうるScript InjectionやPull Request Target、権限の過剰付与などの脆弱性と、actionlint・ghalint・zizmor等の静的解析ツールを使った具体的な対策方法を解説します。
ブログ記事のアーキテクチャをMDXからMarkdownへ変更しました
NotionとLINEメッセージングAPIを使った外出先からのブログ更新システムから、ObsidianとMarkdownベースのシンプルな管理方式へ移行した経緯を紹介します。
Anthropic公式のMCPによるコード実行をserena MCPで試してみたけど無理だった件
AnthropicのMCPコード実行手法をSerena MCPで試しましたが、ツール数が多く型定義が複雑なMCPではうまくいきませんでした。シンプルなMCPでの検証が必要という学びを共有します。
GASを使うと社内だけで使えるWebサイトが簡単に作れるの知ってました?
Google Apps Script(GAS)を使うと社内限定で使えるWebアプリケーションを簡単に構築できます。claspとTypeScriptを使ってGoogleDriveのファイルを検索するアプリケーションを作成します。
Notion APIのデータベース操作APIに破壊的変更があったので、実装を修正してみる
Notion APIのバージョン2025-09-03における破壊的変更について解説します。単一データベースモデルからマルチソースデータベースモデルへの移行に伴う実装修正方法を紹介します。
仕組みでカバーするStop Hooksで忘れないTypeScriptの型チェック
Claude CodeのStop Hooksを使って、TypeScriptの型チェックを自動実行する仕組みを実装します。物忘れを仕組みでカバーして、効率的な開発フローを実現します。
Dev Container環境でSerena MCPのブラウザ自動起動を無効化する
Dev Container環境でSerena MCPのブラウザ自動起動を無効化する方法を解説します。グローバル設定ファイルとdevcontainer.jsonの設定でダッシュボードの自動起動を制御します。
Next.js + OpenNext.js をdevcontainerで起動しようとしたときにハマったこと
Debian 11 bullseyeベースのdevcontainerでNext.js 15 + OpenNext.jsの開発サーバーが起動せず、Debian 12 bookwormベースに変更して解決した事例。glibcバージョン要件とworkerdの実行互換について整理。
PreToolUseがfailed with non-blocking status code 127になったときにやったこと
Claude CodeのPreToolUseがfailed with non-blocking status code 127になったときの解決方法を解説します。改行コードがCRLFになっている場合にLFに変更することで解決します。