自分でレシピを作るとき, うまくできない.
他人のレシピをダウンロードしたけど正しく動かない.
そんなとき行うべきはまずその原因を突き止めることです.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS14.1
スポンサーリンク
正しく処理されているか段階的に確かめる
アクション数の多寡に関わらず, 正しく処理できているか確かめるにはアクションごとにその結果が思い通りになっているかどうかが重要になってきます.
アクション数が少ない, 2通りの充電音レシピ(オートメーション)を例に解説します.
確認するには「結果を表示」アクションが一番役に立ちます.
例1:ファイルアプリから読み込んだ着信音で充電音を鳴らすレシピ
まずは充電音となる音声データを「ファイル」アプリの"Shortcuts"フォルダの中に保存しておきます.
オートメーションを新規作成し, トリガを「充電器」, 充電解除の方は好みで.
レシピを作成します.
まず「ファイル」から音声を読み込む必要があるので「ファイルを取得」アクションを追加します.
「書類ピッカー」をオフにして保存した音声データのファイルパスを入力しておきます.
まずこの時点で「結果を表示」で確認してみましょう.
オートメーションであっても, 画面右下にある再生ボタンをタップすることでレシピを動かすことができますからその場で起動確認が可能です(例外あり).
「結果を表示」ウインドウで内部プレイヤーが表示され, 対象の音声が再生できればまずここはOKです.
因みにレシピを終えた後の最下でも再生できます.
せっかくなのでわざとファイルパスを間違えるなどしてみてどういうエラーが出るか予め知っておくのも後々悩まずに済みます.
問題なければ「サウンドを再生」で選択した音声ファイルを再生させます.
このアクションは「結果を表示」を行わなくともレシピを再生して確かめることが可能です.
ここまで正しければ「予め指定した音声ファイルを再生」させることが可能となったため, 充電音を鳴らすオートメーションとして完成したことになります.
例2:Base64エンコードしたビデオを用いて充電音を鳴らす
充電音を鳴らすTipsとして流行った方の一つですね.
カメラロールにある「最新のビデオ」を使う方法もありましたがあれはデメリットが大きすぎです.
Base64コードを取得
この方法では選択したビデオの音声データを予めBase64エンコードしたものが必要なのでそちらを取得します.
オートメーションの中で作成, 取得可能なのでその場でやってしまいましょう.
まずBase64エンコードされた音声データテキストを取得します.
「写真を選択」アクションで着信音にしたいビデオを選択します.
「結果を表示」で望んだビデオであればOKです.
「写真を選択」の後に「メディアをエンコード」アクションを追加し, 「オーディオのみ」をオンにします.
その結果を「結果を表示」で確認してちゃんと音声のみ再生されるか確認します.
音声再生ができたら次は「Base64エンコード」アクションを追加し, モードが「エンコード」になていることを確認した上でやはり「結果を表示」でコード化されているか確認します.
問題なければbase64コードをコピーしましょう.
「結果を表示」にあるコードを長押ししてコピーするのは流石に現実的でないので, レシピの後ろに「クリップボードをコピー」アクションを追加すればレシピを再生してビデオを選択すればBase64コードがコピーされます.
オートメーションの中身を作る
上でコピーした充電音用のBase64コードを使って充電音のオートメーションを作ります.
まずは上で作ったレシピはBase64コードをコピーするだけが目的だったのですべて削除しましょう.
空になったアクション画面に「テキスト」アクションを追加し, 先程コピーしたbase64コードを貼り付けます.
続いて「Base64エンコード」アクションを追加し, モードを「デコード」にします.
これを「サウンドを再生」でちゃんと鳴ればOKです, 画面右上の「次へ」へ移動してオートメーションを完結します.
〆
ダウンロードしたレシピが正しく動かない場合でも, 途中の結果を「結果を表示」で正しい結果になっているか, それがわからなくともエラーになるかどうか…を確認するのに使えます.
一気に作ってしまうと問題が生じた時に何が原因だったのかが分かりにくくなり, 最悪大幅な修正を要求されるかもしれません.
手間に思っても多少慎重にやるのも悪くありません.
因みに他のプログラミングで言えますが, 問題が生じた箇所を見つけた場合, 原因がその周辺にあるとは限りません.
問題があってもコーティング上誤りでなければ通ってしまうからです.