駄文。

プログラマーの日常でつまずいたこと・気づいたことなどの記録です

visionOS 27、もうこれだけで最高 ― Mac仮想ディスプレイが外しても切れなくなった

2026年9月、新しい iPhone の発表に続いて、Apple の各種 OS の新バージョンがリリースされた。その中には、Apple Vision Pro 向けの visionOS 27 も含まれている(配信開始は 9月14日)。

Vision Pro は、正直なところ街で見かけるような製品ではない。なので OS のアップデートといっても、iPhone や Mac に比べると話題になりにくい。visionOS 27 の目玉として紹介されていたのも、パノラマ写真を空間シーンにしたり環境として使えたりする機能、湾曲したウインドウ、目の動きで通知を開く操作、コントロールセンターの刷新……といったあたり。どれも悪くはないけど、自分の使い方にはあまり刺さらない。

でも、やってくれましたよ Apple は。

Mac仮想ディスプレイに「接続を続ける」という設定が入ったのです。

これまでの Mac仮想ディスプレイの不満

Mac仮想ディスプレイは、Vision Pro をかけたまま Mac の画面を大きな仮想ディスプレイとして空間に浮かべられる機能。Mac のキーボードやトラックパッドもそのまま使えるので、物理ディスプレイなしで作業ができる。

ただ、ひとつ大きな不満があった。

Vision Pro をちょっと外すと、Mac との接続が切れてしまう。

コーヒーを淹れに行く、宅配便を受け取る、ちょっと目を休める。そのたびにヘッドセットを外すと仮想ディスプレイが落ちて、付け直すたびに Mac へ再接続し、画面の位置やサイズを整え直す羽目になっていた。1回1回は数十秒の手間でも、1日に何度もやるとじわじわ効いてくる。

visionOS 27 で「接続を続ける」が使えるようになった

visionOS 27 では、Mac仮想ディスプレイの設定に「接続を続ける」という項目が加わった。これがオンなら、Vision Pro を外してもセッションが切れない。付け直せば、さっきまでの Mac の画面がそのまま目の前にあって、すぐ操作を再開できる。

ちなみに私の環境では、自分でオンにした記憶はないのに、アップデート後に見たら最初からオンになっていた。ただ、これがすべての環境で同じかはわからない。外すと相変わらず切れてしまう人は、次の手順で設定を確認してみてほしい(Apple のサポートページに載っている手順)。

  1. Mac仮想ディスプレイのセッション中に、ウインドウ上部に表示されているコンピュータ名をタップ
  2. 「設定」をタップ
  3. 「接続を続ける」をオン

なお、Mac仮想ディスプレイそのものの前提条件(Mac と Vision Pro が同じ Apple アカウントで 2 ファクタ認証にサインインしていること、Wi-Fi と Bluetooth がオンで近くにあること、など)はこれまでと同じ。

HMD で開発したくて買った身としては

もともと私は「物理ディスプレイをやめて、HMD で開発作業をする」ために Vision Pro を買った。

その用途で使っていると、不満らしい不満はほぼこの「外すと切れる」問題だけだった。逆に言えば、唯一に近い改善要望。とはいえ、仕組み的に難しいんだろうな、まあ無理だろうな……と半ば諦めていた。

それがあっさり実現されていると知ったときは、もう素直に嬉しかった。ほかの新機能が全部なくても、これだけで visionOS 27 は最高のアップデートだと言い切れる。

で、なんで9月リリースなのに今さら?

……いや、Vision Pro のバージョンアップには全然期待していなかったので、気づくのが遅れました。

ごめんなさい、Apple。これからもよろしくお願いします。

参考

2階にいてもインターホンに気付きたい ― さすが AI、そんな手があったなんて

日々の生活の中で、ずっと地味に困っていたことがある。

インターホンが鳴っても気付けない。

Amazon の宅配便の受け取りも、ご近所さんのご挨拶も、まったく対応できていなかった。

原因ははっきりしている。私の生活の場は 2 階で、1 階にあるインターホンの音がまったく聞こえないのだ。

いろいろ考えてはいた

もちろん、何もしていなかったわけではない。自分なりにいろいろ考えてはいた。

ただ、決定打と言える方法にはたどり着けず、机の上で計画を練るだけの状態が続いていた。

最初の挑戦は FlashAir

一番最初に試したのは、東芝の FlashAir(無線 LAN 機能付き SD カード)を使う方法だった。

うちのインターホンは、来訪時の写真を SD カードに保存できる。そこで SD カードを FlashAir にして、「写真が保存された」というイベントを Wi-Fi 経由で管理用のホストに記録しよう、という作戦だ。

実際にやってみたものの、これがうまくいかなかった。思っていた以上に早く SD カードへの給電が切られてしまい、Wi-Fi で通知を送り切る前に FlashAir が落ちてしまうのだ。書き込みが終われば用済み、という機器側の省電力設計を考えれば当然といえば当然なのだけど…。

ちなみに FlashAir はすでに生産を終了していて、東芝メモリ改めキオクシアのもとで関連ソフトウェアの配信やサポートも終わっている。今から同じことをやろうとしても、そもそもカードを手に入れるのが難しい。

Claude に相談したら一発だった

そんな中、ふと先日 Claude にこの状況を相談してみた。すると、一発で「それだ!」という回答が返ってきた。

インターホンの親機には、他の機器をつなぐための外部出力(接点出力)が用意されていることがあり、それを使えば IoT デバイスに信号を送れる、というのだ。

言われてみれば、インターホンは火災報知器や増設チャイムなど、ほかの設備と連携させる前提の機器でもある。呼び出しがあったときに信号を外に出す端子があっても不思議ではない。機種によって端子の有無や仕様は違うので、自宅の機種の取扱説明書・施工説明書で確認するのが第一歩になる。

これが本当なら、こんなに確実な方法はない。

FlashAir のときのように「写真の保存」という間接的なイベントを拾うのではなく、呼び出しの信号そのものを取り出せばいい。しかも IoT デバイス側の電源は外から供給するので、FlashAir で苦しめられた電源問題もそもそも関係ない。

作ってみたら、あっさり動いた

で、実際に作ってみると、拍子抜けするほどあっさり。トラブルもなく、期待どおりに動いてくれた。

信号の流れはこんな感じ。

インターホンの呼び出しが Apple Watch に届くまでの信号の流れ

まぁ、なかなかの長旅ではある。

それでも、Home Assistant まで信号が届いてしまえば、あとは Home Assistant のコンパニオンアプリ経由で iPhone に通知を送るだけ。iPhone に届いた通知は Apple Watch にも表示されるので、インターホンが鳴れば手元の Apple Watch がブルッと震える、という仕組みが完成した。

2 階で作業していても、腕に通知が来るので気付けないということがない。

使ってみて思うこと

  • 音に頼らないのが良い。 2 階どころか、ヘッドホンをしていても、多少離れた場所にいても気付ける。
  • 信号を直接拾うので確実。 写真の保存やカメラ映像の解析のような「間接的な判定」ではないので、誤検知や取りこぼしの心配が少ない。
  • Home Assistant に入ってしまえば応用が効く。 通知だけでなく、照明を点滅させる、スマートスピーカーで知らせる、来訪履歴を記録する…と、あとから好きなように広げられる。

注意点としては、インターホン側の端子の仕様(接点出力なのか電圧出力なのか、定格はいくつか)を必ず説明書で確認すること。機種によっては外部出力そのものがなかったり、設定で有効にする必要があったりもする。また、機器の分解や配線の工事が必要な場合は、無理をせず自己責任の範囲で。

おわりに

長いこと机上の計画で止まっていた悩みが、AI に一度相談しただけで片付いてしまった。

「インターホンに外部出力がある」という発想は、自分ひとりでは出てこなかった。知っている人には当たり前の知識なのかもしれないけれど、その「当たり前」をすっと出してくれるのが AI のありがたいところ。

さすが AI、そんな手があったなんて。

これでもう、宅配便もご近所さんも取りこぼさない…はず。

参考

3Dプリンターのモデリングも AI でサクッと ― build123d で試作 1 個・完成品 1 個

少し前に 3D プリンターを手に入れて、ちょっとした小物を印刷しては使っていた。

ただ、自分で 3D モデルを作って印刷するとなると、やっぱりハードルが高いし時間もかかる。なかなか踏み切れない。

気づけば「誰かが公開している 3D モデルを探して印刷するだけ」になっていて、「欲しいものを自分で形にする」という最初のゴールは、だんだん遠のいていた。

CAD を AI が操作する時代になってきた

そんな中、Fusion(旧 Fusion 360)や Blender のような高機能なソフトを、Claude や ChatGPT から操作できるという話がネットニュースにちらほら載るようになった。

調べてみると、たしかに流れが来ている。

  • Autodesk Fusion は公式に MCP(Model Context Protocol)サーバーを用意していて、AI から起動中の Fusion につないで形状を作ったり、スクリプトを走らせたりできる
  • Blender も、有志の「blender-mcp」系のプロジェクトがいくつもあって、Claude からシーンやオブジェクトを操作できる
  • 2026 年 4 月には Anthropic が Claude 向けに Blender と Fusion のコネクタを発表していて、「Claude for CAD」なんて見出しで報じられていた

ちょうどその頃、IoT デバイスを自作していて、「このケースを 3D プリンターで作れたらいいな」と思っていたところ。これはいい機会なので、AI での 3D モデリングを試してみることにした。

Claude と壁打ちして、道具を決める

まずは Claude と壁打ち。

教えてもらったのは、GUI のソフトを AI に操作させるよりも、コードで形を書く「CAD as Code」系のツールを使う方法だった。代表格が OpenSCAD で、3D の形状をプログラムとして記述するタイプの CAD だ。

コードで形を書く方式だと、AI がモデルを作る → 寸法や形状をプログラムで検証する → おかしいところを直す、というループを AI 自身で回せる。ソフト開発のフィードバックループが、そのまま 3D モデリングに持ち込めるというわけだ。

その中でもおすすめされたのが build123d。

  • Python で書ける CAD ライブラリ
  • 産業用 CAD でも使われる幾何カーネル Open CASCADE がベースで、3D プリントや CNC 加工向けの正確なモデルが作れる
  • CadQuery と同じ OCP(Open CASCADE の Python ラッパー)を使っている

Python なので、AI にとっても書き慣れた言語だし、形状を作ったあとに体積やサイズ、面の位置などをそのままコードで調べられる。フィードバックループとの相性が良い、というのも納得だ。さっそく試してみる。

まずは「プリンターのクセ」を合わせる

最初にやったのは、生成したデータと実際に印刷したものの寸法のズレを調べて、パラメーターを調整すること。

3D プリンター(特に FDM 方式)は、データ通りの寸法ぴったりには出てこない。樹脂が広がったり縮んだりするので、穴は小さめに、外形は大きめに出がちだ。はめ合わせやネジ穴があるケースを作るなら、このクセを最初に数値として押さえておくのが大事になる。

ここを最初にやっておいたのが、あとで効いてきた。

箇条書きで説明して、寸法を測ったら……もうできた

あとは、作りたいものを文章で伝えるだけ。

  • どんな部品を入れるケースか
  • どこに穴や開口が必要か
  • どう固定したいか

といったことを箇条書きにしたり、別途説明したりして、いくつか実物の寸法を測って渡す。

そしてえいやでお願いすると、もうモデルが出来上がっていた。

AI が build123d で作ったケース本体とフタの 3D モデル

本体とフタの 2 パーツ構成で、側面には通気用のスリット、フタには 2 本のピンが立っている。

感心したのは、AI がデータを作りながら自分で検証を走らせているところ。たとえば、ナットを埋め込む穴を用意したら周りの壁が薄くなってしまうことに気づいて、そこの壁を厚くする、といった修正を途中で勝手にやってくれる。

作る → 測る → 直す、がモデリングの中でぐるぐる回っていく様子は、見ていてかなり心強い。

試作品 1 個、完成品 1 個で済んだ

これを自分でやっていたらどうなっていたか。

実際にサンプルを印刷して、気に入らないところを 1 つ直してはまた印刷して……と、いったい何個の失敗作を積み上げることになっていたか分からない。3D プリントは 1 回の印刷にもそれなりに時間がかかるので、試行錯誤の回数はそのまま時間とフィラメントの消費になる。

AI にやってもらったら、試作品 1 個、完成品 1 個で済んでしまった。

3D プリンターで印刷した黄色いケース本体とフタ 写真がピンボケなのと、よくみると糸引いてたりするのはご愛嬌です(フィラメントの湿度管理してないのもバレバレ)

使ってみて思ったこと

  • 最初の寸法合わせは大事。 プリンターのクセを先に数値化しておくと、AI の出すモデルがそのまま「使える寸法」になる
  • 実物の寸法は自分で測る。 AI は部品の正確なサイズを知らないので、ここは人間の仕事。測った数値を渡すほど精度が上がる
  • 検証をコードでできるのが強い。 見た目だけでなく、壁の厚さや穴の位置を数値で確認しながら直せるので、印刷する前に潰せる問題が多い

まとめ

すばらしい。想像以上に 3D プリンターを使いこなす AI だった。

「モデリングが面倒で、結局人のデータを印刷するだけ」になっていた自分にとっては、欲しいものを形にするハードルが一気に下がった感覚がある。これからもどんどん活用していけそうだ。

参考

アリババの page-agent を触ったら、サイト内検索はもういらないかもと思った

アリババが GitHub で公開している page-agent を知った。

ひとことで言うと、「Web ページに AI エージェントを住まわせる」JavaScript ライブラリだ。README のキャッチコピーは「The GUI Agent Living in Your Webpage」。お試しなら <script> タグを 1 行貼るだけで、そのページにチャット欄が現れて、AI がページを読んだり操作したりしてくれる。

デモを見て、少し触ってみた。正直、「サイト内検索って、もういらないんじゃないか」と思ってしまった。

page-agent ってなに?

page-agent は、アリババの GitHub organization(alibaba/page-agent)で MIT ライセンスで公開されているオープンソースだ。v1.0.0 が 2026 年 1 月に出て、3 月ごろには Hacker News や GitHub Trending で話題になった。いまも活発に更新されていて、この記事を書いている時点の最新は v1.12.4(2026 年 9 月 6 日)、スターは 2.9 万を超えている。

特徴は、全部ページの中で完結すること。

  • ブラウザ拡張も Python もヘッドレスブラウザもいらない。ページに読み込んだ JavaScript だけで動く
  • スクリーンショットを撮って画像認識する方式ではなく、DOM をテキストとして LLM に渡す。なのでマルチモーダルモデルもいらない
  • LLM は自分で選べる(OpenAI 互換 API で、tool call に対応したモデル)。Qwen、GPT、Claude、Gemini、DeepSeek などが並んでいて、Ollama などのローカルモデルにもつなげる

ちなみに、DOM の処理部分やプロンプトは、ブラウザ自動化で有名な browser-use をベースにしていると明記されている。browser-use が「外からブラウザを操る自動化ツール」なのに対して、page-agent は「サイトの作り手がページに組み込む部品」という立ち位置だ。

全体の構成を図にするとこんな感じ。

page-agent の構成図。訪問者のブラウザ内で UI パネル、Agent コア、PageController、transformPageContent が動き、中継サーバー経由で LLM API を呼ぶ

1 行で試せる

試すだけなら本当にこれだけ。

<script
    src="https://cdn.jsdelivr.net/npm/page-agent@1.12.4/dist/iife/page-agent.demo.js"
    crossorigin="anonymous"
></script>

これを貼ったページを開くと、エージェントのパネルが出てくる。あとは話しかければいい。

公式サイトのデモでも試せる。最初から入っている指示(「ナビゲーションの Docs から Quick Start を探して、Markdown で要約して」)で Run を押してみた。

エージェントは自分で Docs を開き、Quick Start のページへ移動する。画面上のボタンやリンクに番号が振られているのは、エージェントが DOM から拾った「操作できる要素」だ。LLM はこの番号を指定して「9 番をクリック」のように操作を決めている。

page-agent のデモ実行中の画面。Quick Start ページの要素に番号が振られ、下部のパネルに Thinking と表示されている

しばらくすると「Task completed」になり、パネルに Quick Start の内容をまとめた Markdown が返ってきた。

page-agent のデモ完了後の画面。パネルに Task completed と Quick Start の要約が表示されている

(画像はいずれも page-agent 公式デモ の画面)

触ってみて変わったこと

Web サイトって、けっこう迷子になる。

目的の情報がどのメニューの下にあるのかわからない。サイト内検索を使ってみても、キーワードが合わなければ何も出てこないし、出てきても結果の一覧からまた自分で探すことになる。

page-agent だと、この体験がチャットに置きかわる。

  • 「こんなことが知りたい」 → エージェントがページを読んで、まとめて答えてくれる
  • 「このページに行きたい」 → エージェントがサッとボタンやリンクを押して連れて行ってくれる

仕組みとしては、エージェントが「いまのページの状態を見る → 次にやることを決める → クリックや入力をする → 結果を確認する」というループを回している。操作が終わったら、わかったことを文章で返してくれる。

ほかにも、公式ではこんな使い方が挙がっている。

  • フォーム入力の代行:20 回クリックする業務フローを 1 文で。ERP や CRM、管理画面向け
  • サポートボットの強化:「設定ボタンを押して、次に…」と説明するだけのボットから、実際に操作してくれるボットへ
  • アクセシビリティ:自然言語や音声で Web アプリを操作できるようにする

ちょっと触っただけでも、「サイトの中を自分で探し回る」という前提がひっくり返る感覚があった。

ただし、万能ではない

盛り上がったところで、ドキュメントに書かれている制約も確認しておく。

基本は「いまのページ」が守備範囲。 ライブラリ単体(PageAgent.js)が操作できるのは現在のページで、SPA(シングルページアプリ)向けに設計されている。複数タブをまたぐような操作は、ユーザーが別途 Chrome 拡張(Page Agent Ext)を入れる必要がある。

サイト全体の索引を持っているわけではない。 ページの DOM を読んで動くので、サイト内検索エンジンのように全ページの中身を事前にインデックスしているわけではない。「サイト内検索が完全にいらなくなる」かというと、サイトの作りによっては検索と組み合わせることになりそうだ。

見た目だけの情報は読めない。 画像や Canvas、WebGL、SVG の中身は認識できない。ホバーやドラッグ&ドロップ、右クリック、キーボードショートカットにも非対応。逆に言うと、セマンティックな HTML でアクセシビリティがちゃんとしているサイトほど精度が上がる。

安全面の仕掛けは自分で入れる。 操作していい要素・ダメな要素の許可リスト/ブロックリスト、送信前にページ内容をマスクするフック(transformPageContent)、危険な操作を禁止したりユーザー確認を挟んだりする指示などが用意されている。

便利さの代償は LLM の費用

そして一番気になるのがここ。

page-agent は、ステップごとに LLM を呼び出す。1 つの指示でも、ページを見て、操作して、また見て…と何往復もする。1 タスクあたりの最大ステップ数(maxSteps)はデフォルトで 40。しかも毎回、簡略化したページ内容を LLM に送るので、トークンはそれなりに積み上がる。

page-agent のループ図。ページを観察、LLM が次の一手を判断、操作を実行、を最大 40 ステップ繰り返し、完了したら回答する

社内の管理画面くらいならまだしも、誰でもアクセスできる公開サイトに入れたら、訪問者のひと言ひと言に LLM の費用がかかる。アクセスが多いサイトだと、請求額に驚くことになりそうだ。

加えて、公開サイトならではの注意点もある。

  • 1 行で試せるデモ版は本番では使えない。 デモ CDN は、メンテナーが用意した無料のテスト用 LLM API につながっていて、「技術評価と研究開発専用、本番環境での利用は禁止」と規約に書かれている。データは中国本土のサーバーで処理されるので、個人情報や機密データは入れないこと、とも明記されている
  • 本番では自分の LLM を設定する。 npm で入れるか、?autoInit=false を付けて読み込み、自分の API エンドポイントを指定する。ブラウザで動くライブラリなので、API キーをそのままフロントに書くと丸見えになる。公開サイトなら、キーを隠す中継サーバーを挟むことになるだろう

費用を抑える方向としては、公式も「tool call に強い軽量モデル」を推奨していて、gpt-5.4-mini や claude-haiku-4-5、gemini-3.8-flash、qwen3.5-flash などが推奨として挙がっている。社内システムならローカルモデルという手もある。

それでも、たぶん戻れない

とはいえ、一度この体験をすると戻れない気がする。

「サイトの中を自分で探す」から「サイトに聞く」へ。それが、ページにスクリプトを入れるだけで手に入る。サイトの作り手にとっても、バックエンドを作り直さずに AI の入口を用意できるのは大きい。

Web サイトとの付き合い方は、きっとこういう方向に変わっていくんだろうな。

あとは費用の問題さえ解決できれば…。

参考

archifyの衝撃──AIに図を「描かせる」から「検証させながら描かせる」へ

これまで、構成図やフロー図は Mermaid で書いて Markdown に埋め込んできた。

それだけでもだいぶ楽になっていた。以前は PowerPoint や draw.io で箱と矢印をひとつずつ手で並べていたけれど、今は AI に「この構成を図にして」と頼めば Mermaid のコードが出てくる。作図の時間は大幅に短くなった。

ただ、正直に言うと、ある部分は諦めていた。レイアウトだ。

Mermaid で諦めていたこと

Mermaid はテキストで図を書ける手軽さが魅力で、ノードの配置はレイアウトエンジン(dagre や ELK など)が自動で決めてくれる。その代わり、「この箱はここに置きたい」「この線はこっちを回してほしい」といった細かい指定はほぼできない。

シンプルな図ならそれで十分だ。でも図が細かくなってくると、線が交差してごちゃついたり、ラベルが重なって読めなくなったり、だんだん無理が出てくる。「まあ Mermaid だし、こんなもんか」と妥協していた。

AI に書かせても、ここは変わらない。AI はコードを出すところまでで、描画結果を見て「線が重なってるから直そう」とは判断できないからだ。

archify を知った

そんなときに知ったのが archify というツールだ。

archify は、Claude Code や Cursor、Codex CLI、OpenCode などの AI エージェントから使う「エージェントスキル」として配布されている。中身は Node.js 製の描画・検証ツールで、ライセンスは MIT。

描ける図は次の 5 種類。

種類 用途
architecture コンポーネント、サービス、クラウドやセキュリティの境界、インフラ構成
workflow 業務プロセス、承認フロー、CI/CD、ツール呼び出し
sequence API の呼び出し順、リクエストのライフサイクル
dataflow データパイプライン、ETL/ELT、データの系譜
lifecycle 状態遷移、リトライ、終了状態

ポイントは役割分担にある。

  • AI がやるのは、図の定義(型付きの JSON)を書くことだけ。
  • その定義をチェックするのも、HTML に変換するのもツールの仕事。

肝は「検証」と「フィードバックループ」

archify には、定義から図を作る機能だけでなく、定義をチェックする機能が CLI として入っている。

チェックするのは JSON の形式が正しいかだけではない。レイアウトとして破綻していないかも見る。

  • ノード同士が重なっていないか、はみ出していないか
  • 線が関係のないノードを突き抜けていないか
  • 線同士が紛らわしく重なって走っていないか
  • ラベルがノードや他のラベル、線とぶつかっていないか

問題があれば、どの要素がどう悪いのかが実測値つきのエラー(診断)として返ってくる。直し方の候補まで付いている。

流れはこうなる。

  1. AI が図の定義(JSON)を書く
  2. validate にかける
  3. エラーが出たら、診断に従って該当箇所だけ直す
  4. エラーがなくなるまで 2〜3 を繰り返す
  5. deliver で最終チェックし、HTML を出力する

つまり、AI が書く → ツールが検証する → AI が直す、というフィードバックループができる。人間が描画結果を見て「ここ重なってるよ」と指摘しなくても、ツールが代わりに見てくれるわけだ。

さらに、ループが延々と続かないように「2 回続けてエラーが減らなかったら止めて、残った問題を正直に報告する」という決まりまでスキルに書かれている。「できました!」と言いながら壊れた図を出されるのが一番困るので、ここはありがたい。

Mermaid では、AI は描画結果を知らないまま「たぶん大丈夫」でコードを出していた。archify では、描画の良し悪しをツールが数値で返してくれる。精度が上がるのは当然だ。

半信半疑で試してみた

とはいえ、最初は半信半疑だった。自動レイアウトのツールはこれまでも色々あったし、どうせそれなりの図が出てくるだけだろう、と。

試しに、自宅で組んでいる LLM・音声 AI 基盤のランタイム構成を描かせてみた。ブラウザからの音声対話、音声認識・音声合成のサーバー、GPU で動く推論エンジン、それに電話(PBX)まわりが絡む、そこそこ込み入った構成だ。

結果は、想像以上。正直びっくりした。

LLM・音声 AI 基盤のランタイム構成の図
まず、「図」を頼んだつもりが、出てきたのはインタラクティブな HTML だった。1 ファイルで完結していて、中身は SVG の図。ブラウザで開くと、次のようなことができる。

  • ライト/ダークのテーマ切り替え
  • 拡大・縮小、パン
  • ノードの検索、フォーカス
  • 選んだノードの上流・下流の関係をたどる
  • PNG / SVG などへのエクスポート

「現在」と「将来」をボタンで切り替える図

一番驚いたのはここだ。

構成には、今動いている部分と、まだ実装していない予定の部分が混ざっている。たとえば「ブラウザでの音声対話」は動いているが、「電話から音声エージェントにつなぐ」部分は設定を無効にしてあって、まだ配置していない。

AI はこれを別々の図に分けず、1 枚の図のまま、ボタンで見る範囲を切り替えられる形にまとめてきた。

  • 「ブラウザ音声対話(現状)」
  • 「電話(PBX)と音声エージェント予定」
  • 「GPU 推論バックエンド」

ボタンを押すと、その話題に関係するノードにフォーカスが移り、補足説明も表示される。予定のノードには「(予定)」と付き、線も破線で描き分けられていた。

電話(PBX)と音声エージェント予定の図

これは archify の「ビュー(チャプター)」という機能で、図の定義に最大 5 つまで登録できる。どの切り口でビューを作るかを考えたのは AI だ。

構成を考えるのは AI、表現するのはツール

振り返ると、役割がきれいに分かれている。

  • 何を描くか(構成の整理、現在と将来をどう見せるか)を考えたのは AI のすごいところ。
  • それをきちんと表現できる図に仕上げたのは、検証と描画を引き受けるツールの力。

Mermaid では、せっかく AI が良い構成を考えても、表現力とレイアウトの限界で「それっぽい図」止まりだった。archify は、その最後の一歩をツールで埋めてくれる。

使いどころと注意点

実際に使ってみて、気づいたことをメモしておく。

  • 導入はスキルとして入れる。 README では npx skills add tt-a1i/archify -g でのインストールが案内されている。
  • Mermaid からの移行もできる。 既存の Mermaid(flowchart / sequenceDiagram / stateDiagram)を渡すと、その意味を読み取って archify の定義として書き直してくれる。見た目をそのまま変換するのではなく、書き直す形になる。
  • 出力は HTML が基本。 Markdown にそのまま埋め込む Mermaid とは使い方が違う。ドキュメントには HTML を置いてリンクするか、書き出した PNG / SVG を貼る形になる。
  • 細かすぎる図には向かない。 スキルの手順では、主要なノードは 12 個程度までにして、主な流れを 1 本通すことが推奨されている。全部を 1 枚に詰め込むより、範囲を絞って何枚かに分けたほうがいい。
  • 検証が通っても、見た目の最終確認は人間の目で。 ツールが保証するのは機械的なチェックとブラウザでの表示確認までで、「見やすいか」の最終判断は別だと、ツール自身がはっきり区別している。

これからは archify でいく

Mermaid は今でも手軽さでは一番だし、ちょっとした図なら十分だと思う。

でも、人に見せる構成図や、あとから何度も見返すドキュメントの図は、もう archify でいく。AI に「描かせる」だけでなく、「検証させながら描かせる」。この差は思った以上に大きかった。

参考

iPhoneのマイク、実は「選べた」──AirPodsで聴きながら本体マイクで話す(iOS 26の「入力」設定)

ずっと勘違いしていた。

iPhoneのマイクって、AirPodsを付ければAirPodsのマイク、外せばiPhone本体のマイク。要するに「利用形態で勝手に決まるもの」だと思い込んでいたのだ。そういう仕様なんだから仕方ない、と。

AirPodsのマイク、評判が悪すぎる問題

というのも、AirPodsのマイクは電話や会議でめっぽう評判が悪い。「声が遠い」「こもってる」「今どこにいるの?」と言われる始末。最初は自分の顔がデカいせいで口元からイヤホンが遠いのかと本気で悩んだくらいだが、同じ不満を言っている人はどこにでもいるので、たぶん顔は関係ない。よかった。

とはいえ、こちらとしては打つ手がない。マイクはイヤホンに付いてくるものだと思っていたからだ。

かといってマイクブーム付きヘッドセットは……

これを改善しようと、マイクブームの付いたヘッドセットも検討した。音質は間違いなく良い。良いのだが、家の中ならともかく、外であれを装着して歩く勇気がない。管制官かコールセンターかという見た目になる。

そういえば街中で、スマホを口元に近づけて直接しゃべっている人をたまに見かける。あれは相手の声をどうやって聞いているんだろう、とずっと謎だった。スピーカーホン? それにしては周りに音が漏れていない。

見たことない設定を見つけた

で、今日。なんとなくiPhoneの設定をいじっていたら、見たことのないメニューに気づいた。

設定 → サウンドと触覚 → 入力

開くと「iPhoneのマイク」と書いてある。

……もしかすると、これは。

試しに外部マイクを繋いで切り替えてみると、ちゃんと外部マイクに切り替わる。おお。

次の関門は通話だ。録音アプリだけの話なら意味がない。電話中にもこの設定が効くのか。結果、効いた。通話中のマイクもこの設定に従う。

そして最後の関門。AirPods装着中はどうなるのか。ここが本丸である。

答えは、「自動」さえ選ばなければ、この設定が勝つ。

つまり、AirPodsを耳に付けたまま、マイクだけiPhone本体(または外部マイク)に固定できる。

できるようになったこと

これ、今まで諦めていたことが一気に叶う。

  • 相手の声はAirPodsで聴く(イヤホンを外さなくていい)
  • 自分の声はiPhone本体マイクで送る(イヤホンのマイクより素直に声を拾ってくれる)
  • イヤホンを外す・付け直すという動作が一切いらない

電話がかかってくるたびにAirPodsを外してバタバタする、あの儀式からの解放である。付けたまま喋れば、相手も満足。自分も満足。街中でスマホに直接しゃべっている人の謎も、たぶんこれで解けた。

さすが、アップル。 でも、ひっそりとこんな機能をアップデートしてたなんて(しらべたら iOS26からの機能らしい)。気がつくのに一年もかかったじゃないか。

ついでに知っておくと得する周辺機能

調べていたら、関連する機能がいくつか見つかったのでメモ。

  • コントロールセンターからアプリごとに切り替えられる 通話中や録音中に画面右上から下スワイプ →「〇〇(アプリ名)コントロール」→「オーディオ入力」でデバイスを選択。設定アプリまで戻らなくていい。マイクが動いているときは画面右上にオレンジの点が出るので、そこが入口になる。
  • 「マイクモード」とは別物 同じ画面にある「標準/声を分離/ワイドスペクトル/自動」はマイクの処理方法の話で、どのマイクを使うかとは別レイヤー。混同しやすいので注意。ちなみに通話中の「声を分離」はiOS 16.4以降、「自動マイクモード」はiOS 18以降で使える。
  • そもそもiOS 26からの新機能 この入力デバイス選択(いわゆる「入力ピッカー」)は、WWDC25で発表されたオーディオ周りの刷新の一部。アプリ側からも入力ソースを切り替えるAPIが提供されるようになった。WindowsやmacOSでは普通にできたことが、ようやくiPhoneにも来た、という話である。

まとめ

iPhoneのマイクは「利用形態で決まる」ものではなく、明示的に選べる。しかもそれは通話中にも効く。

  • 場所:設定 → サウンドと触覚 → 入力
  • コツ:「自動」にしない。固定したいデバイスを明示的に選ぶ
  • 効果:AirPodsで聴きながら、本体マイクで話せる

長年の「イヤホン外し儀式」が今日で終わった。設定画面はたまに隅々まで眺めてみるものだ。


参考

  • Apple サポート「iPhoneやiPadで『声を分離』『ワイドスペクトル』『自動マイクモード』を使う」 https://support.apple.com/en-us/101993 (通話中の「声を分離」は iOS 16.4 以降、「自動マイクモード」は iOS 18 以降、録音・録画アプリでの「声を分離」「ワイドスペクトル」は iOS 26 以降。なお「ワイドスペクトル」は通常の電話通話では使えない)
  • Apple サポート「対応するカメラアプリで AirPods を使用する」 https://support.apple.com/guide/airpods/use-airpods-with-camera-apps-dev8e2a2ba2e/web ("Go to the Settings app, tap Sounds & Haptics, tap Input" の記載あり。AirPods をカメラ用マイクにする用途は iOS 26 / iPadOS 26 以降+AirPods 4 / AirPods Pro 2・3 / AirPods Max 2 が条件)
  • Apple Developer / WWDC25「Enhance your app's audio recording capabilities」 https://developer.apple.com/videos/play/wwdc2025/251/

え、CPUって壊れるの?

今絶賛、宅内のネットワーク環境を更新中。

そんなおり、サーバとして運用しているPCが突然起動しなくなった。 全く上がらないのでハードウェアを見るとマザーホードにブートシーケンス上のエラーが表示されていた。

こうなるともうAI頼み。 エラーの状況をAIに入力して、その調査方法に身を委ねて淡々と調査。

疑いが、電源→周辺デバイス→メモリ→マザーボード→CPUと来て 結局CPU交換したところで状況が改善。

CPUが壊れることがあるのね。 以外な故障原因にまだ納得ができていないが、ようやく正常化して一安心。