投稿

sGTMとファーストパーティCookieの違い

サーバーサイドGoogle Tag Manager(sGTM)とファーストパーティCookie(1st Cookie)を調査しているときの覚書。 Claude Opus 5と対話しながら作成。 1.Cookie発行元とアーキテクチャ まず前提として、この2つは並べて比較するものではない。 1st Cookie … Cookieがどのドメインで発行されているかという属性 sGTM … 計測処理がどこで実行されるかというアーキテクチャ 2.JavaScriptが書いたCookieかどうか GA4が発行するCookieは、通常のgtag.js設置でもすでにファーストパーティCookie。 document.cookie で自サイトのドメインに書き込んでいるので、サードパーティCookieではない。 にもかかわらず計測が途切れるのは、Safariのトラッキング防止機能(ITP: Intelligent Tracking Prevention)の仕様による。 トラッキング防止機能が見ているのはドメインではなく発行方法 Cookie の発行方法 Safari での有効期限 JavaScript ( document.cookie ) 最大 7 日(クロスサイト遷移の場合は 24 時間) HTTP レスポンスヘッダ( Set-Cookie ) 最大400日 つまり判定基準は「ファーストパーティかどうか」ではなく 「JavaScriptが書いたかどうか」 。 3.sGTMで何が変わるのか sGTM(サーバーサイドGoogle Tag Manager)は、これまでブラウザ上のJavaScriptでCookieに書き込んでいたのをHTTPレスポンスヘッダの Set-Cookieへ変更する仕組み。 参考:  Google Tag Manager - Server-side  |  Google for Developers 4. Safariのトラッキング防止機能の変遷 トラッキング防止機能はウェブ広告側の抜け道を防ぐよう改良されてきた。 2017年9月 — サードパーティCookieの制限が始まる。ファ...

macOSから同じネットワーク内のMariaDBにアクセスできるか確認するPHPコマンド

Mac miniにインストールしたAIエージェントから、同じネットワーク内のFreeBSD上にあるMariaDBにリモート接続できるか確認したときの覚書。 Mac環境:  Mac mini 2024, Tahoe 26.5.2 Mac miniにはWindowsからSSH接続してる。 curlコマンドで接続できるか確認(ポートが空いていて待ち受け状態になっているか) % curl -s --max-time 2 telnet://192.168.10.109:3306 | strings | head -1 確認のためだけにMariaDBをインストールしたくないので、すでにインストール済みのPHPを使う。 バージョン確認。 % php --version PHP 8.5.9 (cli) (built: Jul 28 2026 13:06:52) (NTS) Copyright (c) The PHP Group Built by Homebrew Zend Engine v4.5.9, Copyright (c) Zend Technologies     with Zend OPcache v8.5.9, Copyright (c), by Zend Technologies PHPのMariaDBクライアントがインストール済みか確認。 % php -m | grep -iE 'mysqli|pdo_mysql' mysqli pdo_mysql PHPコマンドを実行。 % php -r ' $m = @new mysqli("192.168.10.109", "user", "password", "database", 3306); if ($m->connect_errno) { fwrite(STDERR, "NG [{$m->connect_errno}] {$m->connect_error}\n"); exit(1); } $r = $m->query("SELECT VERSION() v, DATABASE() d, USER() u")->fetch_assoc(); ec...

Mac miniにsshでログインしたときにzshでHomeとEndを効くようにする

WindowsからMac miniへSSHでログインしたときにHomeとEndで移動できなかったので対応したときの覚書。 Windows環境: Windows 11 Pro, Windows Terminal Mac環境:  Mac mini 2024, Tahoe 26.5.2 この記事はClaude Codeが作成。 1.Windows TerminalでmacOSへSSHログインしたときにHome, Endが効かない訳 原因はシェルではなく行編集ライブラリの違い Home/Endキーが効かない理由は、macOSのデフォルトシェルがzshであること。 より正確には、zshが使用している行編集ライブラリがbashと異なることに起因。 bash → readline(GNU Readline Library) zsh → ZLE(Zsh Line Editor、zsh独自実装) 両者はコードベースが完全に別物。 したがって設定ファイルも記法も互換性なし。 キー入力の実体はエスケープシーケンス 提として、Home/Endキーは「Homeという信号」を送っているわけではない。 端末エミュレータが定められたエスケープシーケンスという文字列を送出し、受け取った側がそれを解釈する仕組み。 Windows Terminal + OpenSSHの組み合わせで送出されるもの。 キー シーケンス Home \e[H End \e[F Delete \e[3~ \e はエスケープ文字(0x1B)を表す。 zshは対応表を持たずに起動する zshのZLEは、これらのシーケンスに対するバインドを初期状態でほとんど持っていない。 Ctrl+A(行頭)、Ctrl+E(行末)はemacsキーバインドとして最初から有効 一方 Home(\e[H), End(\e[F) は未登録 結果として、Homeキーを押しても「解釈できない文字列が届いただけ」の状態となり、無視されるか意図しない挙動になる。 2.対応策/設定 zshの設定(~/.zshrc)を行う。 # vim .zshrc # bashと同じemac...

GUIテスト用の仮想マシンをHyper-VからVMware Workstation Proへ移行

Rust製Windowsアプリ(WinRemap)のGUIテスト環境をHyper-VのVM上に作ったが、 設定画面がVM内で開けなかった。 原因を切り分けてVMware Workstation Proへ移行するまでの覚書。 この記事はClaude Opus 5が生成。 環境: Windows 11 Pro 25H2 / Hyper-V → VMware Workstation Pro 前提として、テスト自動化にはTerminator(mediar-ai)を使う想定。 UIAベースなので、そもそもウィンドウが表示されないと何も始まらない。 Hyper-VはOpenGL非対応 Hyper-Vの仮想マシンに割り当てられる合成ディスプレイアダプターは、OpenGL 2.0以上をサポートしない。  一時的な不具合ではなく、環境側の恒久的な制約。 仮想化基盤の比較 VMware Workstation Pro / VirtualBox / 現行Hyper-Vの3つを比較した。 必須要件 VMware Workstation Pro VirtualBox 7.x Hyper-V Windows ゲストの OpenGL ◎ SVGA3D ドライバで OpenGL 4.3 ( HW バージョン 20 以上)。 公式ドキュメントに明記 ✗ 6.1 で VBoxVGA が廃止され、 Windows ゲストのアクセラレート OpenGL は実質喪失。 Guest Additions の OpenGL ドライバも 2.1 止まり ✗ なし (今回の問題) コンソールセッションでの UI 自動化 ◎ vmrun runProgramInGuest -interactive / -activeWindow が公式機能 ✗ VBoxManage guestcontrol run はサービスセッションで起動する既知の制約 △ タスクスケジューラで回避(実装済み) 全体比較 評価軸 VMware Workst...

Windowsアプリのテスト自動化ツール「Terminator(mediar-ai)」とは?

Rust言語で開発したWindowsアプリ(WinRemap)のGUIテストを自動化したくて調査したときの覚書。 Geminiでディープリサーチしてから、Claudeアプリで記事にしている。 環境: Windows 11 Pro 25H2 Webのテスト自動化にはPlaywrightという定番があるが、Windowsデスクトップアプリには決定打が乏しい。  WinAppDriverは開発が停滞し、UI Automation(UIA)を生で叩くとCOMの作法に付き合うことになる。 Terminator(mediar-ai)とは? Windowsデスクトップを対象としたオープンソースのGUI自動化基盤。 「Playwright for windows computer use」を掲げている。 参考: mediar-ai/terminator - GitHub 構成は主に2つ。 terminator-rs — Rust製のコアライブラリ。Python(terminator.py)とTypeScript(@mediar-ai/terminator)のバインディングもある terminator-mcp-agent — MCPサーバー。Claude CodeやCursorから直接デスクトップを操作できる 対応プラットフォームは事実上 Windows専用 。 開発元はアメリカ・サンフランシスコのMediar.ai(Mediar Inc.)。 従来のComputer Useとの違い AnthropicやOpenAIのComputer Useは、スクリーンショットをVLM(視覚言語モデル)に解釈させて座標をクリックするビジョン依存型。 1ステップごとにVLM推論(Vision-Language Model:視覚言語モデル)が入るので遅い 画像トークンを大量に消費するのでランニングコストが嵩む 解像度やフォント描画の揺らぎで誤操作する(非決定論的) TerminatorはOSのアクセシビリティツリー(Windows UI Automation)を直接読む。 スクリーンリーダーが使っているのと同じUIの「意味」が入ったツリー。 座標ではなく role:Button, name:Save, window:WinRemap のような属性で要素を特定する ウィンドウのサイズやDPIが変...

入力キーを置き換える「WinRemap」の開発

WinRemapというWindows上で入力したキーを別の入力に置き換える常駐ソフトを開発した。 DaikiSuganuma/winremap: A per-application key remapper for Windows, written in Rust — inspired by xremap (Linux) and Keyhac 環境: Windows 11 Pro 25H2 1.開発の経緯 今まではKeyhacというソフトでWindows上でCtrl+f, Ctrl+nなどのキーバインドをカスタマイズして便利に作業していた。 WinRemapを作ろうと思ったきっかけ Claude CodeをWindowsTerminal, ZED, PhpStormなどのアプリで起動すると、それぞれのアプリでのキーバウンドが違う。 Keyhacの設定やアプリの設定を見直していたが、どこにどんな設定をしたか忘れてしまう。 Keyhacの設定(config_personal.py)を整理整頓したくなった。 AIエージェント(Claude Code)の開発に慣れてきたので、Rust言語でWindowsアプリを作りたくなった。 せっかくなのでIME Statusも取り込むことにした。 2.作ってみた感想 更新予定。 AIエージェント(Claude Code)を用いたアプリ開発に自信がついた。 自分用に作ったアプリなので当然ながら快適。 ▼ 関連記事 WindowsターミナルのPowerShellとClaude CodeでCtrl+ZのUndoを有効にする Windows11をクリーンインストール(2022年12月) WindowsのChrome上のTextareaやGmailでEmacsのキーバインドを使いたい

リモートデスクトップ「RustDesk」をMac miniにインストール

Mac miniにWindows11からVNCで操作していると、遅延があるのが気になるので評判がいいRustDeskを試したときの覚書。 Claude Fable 5と対話。 環境: Mac mini 2024 メモリ24GB, Tahoe 26.5.2 使ってみて、ほぼ遅延がなく快適なのでVNCから乗り換えた。 1. RustDeskとは? RustDeskは、TeamViewerやAnyDeskの代替として開発されたオープンソースのリモートデスクトップソフト。 名前の通りコア部分がRust言語で書かれており、GUIにはFlutterを採用。 Windows・macOS・Linux・iOS・Androidに対応し、ライセンスはAGPL-3.0で公開されている。 開発のきっかけは2020年、開発者がTeamViewerの商用ライセンスの価格に驚き「自分で作る」と決めたこと。 2021年のGitHub公開以降、スター数11万超まで成長した人気プロジェクト。 特徴 無料で無人アクセス可能 — 時間制限や商用判定によるブロックがない セルフホスト対応 — 接続を仲介するサーバー(hbbs/hbbr)を自前で運用でき、外部インフラに依存しない構成が組める LAN内ならIP直接続 — サーバーすら不要で、IPアドレス指定だけで低遅延に接続できる 映像はVP8/VP9/AV1とH.264/H.265に対応し、 VNCと比べて描画は圧倒的に滑らか 。 通信はNaClベースのエンドツーエンド暗号化。 なお、開発元の透明性については過去に議論があったソフト。 ただし、クライアントとOSSサーバーはコードが完全公開されており、LAN内利用や外部通信の遮断といった構成を取れば、この種の懸念は技術的にコントロール可能。 rustdeskとrustdesk-serverの違い RustDeskはVNCと違い、1つのバイナリが「操作する側(ビューア)」と「操作される側(被制御)」の両方の機能を持っていて、役割は固定されていない。 rustdesk-serverは接続の仲介インフラ。 インターネット越しに互いを見つけるための電話帳+中継局。 2. Mac miniにRustDeskをインストール caskオプションを付けてGUIアプリとしてインストール実行。 % br...