そういうわけで、今回はもうマニアックすぎて普通の人はダメだと思うので……すいません(笑)
古いノートPCへのmacOS導入実験で、意外な問題が見つかりました。AIはコマンドを作るのは得意なのに、人間の手元で「1回で安全に実行できる形」にするのは案外難しいのです。そこで今回の経験から、AIが使い回せるスクリプト標準「OneShot v1.0」を作りました。
目標は単純です。ZIPを取得 → ターミナルに1行貼る → 必要ならYESで承認 → 結果をChatGPTに貼る。 普通の利用者にPythonやHomebrewの導入を要求せず、変更する箇所だけ最小限にします。
1. Python 3なんて入れたくない
HDMIの色を直すためのスクリプトをAIに作らせたとき、またPython 3が出てきました。Pythonを入れること自体は難しくありません。しかし、ユーザーの目的はHDMIを直すことであって、Python環境を構築することではありません。
macOSに付属するBash、plutil、diskutil、ioreg、system_profiler、pmset、pbcopyなどで済むなら、そちらを先に使う。追加依存が必要なら、その理由を説明する。これを第一原則にしました。
ただし、標準の/bin/bashは新しいBashとは限りません。Bash 4以降の機能に依存しないなど、対象環境で動く書き方にする必要があります。
2. コピペ1行+結果自動コピーに統一する
毎回ユーザーが長いログを選択してコピーするのは無駄。画面に表示しつつTXT保存、最後にクリップボードへコピーする形を標準にしました。ZIPに入ったシェルスクリプトを、解凍操作なしで実行する形式です。
unzip -p ~/Downloads/Example.zip Example.sh | bash
このとき注意するのは、標準入力がスクリプト本文に使われていることです。途中の確認質問を通常のreadで行うと入力が読めません。端末から聞く場合はread ... < /dev/ttyを使います。
画面表示と保存はtee、コピーはpbcopy。例えば、読み取り専用コマンドなら次の1行で成立します。
{ sw_vers; system_profiler SPDisplaysDataType; } 2>&1 | tee ~/Downloads/mac_check.txt | pbcopy
ただし上の短い例は、実行中の内容を直接画面に残しません。OneShotの正式テンプレートでは、画面表示とTXT保存をしたあと、TXTからpbcopyへ送り、終了コードも確認するようにしています。
3. 変更したか、動いたか、区別する
音声の例が分かりやすいでしょう。AppleALCがロードされても音声デバイスが出ない、設定を書き換えたが再起動していない、再起動したら実際に音が鳴った──これは全部違う段階です。
| ラベル | 意味 |
|---|---|
READ_ONLY_PASS | 読み取り診断に成功 |
PATCH_APPLIED | 設定値を変更し、読み返し確認 |
ALREADY_APPLIED | 既に期待値なので変更なし |
FUNCTION_TEST: NOT_TESTED | 再起動後の実機動作は未確認 |
FUNCTION_TEST: PASS | 利用者が目的の実動作を確認 |
HDMIではALREADY_APPLIEDが出ました。これは「設定がある」の合格であって「紫色が直った」という合格ではありません。ここを混同しないだけで、作業履歴がずっと信頼できるものになります。
4. 危険な操作ほど、小さく・戻せるように
EFIの更新には、まちがえると起動不能になるリスクがあります。実機のディスクIDとパスを確認し、変更先を一意に特定し、バックアップを作成し、編集対象をできるだけ小さくします。複数箇所を同時に直さないこと、変更前に現値を読むこと、競合したら停止すること、元へ戻す方法を記録することを必須にしました。
スクリプトが「実行できた」と「安心して運用できる」も別。ZIPの検査unzip -t、シェル構文の検査bash -n、変更後の値の読み返し、ユーザーによる実機テストの順に判定します。構文チェックPASSだけを実機PASSとは呼びません。
5. OneShot v1.0の基本設計
今回は「AI向けOneShot作業スクリプト標準 v1.0」として、次の4点をまとめました。このキットは今回の作業用に生成したもので、汎用ツールとしてのMac実機検証はまだです。
| ファイル | 目的 |
|---|---|
OneShot_Standard_v1.md | 作業判断と合格条件の基準書 |
OneShot_Template.sh | AIが重要部分だけ編集する雛形 |
OneShot_ReadOnly_Example.sh | macOS情報取得の読取専用サンプル |
build_oneshot_zip.sh | 構文チェックとZIP化の補助 |
テンプレートでAIが変更すべき場所を、(1)タスク名・目的、(2)処理本体、(3)確認処理に限定しています。初期状態は読取専用。システムを書き換える場合に必要な認証、バックアップ、同意確認、復元処理は、用途ごとにAIが具体的に設計し、人間が確認する仕組みです。基準書を付けたからといって、任意の変更処理が自動的に安全になるわけではありません。
工程別:使ったモジュール・ツールと参照先
OneShotは既存のmacOS標準ツールを組み合わせる設計です。最初の4件は今回作成したファイルで、外部公開の配布製品ではありません。Google Driveの原本・ZIPは閲覧権限が必要です。残りは標準ツールの仕様・説明へのリンクです。
| 工程 | 名前 | 説明・実際の扱い | 開発元・資料URL |
|---|---|---|---|
| 基準書 | OneShot_Standard_v1.md |
人間とAIの分担、安全確認、設定と実機の成否区別を記した原本。 | 原本・キット(Drive) |
| スクリプト雛形 | OneShot_Template.sh |
AIが目的・処理・確認の箇所を埋めるBash雛形。OneShotキットZIP内。 | 原本・キット(Drive) |
| 読取専用の例 | OneShot_ReadOnly_Example.sh |
macOS情報を取得する読み取り専用の雛形実例。キットZIP内。 | 原本・キット(Drive) |
| 構文・配布検査 | build_oneshot_zip.sh |
Bash構文検査とZIP生成を補助するスクリプト。キットZIP内。 | 原本・キット(Drive) |
| 実行基盤 | /bin/bash |
macOS標準のシェル。Bash 4以降の機能を要求しない設計。 | 公式ページ |
| 設定点検 | plutil |
EFIなどに使うplistの確認・処理。macOS標準コマンド。 | コマンド仕様 |
| 対象ディスク確認 | diskutil |
デバイス・パーティションとマウント状態の確認。macOS標準コマンド。 | コマンド仕様 |
| 機器構成確認 | ioreg |
macOSのI/O Registryを表示して機器の属性を調べる。 | コマンド仕様 |
| 動作確認 | system_profiler |
GPU・画面・ソフトウェア構成などの情報を取得する。 | コマンド仕様 |
| 電源状態確認 | pmset |
スリープや電源管理の設定・状態の確認に使用。 | コマンド仕様 |
| 報告をコピー | pbcopy |
保存した結果テキストをクリップボードへ転送する。 | コマンド仕様 |
| ファイル照合 | shasum |
作業前後のファイルが一致するかSHA-256で検証する。 | コマンド仕様 |
6. AIに渡す依頼文も定型化
添付のOneShot標準とテンプレートに従って、目的「○○」の作業スクリプトを作成してください。macOS標準ツールを優先し、Pythonやbrewの導入を前提にしないでください。ZIP、解凍不要の実行1行、危険時の停止、変更時のバックアップと復元、画面+TXT+pbcopy、設定PASSと実機PASSの区別、構文とZIP検査結果を付けてください。
これなら、次のAIは毎回「どういう形式にするか」を考えず、目的に必要な処理だけ考えればよい。ユーザーから「Python 3は入っていない」などのフィードバックがあったら、その場しのぎの追加修正に走らず、目的・既存環境・最小依存という元の基準に戻って組み立て直すことにします。
7. 便利さよりも、破壊しないこと
今回の教訓は、AIの自動化を増やせば無条件に便利になるわけではない、ということでした。実機と一致しないEFIを編集する、Pythonの導入に話が脱線する、設定変更だけで問題解決と誤判定する。こうしたことを減らすには、AI側に短い共通作法を持たせる方が効きそうです。
一般の利用者は、コマンドの中身を毎回検査する専門家である必要はありません。ただしディスク初期化・EFI更新・ファームウェア操作などは、AIのスクリプトであっても必ず対象とリスクを確認する。ここは手軽さより安全を優先します。
シリーズを読む: その1|Ventura導入まで / その2|U938/Sの実用化と未解決の不具合
作成日:2026年10月26日。雛形はシェル構文・ZIP整合性および模擬環境での出力動作まで検査済み。対象Macでの実行は未検証。後日更新する可能性があります。

