カテゴリー: 未分類

  • openclaw 起動まで

    openclaw 起動まで

    はじめに

    clawdbot? moltbot? openclaw を起動までしたのでメモです。

    こちらのYoutubeを参考にしました。

    環境

    • MacBook Pro 2020
    • Core i5 1.4GHz Intel
    • Intel Iris Plus Graphics 646
    • 8GB
    • Sequoia 15.7.3
    • Node v22.22.0

    手順

    https://openclaw.ai
    公式の手順に従い、インストールしました。

    curl -fsSL https://openclaw.ai/install.sh | bash

    セットアップで色々聞かれますが、モデルの選択とチャットアプリのところだけ意識して選ぶといいと思います。

    私はAnthropic のAPIはもともと課金していたので、モデルは Haiku で試しに使用してみました。

    チャットアプリは設定が楽なのでTelegramにしました。

    やり方は Telegram を開いて Botfather とチャットを開始して、自分の好きな名前でBotを登録します。
    登録したらアクセストークンを取得し、トークンをOpenclawにペーストします。
    その後制作したBotとチャットを開始し、

    openclaw pairing approve telegram <送信されてきたコード>

    を入力したらTelegramから指令を出すことが可能になりました!

  • OpenClaw を Ollama で起動するまでの手順

    結論

    今話題のclawdbot→moltbot→openclaw を使うにあたり、API料金をケチるためにローカルで動作するOllamaを使って構築しました。

    結論から言いますと、私の環境(Intel Mac)では生成が非常に遅く作業にならなかったため、AnthoropicのAPIを使う無難な構成に戻しました。

    Ollama導入に時間もかかったので、導入までを一応記事として残しておきます。

    環境

    • MacBook Pro 2020
    • Core i5 1.4GHz Intel
    • Intel Iris Plus Graphics 646
    • 8GB
    • Sequoia 15.7.3
    • Node v22.22.0

    やり方


    OpenClaw のインストール

    公式のコマンドに従いましした。

    https://openclaw.ai

    curl -fsSL https://openclaw.ai/install.sh | bash

    インストールの際に色々設定する項目があるのですが、なんでもいいです。あとでJsonをいじって変更します。


    Ollama のインストールとモデルの準備

    公式サイトからインストールします。

    https://ollama.com

    インストール後、使いたいモデルを取得します(例:llama3.2)。

    ollama pull llama3.2

    モデル一覧で確認します。

    ollama list

    設定ファイル(openclaw.json)について

    OpenClaw の設定は JSON ファイル で管理されています。

    私の場合以下のようになりました。

    場所
    ~/.openclaw/openclaw.json

    {
      "meta": {
        "lastTouchedVersion": "2026.1.29",
        "lastTouchedAt": "2026-01-31T12:53:00.737Z"
      },
      "wizard": {
        "lastRunAt": "2026-01-31T12:53:00.700Z",
        "lastRunVersion": "2026.1.29",
        "lastRunCommand": "configure",
        "lastRunMode": "local"
      },
      "models": {
        "providers": {
          "ollama": {
            "baseUrl": "http://127.0.0.1:11434/v1",
            "apiKey": "ollama-local",
            "api": "openai-completions",
            "models": [
              {
                "id": "llama3.2:1b",
                "name": "llama3.2:1b",
                "api": "openai-completions",
                "reasoning": false,
                "input": [
                  "text"
                ],
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                },
                "contextWindow": 128000,
                "maxTokens": 2048
              },
              {
                "id": "llama3.2:latest",
                "name": "llama3.2:latest",
                "api": "openai-completions",
                "reasoning": false,
                "input": [
                  "text"
                ],
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                },
                "contextWindow": 200000,
                "maxTokens": 8192
              }
            ]
          }
        }
      },
      "agents": {
        "defaults": {
          "model": {
            "primary": "ollama/llama3.2:1b"
          },
          "workspace": "/Users/coiai/.openclaw/workspace",
          "maxConcurrent": 4,
          "subagents": {
            "maxConcurrent": 8
          }
        }
      },
      "messages": {
        "ackReactionScope": "group-mentions"
      },
      "commands": {
        "native": "auto",
        "nativeSkills": "auto"
      },
      "hooks": {
        "internal": {
          "enabled": true,
          "entries": {
            "boot-md": {
              "enabled": true
            }
          }
        }
      },
      "gateway": {
        "port": 18789,
        "mode": "local",
        "bind": "loopback",
        "auth": {
          "mode": "token",
          "token": "03f2cd1addc279014f135ad07e99a30b90e1c985f465d897"
        },
        "tailscale": {
          "mode": "off",
          "resetOnExit": false
        },
        "remote": {
          "token": "03f2cd1addc279014f135ad07e99a30b90e1c985f465d897"
        }
      },
      "skills": {
        "install": {
          "nodeManager": "npm"
        }
      }
    }
    

    Ollama の起動

    OpenClaw から Ollama を呼び出すため、別のターミナルで Ollama を起動したままにします。

    ollama serve

    起動したらそのままにしてください


    OpenClaw ゲートウェイの起動

    メインのターミナルで、OpenClaw のゲートウェイを起動します。

    openclaw gateway --port 18789 --verbose
    • ポートは openclaw configure で指定した番号(既定は 18789)に合わせてください。
    • このターミナルも閉じずに起動したままにします。
    • ログが流れていれば正常に起動しています。

    その後ブラウザでダッシュボードを開きます。

    http://127.0.0.1:18789/

    試したこと

    ここから構築の際に試したことです。

    返答が返ってこない

    • Ollama が起動しているか ollama list で確認する。
    • ゲートウェイを再起動する(設定を変えたあとは必須)。
      openclaw gateway stop のあと、openclaw gateway --port 18789 --verbose で起動し直す。
    • 初回は Ollama の推論に 5〜10 分かかることがある。ログに embedded run startembedded run done が出るまで待つ。待っても画面に出ないときは、同じスレッドのままページを再読み込みすると表示されることがある。
    • ログに 「Unhandled API in mapOptionsForApi: undefined」 が出る場合:モデル定義に "api": "openai-completions" が抜けている。openclaw.jsonagents/main/agent/models.json の該当モデルに追加し、ゲートウェイを再起動する。

    返答が遅い

    • 軽量モデルにする:例として llama3.2:1bollama pull llama3.2:1b)を設定すると速くなりやすい。
    • モデルをメモリに残す:Ollama 起動前に export OLLAMA_KEEP_ALIVE=30m を設定するか、別ターミナルで ollama run llama3.2 を実行したままにしておく。
    • 返答の最大長を短くするopenclaw.json の該当モデルの maxTokens を 2048 などに下げる。

    返答が変(「Twilio API」「JSON」「session ID」のように分析される)

    • ユーザーメッセージに内部用の [message_id: ...] が付いており、モデルがそれを API データと解釈しているため。
    • 対処:ワークスペースの ~/.openclaw/workspace/AGENTS.md に「ユーザーメッセージ末尾の [message_id: ...] は無視し、本文だけに返答すること」と書く。保存後、ゲートウェイを再起動する。
    • それでも改善しない場合は、より指示に従いやすいモデル(例:llama3.2:latest)に切り替える。

    文字が送信するとすぐ消える

    • 認証エラーのことが多い。ブラウザの開発者ツール(F12)のコンソールで unauthorizedtoken のエラーを確認する。
    • ダッシュボードの設定で トークンopenclaw.jsongateway.auth.token)を入力するか、URL に ?token=... を付けて開き直す。
    • WebSocket や接続エラーが出ている場合は、ゲートウェイを再起動してから再度試す。

    ダッシュボードに接続できない

    • ゲートウェイが動いているか、ターミナルのログを確認する。
    • ポート番号が設定と一致しているか確認する(既定は 18789)。
    • トークン認証を有効にしている場合は、URL に ?token=... を付けるか、画面の設定でトークンを入力する。

    設定をやり直したい

    • もう一度ウィザードを実行する。
      openclaw configure
      既存の ~/.openclaw/openclaw.json は上書きされるため、必要な場合は事前にバックアップ(例:cp openclaw.json openclaw.json.bak)を取っておく。
  • Apple Icon Composer が便利!

    Apple Icon Composer が便利!

    Icon Composer とは?

    XCode 26 から追加された Icon を liquid glass に対応させるためのAppです。
    最新のXCode をダウンロードすると自動でアプリに追加されます。

    使い方

    使い方はすごく簡単で、背景透過画像を追加するだけです。

    私の場合 Sonivium という音楽に合わせてシェーダーが変化するアプリを作っていたので、このアイコンで試してみることにしました。

    最初に用意した画像

    Icon Composer に追加し、画像を追加すると、Fill の項目からアイコンをソリッドまたはグラデーションに変更することが可能です。
    私はグラデーションにしてみることにしました。
    同様に背景の色も変更可能です。

    ダークモードや透明なモードにも対応させることが可能です。

  • Electron Apple Store にデリバリができない

    問題の概要

    ElectronアプリをMac App Storeにアップロードしようとしていますが、App Sandboxが有効になっていないというエラーが発生し、解決できていません。

    エラーメッセージ

    Validation failed (409)
    
    App sandbox not enabled. The following executables must include the "com.apple.security.app-sandbox" entitlement with a Boolean value of true in the entitlements property list: [
    
    "coiai.net.sonivium.pkg/Payload/Sonivium.app/Contents/Frameworks/Sonivium Helper (GPU).app/Contents/MacOS/Sonivium Helper (GPU)",
    
    "coiai.net.sonivium.pkg/Payload/Sonivium.app/Contents/Frameworks/Sonivium Helper (Plugin).app/Contents/MacOS/Sonivium Helper (Plugin)",
    
    "coiai.net.sonivium.pkg/Payload/Sonivium.app/Contents/Frameworks/Sonivium Helper (Renderer).app/Contents/MacOS/Sonivium Helper (Renderer)",
    
    "coiai.net.sonivium.pkg/Payload/Sonivium.app/Contents/Frameworks/Sonivium Helper.app/Contents/MacOS/Sonivium Helper",
    
    "coiai.net.sonivium.pkg/Payload/Sonivium.app/Contents/Library/LoginItems/Sonivium Login Helper.app/Contents/MacOS/Sonivium Login Helper",
    
    "coiai.net.sonivium.pkg/Payload/Sonivium.app/Contents/MacOS/Sonivium"

    環境情報

    – **OS**: macOS (darwin 25.0.0)

    – **Electron**: 39.2.7

    – **electron-builder**: 25.1.8

    – **アプリID**: `coiai.net.sonivium`

    – **Team ID**: `45J6U33V86`

    現在の設定

    package.json (mas設定)

    "mas": {
    
    "category": "public.app-category.utilities",
    
    "icon": "logo/Output/macOS/AppIcon.appiconset/Icon-mac-512.png",
    
    "hardenedRuntime": true,
    
    "gatekeeperAssess": false,
    
    "entitlements": "build/entitlements.mas.plist",
    
    "entitlementsInherit": "build/entitlements.mas.plist",
    
    "target": [
    
    {
    
    "target": "mas",
    
    "arch": ["arm64", "x64"]
    
    }
    
    ],
    
    "bundleVersion": "1",
    
    "extendInfo": {
    
    "LSHasLocalizedDisplayName": true,
    
    "CFBundleDevelopmentRegion": "ja",
    
    "CFBundleURLName": "coiai.net.sonivium",
    
    "ElectronTeamID": "45J6U33V86"
    
    },
    
    "electronLanguages": ["ja", "en"],
    
    "identity": "Apple Distribution: Akira Hattori (45J6U33V86)",
    
    "preAutoEntitlements": false
    
    }

    build/entitlements.mas.plist

    “`xml

    <?xml version=”1.0″ encoding=”UTF-8″?>

    <!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>

    <plist version=”1.0″>

    <dict>

    <!– App Store用のentitlements – App Sandboxは必須 –>

    <key>com.apple.security.app-sandbox</key>

    <true/>

    <key>com.apple.security.cs.allow-jit</key>

    <true/>

    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>

    <true/>

    <key>com.apple.security.cs.allow-dyld-environment-variables</key>

    <true/>

    <key>com.apple.security.cs.disable-library-validation</key>

    <true/>

    <key>com.apple.security.device.audio-input</key>

    <true/>

    <key>com.apple.security.network.client</key>

    <true/>

    <key>com.apple.security.files.user-selected.read-write</key>

    <true/>

    <key>com.apple.security.files.downloads.read-write</key>

    <true/>

    </dict>

    </plist>

    “`

    試した解決策

    1. entitlementsInheritの設定

    最初は別のファイル(`entitlements.mas.child.plist`)を指定していましたが、エラーが続いたため、メインのentitlementsファイルと同じファイルを指定するように変更しました。

    “`json

    “entitlementsInherit”: “build/entitlements.mas.plist”

    “`

    2. 証明書の確認

    – ✅ **Apple Distribution**: キーチェーンに存在し、`package.json`で指定済み

    – ✅ **Mac Installer Distribution (3rd Party Mac Developer Installer)**: キーチェーンに存在

    – ⚠️ `security find-identity -v -p codesigning`では表示されないが、キーチェーンアクセスには表示される

    3. ビルドコマンド

    “`bash

    npm run build:mas

    “`

    これで`release/mas-arm64/`に`.pkg`ファイルが生成されます。

    4. コード署名の確認

    `identity`を明示的に指定しています:

    “`json

    “identity”: “Apple Distribution: Akira Hattori (45J6U33V86)”

    “`

    問題点

    1. **メインアプリにはentitlementsが適用されている**が、**ヘルパーアプリ(Helper apps)に適用されていない**

    2. `entitlementsInherit`を設定しているにもかかわらず、ヘルパーアプリに`com.apple.security.app-sandbox`が適用されていない

    3. `electron-builder`の`mas`ターゲットを使用しているが、ヘルパーアプリへのentitlements適用が正しく動作していない

    確認したこと

    ### ビルド後のentitlements確認

    以下のコマンドでヘルパーアプリのentitlementsを確認しましたが、結果はまだ確認していません:

    “`bash

    codesign -d –entitlements – release/mas-arm64/Sonivium.app/Contents/Frameworks/Sonivium\ Helper\ \(GPU\).app/Contents/MacOS/Sonivium\ Helper\ \(GPU\)

    “`

    参考にした資料

    – [Electron公式ドキュメント – Mac App Store Submission Guide](https://www.electronjs.org/ja/docs/latest/tutorial/mac-app-store-submission-guide)

    – [electron-builder公式ドキュメント](https://www.electron.build/)

    – [Qiita – ElectronアプリをMac AppStoreに登録する](https://qiita.com/bontaro_1/items/cbe29883900740eb9859)

    ヘルプを求めていること

    1. **なぜ`entitlementsInherit`が機能しないのか?**

    – `electron-builder`の`mas`ターゲットで、ヘルパーアプリにentitlementsを適用する正しい方法は?

    2. **代替手段はあるか?**

    – `electron-builder`の設定以外で、ヘルパーアプリにentitlementsを適用する方法は?

    – ビルド後に手動でentitlementsを適用する方法は?

    3. **設定の見落としはないか?**

    – `package.json`の`mas`設定に不足している設定はないか?

    – `entitlements.mas.plist`に不足している設定はないか?

    4. **electron-builderのバージョン問題?**

    – `electron-builder` 25.1.8で既知の問題はあるか?

    – 他のバージョンで解決した事例はあるか?

    5. **Electron 39.2.7との互換性**

    – Electron 39.2.7と`electron-builder` 25.1.8の組み合わせで問題はないか?

    追加情報

    – ビルドは成功し、`.pkg`ファイルは生成される

    – コード署名も成功している(`identity`を指定しているため)

    – App Store Connectへのアップロードは成功するが、バリデーションでエラーが発生する

    お願い

    この問題を解決するためのアドバイスや、同様の問題を経験された方の解決方法を教えていただけると助かります。

    特に、`electron-builder`の`mas`ターゲットで、Electronアプリのヘルパーアプリに確実にentitlementsを適用する方法について、具体的な解決策を求めています。

  • Next.js React のプロジェクトに Adobe Font を埋め込む

    この記事では Next.js, React を使ったWebのプロジェクトにAdobeFontを読み込ませる方法を解説しています。

    やり方

    AdobeFonts.tsx を作成します。

    'use client';
    
    import { useEffect } from 'react';
    
    export default function AdobeFonts() {
      useEffect(() => {
        const kitId = 'あなたのKey';
        const config = { kitId, scriptTimeout: 3000, async: true } as const;
    
        const h = document.documentElement;
        const t = window.setTimeout(() => {
          h.className = h.className.replace(/\bwf-loading\b/g, '') + ' wf-inactive';
        }, config.scriptTimeout);
    
        const tk = document.createElement('script');
        let f = false;
    
        h.classList.add('wf-loading');
        tk.src = `https://use.typekit.net/${config.kitId}.js`;
        tk.async = true;
    
        const onload = () => {
          if (f) return;
          f = true;
          window.clearTimeout(t);
          try {
            // @ts-ignore
            window.Typekit?.load({ async: config.async });
          } catch (e) {
            // no-op
          }
        };
    
        tk.onload = onload;
        // 古いブラウザ互換(readyState)
        // @ts-ignore
        tk.onreadystatechange = function () {
          // @ts-ignore
          const a = this.readyState;
          if (f || (a && a !== 'complete' && a !== 'loaded')) return;
          onload();
        };
    
        document.head.appendChild(tk);
    
        return () => {
          window.clearTimeout(t);
        };
      }, []);
    
      return null;
    }

    これをLayout.tsxのbodyで呼び出しましょう。
    私はJoyUIを使ってるので以下の感じで埋め込みました。

    import { CssVarsProvider } from '@mui/joy/styles';
    import './globals.css';
    import Script from 'next/script';
    import AdobeFonts from './components/AdobeFonts';
    
    export const metadata = {
      title: 'coiai',
      description: 'XR, Web, システム開発, DX 想像できることを美しく実現',
    };
    
    export default function RootLayout({ children }: { children: React.ReactNode }) {
      return (
        <html lang="ja">
          <head>
          </head>
          <body>
            <AdobeFonts />
    
            <CssVarsProvider defaultMode="light">
              {children}
            </CssVarsProvider>
          </body>
        </html>
      );
    }

    最後にFontFamilyの設定をします。
    Global.cssにたとえば以下のように書けば反映されるはずです。

    html, body {
      font-family: "ryo-gothic-plusn", -apple-system, sans-serif;
      font-weight: 400;
      font-style: normal;
    }

    ぜひ参考にしてみてね!

  • WordPress のマルウェア被害について

    WordPress のマルウェア被害について

    先日運用していたWordPressがマルウェアによる被害を受けました。

    幸いバックアップをとっていたため復旧ができましたが、今後の対策のために知見を残しておこうと思います。

    ファイルの被害

    上の画像はFTPソフトでファイルを表示した際の画面です。
    ファイルの末尾に __8997da9 という表記がついているのが確認できます。

    末尾についた文字を消して php の拡張子に戻してからファイルを開くと元の通りに見ることが可能でした。

    about.php

    about.php というファイルが作成されており、

    • file_get_contents(__FILE__)自分自身のファイルを読み取り
    • explode("?>", …) のように区切って、PHP閉じタグの後ろに隠した長いペイロードを取り出し
    • base64_decode / str_rot13 で復号 → preg_replace('/…/e', …)@eval()実行

    といったコードが確認されました。

    revisions.php

    wp-includes/revisions.php というファイルが作成されており、アクセスログを確認すると異常にアクセスされていました。

    アクセスログ

    異常なアクセス総数

    • 総リクエスト数:429,939件
    • 日別平均:約15万件

    アクセスの大半がGooglebot

    組織別レポートによると、「66.249」(GooglebotのIPレンジ) が全体の98.9%を占めていました。

    IP組織リクエスト数割合
    66.249(Googlebot)420,98198.9%
    20.xxx3,7790.19%
    52.xxx8350.32%
    その他少数

    Googlebotが悪いわけではなく、「感染によって生成された不正URL」をGoogleが正規ページだと思って巡回したと思われます。

    不正ファイルへのアクセス集中

  • Electron pnpm を使うと起動できない問題

    Electron pnpm を使うと起動できない問題

    pnpm run dev

    のようにpnpm を使って実行すると

    Error: Electron failed to install correctly, please delete node_modules/electron and try installing again

    というエラーが出てしまいました。

    ここで下記のようなコードを実行すると成功しました。

    node node_modules/electron/install.js

    おそらくpnpm のインストールの際の自動実行が漏れている?のかなと思います。手動で叩くと必ず実行されるので成功したのかと思います。

    参考

    https://github.com/electron/electron/issues/20731

  • Amplify Studio を使う

    Amplify Studio を使う

    この記事ではAmplify Studio の使い方について軽めに解説します。

    amplify を使ってデプロイしたアプリに管理画面を作ろうとしたところ、古い記事を参照したため Amplify admin UI という単語が出てきたのですが、Amplify Studio に統合されたようです。

    Amplify Studio を開く

    始める前にGithubで新しくリポジトリを作っておくと便利です。

    amplify cli を使ってプロジェクトを準備する方法は下の記事をご覧ください。

    https://coiai.boy.jp/4355/

    AWS console から Amplify を開きます。

    開いて、まだ自分のアプリをデプロイしていない場合は指示に従ってデプロイをしましょう。

    デプロイに成功すると、Amplify console から amplify studio の設定を開けるようになります。

    amplify console はターミナル上で以下コマンドを実行すると表示できます。 ⚠️検索バーでamplify と調べて出てくるページとは違うので注意

    amplify console

    console が開いたら Go to Amplify Studio to enable をクリックします。

    amplify studio を有効にします。 のトグルスイッチをオンにしましょう。

    読み込みが終わると上のような画面になります。Backend Environments のURLをクリックすると、Amplify Studio に移動できます。

    Login with AWS account のボタンを押して遷移しましょう。

    このような画面に遷移するはずです!

    ここまできたら、サイドバーからUI Library → sync with Figma など話題の機能が使えます!

    お疲れ様でした。

  • iMac の復旧ができなくなった “mac インストールの準備中にエラーが起きました”

    先日 AppliSilicon M1 iMac を譲り受けました。
    その際初期化したところ、OSのインストール時にエラーが起きてしまい、起動できなくなってしました。

    今回はそれの解決方法の記事です。

    環境

    壊れた方の iMac

    • Apple Silicon M1
    • Ventura
    • 16GB

    回復に使用した MacBook Air

    • Apple Silicon M1
    • Sequoia 15.0.1
    • 16GB

    問題の起きた場面と、エラー画面

    [macOS Ventura を再インストール]のボタンを押して、インストール画面に進むと以下のようなエラー画面が出てしまっていました。

    mac インストールの準備中にエラーが起きました

    このポップアップが出て、OSのインストールが完了しませんでした。何度やっても同じなのと、ディスクユーティリティで First Aid や削除も試しましたが、永遠に同じエラーが出続けました。

    画像撮ってなかったので、知恵袋で同じような悩みの方の画像引用させていただきます。
    https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14292903294

    Apple のサポートページにも同じ症状の方がいました。

    https://discussionsjapan.apple.com/thread/255485243?sortBy=rank

    ちなみにエラーログは下記の通りです。ログからエラーの解決には繋がらなかったので画像のみで失礼します。

    error log

    解決した方法 DFU

    DFU(Device Firmware Update)とは、Appleデバイスのファームウェアをアップデートしたり修復したりするためのモードです。

    この方法は正常に動作している mac OS が手元にある場合にできる方法です。

    0. 壊れていない Mac を用意して Apple Configurator をインストールする

    私の場合 Apple Silicon M1 MacBook Air を使いました。

    この MacBook に Apple Configurator というアプリをインストールしておきます。

    https://apps.apple.com/jp/app/apple-configurator/id1037126344?mt=12

    1. ディスクユーティリティの操作

    iMac の復旧画面からディスクユーティリティを選択します。
    次にMachintosh HD の項目があるので、これを削除します。

    2. iMac(壊れている方) と MacBook(壊れていない) をつなぐ

    iMac と MacBook をケーブルで接続します。
    私は MacBook に付属していた C to C の充電ケーブルで動作を確認しました。

    3. iMac の電源コードを抜く

    iMac をシャットダウンして、電源コードを抜きます。

    4. DFUモードに入る

    電源ボタンを押しながら、電源ケーブルを指します。

    電源長押しではありません。私はずっと長押しでやるものだと勘違いしてました😭

    DFUモードに入ると iMac 側の画面は真っ暗なままですが、 MacBook Air (正常に動作している方)に [アクセサリの接続の許可]のダイアログが出てくるはずです!

    MacBook Air の Apple Configurator アプリ上では、以下のように DFU のアイコンが表示されるはずです。

    5. configurator から復旧する

    DFUアイコンの上から右クリックをします。
    そこから[復元する]という項目をクリックします。

    確認のポップアップが表示されるので、あとは[OK]を選択していけば大丈夫です!

    6. iMac でOS再インストールする

    この後 iMac が復旧するはずです!?
    私の環境では以下のように表示されました。

    mac os recovery

    画面の表示に従って再起動をすると

    セコイアインストールできた!

    [Reinstall macOS Sequoia]の文字が!!!

    これをする前までは[Reinstall macOS Ventura ]だったため、外部のmacから操作できたことが確認できました!

    参考

    Apple Configure2 ついて

    https://support.apple.com/ja-jp/guide/apple-configurator-2/apdd5f3c75ad/mac

    復旧についてのApple公式ページ

    https://support.apple.com/ja-jp/108900

  • 【コラム】label systemimage を一瞬で探すために SF Symbols 5 をインストールしよう

    注意 カスみたいなまとめ記事です 内容は無いです

    以下のURLから SF Symbols をダウンロードしましょう。

    https://developer.apple.com/sf-symbols

    こんな感じでネイティブアプリとして、systemimage を検索できるのでめっちゃ便利

    swiftUI でのコーディング中にアイコン付きのボタンを追加したい時がよくあると思いますが、
    SF Symbols のアプリを入れておけば直ぐに参照できます。

                    Button {
                        presented.toggle()
                    } label: {
                        Label("toggle inspector", systemImage: "info.circle")
                    }

    よく使う SF Symbols 紹介

    よく使うもので言うとこんな感じかな(メモを兼ねて幾つか紹介)

    info系
    info.circle は頻繁に使う

    ヘルプ機能には questionmark.circle

    色の変更などの編集系には

    paintbrush

    通知系の

    bell

    macOS なら絶対使う
    サイドバー関係のsymbol

    sidebar.right