Claude Computer use (beta)でiPhoneを操作する
Claude Computer use (beta)を利用し、iPhoneを操作してみました。下記警告の通り、Anthropicでは仮想環境と人間の監督前提での利用を勧めていますので、実環境での利用にはご注意ください。
仕組み
仮想環境ではなく、macを直接 RobotGoというRPAライブラリを使い、Computer useに必要なマウス操作、キーボード入力、スクリーンショット取得等をします。RobotGo自体はクロスプラットフォームのため、WindowsやLinuxでも使えます。
またmacOS SequoiaではiPhoneミラーリング機能があり、実機のiPhoneをmacOS上から操作することが可能です。
これらを組み合わせて、iPhoneを使って自動化ができるか実験を行いました。繰り返しますが、利用中のmacやiPhoneを使うことはお勧めしません。
コード
RobotGoではマウス移動、クリック、文字入力、スクリーショット取得が行えるために非常に簡単な実装となります。
func (r *Robot) MouseMove(x, y int) {
robotgo.Move(x, y)
}
func (r *Robot) LeftClick() {
robotgo.Click("left")
robotgo.MilliSleep(sleepMilli)
}
func (r *Robot) RightClick() {
robotgo.Click("right")
robotgo.MilliSleep(sleepMilli)
}
func (r *Robot) Type(text string) {
robotgo.TypeStr(text)
robotgo.MilliSleep(sleepMilli)
}
func (r *Robot) Key(key string) {
key = strings.ToLower(key)
robotgo.KeyTap(key)
robotgo.MilliSleep(sleepMilli)
}
func (r *Robot) Screenshot() []byte {
bit := robotgo.CaptureScreen(r.Bounds.Left, r.Bounds.Top, r.Bounds.Width, r.Bounds.Height)
defer robotgo.FreeBitmap(bit)
img := robotgo.ToImage(bit)
resized := resize.Resize(uint(r.Bounds.Width), uint(r.Bounds.Height), img, resize.Lanczos3)
w := new(bytes.Buffer)
err := png.Encode(w, resized)
if err != nil {
return nil
}
return w.Bytes()
}
ミラーリングアプリの位置を指定し、それ以外の場所ではクリックやスクリーンショットを行わないように設定します。位置はスクリーンショットキー(Cmd+Shift+4)で確認できるので、それを利用します。
動作画面
結果
猫に「いいね」することができました。
可能性は広がりますが、危険性も高い利用法となります。
途中なかなかいい場所にクリックができなかったり、SNSの「いいね」はできないという安全上の返答もありました。
座っている猫を指定したのに、間違ってクリックして「この猫は立っていますね」と戻った場面では、エージェントの片鱗を感じました。
安全上の制限やベータでの精度も相まって完全な自動化は難しく、実用性は今の所低いと思いますが、今後、どれだけ改善していくかに注目です。
Discussion