定期的に更新される情報。
数字だけで小難しかったり、単体で見てもわかりにくかったり。
そういうのをDBにスタックしてわかりやすく表示する機能を作ってみたい。
次の要素があると作りやすい。
- 1日1回定期更新
- フォーマットが変わらない
- 意味のある数値が毎日変化する
今回は練習作としてFXのスワップ金利を対象に作ってみた。
※スワップ金利とは2国間の金利差を日割りにして付与するものです。
仕組み
基本的にAWSで収まる設計にする。
概要 : CloudWatch -> Lambda -> DynamoDB <- Lambda <- API <- S3
- 入力
- CloudWatch Events – Schedule: daily で1日1回Lambda関数を起動する
- Lambda関数でスクレイピング+DB格納
- AWSを使って欲しい情報を自動取得するの方法2を利用してスクレイピング
- JSONのポストを利用して検索するのでこれも利用
- 出力
- S3に置いたHTMLファイルからAPI呼び出し
- 普通にHTTP POST(GETしたかったがうまく設計できなかった)
- APIからLambdaを起動
- Lambda関数と統合する
- DBから検索結果を返す
- JSON形式でパススルー
- S3に置いたHTMLファイルからAPI呼び出し
可視化
次に持ってきたJSONをグラフ化する。
グラフ作成系のJavascriptは結構あるけど、どれも面倒な感じ。
今回は比較的簡単そうでデザインと名前が好みのChart.jsを使ってみる。
これは基本機能は簡単ではあったけど、ちょっと変えようとすると難しい。
頻繁に仕様が変わっているのか、ブログや紹介記事なんかはまったく当てにならなかったので公式ドキュメント以外は信用しない方がいい(Update関連は公式通りではうまくいかなかったけど)。
出来上がったチャートはこんな感じ。アニメーションが心地良い。
さて何をつくろうかな。