---
type: "blog_post_list"
url: "https://www.ytyng.com/"
page: 1
per_page: 20
total: 340
lang: "ja"
---

# ブログ記事一覧

- [macOS 26 で Xcode を使わずに WebView スクリーンセーバーを作る](https://www.ytyng.com/blog/macos-26-screensaver-webview-without-xcode)

  _2026-05-06T11:33:13.576Z_

  macOS の screensaver (.saver バンドル) を Xcode 無し / swiftc 一発でビルドして WebView を表示するスクリーンセーバを作る方法。macOS 26 (Tahoe) で実機検証。bounds=0x0 / Retina backing pixel / visibility=hidden で transition 停止 / WebView インスタンス蓄積、4 つの罠と対処も収録。

- [WKWebView で CSS の opacity transition が動かないとき疑うこと](https://www.ytyng.com/blog/wkwebview-opacity-transition-not-working)

  _2026-05-06T11:28:21.114Z_

  WKWebView の中で opacity: 0 → 1 の CSS transition が動かない。class は付き画像 URL も入っているのに getComputedStyle().opacity が "0" のまま。原因は document.visibilityState === 'hidden' で WebKit が transition を停止する最適化。WKUserScript で偽装する手と CSS で transition を殺す手を紹介。

- [EmDash は遅い (v0.9.0 時点)](https://www.ytyng.com/blog/emdash-is-slow-as-of-v0-9-0)

  _2026-05-06T07:48:35.191Z_

  Cloudflare 発の CMS EmDash を Cloudflare Workers にデプロイして使ってみたら TTFB が 500ms〜3000ms かかった。文字だけの about ページですら 400ms 級。比較・原因解析・第三者ベンチマークの引用と合わせてまとめる。

- [EmDash で Brevo を使ってメールを送信する方法](https://www.ytyng.com/blog/emdash-brevo-email-plugin)

  _2026-05-06T03:11:23.143Z_

  Cloudflare Workers にデプロイした EmDash で magic link 認証を動かすために、Brevo の HTTP API を呼ぶ自作プラグインを書いた話。既存プラグインの調査、なぜ Brevo を選んだか、sandboxed と plugins: の使い分けの落とし穴、API キーの保管方法までまとめた。

- [Python ファイル1つで依存ライブラリ管理もできるポータブル実行スクリプトを作る](https://www.ytyng.com/blog/portable-python-script-with-pep723-and-uv)

  _2026-05-01T02:40:27.986Z_

  PEP 723 (Inline script metadata) と uv の shebang サポートを組み合わせて、依存ライブラリ管理も含めて Python ファイル1つで完結する実行可能スクリプトを書く方法を解説する。

- [1Password の特定のアイテムを CLI からデスクトップアプリで開く方法](https://www.ytyng.com/blog/open-1password-item-from-cli)

  _2026-04-26T05:38:58.961Z_

  1Password のデスクトップアプリで特定のアイテムを CLI から直接開く方法。プライベートリンクの URL スキームを書き換えるだけで、ブラウザを経由せずアプリで開けます。

- [Claude Code のエージェントインストラクションやスキルは Gemini CLI や Codex CLI、Copilot CLI でそのまま使えるのか？ 調査した](https://www.ytyng.com/blog/claude-code-config-sharing-with-gemini-codex-copilot)

  _2026-03-27T15:00:00Z_

  Claude Code の CLAUDE.md、スラッシュコマンド、スキル、MCP設定を Gemini CLI・Codex CLI・GitHub Copilot で共用できるか調査。symlink で共有できるものとできないものを整理した。

- [AIエージェントによるブラウザ自動化ツール3種比較 — Playwright CLI / agent-browser / Claude in Chrome](https://www.ytyng.com/blog/ai-browser-automation-tools-comparison-2026)

  _2026-03-27T15:00:00Z_

  Claude Code が3つのブラウザ自動化ツール（Playwright CLI、agent-browser、Claude in Chrome）を実際に使って Web アプリを操作し、操作性・トークン効率・安定性を比較したレポート。

- [AWS EKS でのインスタンスクラスと Pod 上限数のコストパフォーマンス分析](https://www.ytyng.com/blog/eks-cost-performance-max-pods-per-instance-type)

  _2026-03-18T12:00:00Z_

  EKS の ENI ベースの Max Pods 計算式とインスタンス On-Demand 価格から Pod あたりコストを算出。2xlarge と 8xlarge は同サイズの xlarge / 4xlarge と同じ Pod 数で価格2倍という罠、Graviton c7g が Pod 密度コスパ最強であることを示す。

- [SvelteKit を adapter-node で Docker コンテナとして動かしている時、static 以下の静的ファイル配信にクライアントキャッシュ用レスポンスヘッダーを付与する](https://www.ytyng.com/blog/sveltekit-adapter-node-static-cache-control-header)

  _2026-03-01T23:35:10Z_

  SvelteKit の adapter-node は static/ ディレクトリのファイルに Cache-Control ヘッダーを付けない。Node.js の --import フックで http.ServerResponse.prototype.writeHead をパッチし、特定パスのレスポンスにキャッシュヘッダーを付与する方法を解説する。

- [MCP より Skill + CLI。Sentry MCP をやめて マルチプロファイル対応 CLI にした](https://www.ytyng.com/blog/sentry-cli-multi-profile-zsh-wrapper)

  _2026-02-22T03:38:29.138Z_

  sentry-cli にはネイティブなマルチプロファイル機能がないため、AWS CLI の --profile のように使える zsh ラッパー関数を作成した。Claude Code のスキルとしても登録し、AI エージェントからも自然に操作できるようにした。

- [Raspberry Pi のサイネージ化 … Playwright で Chromium を最大化して自動操作する](https://www.ytyng.com/blog/raspberry-pi-signage-playwright-chromium-kiosk)

  _2026-02-18T03:00:00Z_

  Raspberry Pi をサイネージ端末として使い、Playwright (Python) + Chromium の --kiosk モードで Web ページを常時フルスクリーン表示する方法。Cookie 永続化による自動認証、.desktop ファイルによる自動起動、scp デプロイまで。

- [Docker 29 で GitHub Actions から ECR への docker push が 403 Forbidden になる問題と対処法](https://www.ytyng.com/blog/docker-29-ecr-push-403-forbidden-containerd-image-store)

  _2026-02-13T02:34:24Z_

  GitHub Actions の ubuntu-latest ランナーが Docker 29 に更新され、containerd image store がデフォルトになったことで ECR への push が 403 Forbidden で失敗する問題の解説と対処法。

- [Finderのサービスメニューに「ファイルのフルパスをクリップボードにコピー」を追加する方法](https://www.ytyng.com/blog/finder-copy-full-path-to-clipboard-service)

  _2026-02-10T23:29:53.164Z_

  macOS の Automator を使って、Finder で右クリックするだけでファイルのフルパスをクリップボードにコピーできるクイックアクションを作成する方法。

- [Orange Pi Zero 2W を Web サイネージにする方法](https://www.ytyng.com/blog/orangepi-zero2w-web-signage)

  _2026-02-09T09:34:38Z_

  Orange Pi Zero 2W で Chromium キオスクモードを自動起動して Web サイネージ化する方法を解説。systemd の安定起動設定（getty 競合回避、D-Bus/GPU 対策、無制限リトライ）と、gpiomon 割り込み方式による物理ボタン制御の実装を紹介します。

- [Suno AI の Remix・Inspo・Mashup・Sample 機能の違いまとめ](https://www.ytyng.com/blog/suno-ai-remix-inspo-mashup-sample-differences)

  _2026-02-08T08:40:16Z_

  Suno AI の Remix・Inspo・Mashup・Sample の4機能の違いを比較表付きで整理。それぞれの入力・動作・元曲との関係性と、目的別の使い分けフローチャートを解説します。

- [Firefox: macOSフルスクリーン時にESCキーで解除されるのを防ぐ設定](https://www.ytyng.com/blog/firefox-macos-esc-fullscreen)

  _2026-01-23T02:52:11.404Z_

  macOSでFirefoxをOS標準のフルスクリーンにするとESCキーで解除されて困る場合、about:configの「browser.fullscreen.exit_on_escape」をfalseに変更して防止する方法を解説。F11やメニュー操作は継続可能。

- [Docker コンテナ内 Chromium のリモートデバッグポートを外部公開する方法](https://www.ytyng.com/blog/docker-chromium-cdp-port)

  _2026-01-09T03:03:09.654Z_

  Dockerコンテナ内のChromiumでリモートデバッグ(9222)が外部公開できない原因（M113以降で0.0.0.0が127.0.0.1へ強制）と、socatで9222→127.0.0.1:9223へ安全にフォワードしてCDP接続する手順を解説。

- [Git skip-worktree で追跡ファイルの変更を無視する方法](https://www.ytyng.com/blog/git-skip-worktree-guide)

  _2026-01-09T03:02:43.095Z_

  追跡済みファイルのローカル変更を無視したいなら、.gitignoreではなくgit update-index --skip-worktree。設定方法、解除、一覧確認、assume-unchangedとの違い、pull時の対処まで解説。

- [Claude Code JSON ストリーム出力からテキストを抽出する方法](https://www.ytyng.com/blog/claude-stream-json-jq)

  _2026-01-09T01:55:59.348Z_

  Claude Code の --output-format=stream-json（JSON Lines）から .event.delta.text だけをリアルタイム抽出する方法を解説。jq -r の改行問題を避け、jq -j で断片テキストを連結しつつ \n は改行として表示します。
