この記事について
この記事は、aslead Agileの開発チーム「オキザリス」にて行っているアウトプット企画である
「チーム「オキザリス」Advent Calendar」の24日目の記事です。
あるハッカソンでのできごと
先日、同期と一緒にあるハッカソンに出ました。
開発テーマはなんでもOK!の自由度高いハッカソンだったので
「食欲旺盛な同期 Pくん が彼女の外出中に冷蔵庫を開けると、その場で彼女のお叱りの音声が響き渡り、
彼女に『あいつ冷蔵庫開けてんぞ!』と告げ口LINEが飛ぶ つまみぐい防止のための冷蔵庫監視システム 」なるものを作りました。
システム構成を超ざっくり説明すると、Raspberry Piでセンサデータを取得して、冷蔵庫の開閉を検知する、というものです。
検知した時に彼女のお叱り音声を流したり、LINEのAPIをたたいて、LINE Botでメッセージを送信したりします。
で、今回お話ししたいのはこの監視システムではなく、
彼女の在宅状況次第で、システムをオン・オフできるリモコンを作った方法 です。
このリモコンを実現する時に、 iOSのショートカット機能 を利用しました。
ショートカットとは
iOS13以降で標準アプリとなった、iPhoneのアプリです。
このアプリ、単にメールや電話などのアプリの起動を楽にするアクションが選べますよ〜、とかそういう機能だけではなく、色々なアクションのフローを構築できます。
今回のハッカソンでは、「起動用のアプリをわざわざ構築したり、物理的なスイッチを用意するより手軽にやりたいよね」ということで、このショートカットの利用を決めました。
何ができるの?
ショートカットを使ったことがなくても、
「〇〇さんにLINE」「アラームを設定」をみたことはあるような... という方も多いと思います。
ですが、実はただ特定の条件で一つのアプリを実行するための機能ではないんです。
複数のアクションを繋げられる
iPhoneの標準アプリ、自分でインストールしたアプリの色んなアプリのアクションが用意されています。
例えば撮った写真をすぐにインスタに投稿できるショートカット。
このショートカットを実行すると
インスタのアプリが開いて、この画像をストーリーにあげるか、フィードにあげるか選べるようになります。
アクションを繋げる時に条件分岐もできる
ただ順番に繋げるだけではないんです。
アクションの結果次第で条件分岐することもできます。
例えば、前述のハッカソンの監視システム起動ショートカットはこんな条件分岐を設定してました。
最初のスクリプト実行で、今監視用システムのプロセスが開始しているか確認します。
開始してなかった場合(=シェルスクリプトの結果が値がない、のとき)は起動用のスクリプトを実行し、
開始していた場合(=その他の場合、のとき)は何もしない、という仕組みでした。
アクションがすごく充実してる
先程のSSH経由のスクリプト実行のように、
iPhoneにインストールされているアプリの操作以外にも様々なアクションがあります。
- URLエンコード
- Base64エンコード
- ハッシュ生成
- 変数設定
- WebページでのJavaScript実行
などなど、実は色々なアクションが用意されています。
おわりに
iOSの標準アプリ、ショートカットのご紹介でした。
あまり標準アプリを使わない方も多いかもしれませんが、ショートカットは実は色々な組み合わせを楽しめるアプリだったりします。
この機会にぜひつかってみてはいかがでしょうか?