iOSの作業自動化アプリの「Workflow」の基本情報や頻繁に使うアクションの説明、実際に使っているワークフローのご紹介です。
名称ですが、iOSアプリ名はアルファベットで「Workflow」、処理を組み合わせたものを「ワークフロー」とします。ワークフローよりレシピの方が分かりやすいですが、「Workflow」のアプリ内では、Workflow(s)となっているのでワークフローとして進めさせていただきます :)
Workflowとは
iOSの端末(iPhoneやiPad)において、自分がやりたい様々なタスクを組み合わせて自動化するアプリがWorkflowです。「アプリを繋ぎ合わせる」「自分専用のアプリを作成する」といったイメージです。
iOSアプリが対応している必要がありますが、開いているデータを整形して他のアプリに送ったり、iOSアプリを連続して起動して処理、ある場所をトリガーにしてアクションを実行する etc 色々なアクション(機能)を組み合わせて、自分好みのワークフロー(自動化処理)を作ることが可能です。
この辺りは、OS XのAutomatorやウェブサービスのIFTTTに慣れている方でしたらバッチリですね :)
iOS上で処理を自動化するという点では、Python内蔵のテキストエディタ Editorialがあります。テキストエディタがメインでアプリ内で完結するものです。
iOS 8(2014年9月)のシェアシートを活用したアプリ間の連携とUIの分かりやすさを持ったWorkflowの登場(2014年11月)で、iOS全体で作業の自動化がし易くなりました :)
以下の動画は、2014年1月に公開された開発中のWorkflowです。
Workflowの基本情報
Workflowの情報収集は、以下がおすすめです。
- Workflow公式ウェブサイトのアプリ更新情報
- Workflow公式Twitter
- Workflowチームもが参加しているRedditでのフォーラム /r/workflow
- iOSの作業自動化『Workflow』のワークフローまとめ ※以前公開した記事です。
日本人の方がWorkflowチームに加わったようですね :)
Team @WorkflowHQ shoeless at the HQ. Super grateful to be a part of this team. 😊📱🚀 pic.twitter.com/DZaxq85PSp
— Ayaka Nonaka (@ayanonagon) 2016年5月16日
私のワークフローの作成手順
- 実行したいことを大まかに想定する
- 順序立てて、必要な要素を考える
- 必要な要素を得るためのアクションをWorkflow内のアクションから探す
- 順番通りにアクションを組み立てていく
という流れで作成しています。
「ワークフローに挿入したアクションがどんな情報を得て、次にどんな情報を渡すのか」という事を意識して、Getした情報を保持してまとめながらワークフローを組み立てています。
Workflow バージョン1.4.5で対応しているアクションは以下になります。
ワークフローの最初のアクションは、大雑把ですが、開いているウェブページや表示しているアプリの情報を得るために「Get」から始まるアクション、iOSアプリの機能から始まるアクション、日記やログなどのテキスト入力の手間を省くために「List」や「Ask for Input」などのアクションの3パターンが多いかなと思います。
- Apps(対応しているアプリ)
- Calendar(カレンダー)
- Contacts(連絡先)
- Documents(ドキュメント)
- Finance(金融)
- Health(健康)
- Maps(地図)
- Music(音楽)
- Photos & Video(写真とビデオ)
- Scripting(スクリプト)
- Sharing(共有)
- Text(テキスト)
- Web(ウェブ)
※「Apps(対応しているアプリ)」は、Workflow自体に組み込まれたiOSアプリのアクションです。含まれていないiOSアプリでもURLスキーム(URL Scheme, 例 drafts://)に対応していれば、ワークフローに組み込むことが可能です。
URLスキームの仕様は、iOSアプリのウェブサイトに掲載されていることが多いですが、無い場合はアプリの開発者さんに直接問い合わせてみてください。
以下のアクションは、WorkflowのFavoritesに追加して何時でも呼び出せるようにしています。簡単なワークフローなら以下のアクションをベースに作成できるかと思います。
Doccuments -> Quick Look
想定している値などが得られない場合に途中に挿入しています。
アクションの途中での確認に最適です。
Scripting -> Choose from Menu
メニュー(選択肢)を作成して、それぞれのアクションを設定することができます。
TwitterとFacebookの選択肢があるメニューを作成→Twitterを選択するとツイート、Facebookを選択するとポストするといった感じです。
Scripting -> Get Dictionary from Input
APIから得られるJSONを取得するのに使用しています。
Scripting -> Get Value for Key
上記の「Get Dictionary from Input」で取得したJSONから値を取得します。
Scripting -> Ask for Input
入力画面が表示されテキストなどを入力できるので、フォーマット(表組みなど)にテキストを入力するのに便利です。
Scripting -> Set Variable
アクションで取得した値は、アクションが進むと消えてしまうので、名前を与えて保持する必要があります。このアクションで名前を追加することにより、値が消えてしまうことはありません。
※他のワークフローに値を渡す場合は、最後に取得している値のみ渡すことができます。
Scripting -> Get Variable
上記の「Set Variable」で設定した値を取得します。
Sharing -> Copy to Clipboard
現在取得している値をクリップボードにコピーします。
Sharing -> Get Clipboard
クリップボードから情報を取得します。
Text -> Comment
何も実行しないアクションです。メモ書きに使用しています。
Text -> Get Text from Input
前のアクションの結果からテキストを取得します。
Text -> Text
Scripting -> Set Variableで名前を付けた値を取得して文中に挿入して、テキストをまとめるのに使っています。
以下のようなイメージです。枠付きの文字列がSet Variableで設定した名前で、呼び出すことで文中に挿入する事ができます。
Text -> Replace Text
テキストの置換に使っています。
Text -> Match Text
正規表現で抽出する際に使っています。
Web -> URL
URLを入力して次のアクションに値を渡したり、iOSアプリのURLスキームを入れて、他のアプリにデータを渡したりします。
Web -> Get Contents of URL
上記の「Web -> URL」に入力されているURLからデータをダウンロードします。このアクションの次にテキストや画像を取得するアクションを追加することでデータを取得できます。
考えている要素の値などが得られない場合
まずは、Documentsにあるアクション「Quick Look」を途中に挿入してみてください。
そこでアクションが一旦中断して、下記の画像のように取得している情報を確認できます。
何も表示されなければ、それ以前のアクションに原因がありますので、確認しながらアクションを組み立ててみてください。おおよその部分が特定できるので、やり易いかと思います!
上記で原因がおおよそ特定できた場合は、アクションのアイコンをクリックして、「前のアクションのデータを受け取る"Input"」と「処理した後の結果を次のアクションに渡す"Result"」の項目で処理できるデータの種類が合っているのかを確認、他のアクションを使った別の方法など試してみてください。
ワークフロー(レシピ)一覧
以下は、私が使っているワークフローのリンクです。
使用するには、リンク先にアクセス後「GET WORKFLOW」をクリックしてください。
※感覚で作成しているので、回りくどいやり方や不必要なアクションがあるかもしれませんが、ご了承頂ければ幸いです。
ワークフローの名称やアイコンなどの変更は、「Settings」(歯車アイコンをクリック)から変更可能です。
ワークフローの種類は、以下の3つになります。Today WidgetとAction Extensionは同時に設定可能です。
- Normal(Workflowのアプリ内のみで表示)
- Today Widget(通知センターに表示)
- Action Extension(Safariを始めとするシェアシートに対応したアプリ)
"現在開いているウェブページ" ワークフロー
Safariで表示しているウェブページに対して、シェアシート(App Extensions)からWorkflowを呼び出してアクションを実行するワークフローです。
公式Twitterアプリでツイート
表示しているウェブサイトのタイトル、URL、画像をツイートします。
画像は、「添付画像なし」「表示しているウェブサイトから取得」「ライブラリから選択」の3つから選択可。
画像を取得する
表示しているウェブサイトの画像を取得します。imgタグで指定されている画像のみ。
テキストをクリップボードへ
表示しているウェブサイトのテキストをクリップボードにコピーします。
HTMLソースを取得してEditorialへ渡す
表示しているウェブサイトのHTMLソースをEditorialで表示します。
Editorialの内蔵ブラウザで開く
表示しているウェブサイトをEditorialの内蔵ブラウザで開きます。
Google検索結果→Bingで開く
表示しているGoogleの検索結果がイマイチな場合、同じキーワードを使いBing.comで検索します。
ProTubeで開く
表示しているYouTubeのページをYouTubeアプリの「ProTube for YouTube(公開停止)」で開きます。バックグラウンド再生や小窓表示(Picture in Picture対応)ができる、おすすめのアプリです。
ブラウザのPuffinで開く
Flashを表示できるアプリ「Puffin Browser Pro」で開きます。
Spotify(スポティファイ)で開く
YouTubeのページからアーティスト名と曲名を取得して、Spotifyアプリで検索します。※ProTubeアプリ内のシェアシートからでも可能です。
ユーティリティ系ワークフロー
ちょっと便利になるかもしれないワークフローです。
計算機(消費税)
税込み/税抜き価格や消費税分の価格の計算ができます。
小数点の切り上げは2にしています。作成したものの少し重い気がします^^;
文字のエンコード/デコード
クリップボードにコピーされているテキストをエンコード/デコードします。
完了後にクリップボードにコピーします。
ワークフローのバックアップ
このワークフローの作成された方は、Jordan Merrickです。
ワークフローのバックアップをDropboxに保存します。
Workflow Syncでワークフローの同期をしていますが、常にすべてのワークフローが同期されてしまいます。ある時点でのバックアップが欲しいのでナイスなワークフローです!
アクション「Get My Workflow」の後に「Choose from List」を追加すれば、個別にバックアップ可能です。
テキスト内の文字列を分割→リピートして挿入
行ごとの文字列を取得して、同じフォーマットに挿入します。
名称が、Content blocker (Domain→JSON)となっている通り、ホスト一覧を取得してSafariのコンテンツブロッカー形式のJSONに挿入する作業を自動化しています。
スクリーンショットビルダー
このワークフローの作成された方は、Jordan Merrickです。
スクリーンショットにiOS端末の枠を当てはめることができます。Dropboxに画像データを保存する必要あり。
対応端末は、iPhone 6s, iPhone 6s Plus, iPad Pro, iPad Air, iPad mini, iPod touch, Apple Watchです。
クリップボードにあるものをDropboxに保存
コピーしたものをDropboxに保存。ファイル名は日付になっています。
ProTubeからTweetbotでツイート
ProTubeで表示している動画をTweetbot 4でツイートし、ツイート完了後にProTubeに戻ります。
公開できそうなワークフローは以上です :)
ワークフローのギャラリー集(まとめ)
Workflowのワークフローがまとまって掲載されているウェブサイトです。
下記のRedditのフォーラムは「こんなの無い?」といったスレッドもありますので便利です!
- one tap less内のWorkflow集
- Workflow.directory
- Reddit内のフォーラム /r/workflow
- Automation for iOS - WORKFLOW LINKS
雑記
少し長くなってしまいましたが、参考になりましたでしょうか。
個人的には手間が少し省けるだけで、随分とストレスフリーになりました。
是非ともAppleには、WorkflowをOSに組み込んで欲しいですね :)
Workflow以外にもEditorial,、Launch Center Pro、Drafts、ウェブサービスのIFTTT、Dropboxなど色々と組み合わせて行けば、色々と便利になるかもですので、是非トライしてみてください。
自動的にワークフローをまとめる
2016年8月21日追記
ワークフローをまとめるワークフローについて記事を書きました。
iOS『Workflow』通知センター ウィジェットのワークフローを整理