グラフサンプルを触ってみる

どうもこんばんは、みかんです。

**！！！！とつぜんですがたいせつなおしらせ！！！！**

2020年1月27日
App Maker の提供終了に向けた対応のご案内
https://support.google.com/a/answer/9682494?p=am_announcement&visit_id=637157414793613981-426262357&rd=1


??!???!?!?!???!?

残念ながら2021年1月19日には終了してしまうそうです(涙)
移行先はAppSheetかApp EngineかGoogleフォームだそうです・・・

消すのは忍びないので記事は残して置きますが、何かの間違いじゃ無い限り役に立つことはないでしょう・・・


**！！！！おしらせはおわりです！！！！！**

今回は「グラフサンプルを触ってみる」を書いてみます。
下記ステップでやっていきます。

* 1 サンプル起動！
* 2 動きを見てみる
* 3 棒グラフをチェック
* 4 円グラフをチェック
* 5 テーブルチャートをチェック

# 1 サンプル起動!

App Makerの公式ガイドにある各サンプルページの「サンプルを開く」ボタンを押すと、そのサンプルアプリが新規作成された状態でApp Makerが立ち上がります。

[サンプル: グラフ](https://developers.google.com/appmaker/samples/charts?hl=ja)

|![ap001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/db83481d-45b7-d7ca-24f0-f6d3af10efee.png)|
|:-:|

|![ap002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/ad402001-9088-f679-b5c5-ba16d341af55.png)|
|:-:|

開いた直後はこんな感じですね。

わかりやすくするために、日本語化してみました。

|![ap027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/8c96be06-b2d2-850d-6f79-4085d3303d22.png)|
|:-:|

日本語化する簡単な方法は今のところ無いので、地味に一つ一つ文言を入力し直しています。

# 2 動きを見てみる

早速動きを見てみましょう。起動すると、1つの入力フォームと3つのグラフが表示されています。
素直に、会社を追加していってみます。

|![gif002-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/4a3f5fd8-ba10-492f-7715-4fab40b2109d.gif)|
|:-:|


入力した値に応じて、それぞれのグラフが描画されました。

# 3 棒グラフをチェック

さて、棒グラフにはどんな設定が施されているのか。見ていきましょう。

|![ap004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/163b6fa7-7fa9-d751-9753-4e09ac83157d.png)|
|:-:|

Bar Chart、Columns、Chart Layoutがこのウィジェットならではの設定のようです。

## Bar Chart

|![ap005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/e1e3a7d4-5906-be7d-dd80-36b93df646e4.png)|
|:-:|

なんとなく想像が付きそうなプロパティが並んでいます。凡例の位置を変えたり、グラフの色を変えたりできそうです。

## Columns

|![ap006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/1842d100-22fc-cb6e-544d-d17de5f0bcf2.png)|
|:-:|

こちらは、何やら選択肢があります。

|![ap007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/ac015c8d-0a16-c27b-e485-9c8b3217eef5.png)|
|:-:|

押して見ると、Labelsが一つ、Dataが2つあります。Columnを押してみます。

|![ap008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/fa15995f-cc61-b43c-f296-330397a2bf10.png)|
|:-:|

nameやdataなどのプロパティの設定が変わりました。さらに、visibleやtitleも増えています。
そしてなんと、その直後に「Formatting」という設定も追加されています。

|![ap009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/b1292aac-4c1a-8336-562d-24d0f2d38092.png)|
|:-:|

あらためて、表示されているグラフを見てみます。

|![ap010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/051f0bce-19b9-1c3e-9dc4-2e487b0bc5a1.png)|
|:-:|

Columns設定の各選択肢は、下記のように対応していることがわかります。

- column2 (Labels) → 「会社A」
- column (Data) → 収益(青色)
- column1 (Data) → 支出(赤色)

1つのデータにつき、表示したい項目の数だけ、columnを増やしていき、それぞれのcolumnについて細かい設定ができるという形のようです。

## Chart Layout

|![ap012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/e87d81fb-ae00-c146-f747-2eb241f285ae.png)|
|:-:|

この設定は、グラフの描画自体の大きさを調整する項目のようです。ウィジェット自体の大きさに対してどれくらいの描画領域を持つかという感じですね。

# 4 円グラフをチェック

次は円グラフを見てみます。

|![ap013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/b1f16c14-ca76-5e92-14e6-f575e25d88c1.png)|
|:-:|

棒グラフと雰囲気が似ていますね。

|![ap014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/9eaab43e-5813-287c-3f64-8acff1c2d77e.png)|
|:-:|

3Dにするかどうかのチェックがあります。

|![ap015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/691a759d-fb70-16a9-ee3d-e1f2d6fa2cc5.png)|
|:-:|

|![ap016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/54a6547f-a2d8-e169-c67e-504e472de8d5.png)|
|:-:|

棒グラフと違って、動的に項目を増やすということはできず、LabelsとDataの1対1対応のようです。

|![ap017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/1f3c6259-8e08-a49a-df45-33e3feba32ce.png)|
|:-:|

dataのほうを選択すると、同じようにFormatting設定が表示されました。

|![ap018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/8d31e1f8-d202-bc92-cffb-42683de31c2c.png)|
|:-:|

あらためてグラフを見返すと、対応している設定項目がどれなのかがわかってきます。

Chart Layoutは全く同じなので割愛します。

# 5 テーブルチャートをチェック

最後に、テーブルチャートをチェックします。
普通にテーブルで良いのでは？という感じになりますが、今まで見てきたグラフと同じようにフォーマットの設定が手軽にできたりするので、サクッと表示用に作るには適しています。

設定を見ていきます。

|![ap019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/c52e76f0-f8da-6a3f-556f-7ec927020779.png)|
|:-:|

Chart Layoutが無いですね。

|![ap020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/64934335-fcca-2b95-37ab-a2b2b31239df.png)|
|:-:|

Table Chart設定は、行番号に関する設定だけがあるようです。

|![ap021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/ceede5b8-d5d2-0c83-a744-226b910f541f.png)|
|:-:|

ColumnsはNEW COLUMNがあるので、棒グラフと同じ感じですね。
このcolumnはまさにテーブルのカラムのことなので、こちらのほうがイメージしやすいです。
サンプルでは利用されていませんが、allowUnsaleHtmlという設定が気になります。
単なる数字や文字列ではないリッチなコンテンツを表に埋め込むことができるのかもしれません。

|![ap022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/e61a113d-b2be-6a5b-0e3f-f1d37c5b87f4.png)|
|:-:|

それぞれのカラムの設定をするための切り替えUIもありますね。

|![ap023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/2c4a85e8-6adc-fc1c-a1ef-14b4a040ba46.png)|
|:-:|

revenueに切り替えるとallowUnsaleHtmlが消えましたが、文字列型のカラムで無いと表示されないようです。

|![ap024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/b1ddfd32-1ba2-1a29-5bbc-e6042902cb77.png)|
|:-:|

profitsのformattingを見ています。いくつか設定が有効になっているようです。
グラフを見てみましょう。

|![ap028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/483993c5-3fc3-d9a7-4df8-bb50fb70bd19.png)|
|:-:|

prefixに$がついていたり、マイナスの時は赤字になりさらに括弧がついています。
表においてよくある表現を簡単に適用できるようになっていますね。

ところで、このprofitは収益から支出を引いた結果である利益を表すデータですが、今回のサンプルのモデルには利益のフィールドはありません。

|![ap029.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/e1b91068-91d0-b46e-8ce5-9e92caa938f7.png)|
|:-:|

これはどこからデータを入手しているのでしょうか。profitsカラムの設定を見てみましょう。

|![ap025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/4b0f1c21-723f-24dc-2081-2ba32c5a191d.png)|
|:-:|

dataの部分になにか仕込みがあることがわかります。

|![ap030.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/ea0f7f88-1f87-f3a7-8ba7-f98bef99324a.png)|
|:-:|

`getProfits`という関数を呼んでいます。スクリプト側を見てみましょう。

|![ap026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/66503027-4579-1290-887b-3796ee403941.png)|
|:-:|

モデル収益データと支出データを渡し、それぞれの計算結果を戻している様子がわかります。
この結果を利用してグラフ上に表示している、ということになります。

また、この関数は配列を受け取ることを想定した作りになっていますが、その配列を指定するテクニックがこの記法になります。
`@datasource.items..Revenue`

文章だと伝える自信が無いので、図で表現してみます。

|![ap031.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/428514bd-066b-817b-2ab0-e3784bfa5064.png)|
|:-:|

指定したフィールドだけで構成された配列に変換するという形ですね。
一番最後に解説しましたが、今回見てきたグラフのデータバインドはだいたいこの記法で配列化して渡しています。
各ウィジェットにバインドする時に、モデル自体を渡すべきなのか、シンプルな値の配列にして渡すべきなのか意識しながら進めると、思い通りの結果を得られることが多いのでオススメします。

以上です。良いApp Makerライフを!