投稿

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...

FreeBSD15.1の仮想マシンをVMware Fusionにインストール

Mac miniのVMware FusionにFreeBSD 15.1をインストールした時の覚書。 環境: Mac mini 2024 メモリ24GB, Tahoe 26.5, VMware Fusion 26H1 1. ISOイメージを指定してインストール実行 FreeBSD-15.1-RELEASE-arm64-aarch64-disc1 を公式サイトからダウンロード。 VMware Fusionの設定での注意点 ネットワークアダプタは「ブリッジされたネットワーキング」を選択 Traditional distribution setsとPackagesの違い Would you like to install the base system using traditional distribution sets or pachages(technology preview) Packagesは従来の更新方法)freebsd-update → pkg)をpkgに一本化する取り組み。 FreeBSD 16ではpkgに統一される。 FreeBSD 15は移行猶予期間で、マイナーバージョン間(15.0 → 15.1)は現状ひと手間必要らしい。 2.OS起動後のSSH設定 インストール後はコンソールでrootログインし、SSHの設定を行う。 # less /etc/ssh/sshd_config PermitRootLogin yes PasswordAuthentication yes これでsshdを再起動。 # service sshd restart ここでスナップショットを撮っておく。 WindowsからSSHでアクセスできるか確認。 3.セットアップスクリプトをAIエージェントで作成 Claude Codeでセットアップスクリプトを生成してもらう。 今後はこのスクリプトを元に本番サーバーもAIエージェントに設定してもらうう予定。 ▼ 関連記事 FreeBSDを13.1から14.0にアップグレード FreeBSD13.1の仮想マシンをインストールして初期設定

WindowsターミナルのPowerShellとClaude CodeでCtrl+ZのUndoを有効にする

WindowsターミナルでClaude Codeを使っていると、打ち間違いのたびに反射的にCtrl+Zを押してしまう。しかしUndoにならない。PowerShellとClaude Codeの両方でCtrl+ZをUndoにした時の覚書。 Claude(Cowork)と対話しながら設定した。 環境: Windowsターミナル + PowerShell + Claude Code 1. PowerShell側の設定(PSReadLine) PowerShellのコマンドライン編集はPSReadLineが担当している。 まず現状のCtrl+Zの割り当てを確認。 PS:> Get-PSReadLineKeyHandler -Key Ctrl+z Windowsモード(既定)ならUndoに割り当て済みのこともある。割り当てられていなければ、以下をプロファイルに追記して恒久化する。 if (!(Test-Path $PROFILE)) { New-Item -Type File -Path $PROFILE -Force | Out-Null } Add-Content $PROFILE 'Set-PSReadLineKeyHandler -Key Ctrl+z -Function Undo' Add-Content $PROFILE 'Set-PSReadLineKeyHandler -Key Ctrl+y -Function Redo' . $PROFILE これでPowerShellのプロンプト上はCtrl+ZでUndo、Ctrl+YでRedoが効く。 効かない場合はWindowsターミナル側のキーバインド(設定 → 操作)がCtrl+Zを奪っていないか確認する。 なお、これはコマンドライン入力のUndoであって、実行済みコマンドの取り消しではない。 2. Claude Code側はPSReadLineが効かない PowerShellから起動したClaude Codeのプロンプトでは、上の設定をしてもCtrl+ZでUndoできない。 Claude Codeは独自に入力を処理しているため、PSReadLineの設定は効かない。 調べると、Claude Codeの入力Undoの既定キーは Ctr...