「衝撃の結末を迎えるサイコ・サスペンス」との煽り文句だったが、そこまででも…という感想。ラスト一行、確かに「あれっ??」とはなったけど。意味がよくわからなくて「噂 ラスト一行」で検索した。
「サイコ・サスペンス」には偽りなかった。なんとなく「殺戮にいたる病」を思い出し、おれの好みって…と思った。
文体は程よく柔らかく、読みやすくて好きな文章だった。会話が軽快でよい。
最終出社日を過ぎたが、有給休暇がたくさんあるので退職日まではまだずいぶん日がある。
せっかくの休暇なのでゆっくり休むのはもちろんだが、まとまった自由時間ができることなど人生でそうある機会でもないので、勉強とかもしようと思っている。
技術面では、二年以上のブランクを埋めるべく、いろいろモダンな技術のキャッチアップをしたい。連休中なども含めてこれまでにやったことは、
他にもいろいろ、仕事に役立ちそうなことも、そうではないが興味があったことも、雑多に気の赴くままにやってみたい。
技術以外の面では、やはり数学を学びなおしたい。特に順列・組み合わせ・確率。数学は高校レベルで全分野に渡ってダメだが、順列・組み合わせ・確率は考え方すらちんぷんかんぷんで苦手意識が強く、克服したいと思っていた。
適当に検索して見つけたとある男が授業をしてみたというチャンネルの高校(数A)1【場合の数と確率】という再生リストの動画を頭から視聴して問題を解いている。
時間がかかるが学生時代にサボったツケなので仕方ない。暇なときにしかできないことだ。微分・積分も理解できるようになりたいけど、欲張って先を急ぐのはやめて、地道にやろうと思う。
復習タイミングの管理には reminDO : 忘却曲線に基づいた記憶に残せるメモ/ブックマークサービスというアプリを使ってみている。有名な「エビングハウスの忘却曲線」理論に基づいて適切な復習タイミングで通知してくれる。 UI は少し野暮ったいし、そのくせ妙に細かいところが多機能だったりして、いかにもインディーズ制作なアプリという感じで味がある。
IFTTT の Gmail 対応廃止に伴い IFTTT レシピ が使えなくなったので Integromat で作ってみた。
使う Integration は RSS と Email のみ。 Email の代わりに Gmail でもよい。
IFTTT、 Gmail のメール送信アクションは利用可能という話だが、新しい Applet を作るとき Then に Gmail が選べないので、実際には一切利用できなくなっている。
妻がたまに猫の写真を Instagram に投稿している。可愛いので妻の母にも見せたい。妻の母は Google Play に未対応のらくらくスマホを使っており Instagram が使えないが LINE は使える。そこで Instagram の投稿を LINE に通知する仕組みを作った。
以下の 4 つの方法を試し、 Integromat を採用した。
なお、かつては myThings を使っていた。 myThings の Instagram 連携は自分自身だけでなく任意のユーザーの投稿をトリガーにできて便利だった。
サービス連携サービスの元祖。多少の癖はあるが、 4 つの中では一番簡単。
「投稿に複数の写真が含まれているとトリガーされない」が致命的だったので不採用。
IFTTT の高機能版。 JavaScript または Python で任意の処理を書けるのが非常に強力で、標準ライブラリも使えるので事実上なんでもできる。
Instagram API 対応も Zapier が一番充実していた。複数の写真を含む投稿は Instagram Basic Display API の用語だと media_type: CAROUSEL_ALBUM
にあたるが、複数の写真全てのデータにアクセスできるのは Zapier だけだった。
CAROUSEL_ALBUM
内の複数の写真データを扱える実行時間制限 1 秒の壁があり、成否が安定しないので不採用。それを撤廃するためだけに 2,000 円/月も払えない。金を払うのであれば RSS.app の BASIC プラン($4.99/month)で Instagram の RSS フィードを作って IFTTT と繋ぐほうが安上がりだ(タイムラグは長いが)。
なお、 Zapier のサイト上では Webhooks by Zapier は PREMIUM とラベルされている。 Free プランでは使えないと思い、今回は Code by Zapier を使って LINE Notify API に POST したが、試してみたら Free プランでも Webhooks で POST できた。なぜだろう。
IFTTT の高機能版。こちらはスクリプトを書く機能は無いが、 HTTP リクエストを発行できる。 JSON の加工モジュールが充実しており、プログラミング無しでも高度なことをやれるようにという思想が垣間見える。 UI しかり、往年の Yahoo! Pipes を彷彿とさせる。
Instagram API の対応は IFTTT と Zapier の中間。 CAROUSEL_ALBUM
の投稿でもトリガーされるが、複数の写真データは扱えない(最初の一枚だけ)。
CAROUSEL_ALBUM
の投稿でトリガーされるCAROUSEL_ALBUM
内の複数の写真データは扱えない(最初の一枚だけ)複数枚の写真を全て LINE に通知することはできないが、 LINE Notify API は message
が必須なのを逆手に取って一枚目の写真とともに permalink を投稿すれば、リンクをたどって Instagram のページから二枚目三枚目の写真を見ることができる(見ようと思えば)。今回はこれで妥協した。
instagram-scraper を使う。これを GitHub Actions で動かす、というアイデア。 Docker Image もある。
instagram-scraper には差分ダウンロードの仕組みがある。
--latest
オプションローカルディスク上にダウンロードしたメディアファイルのタイムスタンプで比較する。ローカルディスク上にメディアファイルを永続化する必要がある。
--latest-stamps
オプションタイムスタンプをテキストファイルに保存する点が --latest
オプションと異なる。 --latest-stamps timestamp.txt
のようにファイル名を指定する。ローカルディスク上にメディアファイルがなくてもよい。
一通り動く状態まで試行錯誤したものを GitHub に置いた。タイムスタンプを保存したテキストファイルを Add & Commit アクションで自身のリポジトリにコミットしたり、 GitHub Actions で完結するように工夫した。
スクレイピング処理をスケジュール実行するのは気が引けた。別の方法で Instagram の更新チェックをして GitHub Actions を叩く、などするとピタゴラスイッチ化するし、美しくないので不採用。
いろいろ試す過程も含めて満足のいく結果となった。 Integromat の HTTP リクエスト組み立て時に LINE Notify のアクセストークンをべた書きしているのが玉に瑕。 RSS.app + IFTTT のほうがスマートな気もするが、 RSS.app の BASIC プランは更新間隔が 3 時間とやや長いのもあって今回は不採用。