DataPortalで燃費の可視化

# これなに
Google Form, Spreadsheet, DataPortalで車の燃費をメモ、可視化できる仕組みを作りました。
今回は非常に簡単な手順だけで作ることができ、コードは全く書きませんでした。（spreadsheetの関数は1つ使いました）

完成品は下記
[燃費(DataPortal)](https://datastudio.google.com/u/0/reporting/1dda773e-09ce-42eb-9776-2a11c5693c1d/page/VCPYC)

# 動機
DataPortal使えるようになりたいなーの第2弾です。
日頃から満タン法で自分の車の燃費はチェックしていて、ガソリン入れた時にスマホに走行距離とかメモってました。それを可視化してしまえばいいじゃないかと。

DataPortal使えるようになりたいなーの第一弾は下記
Qiita: [ラズパイ + Google Data Portalで自宅の気温・湿度をグラフ化](https://qiita.com/kaz2018/items/25dbbf2c69485a612d65)

※満タン法とは：
ガソリンを給油するとき、毎回満タンに入れます。
前回給油の時から何km走って何リットル給油したか計算することで、自分の車の実際の燃費を計算します。
例）前回給油時累積走行距離1000km、今回累積走行距離1500km、ガソリン購入量50リットル
　　→ ガソリン50リットルで500km走った
　　→ 燃費10km/L

# 概要
![fuel_efficiency.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/3d980c97-68fa-5523-cd7e-59005fe72d4e.png)

作るもの
- Google Form: スマホでの入力を受け取り、Spreadsheetにデータを自動的に追記
- Google Spreadsheet: データの受け皿。手を加えるのは燃費計算の関数くらい。
- Google DataPortal: spreadsheetに溜まったデータをグラフ化。スマホでの閲覧を前提にレイアウトを検討。

# 使ったもの
無料のGoogleアカウントで使えるサービスのみ。

# 手順
## Google Form
スマホからのデータ入力を受け取るフォームを作成。

Googleのサービスの中からFormを選択。
![Screen Shot 2021-08-20 at 20.36.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/36653767-8224-cfe2-77ce-a18ca9465557.png)

新しいフォームを作成
![Screen Shot 2021-08-20 at 20.37.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/ac7c400e-8208-43bf-2e88-7fd7a19c50aa.png)

フォームのタイトルを編集
![Screen Shot 2021-08-20 at 20.38.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/cf6e0c5c-300a-cda9-37ee-13a545e3917d.png)

日付欄を作成
![Screen Shot 2021-08-20 at 20.40.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/23d81eca-2b3b-e910-9f9a-c7301995f601.png)

累積走行距離欄を作成
![Screen Shot 2021-08-20 at 20.43.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/157dfa13-5dba-af59-b4d7-c8b4a84161f4.png)

ガソリン購入量欄を作成
![Screen Shot 2021-08-20 at 20.44.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/57132e38-86d2-0045-6129-b0a513f8d431.png)

ガソリン単価欄を作成
![Screen Shot 2021-08-20 at 20.46.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/3bc34f71-043f-5bdb-39ed-74fc80090fc5.png)

ガソリンスタンド名欄を作成
![Screen Shot 2021-08-20 at 20.52.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/76072fe6-da28-72ff-5297-fca74f8e1b5b.png)

回答シートに切り替えて、回答データを保存するspreadsheetを作成
![Screen Shot 2021-08-20 at 20.50.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/cfc5e425-b8ec-1122-2415-75a015f6fc9e.png)
![Screen Shot 2021-08-20 at 20.49.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/3e4544a3-8d79-c9b9-934d-f1a7247a2e4b.png)

![Screen Shot 2021-08-20 at 21.01.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/ea002013-75be-7bbb-7b90-63aae71625a8.png)

## Google Spreadsheet
spreadsheetを作成するとこんな感じのができます。
![Screen Shot 2021-08-20 at 21.02.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/29997199-25b9-a724-5c51-0121aa0db60c.png)

ここでFormに戻って試しに適当にデータを送ってみます。
Formのプレビューに切り替えて
![Screen Shot 2021-08-20 at 21.03.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/8bda642b-a2d8-a780-5bc8-ee9f845fcffd.png)

適当に必要事項を入力して送信
![Screen Shot 2021-08-20 at 21.04.54 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/419db2cb-d88a-aa71-8c5e-fa2a8655dbd5.png)

![Screen Shot 2021-08-20 at 21.05.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/51608a31-7472-11fa-c844-6b45fad4060b.png)

適当なデータが自動的にspreadsheetに反映されました
![Screen Shot 2021-08-20 at 21.05.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/ef369251-8958-d0a7-5500-6036fb79f56e.png)

反映されたデータを下の行にコピーし、数字を適当に変えて燃費計算のサンプルとして使います。
燃費はspreadsheet上で関数を使って計算する必要があるので手で追加します。
G1：燃費（km/L）
G3：=iferror((C3-C2)/D3,0)
![Screen Shot 2021-08-20 at 21.09.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/906ce9e4-a6bf-9dd1-df5d-8d0886c5778f.png)

Formからのデータが追加されたら燃費も自動的に計算したいので、計算式を表の一番下までコピー。
![Screen Shot 2021-08-20 at 21.09.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/e4fea4cc-0f5e-6002-4676-132b05df36a0.png)
この辺り、もっといいやり方があるような気がするんですがわかりません。
データ追加されたら計算式の範囲も自動的に拡大されるみたいな。
もし知っている方いましたら教えていただけるとありがたいです。


適当に入れたデータを消して、spreadsheetの準備は完成

ちなみに今回使った自分のデータをサンプルデータとして晒しときます。
[サンプルデータ（spreadsheetへリンク）](https://docs.google.com/spreadsheets/d/1YFaoY69vbGwqc-h_r0ao-oI28IoNbC9CSRvIa96PoXA/edit?usp=sharing)

## DataPortal
DataPortalの新しいレポートを作成
![Screen Shot 2021-08-20 at 21.14.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/7611730e-3177-7656-5d3a-a5e41283e125.png)

接続するデータソースを選択
![Screen Shot 2021-08-20 at 21.15.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/1bf3f38b-88fe-f729-842a-a8ba0820d31e.png)

![Screen Shot 2021-08-20 at 21.16.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/f165523b-f9bb-a91d-783c-923111f57f6c.png)

タイトルを編集
![Screen Shot 2021-08-20 at 21.19.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/01ae8a46-634b-a32c-aa65-9494010b46f5.png)

編集画面の何も選択していない状態で全体の画面サイズを変更
![Screen Shot 2021-08-20 at 21.20.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/4abc3c38-c138-6a10-309a-40bfad05a2be.png)

![Screen Shot 2021-08-20 at 21.21.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/d5c581b8-fd74-5a75-69a4-d1688cca8bf8.png)

図形の長方形とテキスト挿入でページのヘッダーを作成
![Screen Shot 2021-08-20 at 21.23.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/fa943e79-05a9-3923-7dc5-9dc497dd44d7.png)

期間設定を追加
![Screen Shot 2021-08-20 at 21.24.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/35594c5e-f94a-e259-f00c-45f627233c6b.png)

![Screen Shot 2021-08-22 at 21.22.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/16f86d4d-3bc4-63f3-6973-d7eb2648a25c.png)

テキスト挿入で「燃費の推移（km/L）」を追加

グラフの追加で時系列グラフを追加
スタイルで欠落データを「ゼロとして扱う」から「線形補間」にするのがミソ
![Screen Shot 2021-08-20 at 21.25.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/ce737cbc-e690-fd63-217b-e73d55f0f5e1.png)

![Screen Shot 2021-08-20 at 21.27.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/f8e83e3b-d7e1-759a-5244-27ec1a254dc4.png)

![Screen Shot 2021-08-20 at 21.28.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/8270e507-2e7b-c181-7bf0-dcbd61f7b324.png)

![Screen Shot 2021-08-22 at 21.43.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/0a0e8ba9-ba5a-0682-30eb-28f1cb21370e.png)
だいたい8km/Lで推移してる感じ。
燃費悪いな。

上記と同様の手順でガソリン単価の推移のグラフを追加
内訳ディメンションにガソリンスタンド名を指定
![Screen Shot 2021-08-22 at 22.56.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/fa71febb-59e5-6a5d-a197-f3bcc42b4403.png)

![Screen Shot 2021-08-22 at 21.43.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/5d2b838f-3297-8516-4466-1f89823eed76.png)
スカイエナジーが安いかな。
ちなみにハイオクです。

燃費とは関係ないけど、ついでに累積走行距離のグラフも追加
![Screen Shot 2021-08-22 at 21.33.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/7fc8e2b6-4701-771b-1a87-95754517377d.png)

![Screen Shot 2021-08-22 at 21.43.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/1b2d32f6-a506-8c68-0d26-7e449bd74a64.png)
田舎なので職場までガッツリ走ります。
フルリモートしたい。

元データを表示。
スマホむけのレイアウトにしたので横幅が狭いため、テーブル2つに分割して表示する。
テキスト挿入でテーブル名を入力。
グラフを追加で表を挿入する
![Screen Shot 2021-08-22 at 21.36.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/e3d2b0a5-f121-066b-c589-fbcd514a7b5e.png)

![Screen Shot 2021-08-22 at 21.38.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/c3eb4321-d419-9af7-e050-12978f6d8dce.png)

![Screen Shot 2021-08-22 at 21.44.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/9783d947-e395-ffa3-b7f2-93ca8bdf711a.png)

同様に2つ目のテーブルを挿入
![Screen Shot 2021-08-22 at 21.42.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/636c67e3-eaa0-fd44-718a-d42825a9396c.png)

![Screen Shot 2021-08-22 at 21.44.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/70955d62-ed89-f79c-6f5d-4bf0585dba04.png)

完成

[燃費(DataPortal)](https://datastudio.google.com/u/0/reporting/1dda773e-09ce-42eb-9776-2a11c5693c1d/page/VCPYC)

あとはガソリンを入れた時にスマホでFormの画面を開いて入力してやれば、自動的にチャートに反映されます。
元データはspreadsheetで確認や編集も可能。

## まとめ
だんだんDataPortalの使い方に慣れてきました。
今回はpythonやGASを全然使わなかったので、プログラミングしたことない人でも作れるものができました。
これと同じようなものをdjangoやFlask使って作ろうと思うと結構覚えることが多くて大変だと思うけど、それを一切コード書かずに作れてしまうGoogleのサービスすごいなと思います。これ無料でいいんすかと。
便利なものはどんどん学ぶべきですね。

あと、車そろそろ買い替えた方が良さそう。