概要
iOSのショートカットアプリ単体でPythonを実行するショートカットを作成した。
完成したショートカット
結論以下のショートカットを実装した。
背景
翌朝出すべきゴミの種類を、夜にHomePodからアナウンスさせる仕組みを作成しようと考えた。最初はChatGPTのショートカットを使って自動化を試みたが、バージョンによって回答が不安定だったり、スマホがロック中にショートカットを実行できないという問題があった。これらの課題を解決するために、ショートカットアプリ内でChatGPTの処理をPythonに置き換える方法を検討した。
実装
方針
ショートカットアプリでPythonコードを実行する方法はいくつか考えられたが、すでにインストール済みのa-shellがショートカットから直接実行できるため、これを利用することにした。a-shellのショートカットからは任意のシェルコマンドを実行でき、a-shell経由でPythonも実行可能である。
「外部にPythonスクリプトを置き、SSH経由で実行する」という方法も考えたが、スクリプトを設置するサーバのメンテナンスが面倒であるため、この方法は採用しなかった。
手順
ショートカットアプリ上でPythonスクリプトを編集・確認したいので、以下の流れで処理を実装した。
- テキストとしてPythonのコードを定義
- PythonのコードをBase64でエンコード
- a-shellから以下のコマンドを実行
3.1. 2. で生成したBase64コードをデコード(echo {base64でエンコードされたコード} | base64 -d
)
3.2. そのコードをPythonにパイプで実行させる(python -
)
結論
これでショートカットから任意のPythonスクリプトを編集・実行することが可能になった。これをもとに「ゴミの日チェックショートカット」を作成して、その実行内容をインターコムで HomePod からオートメーションで通知させることに成功した。