Shortcutは、コードを書かずに複数のアプリやサービスのアクションを連携させる、AppleのShortcutsアプリにおける自動化シナリオです。Shortcutsは、Siriを介した音声、スケジュール、ジオフェンスへの出入り、ウィジェットのタップ、NFCタグへのタッチで起動します。シナリオは、Actionsビルダーでブロックをドラッグ&ドロップして視覚的に作成します。詳細については、Shortcutsユーザーガイドを参照してください。
重要ポイント
Shortcutは、iOS、iPadOS、macOS、watchOSでタスクを自動化するための、1つのシナリオに組み合わされた一連のアクション(Actions)です。通常のアプリとは異なり、Shortcutに永続的なインターフェースはありません — バックグラウンドで実行されるか、データ入力のためだけにクイックダイアログを表示します。ユーザーはShortcutsアプリでActionsギャラリーからブロックを組み合わせてシナリオを作成し、ワンタップ、音声、またはトリガーによって自動的に起動します。
Shortcutsアプリ — Appleの組み込み自動化ビルダーで、iOS 13+、iPadOS、macOS 12+、watchOSを搭載したすべてのデバイスで利用可能です。Actionsライブラリには300以上の組み込みブロックが含まれています:システム(メッセージ送信、電話、アプリ起動)、メディア(写真、音楽、ポッドキャスト)、インターネット(Get Contents of URLによるREST API)、ファイルとドキュメントの操作。ギャラリーにはAppleとコミュニティからの既製シナリオが含まれています — 連絡先に到着予定時刻を送信することから、ファイルの一括名前変更まで。
Actionsライブラリは、App Intentsフレームワークを通じてサードパーティアプリによって拡張されます。開発者がIntents.intentdefinitionでintentsを登録すると、自動的にShortcutsギャラリーに表示されます。たとえば、Things 3はActions「タスクを作成」と「今日のタスクを表示」を追加し、CARROT Weatherはロケーションパラメータ付きで「今日の予報」を追加します。
ShortcutsはiOSのサンドボックス内で動作します — シナリオはshortcutedと呼ばれるバックグラウンドプロセスで制限された権限で実行されます。各Actionは、入力パラメータを受け取り、操作を実行し、結果を返す事前定義されたハンドラーの呼び出しです。システムはパイプラインを介してあるActionの出力を次のActionの入力として渡します — ユーザーはエディターでブロック間の青い接続ポイントとしてこれを確認できます。
実行フローは線形です:Actionsは上から順に順次実行されます。条件分岐はIfブロックで実装されます — システムが条件を評価し、対応するブランチを実行します。ループも利用可能です:Repeat(N回繰り返し)、Repeat with Each(リスト項目の反復処理)、For Each。Try/Catchブロックが追加されていない限り、1つのActionでのエラーがシナリオ全体を中断させます。
import Intents
class OrderCoffeeIntentHandler: NSObject, OrderCoffeeIntentHandling {
func handle(intent: OrderCoffeeIntent,
completion: @escaping (OrderCoffeeIntentResponse) -> Void) {
let order = Order(coffee: intent.coffee, size: intent.size)
placeOrder(order) { success in
let response = success
? OrderCoffeeIntentResponse.success(coffee: intent.coffee)
: OrderCoffeeIntentResponse.failure(error: "Order failed")
completion(response)
}
}
}
各Intentsハンドラーは、INIntentsSupportedキーを介してInfo.plistに登録されます。Siriを介してShortcutが起動されると、システムは適切なIntentHandlerを見つけて非同期的に実行します。応答は、ステータス、メッセージ、およびユーザーに表示するオプションデータを含むINIntentResponseオブジェクトとして返されます。
Shortcutの作成は、Shortcutsアプリのギャラリーで「+」をタップすることから始まります。ユーザーはカテゴリからActionsを選択します:アプリ、スクリプティング、ウェブ、ファイル、ヘルスケア、ミュージックなど。各Actionは設定可能です — 入力フィールド、トグル、リスト。組み立て後、シナリオはPlayボタンでテストされ、エラーがある場合は問題のあるブロックがハイライト表示されます。共有するには、Shortcutは. shortcutファイルにエクスポートされ、AirDropやiMessageで送信されます。
変数とマジック Shortcutsは変数をサポートしています — あるActionの出力データを別のActionに渡すことができます。マジック変数は自動的に決定されます:前のActionが画像を返す場合、システムはそれを次のActionのパラメータで提案します。ユーザーはSet Variableブロックを使用して名前付き変数を作成し、シナリオのどこでも使用することもできます。
import AppIntents
struct CreateTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Create Task"
static var description = IntentDescription(
"Creates a new task in your to-do list"
)
@Parameter(title: "Task Title")
var taskTitle: String
func perform() async throws -> some IntentResult {
let task = TaskModel(title: taskTitle)
try await Database.shared.save(task)
return .result(dialog: "Task created")
}
}
App Intentsは、カスタムintentsのためにIntentsを置き換えたAppleの(iOS 16+、SwiftUI)モダンフレームワークです。古いSiriKitとは異なり、App IntentsはObjective-Cランタイムなしで動作し、async/awaitによる非同期処理をサポートし、Siriのダイアログを自動生成します。CreateTaskIntent構造体はAppIntentプロトコルでマークされ、パラメータは@Parameter属性でマークされます。フレームワークは自動的にShortcutsギャラリーにActionを作成します。
Shortcutsトリガーは、シナリオが自動的に起動される条件です。設定はShortcutsアプリのAutomationタブで行います。トリガーは、個人用(時間、位置情報、充電)、センサー系(NFC、シェイク)、システム系(アプリ起動、フォーカスモード、CarPlay接続)、イベントベース(メール受信、カレンダーイベント、通知)に分類されます。各トリガーは即時実行または確認要求に設定できます。
| トリガー | 起動条件 | 使用例 |
|---|---|---|
| 時間 | 特定の時刻、日の出/日の入り | 午後10:00におやすみモードをオン |
| ジオフェンス | エリアへの出入り | 仕事を出るときに「帰宅中」を送信 |
| NFC | NFCタグへのタッチ | タグにタッチして「スマートホーム」シナリオを起動 |
| アプリ | アプリの開閉 | YouTubeを閉じるときにタイマー停止をリマインド |
| フォーカス | フォーカスモードの変更 | Sleep Focus起動時にダークテーマを有効化 |
| 充電 | 電源接続/切断 | MagSafe接続時に充電ウィジェットを開く |
自動化はShortcutsの主要機能であり、開発者権限なしでは通常のアプリでは利用できません。ユーザーはトリガーを一度設定すれば忘れてしまえます — シナリオはバックグラウンドで介入なしに実行されます。たとえば、「帰宅したらWi-Fiをオンにしてマナーモードをオフにする」自動化は、自宅のジオフェンスに入るとトリガーされます。システムは初回設定時に自動化の許可を求め、使用頻度が低い場合は無効にすることがあります。
macOSでのShortcuts — macOS 12 Monterey以降、ShortcutsはMacで利用可能です。シナリオはiCloudを介してすべてのAppleデバイス間で同期されます。Macでは、システムActions(Finder、ターミナル、Automator、AppleScript)がサポートされています。macOS開発者はiOSと同様にApp Intentsを介してActionsを追加できます。
App Intentsは、iOS 16+およびmacOS 13+でアプリをShortcutsと統合するための主要フレームワークです。開発者はAppIntentプロトコルを実装する構造体を作成し、property wrappersを使用してパラメータを記述し、perform()メソッドを実装します。システムは自動的にShortcuts、Siri、Spotlightにintentを登録します。古いiOSバージョン(10–15)をサポートするには、INIntentとIntentHandlerを使用したIntentsフレームワークが使用されます。
import Intents
class IntentHandler: INExtension {
override func handler(for intent: INIntent) -> AnyObject? {
if intent is OrderCoffeeIntent {
return OrderCoffeeIntentHandler()
}
return .none
}
}
App Intentsのテスト — intentsのデバッグはXcodeを介して行います:アプリスキームを選択し、Argumentsで-intentsを渡すと、シミュレータがテスト用に登録されたintentsのリストを表示します。実際の環境に近い状態でShortcutをテストするには、アプリアーカイブを作成し、TestFlightを介してデバイスにインストールします。アプリからのShortcutsは、初回起動後にギャラリーに表示されます。
高度な機能 App Intentsは、オートコンプリート付きパラメータ(動的オプション)、実行前の確認、Siri用intents(ボイスショートカット)、起動ボタン付きウィジェットの作成をサポートしています。Indexed intents(iOS 17+)は、Siriがコンテキスト(時間、位置情報、アクション履歴)に基づいてユーザーに自動的に提案するintentsです。
よくある質問
Shortcutは、異なるアプリのアクションを連携するシナリオであり、独立したアプリケーションではありません。ユーザーはコードを書くのではなく、既製のActionsブロックからシナリオを組み立てます。ShortcutはトリガーされるとShortcutsアプリを開かずに実行されますが、通常のアプリは画面上のアイコンから起動する必要があります。
Shortcutsは以下のトリガーをサポートしています:スケジュールされた時間、エリアへの出入り時のジオフェンス、iPhoneへのタッチ時のNFCタグ、アプリ起動、ウィジェットタップ、Siri音声コマンド、充電器接続、スリープモードとフォーカスモード、特定のアプリ通知。設定はAutomationタブで行います。
はい、Shortcutは.shortcutファイルにエクスポートされ、AirDrop、iMessageで送信したり、iCloudを介してShortcutsギャラリーに公開したりできます。受信者はシナリオをインポートして使用できます。インターネットからダウンロードする場合、iOSは確認を求め、セキュリティリスクの可能性から信頼できないシナリオの実行について警告します。
サードパーティアプリは、iOS 16+ではApp Intentsフレームワーク、古いバージョンではIntentsフレームワークを介してActionsを追加します。開発者はIntents.intentdefinitionでアクションを登録すると、ShortcutsアプリのActionsギャラリーに表示されます。ユーザーは異なるアプリのActionsを組み合わせます — たとえば、SafariからBearノートにリンクを送信します。
いいえ、Shortcutsはコードなしで視覚的に作成されます。ユーザーはリストからActionsブロックをドラッグ&ドロップし、パラメータを設定し、順次接続します。高度なシナリオでは、Run Script Over SSH、Get Contents of URL、Control Flow If、Repeat、For Eachなどのブロックが利用可能ですが、プログラミング経験は必要ありません。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。