海外旅行の史跡巡りがもっと楽しくなる？同時代の日本の概要を手軽にしらべるLINE Bot（更新版）

 最終更新日 2024年07月14日 投稿日 2024年07月08日
## 意外と自国の歴史はわかってないものです:thinking:
私はグループ中国小売事業への商品供給をする物流機能会社の経営をしています。
コロナ真っ盛りの時期に中国駐在となりました。そんなコロナも落ち着きを見せて1年を過ぎ、やっと自由に出張・旅行:airplane:に行けるようになりました！（円安はちょっとつらいですが）
訪れた土地土地の歴史や文化に触れるのは、いくつになっても楽しいものです。ちょっとしたことから日本とのつながりや違いの新たな発見すると、自分だけちょっと得をしたようでうれしくなります。
今まで以上にその土地が好きになったり、日本のことがもっと理解できたり好きになったりしませんか？
ほんのちいさな非日常感と刺激が欲しくて、旅を続けているのかもしれませんね。
そんな時、もう少しだけ歴史・文化の理解を深めるきっかけがあるともっと楽しめるかな？
という、ポエムな想いで、西暦がわかれば日本の”時代”がわかる「同時代の日本の概要を手軽にしらべるLINE Bot」を作ってみました！

>みなさんご存知　少林寺
495年ごろ開山:mountain:→そのころ日本は何時代？:thinking:
日本はまだ古墳時代です！！
仏教も伝わっていませんし、文字もありません:scream:
もちろん少林拳もだるまさんも！
><img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/602dde5f-bd41-fbfa-a99c-5a51919e9643.jpeg">

## 完成品（情報追加。より使いやすく更新しました！）
https://x.com/i/status/1812395434490646877

:::note info
インフォメーション　
便宜上、西暦は0年から、時代区分は一般的な解釈に基づいています
また元号は元年から改元前年までが当該元号としています
:::
## 使用ツール
・[LINE Developers](https://developers.line.biz/ja/)
・[Make](https://www.make.com/en/)
・Google Spreadsheets
・Inshot（スマートフォンAPP）


## 構造
<img width="650" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/9ac4508e-82b5-6146-1e13-d526f2b2203c.png">

## 作成工程

一旦作成の工程を整理してから作業を開始しました。
1．必要なデータのソース確保
2．西暦をキーにデータの取得
3．アウトプットの体裁を整える

##### 1．必要なデータのソース確保
当初、西暦をキーに、HTTP、JSONを利用して西暦から日本の各”時代”、”元号”、”天皇”を参照しようと、要件に合いそうなAPIを探しました。ですが対象期間が2000年以上と長いためか、期間を集約した表ばかりで西暦キーから1対1で参照できそうなAPIを見つけられませんでした。

そこで方針を変更し、Google Spreadsheetsに一覧表を作成し、その表を直接参照する形式に変更しました。また、文字で記された歴史は漢字の伝来を待たないといけないので、検索は西暦0年から開始としました。

:::note info
インフォメーション　
データテーブルの作成は、ボリュームが大きい場合はEXEL上で表が完成してからGoogle Spreadsheetsへ一括貼り付けをする方が作業的には楽だと思います
:::

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/05eb91ca-beb6-189c-7c21-fc46aafed2a7.png">

##### 2．西暦をキーにデータの取得
ノーコードでプロトタイプできるMakeを利用し作成していきます。

・Google Sheets の直接取り込み
参考になりそうな諸先輩方の記事を読み込みつつ手探りながらの実施です。

Google Sheets (Get Range Values)モジュールの設定
<img  width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/89bce2d0-9fa6-7b82-76d6-b5e1d80a5685.png">
<img  width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/22ca0644-8a72-0974-63c1-2046c9782aad.png">

さらにGoogle Sheets (Get Range Values)モジュールにつなぎます。

Google Sheets (Search Rows)モジュールの設定
<img  width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/87a63c66-db17-a48d-ed9a-b01c63ab8edd.png">
<img  width="400" src="(https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/881aa2fa-fa2c-cc29-5e41-49700776aced.pngg">

西暦をキーにデータの取得は完了です。引き続きLINEモジュールに接続します。

:::note warn
疑問点　Google Sheetsモジュール を二つ配置しましたがこの配置が適切かは今後要検討です
:::
##### 3．アウトプットの体裁を整える
LINEモジュールのText設定に工夫をします。
・変数以外のTextの直接入力
・Text and binary funcions の "space"と"newline"を使ってアウトプット情報の体裁を整えます。

LINEモジュールのText情報を調整してアウトプット情報の体裁を整える
<img  width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/a40ff6b5-6942-31b1-7fef-21a97f66cf33.png">

:::note info
インフォメーション　
Text and binary funcionsは検索を機能を使うと簡単に見つかります
:::
Text情報調整後のLINE画面（完成）
<img  width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/6eba470b-2f94-dcac-d457-6e022561df45.jpeg">
正しい値がアウトプットされました。体裁もイメージどおりになりました:v:

## 苦労した点
初心者として初めて自身でLINE Botを作るにあたり、苦労した点を書き留めておきます。

1．Google Spread SheetからGoogle Sheetsモジュールへのデータ連携
Makeを使って作成しましたが、あまりに基本的な機能を知らないがために、トライ＆エラーに膨大な時間を使ってしまいました（MakeのFree分、1000アクションを2日で使い果たしてしまいました！）

・SSSAPI経由案（失敗:sweat_smile:）
Google Spreadsheetsから直接データを取得する方法が不明だったため、どのようにデータ取得するかを模索しました。SSSAPIというでツールを利用してGoogle SpreadsheetsのデータをAPI化できると知ったので、Google Spreadsheets→SSSAPI→JASONモジュールでデータ取得ができるのでは？と考えました。

SSSAIのAPI化画面
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/5d27e94f-15bc-f8cc-59fa-41ba868c3a44.png">
うまくできた、と思いましたが、図の下方に「最大行数を超えたため、50行のみ取得」の文字が！
2000年分のデータには対応不能と分かり、SSSAPI経由案は”没”としました。

・Google Sheets API案（再失敗:joy:）
引き続き、Google Sheets APIを使って、スプレッドシートのデータをJSON形式で取得する方法について試しました。Sheets APIはシートのデータを取得するためのエンドポイントがあり、そこから比較的容易にJSON形式のデータ取得が可能とのことでした。

Google SheetsのJASONデータ化
<img  width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/5632321d-9b64-350b-e84a-a02d19ecdd93.png">
今回は2000年分しっかりJASONデータに変換できてました！
引き続き、Make上のJASONモジュールと接続ができれば、ゴールが近づくはずが、、、接続できません！
JASONモジュールにJASONサンプルを流し込んでもうまくGoogle SpreadsheetsのA列の西暦、時代区分、元号などを認識してくれません。JASON化したデータをよく見ると以前JASONモジュールに流し込んだデータと形式が異なることが分かりました。ですが、どのような設定をすればうまく読み取るのか、わかりません。Google SheetsのJASONデータについても”没”としました。

・Google SheetsのMAKE上でのデータ取得
<img  width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/0dc6e6fd-d330-37c1-f732-0339b8904317.png">
西暦を何を入力しても西暦0年の値が返されます。適切に数値が取得できません:scream:
そこでGoogle Sheets (Search Rows)モジュールを追加することで正しいデータが取得できました:laughing:

2．アウトプット情報の体裁を整えること
Text and binary funcionsの機能に気付くまで、1．のデータ取得同様に時間がかかってしまいました。
今回は非常に単純なLINE Bot作成にかかわらず、上記2つで全12時間中8時間近く時間をかけてしまいました。

LINE画面（失敗例）
<img  width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/3ad9268d-be3b-833c-0f76-268903f6997c.png">
LINEモジュールでText and binary funcionsを使えば簡単にTextの体裁を整えることができます。

## 今回作成のLINE Bot改善・改良点
引き続き、以下の3点は追加して使い勝手を良くしたいです（1.2.については改善済み！）。
1. 西暦に元号だけでなく和暦追加→更新版で改善済み！
今年は令和何年だっけ？高校卒業年度って〇〇何年だっけ？というときにも便利かと
2. 時代を象徴する文化財の写真追加→更新版でWEBページへのアクセスを追加することで簡単に確認可能に！
弥生時代→高床式住居、飛鳥時代→法隆寺　のような時代を象徴する画像があればより分かりやすいかもしれません
3. 和暦から西暦の逆引き機能
和同2年→711年　のイメージ。大河ドラマとかで和暦で〇〇3年と言われても大河の重厚な雰囲気はでるのでしょうが、正直全くわかりませんから

こんな機能があったらいいね、使えるねというアイデアがありましたら是非教えてください！

最後までお付き合いいただき、ありがとうございました！！

青海省の海抜4188ⅿにあるチベット寺院
立派な建物ですが、建立は2014年、日本でいうと平成です！と聞くとありがたさも半減ですので何でも調べればよいというものではなさそうです:stuck_out_tongue_closed_eyes:
![チベット寺院.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812519/eb2628a1-52a2-1b12-1dd8-6320d9e4f2c2.jpeg)