4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

今何歳?家族の年齢をLINE Botで即行確認!

Last updated at Posted at 2025-06-30

家族の年齢を即座に言えますか?

私は親の年齢すら毎回計算しています。
はじめまして。小売業に勤めて13年目のujapaです。

生まれて初めて LINE Bot や Make に触れてから早2日。
何か作ってみたいと思ってチャレンジしてみたのがこの課題です。

背景としては

  • 家族の誕生日だけは覚えている(カレンダーが教えてくれる)
  • おめでとうメッセージだけはLINEする
  • 「で、何歳になったん?」

私の家族関係があっさりしているとか、記憶力が低下しているとか、そういう本質的課題には今回は向き合いません。

なぜ LINE Bot なのか?

その時、LINEを起動しているからです。
私が家族の年齢を知りたいのは、誕生日メッセージを考えるときや冠婚葬祭の連絡をもらっときなのでLINEを開いていることが多いです。

Googleスプレッドシートやメモアプリを利用して管理することもできますが、

  1. アプリ起動
  2. 検索画面起動
  3. 検索ワード入力

の動作をスマホの小さな画面で実施するのは億劫です。
そんな理由から、LINE Botがぴったりフィットしたテーマだと思いました。
それに、LINE Bot しか触ったことがありませんし。

できたもの(画像)

Googleスプレッドシートで家族の年齢リストを作り、Makeでつないで LINE Bot を作成しました。

Screenshot_2025-06-29-14-36-40-409_jp.naver.line.android-edit.jpg

こんな感じです。動いてるところは記事最下段につけておきます。

「しし」というのは祖父の苗字と名前の頭文字です。
偶然、我が家はこの表記法でも誰一人被らなかったので漢字変換も省略。
記事化の都合もありますけどね。個人情報なので。

3メッセージ目のトリビアは Web API からもらってきて翻訳したものです。

STEP1 年齢リストの準備

まず何よりも家族の年齢情報の一覧が必要です。
今回は以下のような感じで曜日と干支も追加。※名前は略称です。

年齢リスト.png

生年月日表記はYYYY-MM-DDにするとうまくいくようです。

年齢の計算は「生年月日から今日までの満年数」として=DATEDIF(B2,TODAY(),"Y")で計算。

干支の計算は mod 12 (12で割った余り)を使って=CHOOSE(MOD(YEAR(B2)-4,12)+1,"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥")で計算できました。MODに+1を入れているのは、余りは0~11なのを1~12(番目)に変換するため。

ここで気になったのはtoday関数がいつ計算を更新しているのかということ。調べてみるとデフォルトではどうやら Make が連携しにいくだけでは再計算されないらしい。

ということで再計算の設定を「変更時と毎時」に変更。

計算タイミング1_2025-06-29 110127.png

計算タイミング2_2025-06-29 110255.png

STEP2 MakeでLINEとGoogleスプレッドシートを接続

スライド1.jpg

Googleスプレッドシートの年齢リストができてしまえばGoogle Sheets Serch Rowsのモジュールとつなぐことは直感的な作業で実施できました。

ご参考までに各モジュールの設定を載せておきます。

スライド2.JPG

スライド3.jpg

ここまで設定すれば、結果は以下のように出てきます。

Screenshot_2025-06-29-18-28-11-436_jp.naver.line.android-edit.jpg

STEP3 起点は技術ではなく……とはいっても

とある講習の初日で習ったことがあります。

「テクノロジーは課題を解決する道具です。だからこそ、起点は技術ではなく、自分の生活や関心・趣味・体験の中にある課題です」と。

とはいっても、せっかくならWeb APIとかつないでみる練習もしたいですよね?
年齢を返すbotなので、その数にまつわるトリビアでもないかとググったら、ありました。

Numbers API

ということで本来の目的からすればいわゆる蛇足ですが、以下のようなシナリオを作成。

スライド5.JPG

当初、翻訳のための DeepL は挟んでおらず、以下のような感じでした。

Screenshot_2025-06-29-12-48-22-711_jp.naver.line.android-edit.jpg

これでいいかと思っていたのですが、妻に見てもらったところ、「絶対翻訳すべき」とのフィードバックをいただきました。

たしかに、パッと見ると何かのエラーかと思って不安になりますよね。

MakeにはDeepLのモジュールがあり、さらに無料枠のAPIもありそうでしたのでアカウント登録してAPIキーをゲット。ここで本人確認のためにクレジットカードの登録がありましたが、「有料版にアップグレードしないと引き落とさない」という文言をひとまず信じました。APIで取得するトリビアの短文を日本語訳するだけなので無料枠でいいのではないでしょうか。

各モジュールは以下のようになっています。

スライド4改.jpg

Numbers APIはURLに年齢やタイプを指定する文字列が入りますので、URLでGoogleスプレッドシートから取得した年齢を代入できるようにするのがポイントです。
数字によっては複数のトリビアが登録されていて、ランダムに出現するようです。

できたもの(動画)

これで、家族の生年月日のメモを確認したり、スマホの小さい画面でスプレッドシートを開く必要がなくなりました。

脱線しますが、Xの投稿の埋め込みリンクを作成すると青い鳥が現れるんですね!

{A770A7F3-6F74-4CDE-A8A7-4805442D73EC}.png

没シナリオと感想

Make を開いたのが本日で2日目でしたが、何とか1つ動かせたのは嬉しかったです。そして何よりまずLINEやMakeが凄すぎて愕然としました。

また、制作過程での気づきとしては、Reply Tokenは1回しか応答しないということです。
一番最初に思いついたのは下記のようなシナリオでした。

何歳シナリオasof2506291430.png

STEP2の基本シナリオの後続にトリビア部分をくっつけてみたものです。
しかし一番右端のLINEはSend a Reply Messageでは動かず、Send a Push Message で動きました。

「まぁ動けばいいか」と思いつつも調べてみたら、

  • Reply Tokenは1回しか応答しないものである
  • Send a Reply Messageで5つまでメッセージを返せる仕様になっている

ということがわかりました。であれば、Send a Reply Messageにメッセージを3つとも集約した方が正しそうです。そのため、現在はSTEP3に載せたシナリオへと整理しています。

何もわからなくても動くものが作れる便利さに驚きつつ、やっぱりちゃんと理解するための勉強もしないといけないのかなぁと感じたのが初 LINE Bot 作成の感想です。

ここまでお読みいただきありがとうございました。
Qiitaへの投稿も初めてでしたので、先輩方の記事を参考にさせていただきました。

今後ともよろしくお願いいたします!

4
1
0

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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?