18
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

妻の誕生日にLINEでサプライズメッセージを送る

Last updated at Posted at 2016-01-31

いつもQiitaにお世話になっているので、自分も恩返しで投稿を始めることにします!小さなことでもいいので、できるだけ毎日投稿を続けていこうと思う。

さて、初投稿は記念日的な投稿として、次のようなことをやってみたという記録をば。

  • 妻の誕生日に合わせて、LINE でメッセージを送る
  • 携帯を触ってないのに、俺からメッセージが送られるサプライズをしたい
  • ディナーを食べ終わった 19:30 くらいに自動で送られるようにしたい

検討1: REST APIs

  • まずは正攻法で、LINE の REST APIs を使うことを検討
  • 結論から言えば、これは個人向けに開放されていないので断念

断念理由

  • 詳細を言うと、LINE REST APIs を使うには、Access Tokenの発行が不可欠なんですが、これには Channel Registration (LINEへのいわゆるアプリ登録) が必要で、LINE Partner Program へ登録していないと、 CHANNEL_CREATOR の権限が得られないみたいなんですよね。
  • なお、どうせ LINE Partner Program へ登録するなら、LINE公式アカウントを取って、より高機能な Business Connect を用いたほうがよさそう
    • REST APIs では、Link Message しか送れないが、Business Connect なら、Microsoft りんな とかみたいに ChatBot みたいなメッセージのやり取りが可能になるはず
    • 今作りたいものはそんな大掛かりなものじゃない・・・と思いつつ、LINEさん懐が狭いなと感じたり・・・

検討2: LINE@

  • 次に、個人向けにも公開されている、ライト版LINE公式アカウントともいえる LINE@ を使うことを検討
  • この記事でも紹介されている通り、無料で結構できるので、個人で使う分には何の問題もなさそう!
    • すません、LINEさん、やっぱ太っ腹でした!!
  • スマホアプリのほか、Web の LINE@ Manager でも管理できて、送信メッセージの予約ができるので、今回の要件にもぴったし!

line@_message.png

断念理由

  • だが、あくまで個人アカウントからではなく、LINE@アカウントから送ることになるので、それじゃまず妻に個人のLINE@アカウントのフレンドになってもらわないといけないじゃないか!?
  • サプライズでこっそりやりたいのだよ、もっと事前にフレンドになってもらうならともかく、直前では怪しすぎる・・・
  • でも、LINE@、これはこれで面白そうなので、今度機会があったら何かに使ってみよう

検討3: MacOSXのLINEアプリ

  • 前置きが長くなったけど、かくなる上は、Mac に入っている LINE アプリを使うことに
  • まず次のような AppleScript を書く
    • goo.gl の短縮アドレスは、お手紙画像を Web 上に置いたアドレスを短縮したもの
send_line_message.scpt
#!/usr/bin/osascript
on run argv
   tell application "LINE"
      activate
      delay 1
      tell applications "System Events"
         keystroke "HappyBirthday!!!"
         keystroke return
         keystroke "http://goo.gl/xxxxxx"
         keystroke return
      end tell
   end tell
end run
  • 次に atコマンド を使って、指定時間に上記スクリプトが実行されるようにする
# Mac で atコマンドを使うには、あらかじめ有効にしておく
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

# 時刻を指定してコマンド実行を予約
echo "osascript send_line_message.scpt" | at -t 201601301930

# 確認
atq
  • Mac がスリープ状態にならないよう、System Preference で以下の点を確認する
    • Screen Saver が開始しないようにする
    • Energy Saver で Sleep にならないように設定しておくことも忘れない
    • 地球環境のためにこれらは後で元に戻しておいてね
  • ノートのフタを閉めても大丈夫なようにしたいなら、InsomniaX とかを入れておけばokなはず
  • 電源はコンセントに接続して切れることのないように
  • そして、あとは LINE アプリを起動し、妻とのトーク画面を開いた状態にしておくだけ・・・

結果は・・・?

  • こうして、準備万端で妻と外出したわけだが、時が来ても妻のスマホが光らない・・・あれ?
  • さすがにおかしいので、しれっーと手動で送ることに・・・妻は喜んでくれたが、エンジニアとしてはかなり無念・・・T T
  • 家に帰って確かめてみたら、ネットとの接続が断たれていたのが原因だったorz
    • ということで、ネットとの接続も確認した上で外出を、というのも条件に加えておく、というオチ付きで
18
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?