ショートカット×IFTTTで現在の居場所を自動ツイートする

  • 投稿日:
  • by
  • カテゴリ:

ときどき、知り合いが私の運転するタクシーを利用してくれます。ただ、基本的に週3回しか出番がないのと、ちょっと遠くに行ってたりする可能性もあったりして、いつでも即時対応可能とは限りません。知り合いにしても、「近くにいたら頼みたい」と考える場合がほとんどだと思います。そんなわけで、対応可能かどうかをイヤミなく知らせる方法はないものかと考えていました。

位置情報の共有なら「探す」アプリがベストだけど...

iPhoneの「探す」アプリ(旧「友達を探す」アプリ)なら、登録している相手に自分の位置をリアルタイムで教えることができます。全員iPhoneを使っている家族の間では、この「探す」アプリを便利に使っています。ただ、これが知り合いレベルになると、ちょっと話が違ってきます。位置情報を共有するのは、基本的に仕事中だけにしたいし、iPhone以外を使っている知り合いだと利用できません。同様のことが可能なアプリも存在しますが、このためだけに知り合いにもアプリをインストールしてもらうのは、ちょっとハードルが高いです。また、現在の居場所だけでなく、出番の日がいつなのかも知らせるには、ちょっと不十分だったりします。

ios13-iphone-xs-find-my-people-person.jpg

「いまどうしてる?」を伝えるならTwitterかも

Twitterも、相手が利用していなければ情報共有のツールとして使うことはできませんが、多くの人が利用しているアプリ。相手がTwitterを利用してさえいれば、アカウントをフォローしてもらって、ゆるく情報共有することが可能です。そんなわけで、ほかにも方法はいろいろと考えられますが、とりあえずTwitterをベースにして、現在の居場所を知らせる方法を考えてみました。

しかし、Twitterを使って居場所をツイートするとなると、定期的に現在地をツイートすることになります。これを運転しながらやるわけにもいかないので、できるだけ自動化したい。そこで利用できるのが、iPhoneの「ショートカット」アプリです。iOS 12から利用可能になり、iOS 13では標準アプリとしてプリインストールされるようになっています。

この「ショートカット」アプリは、Twitterの利用にも対応しています。もちろん、自動でツイートすることも可能なんですが、やってみるとなぜかうまくツイートできません。いろいろ調べてみると、「IFTTT」(「イフト」と読みます)というアプリを組み合わせて実現している人が多いことがわかりました。

「ショートカット」って何?「IFTTT」ってどんなことができる?

「ショートカット」アプリでは、iPhoneで行う一連の操作をまとめて実行することができます。いわゆる簡単なプログラミングですね。「IFTTT」は、「IF This Then That」が語源で、「コレ(This)が起こったらアレ(That)をやる」といったことを実現することができます。ThisやThatには、iPhoneなどのデバイスで行うボタン操作や、ほかのWebサービスなどを割り当てることができます。複雑な流れをプログラミングするのとは少し違いますが、さまざまな動作を割り当てられるので、いろいろな使い道がありそうです。

スクリーンショット 2020-04-19 11.55.04.jpg

これらを使って、思ったとおりのことを簡単に実現できればよかったのですが、結論から言うとダメでした。仕事をしている間、何も操作することなく居場所を定期的にツイートするようにしたかったのですが、実際にツイートする操作を実行するときに、最低でも実行ボタンをタップする動作が必要でした。やはり、自分が作った仕組みとはいえ、長い間ずっと何かを実行し続けるようなことをするのは、ちょっとセキュリティ的に問題があるようです。

どういった流れで居場所をツイートする?

現在の居場所をツイートする流れですが、以下のように実現しました。

  1. 決まった時間に通知を出して「現在地をツイート」処理を実行する【ショートカット】
  2. 取得した現在地をパラメーターとしてWebリクエストを送信する【ショートカット】
  3. 受信したWebリクエストに従ってツイートする【IFTTT】

それでは、それぞれについて詳しく説明していきましょう。

決まった時間に通知を出して「現在地をツイート」処理を実行する

運転中は、iPhoneをカーナビとして使っています。iPhoneがずっと目の前にある状態なので、「現在地をツイート」処理を実行するタイミングで通知を出してもらうようにします。これは、「ショートカット」アプリの「オートメーション」という機能を利用します。「オートメーション」機能は、時刻や位置、各種設定が所定の状態になったときに、決められた処理を実行するというものです。ここでは、指定した時刻になったら通知を出して、「現在地をツイート」処理を実行するという仕掛けを用意します。「現在地をツイート」処理については、後述します。

「オートメーション」を設定するには、「ショートカット」アプリを起動して、下部メニューの「オートメーション」をタップします。新規にオートメーションを追加するには、右上の「+」をタップすればOKですが、すでに追加してあるので中身を見てみます(画像左)。「日時」と「行う」がそれぞれ設定されていて、指定された日時に指定されたショートカットを実行するような設定となっています(画像右)。

Screen Shot 2020-03-11 at 8.37.00.jpg

「日時」の中身を見てみると、時刻と繰り返し条件として曜日を指定できるのがわかります(画像左)。「行う」のほうは、「現在地をツイート」というショートカットを実行する設定となっています(画像右)。ちなみに、実行にあたって通知を出す/出さないという設定項目があるわけでなく、「ショートカット」アプリからの通知は必ず出るようです。

Screen Shot 2020-03-11 at 8.38.17.jpg

取得した現在地をパラメーターとしてWebリクエストを送信する

この処理は、上で説明したオートメーションによって実行されるショートカット「現在地をツイート」処理に該当します。中身を見てみましょう。3つのブロックに分けて説明します。

ツイート処理を最終的に行うのは、「IFTTT」のサーバーです。iPhoneからは、その「IFTTT」のサーバーに対して命令(Webリクエスト)を送信するわけですが、まず最初のブロックでは、その命令をポストする先のURLを変数「URL」にセットします(画像左)。このURLは、後述するように「IFTTT」から取得します。次のブロックでは、iPhoneが持っている位置情報から「現在地を取得」します。続いて、マップアプリを利用して「現在地から住所を取得」します。取得した住所からは、「市区町村」として例えば「横浜市中区」のような文字列が取得可能です。これをツイートする本文として埋め込んで、変数「POST」にセットします(画像右)。

Screen Shot 2020-03-11 at 10.33.26.jpg

最後のブロックでは、まず「現在地からマップURLを取得」します。例えば「横浜市中区」のような情報だけだと、ちょっと範囲が広くて正確な居場所を把握できません。そこで、Appleの「マップ」上で正確な位置にピンをドロップした地図をツイートする本文に含めることにしました。この「現在地からマップURLを取得」によって、リンク先の「マップURL」を取得できます。その後、ツイートする本文をIFTTTのサーバーにPOSTします。形式はJSONで、value1として変数「POST」、value2として直前で取得した「マップURL」、POST先は変数「URL」です(画像左)。この「現在地をツイート」処理は、「ショートカット」アプリの下部メニューにある「マイショートカット」に配置されます。これを直接タップしても実行できます。内容を編集する場合は右上の「...」をタップします。新規にショートカットを作成する場合は、画面右上の「+」をタップします(画像右)。

Screen Shot 2020-03-11 at 10.33.54.jpg

受信したWebリクエストに従ってツイートする

この処理は、「IFTTT」のサーバーが行います。「IFTTT」はWebサービスの一種で、iPhoneなどのスマホアプリや、Webブラウザーから利用することができます。最初は、ユーザー登録→ログイン→利用しているTwitterのアカウント登録といった流れで進めることになりますが、詳細は省略します。下記サイトに、ひととおりのことがまとまっていますので、参考にしてください。

【参考リンク】IFTTTの使い方

最終的にツイート処理をする「IFTTT」のサーバーから見ると、まずiPhoneから送信された命令(Webリクエスト)を受信します。つまり、「このWebリクエストを受信したら(This)ツイートする(That)」という流れになります。で、この動作を定義する必要があるわけですが、これを「IFTTT」では「レシピ」と呼んでいます。

それでは、その「レシピ」の中身を紹介しましょう。「レシピ」は、ThisとThatを定義することによって作成することができます。今回の「レシピ」の場合、Thisが「Webhooks」で、Thatが「Twitter」ということになります。タイトルの「Webリクエストによる自動ツイート」も含めて、右上の設定アイコンをタップすると編集できます(画像左)。編集画面では、「Receive a web request」となっているセクションが「Webhooks」、「Post a tweet」となっているセクションが「Twitter」です。設定項目の「Event Name」は、WebリクエストのPOST先の一部として使われるだけなので、適当な文字列で構いません。ここでは「tweet」としています。「Tweet text」は、ツイートの本文で、直接文字列を設定することもできます。ここでは、「Value1」「OccurredAt」「Value2」という組み込み変数を並べただけとなっていますが、それぞれ適当な文字列が入ります。「Value1」と「Value2」は、受信したWebリクエストから取得する変数で、具体的には、例えば「Value1」として「ただいま横浜市中区を走行中。」、「Value2」にはマップURLがそれぞれ入ります。「OccurredAt」は、いわゆるタイムスタンプが入ります。

Screen Shot 2020-04-18 at 21.48.08.jpg

「レシピ」が上記のようになっていれば、「IFTTT」での設定はOKなんですが、あと必要になるのがWebリクエストのPOST先となるURLです。iPhoneの「IFTTT」アプリでは取り出せなかったので、Webブラウザー経由で取り出します。「https://ifttt.com/maker_webhooks」にアクセスして、右上の「Documentation」をクリックします。

スクリーンショット 2020-04-19 9.49.05.jpg

ここで、WebリクエストのPOST先を確認することができます。URLは「https://maker.ifttt.com/trigger/{event}/with/key/xxxxxxxxxx」の形で共通。「{event}」の部分に、上の「Event Name」で定義した適当な文字列が入ります。ここでは「tweet」ですね。「xxxxxxxxxx」の部分には、ランダムな文字列が入ります。「Your key is:」に続く文字列がそれです。こうして一意に決まったURLがPOST先となります。上で説明した「現在地をツイート」で変数「URL」にセットする文字列は、このURLということになります。

スクリーンショット 2020-04-19 9.47.11.jpg

実際に動かしてみるとどんな感じになる?

ここまでは、設定方法を中心に説明してきたので、実際に動いている様子がわかりにくいと思います。そこで、実際に動いている様子を説明します。

まず、決まった時間になると、通知が来ますので、バナーをタップします(画像左)。通知のバナーが消えてしまっても、通知センターやロック画面からいつでも参照できます。その後、ショートカットを実行するかどうかのアクションが必要になります。「実行」をタップすれば実行できます(画像右)。

IMG_2666.jpg

具体的な操作はこれだけです。あとは自動でツイートまでやってくれます。実際のツイートは、以下のような感じになります。

スクリーンショット 2020-04-19 10.59.31.jpg

これで、現在地を知らせることができるようになりました。本文だけだと、だいたいの場所しかわかりませんが、マップURLをクリック(タップ)すれば、正確な位置を知ることができます。リンク先はAppleの「マップ」ではありますが、Webブラウザーで利用可能なので、どんなプラットフォームでも参照できます。

これを、こまめにやれば現在地を細かくトレースできるようにもなりますが、1回ツイートするごとに通知から実行をタップしなければならないのと、「IFTTT」側の制限で1日に25ツイート以内に収めなければなりません。そのため、昼間は1時間おき、夜間は30分おきくらいでスケジュールしています。

ということで、なかなかいい感じにまとまりました。ここまでなら、すべて無料で実現可能です。欲を言えば、もっと細かな要望はたくさんあるのですが、お金をかけてまでやることでもないので、この程度がバランス的にもちょうどいいのではないかと考えています。「ショートカット」にしろ、「IFTTT」にしろ、使い方によってさまざまな用途が考えられるので、これを機に、いろいろ使いこなす方法を考えてみたいと思います。