Corredor

ウェブ、プログラミングの勉強メモ。

2020-11-28 : このブログは2020年末をもって更新停止する予定です。
2021年以降は Neo's World (https://neos21.net/) で記事を公開していきますので、今後はコチラをご覧ください。
このブログの記事は2021年以降、Neo's World に順次移行していきます。元記事および本ブログは移行次第削除する予定です。

iOS の「ショートカット」アプリが最強!自作 Web アプリとの通信に使ってみた

という2つの Web アプリを作って、自分だけで使っている。

POST メソッドでフォーム送信を受け付ける他、GET メソッドで受け取った URL パラメータも「投稿」処理に使うよう実装したりしているので、ブックマークレットから URL をリクエストするだけで、つぶやきを投稿したり、ブックマークを追加したりできるようにしてある。

ブックマークレットでもさほど不便はしていなかったのだが、iOS の「共有メニュー」から呼び出せたり、ホーム画面にアイコンを設置して投稿フォームを表示したりできたら使いやすいかもなー、と思った。調べてみると、Apple 公式アプリの「ショートカット」というアプリを使って、イイカンジに処理ができたので、やり方を紹介する。

「ショートカット」アプリとは

iOS の「ショートカット」アプリとは、任意の操作を GUI 上で組み立てていくと、その操作を自動化できるというモノ。

  • 複数のアプリを開いたり
  • アプリからパラメータとか画像とかを取得してみたり
  • 値を加工・変換したり
  • ダイアログで値が入力できたり
  • if 文が組み込めたり
  • Web ページに任意の JavaScript を実行してみたり
  • 任意の URL を Safari で開いたり
  • Safari ブラウザを介さず任意の URL と通信だけしてみたり

と、結構色々なことができるようだった。

そして、そのように作成したショートカットを「共有メニュー」に追加できたり、「ウィジェット」やホーム画面にショートカットを実行するアイコンを配置できたりする。コレは可能性がありそうだ。

作成したショートカットは iCloud アカウントで同期されるようで、作ったそばから、複数の端末で同じショートカットを利用できるようになる。とても便利だ。

まずは自分で実装してみたモノを紹介

ということで、自分でちょこちょこ実装してみたモノを紹介していく。「ショートカット」アプリは GUI で構築でき、ソースコードのようなテキストベースの成果物に落とせないので、スクショとともに、どんな動きをするモノなのかを紹介する。ショートカットを使ったことがない人も、見ていけばどんな塩梅なのか雰囲気が掴めるはずだ。

オレオレ・マイクロ・ブログに任意テキストを投稿する

f:id:neos21:20200204235915p:plain

このようなショートカットを作り、ホーム画面にアイコンを設置している。

f:id:neos21:20200204235922p:plain

コレをタップすると以下のようなダイアログが出てくる。

f:id:neos21:20200204235812p:plain

ココに任意テキストを入れて OK を押せば、入力した内容がオレオレ・マイクロ・ブログに向かって POST 送信される。

一番最後に

  • URL の内容 内の result を取得

というアクションがあるが、この後ろに「スクリプティング:結果を表示」というアクションを追加し、

  • 辞書の値 を表示

というアクションを置いてやれば、POST 送信のレスポンス JSON から result プロパティの値を取得し、OK ボタンのみのダイアログで表示してくれる。{ "result": "Success!" } といった JSON がレスポンスされていたら、「Success!」という文字列がダイアログ表示されるというワケだ。

自分はこのようなダイアログ表示のアクションを配置していないので、実行結果を確認できないが、イチイチダイアログが出るのも鬱陶しいので気にしていない。

最初に表示されるダイアログに何もテキストを入れずに「OK」ボタンを押下すると、

  • もし comment 値がない ならば

という「if 文」アクションで分岐しているとおり、任意の URL を Safari で開いて終了となる。

閲覧中の Web ページをオレオレ・マイクロ・ブログに投稿する

f:id:neos21:20200205001327p:plain

最初の

  • 受け入れる

というアクションが重要。コレで、Safari やアプリ内ブラウザのメニューからこのショートカットを呼び出した時に、閲覧中の Web ページのタイトルや URL を取得できるようにしている。

f:id:neos21:20200204235825p:plain

↑こんな風にチェックを入れてある。

コレで閲覧中の Web ページのタイトルと URL を拾ったら、先程と同様に POST 送信のフォームパラメータに設定している。

閲覧中の Web ページに任意コメントを沿えてオレオレ・マイクロ・ブログに投稿する

f:id:neos21:20200204235833p:plain

上2つのショートカットの結合版みたいな感じ。

任意コメントを入力した場合は、「任意コメント + 改行 + ページタイトル + URL」という形式になるように、色々と調整している。改行コードだけをうまく仕込むのが難しかったので、一旦

  • テキスト

というアクションに、改行だけの文字列を設定し、

  • テキストを結合

というアクションを使って、入力した任意コメントの後ろに改行コードを結合している。

実際にどんな風に使うと、こんな感じ。

f:id:neos21:20200204235845p:plain

Safari で共有メニューを開くと、このように自分が作ったショートカット名が並ぶので、それを選択する。

f:id:neos21:20200204235857p:plain

するとこのようにダイアログが出るので、任意コメントを入力して OK を押すと、そのコメント付きでオレオレ・マイクロ・ブログに閲覧中の Web ページの情報が投稿されるというワケ。

オレオレ・ブックマークに閲覧中の Web ページを投稿する

f:id:neos21:20200204235906p:plain

オレオレ・マイクロ・ブログと違って、オレオレ・ブックマークは、GET メソッドで受け付けた URL パラメータを基にブックマークを投稿できる仕組みになっている。

当初は「Safari で URL を開く」アクションを利用していた。http://example.com/bookmarks.rb?url=... といったパラメータ付き URL を構築して Safari で開くことで、GET メソッドによる「投稿」処理を実現し、その結果を Safari で確認するような作りにしていた。

しかし、イチイチ Safari が開くのが鬱陶しいので、POST 送信時と同じく

  • URL

アクションと、

  • URL の内容を取得

アクションを組み合わせて、Safari ブラウザを開くことなく、GET 送信をバックグラウンドで行うようにした。

ちょっと余計な if 文とかが混じっているので、もう少し簡素に作れそうだ。

今日はココマデ…

思いの他長くなってしまったので、今日はココまで。

次回はココで使ったアクションを分解し、もっと汎用的に「やりたいこと」を実現するためのアクション作りの方法を紹介していこう。

Mac Fan 2019年11月号 [雑誌]

Mac Fan 2019年11月号 [雑誌]

  • 作者:
  • 出版社/メーカー: マイナビ出版
  • 発売日: 2019/09/28
  • メディア: Kindle版

iPad仕事術!2019(iOS 12・最新版)

iPad仕事術!2019(iOS 12・最新版)