5
2

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 3 years have passed since last update.

大学生になって、通学時間がバラバラになったので、電車時刻検索ショートカットLINEBot

Last updated at Posted at 2021-04-21

##はじめに
どうもこんにちは、LINEBotをこよなく愛し、高校時代をLINEBotで遊びまくったようかんです。
今年のはじめから、最年少LINEAPIExpertとして活動しております。
Expertになって初めての記事ですw(もっと活動しろ

とはいえ、僕がLINEBotを作りたくなるのは、自分や身近な周りの人の課題を見つけ、それをLINEBotと僕の技術でさくっと解決できそうだなと思った時に開発を行います。


高校時代は卒業式でLINEBotを用いました。先日のJAWSDAYS2021でも登壇しました!!


そんな僕が、大学生になって、やっと身近な課題を見つけました。
大学生って、今までのように同じ時間の電車に乗って通学しないんですよね。
僕の今学期はこんな感じです。(オンライン授業はいつ受けてもいいため、表からは除いています。)

1時限
2時限
3時限
4時限
5時限

これからサークルやらなんやらで突如日が変わったりしたり、とにかく
毎日時間を授業開始時間を確認→その20分前には最寄り駅に到着したい→その電車に間に合う電車を検索したい→何分に家を出ればいいかすぐ知りたい
これをLINEbotに基本的な情報を覚えてもらっておいてもらって、ワンタップや時刻になったら通知してくれるシステムがあれば便利だし、いろいろ心配しなくてもいいなと思いました。
※ここ何日かの間にこの案に似たLINEbot(時刻表を参照して、家を出る時間を教えてくれる)を作っておられる方の記事を読んだ覚えがあるのですが、見つけられなかったです。

##時刻表検索のAPIを探す
今回のLINEBotの目玉機能となるのは、時刻表を検索してくれるところです。ですが、流石にいろいろなサイトやらをスクレイピングする訳にもいかないので、乗り換え案内などでAPIを提供されているところを探しました。

###ジョルダン乗り換え案内オープンAPI

公式サイト一部要約(2021/4/9)
 - オープンに利用する用途のみ。
 - 経路検索結果に、APIから返される「ジョルダン『乗換案内』へのリンク」を必ずセットする必要がある
 - 2019年5月時点で、路線バスを利用した経路検索には非対応。
 - 経路検索結果は、1経路を返却いたします。並べ替えには対応してない。
 - 各アカウントに対して、APIの月間利用回数を設定。(1API3,000回、合計で10,000回)
 - 連続的な総当りアクセスなどに対しては、当社判断にて利用を停止する。

###駅すぱあとWebサービス フリープラン

公式サイト一部要約(2021/4/9)
 - 社内システムや個人用アプリ、チャットアプリなど、さまざまな形に活用。
 - ライセンスの表記は不要ですが、記載してもらえると嬉しいです。
 - フリープランでは鉄道・航空情報のみに対応。
 - 「情報編集」や「範囲探索」「駅情報」などは課金で使える。
 - リクエスト制限は今のところないが、常識の範囲内で。

といったところが大手そう。後者のフリープランに経路検索があるっぽいので、今回はそれを使うことにした。公式サイトから利用目的などを入力し、数日待つとアクセスキーが送られてきた。

##完成(v1)
https://twitter.com/inoue2002/status/1384733650734833665?s=20

##利用したAPI

概要はこちら
経路検索には駅すぱあと for web URL生成という経路検索の結果のURLを返してくれるというAPIです。
本来なら、全てLINE上でやりたかったのですが、仕様上仕方ない。

経路検索API GET

https://api.ekispert.jp/v1/json/search/course/light?key={上記手順で取得}&form={駅コード}&to={駅コード}

という感じでリクエストを送ると以下のように検索結果のURLが取得できます。コレをLINEで送っています。

スクリーンショット 2021-04-21 14.30.37.png

ところで駅コードってなんだよって感じですね。

駅コード取得API

https://api.ekispert.jp/v1/json/station?key={上記手順で取得}&name={駅名}

という感じで取得したい駅名をnameパラメータにつけてリクエストを投げると以下のように取得できます。

スクリーンショット 2021-04-21 14.46.45.png

###構成
AWSのLambdaとNode.jsを用いて構築を行いました。

###ソースコード(現在は非公開)
https://github.com/inoue2002/trainCommutingLinebot

###今後
まずは、「僕専用」の実装を行いました
今後反響があればいろいろカスタムも行いたいと思います

ごりごりすごいことをするのも楽しいけれど、最小限な実装でも便利になると気持ちの良いもんだなと思いました。

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?