iOSのショートカットでブログの更新を監視してみた

# 今更ですが．．．
iOSのアプリで**ショートカット**なるものがiOS12で搭載されました。
OSのアップデートの際に**便利そう！**と心踊りましたが、イマイチ手を出せずに昨日まで過ごします。

Qiitaを漁ってると、[こちらの記事](https://qiita.com/chocolamint/items/1d076428451a0a192d51)に出会い、**便利そう!**と再び心踊り**ショートカット**をいじってみました。

簡素な作りではありますが、**ブログの更新を監視するショートカット**を作ってみたので、投稿します。

**ショートカット**の文法・考え方等は[先程の記事](https://qiita.com/chocolamint/items/1d076428451a0a192d51)が非常にわかりやすくまとまっていますので、
本記事ではあくまでも同実装したかにフォーカスを当てたいと思います。

# 背景
* 最近某アイドルのブログを見るのが習慣になっているが、毎日更新されるわけではない
* 毎日更新してるかどうか、**ブラウザを立ち上げてまで確認したくはない**
  (ブラウザはいつも開いているが、常駐するタブをなるべく減らしたいため)
* 前回自分が確認したときから**更新があった場合のみ**、ブラウザを立ち上げたい

# できたもの
ウィジェットにショートカットを追加し、ショートカットを作成するとボタンができる
<img width="375" alt="IMG_3257.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433822/037034cb-76d5-5fe3-e6fd-373d3585caa2.png">

---
ボタンを押下し、前回確認時以降にブログが更新されている場合、Chromeでブログが開く
<img width="375" alt="IMG_3258.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433822/ea7ac1b1-7fa5-bd0a-4dbc-fa98335ad6ca.png">

---
ボタンを押下し、前回確認時以降ブログに更新がない場合、メッセージが表示される
<img width="375" alt="IMG_3259.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433822/291639ec-fd8c-8cf6-b786-59f076472e5c.png">


# 準備
## 入力と出力
入力: **ショートカット**ウィジェットのボタンを押下する
出力: 更新がある場合、ブラウザでブログを開く

## 大まかな流れ
Evernoteメモをログ代わりとして、ブログの更新日とメモの更新日を比較するだけです。

1. メモ(今回はEvernote)などのファイルを事前に用意する
2. ブログURL(```myURL```)を入力し、ブログの更新日(```blogDate```)を取得する
3. 1のメモの更新日(```memoDate```)を取得する
4. ```blogDate```と```memoDate```を比較する
    1. ```blogDate```のほうが後の場合、Chromeで```myURL```を開く
    2. ```memoDate```のほうが後の場合、更新されてない旨を表示する
5. メモを更新する

# 実装
## 1. メモ(今回はEvernote)などのファイルを事前に用意する
表題の通り、メモを事前に作成します。

<img width="375" alt="IMG_3260.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433822/791dd1be-bfdc-3f3e-b064-102e114071dd.png">

## 2. ブログURL(```myURL```)を入力し、ブログの更新日(```blogDate```)を取得する
画像の通りですが、変数の定義は前のアクションの出力を値として持つことに注意です。

<img width="375" alt="IMG_3260.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433822/61165758-cdd3-919c-9152-2dbab554d456.png">

## 3. 1のメモの更新日(```memoDate```)を取得する
こちらも画像の通りですが、**何もしない**は次のアクションに入力が渡されないようにするためなど、アクションを区切るのに使い、重宝しそうです。

<img width="375" alt="IMG_3252.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433822/fc3b735c-9ce1-ecd2-ca37-d6c1325ed28d.png">

## 4. ```blogDate```と```memoDate```を比較する
**変数を取得**でこれまでに定義してきた変数を次のアクションの入力等に使うことができます。
### 4-1. ```blogDate```のほうが後の場合、Chromeで```myURL```を開く
<img width="375" alt="IMG_3254.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433822/1675a20a-b30b-6195-bee8-a21bc6d9ef05.png">

### 4-2. ```memoDate```のほうが後の場合、更新されてない旨を表示する
**結果を表示**でテキストを通知で表示します。(Siriでも表示できるようです。)
テキストの中では変数を用いることができます。

<img width="375" alt="IMG_3255.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433822/26cc1e4d-361b-3374-7473-6b07071beeb3.png">

## 5. メモを更新する
Evernoteメモに```blogDate```を追記するようにしました。(メモが更新されるのであれば、内容はどうでもいいです。)
日時のままメモに追加しようとすると見辛いフォーマットのため、一度テキストに変換し```YYYY/MM/DD HH:mm```の形式にしています。
<img width="375" alt="IMG_3256.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433822/7f60cdeb-4589-46fd-e309-74a3e8e6223f.png">


# まとめ
こんな粗末なショートカットですら1時間ほど掛けて作りました。。。
ある程度コーディングしたことがある人でも慣れが必要そうだなと感じました。
再掲になりますが、[こちらの記事](https://qiita.com/chocolamint/items/1d076428451a0a192d51)ではコーディング経験者だからこそつまづきやすいポイントを整理して頂いているので、非常に参考になりました。

iPhoneで不便と感じた際はまた作成してみようと思います。

以上です。