Articles
GitHub Actionsのself-hosted runnerをWSL2で構築してフォールバック付きで運用する
- #GitHub Actions
- #GitHub API
- #WSL
- #Claude Code
- #shell
GitHub Actionsのminutes消費を節約するためにWSL2上にself-hosted runnerを構築し、ランナーがオフラインのときはubuntu-latestにフォールバックする仕組みを作った話。reusable workflowでの検出ロジックやsystemdによるサービス化の手順もまとめている。
NetlifyからCloudflareへの移行メモ
- #Cloudflare Pages
- #Cloudflare Workers
- #Netlify
- #GitHub Actions
個人ブログプロジェクトをNetlifyからCloudflare Pagesに移行した。サーバーレス関数の書き換え、Netlify BlobsからCloudflare KVへの移行、GitHub Actionsでのデプロイ設定についてのまとめ。
ElectronアプリでCodeMirror 6エディタを組み込む
- #CodeMirror
- #Electron
- #React
- #Vite
Electron + Vite + React + TypeScript構成の個人アプリにCodeMirror 6を導入した際のセットアップ手順と、Vimモード、テーマカスタマイズ、Viteバンドル最適化での注意点をまとめた。
Electronアプリのショートカット設定UIとconfig.json共有の罠
- #Electron
ElectronアプリでショートカットキャプチャUIを実装し、config.jsonで設定を永続化したところ、複数の処理が異なるスキーマで同一ファイルを読み書きしていたことでアプリが起動しなくなるバグを踏んだ。原因と対策のまとめ。
Electronアプリにシステムフォントピッカーを実装する
- #Electron
Electronアプリでシステムフォントピッカーを実装した。queryLocalFonts() APIでネイティブモジュールなしにフォントを列挙し、Canvasのテキスト計測で等幅フォントをフィルタリングする方法のまとめ。
Terminal / PTY / IPC / xterm.js の概念整理メモ
- #Electron
- #Node.js
- #shell
Electronアプリにxterm.js + node-ptyでターミナルを埋め込む実装を進める中で調べた、PTY・IPC・xterm.jsの基本概念と、ネイティブターミナルアプリとの違い、描画方式、フォント問題などの開発メモ。
Vite manualChunksでCodeMirrorを分割したらアプリが壊れた
- #Vite
- #CodeMirror
- #Electron
ViteのmanualChunksでCodeMirror関連パッケージをチャンク分割しようとしたところ、@lezer/パッケージを分離したことでチャンク間の循環依存が発生し、アプリが起動しなくなった。原因の解説と修正方法のまとめ。
Algolia から MiniSearch に検索機能を移行した
- #Takazudo Modular
- #Netlify
- #検索
- #Node.js
Takazudo Modularのサイト検索をAlgoliaからMiniSearchに移行し、ビルド時にJSONインデックスを生成してNetlify Functionで検索するセルフホスト構成に変えた。選定理由、アーキテクチャ、ロケール対応、パフォーマンスについてのまとめ。
CSSをAIにうまいこと書かせる試み
- #CSS
- #Claude Code
- #AI執筆
- #Docusaurus
AIエージェントにCSSを書かせるとうまくいかない問題に対して、CSSベストプラクティスのドキュメントサイトを作ってAIに参照させるという試みについてのまとめ。
Docusaurusのi18nの仕組み
- #Docusaurus
- #i18n(多言語対応)
Docusaurusサイトで日英の多言語対応を行った過程で理解したi18nの仕組みについて、設定からファイル構造、ビルド、開発サーバーまでの全体像をまとめた開発メモ。
Electronアプリでのテキスト検索(Find in Page)実装についての調査メモ
- #Electron
Electronアプリにはブラウザ標準のFind in Page UIが付属しないが、ChromiumのfindInPage APIは使える。ネイティブAPIとmark.js等によるカスタム実装の比較をまとめた。
WSL2 SSH/mosh環境でmacOSのpbcopyを使えるようにする(OSC 52)
- #WSL
- #shell
- #tmux
- #macOS
SSH/mosh経由でWSL2に接続した環境で、OSC 52エスケープシーケンスを使ってmacOSのpbcopyと同じクリップボードコピーを実現する方法。tmux内での動作やzshのalias衝突の回避方法も含めたまとめ。
Cloudflare Durable Objectsを調べたメモ
- #Cloudflare Workers
Claude Codeにリアルタイム共同編集アプリを作らせたら、CloudflareのDurable Objectsを使って実装していた。自分はこのDurable Objectsについて何も知らなかったので調べたメモ。
Claude Codeの/batchとAgent Teams: 2つのエージェント並列実行の比較
- #Claude Code
- #Git
Claude Codeにはエージェントを並列実行する仕組みが2つある。ビルトインの/batchコマンドとAgent Teams機能。表面的には同じに見えるが、アーキテクチャと用途が全く違う。その違いをまとめたリサーチメモ。
いつClaude CodeのAgent Teamsを使うのか
- #Claude Code
- #Takazudo Modular
Claude CodeのAgent Teams機能をいつ使うべきかという問いに対して、普段の開発で使っている2つのパターンと、git worktreeベースの並列開発の実例を交えて紹介。
製品写真をNode.jsで自動生成するパイプラインを作った
- #Node.js
- #Claude Code
- #Eurorack
- #Takazudo Modular
Takazudo Modularの製品写真を、メーカー提供の白背景画像からNode.jsで自動生成するパイプラインを作った。背景除去、ファブリックテクスチャへの合成、リアルな影の付与まで全部プログラマティックに完結する。
MoshiでWindowsに接続してClaude Codeする
- #Claude Code
- #ssh
- #WSL
- #ios
iOSアプリのMoshiを使って、Windows上のWSL2にMosh接続し、iPhoneからClaude Codeを操作できるようにした。SSHだとネットワークが切れるとセッションが死ぬが、Moshなら接続が維持される。セットアップに注意点がいくつかあったので、そのまとめ。
Claude Codeを自作アプリから呼ぶのってアリ?っていう調査
- #Claude Code
- #Electron
- #Claude API
- #Node.js
Claude Code CLIをElectronアプリからプログラム的に呼び出す方法を調べた。技術的には2つのアプローチがあるが、OSSとして配布する場合に利用規約上の問題があることがわかった。
Slack Bot + Claude API + Cloudflare Workers で CMS なしでウェブサイト更新する仕組みを作った
- #Cloudflare Workers
- #Claude API
- #Slack
- #GitHub API
妹のサイト用に、Slack botで自然言語でサイト更新できる仕組みを作った。Claude APIで意味を解釈し、GitHub APIでリポジトリを編集、Cloudflare Workersでホストする構成。CMSのセットアップが不要になる。
Claude Codeのサブエージェントとスキルでサイトの英語翻訳を自動化した
- #Claude Code
- #AI執筆
- #Takazudo Modular
モジュラーシンセのWebショップの英語版を、Claude Codeのカスタムエージェントとスキルを組み合わせて自動化した仕組みのまとめ。