【iPhone ショートカット】駅通過と予想到着時刻をメールするショートカットレシピ

スマホ

私は電車で通勤することがあるのですが、帰りは自宅最寄り駅まで車で迎えに来てもらえています。

そのためには最寄り駅への到着時刻を知らせる必要があるため、電車に乗るたびに時刻表を調べて「今○○駅を通過したので、最寄り駅には×時△分ごろに到着するよ」というメールを打っていました。

この操作を何とか自動化できないかと考えた結果が、今回ご紹介するショートカットレシピです。

私はiPhoneで使っていますが、iPadでも動くと思います。

Amazonでよく買い物をするあなたへ

Amazonプライム(月額税込み500円)に登録すると……
  • 対象商品のお急ぎ便やお届け日時指定便が無料
  • 10,000本以上の映画やテレビ番組が見放題
  • 1,000冊以上の電子書籍が読み放題
  • 30日間の無料体験あり(無料体験期間中のキャンセルも可能)
\ そのほかの特典もチェック /

このショートカットでできるようになること

駅を通過した時に実行するだけで、

「今○○駅を通過しました。×時△分ごろ(約□分後)に[自宅最寄り駅]に到着します。」

というメールを自動で作成できるようになります。

レシピの全体像

なぜか画質が悪くなっています。申し訳ありません。
次に分解した図を載せていきますのでお許しください。

レシピの説明

※アクションによっては、入力としてマジック変数を指定する必要があります。

最寄り駅の設定

「目的地を設定」というコメントのすぐ下にあるアクションで、自宅からの最寄り駅(目的地となる駅)をあらかじめ設定しておきます。

メール本文の作成

メール本文をテキストで作成します。

文章中に{1}のような{}+数字が入っているのは、後で必要な情報を置換して入れるための目印です。
書き方に特に決まりはありません。私はPythonの文法を真似しました。

最寄り駅の名前をメール本文に埋め込む

最初に設定した場所から「○○駅」のような名前を抜き出し、テキストの置換によってメール本文に埋め込みます。

現在時刻と場所を取得

「現在の日付」で現在時刻を、「現在地を取得」で現在地を取得します。

現在地からの最寄り駅を取得

次の手順により、現在地からの最寄り駅を推測します(下の画像も参考にしてください)。

  1. マップで現在地周辺を「駅」というキーワードで検索
  2. 確実に駅だけを抽出するため、名前が「駅」で終わる場所を抜き出す
  3. 抜き出した場所のリストから、場所の名前のリストを抽出する
  4. 名前のリストの先頭の項目を取得する

取得した駅のリストから「最初の項目を取得」することで最寄りの駅を推定しています。
この操作は、「場所を検索したらその結果は現在地から近い順に並ぶだろう」という推測を前提としています。今のところ正しく動作しているため、この推測は間違ってはいないようです。

万全を期すならリストアップした各項目と現在地の距離をそれぞれ計算し、距離が最も短い項目を最寄り駅とすべきです。
しかし、残念ながらショートカットにはリストの最小値を取得するアクションがありません。

ちなみに最寄り駅を検索する場合、検索ワードを「駅」「近くの駅」にすれば正しく動きました。近くに大きな駅がある場合、「最寄り駅」で検索すると、その大きな駅が本当の最寄り駅よりも優先的に先頭に来てしまうようでした。

所要時間の計算

検索から得た場所のリストから先頭の項目を抜き出すことで、現在地からの最寄り駅を示す「場所」を取得します。

その後、抜き出した最寄駅~一番最初に設定した自宅からの最寄り駅(目的地となる駅)までの移動時間を求めます。

移動時間を5桁の小数位にフォーマットすることで、秒数に変換します。

到着時刻の算出

秒数に変換した移動時間を現在の日付に加算することで、到着時刻を算出します。

そのままでは年月日や秒数まで含まれるので、「調整済みの日付をフォーマット」で〇時×分の部分だけを抜き出します(下の画像もご覧ください)。

メール本文の完成

テキストをどんどん置換し、必要な情報を埋め込んでいきます。

メールの送信

マジック変数(リストからの項目)を使用することで、件名を「○○駅を通過」としています。

おわりに

ここまで読んでいただき、ありがとうございました。

メール本文に到着時刻だけでなく「○○駅を通過」を入れているのは、正しく最寄り駅を取得できているかを送信者が確認するためと、到着予定時刻が妥当かを受信者が確認するためです。

私はこのショートカットを到着の1時間ほど前に使用しておおよその到着時刻を知らせ、相手が準備する時間を作れるようにしています。

その後、「相手が自宅から目的地に移動するまでの所要時間」と「自分が今いる駅から目的地に移動するまでの所要時間」が同じになるタイミングで相手に電話をかけ、相手が電話に出た直後に無言で電話を切ります。無言なのは、電車では通話ができないからです。
この方法により、より正確な到着時刻を知らせる(事故などで遅れることがあるため)のと同時に、相手へリマインドしています。

ショートカットと併せて参考になれば幸いです。

コメント

タイトルとURLをコピーしました