「IF文」アクションを使った条件分岐の基本を知る。(iOS13.x以降 ショートカット)

iOS13.x/iPadOS13.x以上(iOS14 / iOS15対応) ショートカット.appの「基本的なアクションを知ってみよう」という企画の第2弾です。今回は、がっつり「IF文」です。極端な話「変数」と「IF文」が理解できれば、(大概の)ショートカットレシピは作成できます。初心者レベルからも脱出です。

そんな「IF文」アクションを使って、「条件分岐による時間細分」ショートカットレシピを、順を追って作ってみますので、参考にしていただければと思います。

そもそもif文とは…

そもそもif文とは「もし○○だったら、xxを実行してね‥」という風に、与えられた値などを設定された条件で判定し、フローの分岐を行うプログラム構文です。

フローチャート(プログラムの流れ図)にするとこんな感じです。

if文を使うと、入力値が条件に一致すれば「真(正しい時の処理)」を、違うならは「偽(違う時の処理)」に分岐されます。

ショートカットアクションでは、以下のように使います。

if文

この「if文」は、入れ子状態にすることも可能ですので、「ある条件で真で、なおかつ違う条件では偽の場合は、次の処理を…」という事も可能です。

まずは、実際に「if文」アクションを使って簡単なショートカットレシピを作ってみましょう。

現在時間を取得して「午前 / 午後」の判定を行うショートカットレシピ

まずは、簡単に「取得した現在時間による条件分岐」です。
ショートカットのフロー(流れ)は、こんな感じです。

  1. 日付アクションから現在の時間を取得する。
  2. if文を使って、午前/午後を判定する。
  3. 午前であれば「おはようございます。」、
    午後であれば「こんにちは。」とiPhoneが挨拶をする。

現在時間から「時」のみ取得

それでは、ショートカットレシピの作成を開始します。
まずは現在時間を取得しましょう。

  1. 「アクションを追加」から 検索窓に「日付(日時でも可)」と入力し、「日時」をタップ。
  2. 再生 をタップして実行すると、
  3. 現在の日時「年/月/月 時間」を、取得できていることが確認できます。

次に、条件分岐を行うために日付情報から「何時台か」だけを取り出してみます。
これにより、「0時台から11時台は午前。それ以外は午後」と判定させます。

  1. 新規アクションを追加から、 検索窓に「日付」と入力し、「日付をフォーマット」アクションをタップ。
  2. 「日時をフォーマット」アクションで、 日時フォーマットをカスタムに、 文字列をフォーマットに「HH」と記述します。
  3. 再生 をタップして実行すると、現在が何時台かを取得することができました。

「if文」で分岐する条件を設定する。

さて、これで条件分岐をする入力値を取り出すことができたので、いよいよ「if文」を使って、現在時を「午前 / 午後」で振り分けます。

変数の種類に注意
  1. 「if文」アクションを追加し、
  2. if文の「入力」が フォーマット済みの日付」になっている事を確認
  3. 「条件」をタップし、「次の範囲内」を選択…。あれっ?
    ※次の範囲内という条件がありません。

実は「フォーマット済みの日付」の値は、そのままでは「文字列(テキスト)」なのです。これでは数値として「(仮に)15」という数字が「0から11」の範囲外であるいう判定ができません

「フォーマット済みの日付」で得られた値を「文字列(テキスト)」から「数値」へと、種類を変更します。

  1. 「フォーマット済みの日付」をタップし、さらに下段の変数エディタで 「テキストとして」をタップします。
  2. 種類を「テキスト」から「数字」に変更します。
  3. 「フォーマット済みの日付」が ②「数字として」と変更されたのが確認できます。
  4. これで「次の範囲内」を選択することが可能になりました。

「if文」アクションを完成させます。

  1. をタップし、
  2. 「もしフォーマット済みの日付が次の範囲内 0 および 11 ならば」と、
  3. if文の条件を設定します。

これで、「if文」を使って条件分岐する部分は追加できました。
さらに続けて条件分岐した後のアクションを追加します。

「if文」で条件分岐された結果からのアクションを追加する。

最終段階です。

  1. 検索窓で「テキスト」と入力し、「テキスト」アクションを「真 / 偽」それぞれの箇所に追加します。
  2. 真(午前)」の部分には、「おはようございます。」と、「偽(午後)」の部分には「こんにちは。」とテキストアクションを設定します。
  3. 最後に 「テキストを読み上げる」アクションを、「次の場合に終了」の下に追加し、ショートカットレシピの完成です。

if文最後の「次の場合に終了」っておかしいですよね?
英語では「End if」ですが…。

再生 をタップして実行してみてください。
現在時間を取得し「if文」で分岐された時間帯の挨拶をiPhoneが喋りましたか?

それでは次に「if文」アクションを複数使って、時間帯の細分化を図ってみます。

「if文」を入れ子(ネスト)にする。(if文の中にif文を…。)

作成したショートカットレシピをカスタマイズし、もっと細かな時間帯に分けることにします。ここでは「if文」を複数使って、レシピを実現させたいと思います。

「if文」は、入れ子(ネスト)状態にして、実行させることが可能です。
フローチャート(アクションの流れ図)にするとこんな感じです。

上で作成したショートカットレシピから、さらに細分化した時間帯での挨拶をiPhoneにしてもらいます。細分化する時間帯は以下のようにしました。

  • 午前を以下の3つに細分化
    0時から6時まで
    6時から9時まで
    9時から12時まで
  • 午後を以下の4つに細分化
    12時から15時まで
    15時から18時まで
    18時から21時まで
    21時から24時まで

それでは、上で作成したショートカットレシピの「午前」「午後」の部分それぞれに、さらに「if文」を追加していきます。

Tips

アクションを追加するとき、いつものようにタップすると、フローの最下段に追加されてしまい、おもった位置に配置することが結構大変です。
そんな時は、アクションを「プレス(タップしたまま)」し、必要な場所にドラッグ&ドロップすると簡単に思った位置にアクションを追加することが可能です。

ショートカットアクションの追加方法

全ての箇所に「if文」を追加したフローは、以下のようになりました。

真(午前)の部分
真(午前)の部分

偽(午後)の部分
偽(午後)の部分

最終的に、それぞれの時間帯の箇所にテキストアクションを追加し、文言を設定すればこのショートカットレシピの完成です。

それぞれの時間帯にテキストアクションを配置

「if文」の入れ子状態を多く使うと、レシピ自体が複雑になってきますので、フローチャートなどメモを取りながら、プログラミングしていくといいでしょう。

まとめ(ショートカットレシピのダウンロード)

冒頭でも述べましたが、今回の「if文」アクションと「変数」が理解できれば、それなりに複雑なショートカットレシピを作成する事が可能になります。ショートカット.appのギャラリーや他の方が作ったショートカットレシピを参考にしたり、カスタマイズしたりしながら、理解を深められたらいいと思います。

今回作成したショートカットレシピは、以下からダウンロードする事ができます。また更にカスタマイズしていますので、参考にしていただければと思います。
※iOS13.x 以降(iOS15.x対応)

https://www.icloud.com/shortcuts/0f55380f6c1a42018c9418da56eabc10
※Web上など、ギャラリー以外から「ショートカット」を追加する場合は、「信頼されていないショートカットを許可」する必要があります。以下の補足をお読みください。

補足:信頼されていないショートカットを許可する(iOS14.xまで)(iOS14.xまで)

このページで紹介したショートカットを含め、Webサイトや友人からなど、ギャラリー以外からショートカットを追加する場合は、iPhoneの設定 > ショートカットから「信頼されていないショートカットを許可」をオンにする必要があります。(ショートカットを実行したり、ギャラリーからショートカットを追加すると、このボタンが表示されます。)

ショートカット

初めて起動するときに、それぞれの操作するアプリ(ポッドキャストやミュージックなど)にアクセスしていいか尋ねてくるので、それを許可してやると「ショートカット」が使えるようになります。

コメント

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