神戸市給食オープンデータの有効活用(システム構成編)

今回作成した神戸市給食献立オープンデータを提供するLINEアカウントのシステム構成ですが

 

最新技術に少しでも触れておかないと、時代遅れのオジさんになってしまうという危機感で

 

今回のサービスは比較的新しめの構成でサービスを組んでみました。

 

基本思想

 

あまりこればかりやるわけにもいかないので、できるだけ運用に手間のかからない構成で進めたかったのと

 

基本的にはランニングコストがあまりかからないような形で考えました。

 

クライアント側はLineのBotをI/Fとしてフロントに立てて、

 

バックエンド側はサーバレスであるAWS Lambda上にPythonで作成したプログラムをのせました。

 

オープンデータ自体はAmazonのS3とDynamoDBに持たせるようにし

 

クライアントとサーバの間はAPIでやりとりさせて、それらからデータ取得する構成としました。

 

 

 

動作の仕組み

 

これらの機能がどのようにつながっているのか、簡単に整理してみたいと思います。

 

まず、LINEからメッセージが飛ばされるタイミングで指定したURLをコールしてもらう仕組みを使います。

 

これを”Webhook”と言います。

 

このようにLINEの設定画面から指定できるので、ここに呼び先のURLを指定します。

 

 

この呼び先のURLを指定することでAmazonのAWSサーバからオープンデータを取り出すことができます。

 

このURLを定義するのが”API Gateway”と呼ばれるもので、http://xxxxx.xxxxx というアドレスにリクエストが来れば

 

サーバのXXXXXの処理を実行するという紐付けを行います。

 

こちらがAWSでの設定画面になります。

 

 

ここでいうクライアントがLINEとなり、例えばURLがhttp://xxxx/xxxxxx/xxxx/receiveの時に

 

このAPI Gatewayが橋渡しとなって次のLamdbaの”receive”という処理を行います。

 

Lambdaでの処理結果についてはクライアント、つまりLINEに返信メッセージが戻るように設定してくれています。

 

最後にLambdaの設定です。Lambdaに”receive”というサービスを作成しそこにプログラムをマッピングさせます。

 

 

 

プログラムの中では、Dynamodbに保存された小学校情報を取得し、該当する献立表をS3から取得します。

 

そして最後に、メッセージを送信したLINEユーザを一意に特定できる情報をセットして献立表と一緒に

 

LINE側でデータを戻すことで、LINEユーザは自分の端末に返信メッセージが表示される仕組みになっています。

 

まとめ

 

自分が仕事をやり始めた14〜15年前に比べるとシステムを構築する敷居が本当に低くなったと思います。

 

今回のような機能の大きさであれば、わざわざサーバを立てる必要もありません。

 

運用コストはLINEは無料プラン、AWS側のサービスはよほどの回数利用されない限り

 

月100円〜200円ぐらいで運用できます。

 

タダではありませんが、個人的にはこのぐらいであれば許容範囲ですし

 

何よりもサーバレスなので運用が楽なのがすごくいいなと思っています。

 

 

ABOUTこの記事をかいた人

masaki

神戸で働く、ITエンジニア   IT×グローバル×医療で世の中に貢献できるよう、日々奮闘中。 スポーツと海外旅行が趣味です。