はじめに
iMessage は Apple エコシステムのネイティブメッセージサービスで、エンドツーエンド暗号化と豊富なメッセージフォーマットを備えています。OpenClaw は macOS 上の AppleScript ブリッジを通じて iMessage への接続をサポートしており、iMessage 内で直接 AI と対話できます。本記事では、設定方法と注意事項を詳しくご紹介します。
重要な前提条件
開始する前に、以下の主要な制限事項をご確認ください。
| 条件 | 要件 |
|---|---|
| OS | macOS のみ対応(iMessage ブリッジは Messages.app に依存) |
| macOS バージョン | macOS 13 Ventura 以降 |
| Apple ID | iMessage にログイン済みの Apple ID が必要 |
| 実行方式 | OpenClaw は macOS ローカルで実行する必要あり(Docker は不可) |
| アクセシビリティ権限 | ターミナル/Node.js にアクセシビリティ権限の付与が必要 |
注意:iMessage ブリッジは macOS プラットフォームのみに対応しています。
Linux や Windows をお使いの場合は、他のメッセージチャンネル(WhatsApp、Telegram など)をご検討ください。
動作原理
OpenClaw の iMessage 連携は以下のアーキテクチャを採用しています。
ユーザーが iMessage を送信
↓
macOS Messages.app がメッセージを受信
↓
OpenClaw が AppleScript で新着メッセージを読み取り
↓
メッセージを AI モデルに送信して処理
↓
AI が返信を生成
↓
OpenClaw が AppleScript で iMessage 返信を送信
↓
ユーザーが返信を受信
コアメカニズムは macOS の AppleScript インターフェースを利用して Messages.app と対話することです。OpenClaw は Messages.app のデータベースを定期的にポーリングして新着メッセージを検出し、AppleScript コマンドで返信を送信します。
ステップ1:システム権限の設定
1.1 アクセシビリティ権限の有効化
OpenClaw が Messages.app を制御するにはアクセシビリティ権限が必要です。
- システム設定 → プライバシーとセキュリティ → アクセシビリティ を開く
- ロックアイコンをクリックし、管理者パスワードを入力
- + ボタンをクリックし、ターミナルアプリ(Terminal.app または iTerm)を追加
- グローバルインストールの Node.js で OpenClaw を実行している場合、Node.js も追加が必要:
# Node.js のパスを確認
which node
# 通常は /usr/local/bin/node または /opt/homebrew/bin/node
1.2 オートメーション権限の付与
初回実行時、macOS はターミナルが Messages.app を制御することを許可するかどうかのダイアログを表示します。許可 をクリックしてください。
ダイアログを見逃した場合は、以下の場所で手動設定できます。
システム設定 → プライバシーとセキュリティ → オートメーション → ターミナルアプリを見つける → Messages にチェック
1.3 Messages.app のログイン確認
- Messages.app を開く
- Apple ID でログインしていることを確認
- iMessage の送受信が正常にできることを確認
# Messages.app が AppleScript でアクセス可能か検証
osascript -e 'tell application "Messages" to get name'
「Messages」と返ってくれば、権限設定は正しいです。
ステップ2:OpenClaw の設定
2.1 設定ファイル
~/.config/openclaw/openclaw.json5 を編集します。
{
channels: {
imessage: {
enabled: true,
// ポーリング間隔(秒)、新着メッセージをチェックする頻度
pollInterval: 3,
// Messages.app のデータベースパス(通常変更不要)
dbPath: "~/Library/Messages/chat.db",
// セキュリティ設定
security: {
// メッセージ受信を許可する連絡先リスト(空配列は全員許可)
allowedContacts: [],
// または電話番号/メールアドレスでフィルタリング
allowedIdentifiers: [
"+8613800138000",
"[email protected]"
],
// グループメッセージを許可するか
groupChatEnabled: false,
// 不明な連絡先を許可するか
allowUnknown: false
},
// トリガー設定
trigger: {
// プライベートチャットですべてのメッセージに自動返信するか
autoReply: true,
// トリガーキーワード(すべてのメッセージに自動返信したくない場合)
keywords: [],
// グループチャットのトリガー方式
groupTrigger: "keyword",
groupKeywords: ["@AI", "/ask"]
},
// 返信設定
reply: {
// メッセージの最大長
maxLength: 10000,
// 長いコードブロックを添付ファイルとして送信するか
codeAsAttachment: false,
// 送信遅延(ミリ秒)、タイピング効果の模倣
sendDelay: 500
}
}
}
}
2.2 最小構成
簡単にテストしたい場合の最小構成は以下の通りです。
{
channels: {
imessage: {
enabled: true,
security: {
// 特定の連絡先のみ許可(設定を強くお勧めします)
allowedIdentifiers: ["+8613800138000"]
}
}
}
}
2.3 サービスの再起動
openclaw restart
# iMessage チャンネルのログを確認
openclaw logs -f --component channel:imessage
正常に起動した場合のログ:
[INFO] [channel:imessage] iMessage 桥接已启动
[INFO] [channel:imessage] Messages.app 连接正常
[INFO] [channel:imessage] 轮询间隔: 3秒
[INFO] [channel:imessage] 允许的联系人: 1 个
[INFO] [channel:imessage] 等待新消息...
ステップ3:接続テスト
3.1 テストメッセージの送信
別のデバイス(iPhone または他の Mac)から、OpenClaw を実行している Apple ID に iMessage を送信します。
こんにちは、テストメッセージです
3.2 ログの確認
openclaw logs -f --component channel:imessage
以下のようなログが表示されるはずです。
[INFO] [channel:imessage] 收到新消息: from="+8613800138000", text="こんにちは、テストメッセージです"
[INFO] [channel:imessage] 发送给模型处理: claude
[INFO] [channel:imessage] 模型回复完成 (1.2s)
[INFO] [channel:imessage] 回复已发送到: +8613800138000
セキュリティに関する注意事項
iMessage 連携は個人のメッセージに関わるため、セキュリティ対策が非常に重要です。
連絡先ホワイトリストの設定は必須
{
channels: {
imessage: {
security: {
// ホワイトリストの設定を強くお勧めします。設定しないと、
// 誰からのメッセージにも返信がトリガーされます
allowedIdentifiers: [
"+8613800138000",
"[email protected]"
],
allowUnknown: false
}
}
}
}
データベースアクセスのセキュリティ
OpenClaw は ~/Library/Messages/chat.db を読み取る必要があります。これは Messages.app のローカルデータベースです。以下の点にご注意ください。
- OpenClaw を実行する macOS ユーザーアカウントのセキュリティを確保
- FileVault フルディスク暗号化を有効化
- 強力なパスワードと自動画面ロックを設定
プライバシーへの配慮
iMessage の会話内容は AI モデル API に送信されて処理されます。
ご使用のモデルのデータプライバシーポリシーを必ずご確認ください。
機密情報が含まれる場合は、Ollama などのローカルモデルの使用をご検討ください。
メッセージタイプのサポート
| メッセージタイプ | 受信処理 | 送信返信 | 説明 |
|---|---|---|---|
| テキスト | 対応 | 対応 | 完全対応 |
| 画像 | 対応 | 非対応 | マルチモーダルモデルによる認識が必要 |
| リンク | 対応 | 対応 | URL プレビューの自動抽出 |
| 添付ファイル | 部分的 | 非対応 | テキスト系の添付ファイルのみ対応 |
| Tapback リアクション | 非対応 | 非対応 | 無視して処理 |
| Memoji | 非対応 | 非対応 | 無視して処理 |
常駐実行の設定
iMessage ブリッジを継続的に実行するには、macOS の launchd で OpenClaw プロセスを管理することをお勧めします。
launchd 設定の作成
cat > ~/Library/LaunchAgents/com.openclaw.agent.plist << 'EOF'
<?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>
<key>Label</key>
<string>com.openclaw.agent</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/openclaw</string>
<string>up</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/openclaw.stdout.log</string>
<key>StandardErrorPath</key>
<string>/tmp/openclaw.stderr.log</string>
</dict>
</plist>
EOF
設定のロード
launchctl load ~/Library/LaunchAgents/com.openclaw.agent.plist
サービスの管理
# サービスの停止
launchctl stop com.openclaw.agent
# サービスの起動
launchctl start com.openclaw.agent
# サービスのアンロード
launchctl unload ~/Library/LaunchAgents/com.openclaw.agent.plist
既知の制限事項
- macOS 限定 - これが最大の制限で、他の OS では使用できません
- GUI 環境が必要 - Messages.app はグラフィカル環境で実行する必要があり、純粋な SSH 環境には非対応
- ポーリング方式 - データベースのポーリングで新着メッセージを検出するため、数秒の遅延があります
- リッチメディア送信不可 - 返信はテキストのみで、画像やファイルの送信はできません
- シングルインスタンス制限 - 同一 Mac で iMessage ブリッジを1つしか実行できません
- macOS アップデートリスク - macOS のシステムアップデートにより AppleScript インターフェースの互換性が影響を受ける可能性があります
トラブルシューティング
Messages.app にアクセスできない
# アクセシビリティ権限をリセット
tccutil reset AppleEvents
# OpenClaw を再起動して、権限ダイアログを待つ
openclaw restart
データベースロックエラー
# "database is locked" エラーが発生した場合
# chat.db にアクセスしている可能性のある他のアプリを閉じる
# またはポーリング間隔を延長する
openclaw config set channels.imessage.pollInterval 5
メッセージ送信の失敗
# AppleScript がメッセージを送信できるかテスト
osascript -e 'tell application "Messages"
set targetService to 1st account whose service type = iMessage
set targetBuddy to participant "+8613800138000" of targetService
send "テストメッセージ" to targetBuddy
end tell'
まとめ
iMessage 連携により、Apple エコシステム内で AI アシスタントをシームレスに利用できます。重要なポイント:
- macOS プラットフォーム限定で、Messages.app とアクセシビリティ権限が必要
- 連絡先ホワイトリストの設定を強くお勧めし、プライバシーを保護
- launchd を使用して自動起動とプロセス監視を実現
- 既知の制限事項を理解してください(特にポーリング遅延とリッチメディア非対応)
- 機密性の高い会話には Ollama などのローカルモデルの使用をご検討ください