【kintone】クロス集計表を作ってみる（その１）

kintoneのクロス集計表を使ったことがありますか？

クロス集計表は**kintoneのデータを2方向で表現できる表**です。

今回はクロス集計表を作るためのアプリの準備をしてみたいと思います！
※次回、実際にクロス集計表を作ってみる~~予定です👀~~ 書きました↓
次回：[【kintone】クロス集計表を作ってみる（その２）](https://qiita.com/juri_don/items/53e2d3e47d5d0c5a5000)

※データの方向について詳しくは、
@j-kume さんの
[kintoneアプリのデータは1方向に伸ばしましょう！](https://qiita.com/j-kume/items/179d6f85f3c69b804622)をご参照ください

# クロス集計表とは？

たとえばこんな情報があった場合、どんな表を描きたいでしょうか？

**国語のテスト**
たろう：80点　　じろう：90点　　さぶろう：0点

**算数のテスト**
たろう：80点　　じろう：80点　　さぶろう：100点

**理科のテスト**
たろう：50点　　じろう：50点　　さぶろう：100点

ぱっと思い浮かぶのはこんな表ではないでしょうか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/20b3bcca-549d-448d-62c4-22aaa29e3b19.png)

これが、kintoneで言うところのクロス集計表です。
データが縦と横の2方向に伸びる表です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/633a4a8c-4692-ce8d-4307-cb7f526c46cd.png)

このような表は、わざわざクロス集計表の機能は使用せず、kintoneでそのままのアプリを作れば良いような気がしますね。

## クロス集計表機能を使わない、データが2方向に伸びそうなアプリ
というわけで、最初から2方向にデータが伸びそうな、クロス集計表ぽいアプリを作ってみました。

名前と、各教科の点数と合計（計算フィールド）を配置しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/12556e6e-2d4d-c983-12be-b7a55e127666.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/65f2c4dd-f149-da86-5cac-c585f2f74260.png)

問題なさそうです。
縦方向にデータを追加する、つまり、たくさん人が増えてもその都度レコードを追加すれば良さそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/042fe953-6d63-d9bd-efa8-3c178166db50.png)


しかし、テストの科目が増えた場合はどうしましょう？
国語、算数、理科、社会、英語、美術、音楽、体育、技術・・・・などなど、

科目が増えると、横方向にデータを増やさなくてはいけません。
となると、アプリのフィールドを追加する必要があります。
また、合計の計算式も変更しなくてはいけません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/6c48696f-18ae-99bb-159c-07a64f63bd68.png)

保存して一覧（すべて）を確認すると、フィールドの列は追加した順に並ぶため、
合計より右に社会と英語が並んでしまいました。
ということは、横方向にデータを伸ばした場合、一覧も新規作成したり修正する必要がありそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/5c29861a-4da7-cafa-9fc9-e51a789fe310.png)


このように、kintoneは2方向に伸びるデータを持つとなると、
縦方向だけでなく横方向にデータを追加する必要が出てきます。すると

* アプリの設定でフィールドを増やさないといけない
* フィールドを増やすと「合計」の計算式も修正する必要がある
* 一覧も新規作成したり修正する必要がある

というちょっと面倒くさい作業が発生してしまいます。

でも2方向にデータが伸びる表が欲しいです。
そんな時にはグラフ機能の「クロス集計表」が役に立ちます。

## データが1方向に伸びるアプリでクロス集計表をつくる

ではどうすれば、データが1方向に伸びるアプリでクロス集計表を作ることができるのか？？
大きく分けると2つの手順で作成することができます。

* 2方向に伸びたデータを1方向に伸びるデータに変形させる
* グラフの設定でクロス集計表を作成する

# 2方向に伸びたデータを1方向に伸びるデータに変形させる

前置きが長くなりましたが、今回やりたいのはコレです。
2方向に伸びたデータを、1方向に伸ばす？どうすればいいでしょう？

先程から登場している表ですが、もう一度見てください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/90631004-56a0-7f88-11a5-27b46bd3714f.png)

この表は、↓のように書き換えることができます。
データが伸びる方向が1方向になっているのが分かりますでしょうか？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/ae4a5c09-e173-673a-df6b-fb02b6f21f56.png)


2方向に伸びたデータを1方向のみにするには、

* **縦**方向のデータの仲間は何か考え、フィールドにする
* **横**方向のデータの仲間は何か考え、フィールドにする
* 表の中の**数字**は何を表す数字か考え、フィールドにする

という手順で3つのフィールドを作るとよいです。
縦、横、数字がそれぞれ下の表のように対応します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/38d2f1f2-01f7-7bf8-4eef-75d38cf75668.png)


というわけで、新しくアプリを作成してやってみましょう。

## 縦方向のデータの仲間をフィールドにする

まず縦方向のデータの仲間をフィールドにします。

縦方向は
たろう、じろう、さぶろう、・・・・。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/b059b163-3ce9-7e40-5269-8cb9fb7210cf.png)

これらは人の名前です。

**文字列(1行)　「名前」フィールド**　

を新しいアプリに追加しましょう。


## 横方向のデータの仲間をフィールドにする
続いて、横方向のデータの仲間をフィールドにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/ba1c409c-60a7-4990-59d3-a85e84155b95.png)

横方向に伸びているデータは国語、算数、理科、・・・。
何の仲間かと言われたら「**テスト科目**」の仲間ですね。

というわけで、
**文字列(1行)　「テスト科目」フィールド**　

も追加します。

## 表の中の数字は何を表す数字をフィールドにする。

表の中の数字は何を表すでしょう？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/50d0d163-5472-cf9f-6fbf-80d00304ce29.png)

「点数」ですね。
というわけで、
**数値　「点数」フィールド**　
を追加します。

グラフの機能で集計をするため、「合計」のフィールドは必要はありません。

## 作成したアプリ
3つのフィールドの設定は↓です

| フィールド種類 | フィールド名 | 
|:-:|:-:|:-:|
| 文字列(1行)  |名前   |   
| 文字列(1行)  |テスト科目   |   
| 数値  |  点数 |   

フィールドは3つだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/a0661010-da5a-be1d-c0dd-79942e571e30.png)

このアプリに、下記のレコードを入力します。
Excelにコピペしてインポートでもアプリ作成でもOKです。

| 名前 |科目 | 点数 |
|:-:|:-:|:-:|
| たろう  | 国語  |80   |
| じろう  | 国語  |90   |
| さぶろう  |   国語|0   |
| たろう  |  算数 |  80 |
| じろう  |  算数 |   80|
|  さぶろう | 算数  |  100 |
|  たろう |  理科 | 50  |
|  じろう |  理科 |  50 |
|  さぶろう | 理科  |  100 |


こんな感じになったでしょうか！？
今回はここまでですが、次回は実際にクロス集計表を作ってみたいと思いますので、
このアプリは消さずに残しておいてくださいね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536148/c2e946e5-cdfb-a189-876c-c399983f7eba.png)

# まとめ

kintoneは2方向に伸びるデータを扱うのが苦手なので、
データは1方向に伸びるようにして、2方向に伸びたデータを見たい場合はクロス集計表を使いましょう。
というお話と、2方向に伸びたデータを1方向にする方法をざっくりと紹介しました。

次回は今回作成したアプリでクロス集計表を作ってみたいと思います！
読んでくださってありがとうございました！ﾉｼﾉｼ