kintoneの「計算フィールド」の便利な使い方

# はじめに

kintone にはさまざまなフィールドが用意されていて、**文字列 / 数値 / 選択式** などからデータ構造に合わせて好きに選べます。ただ「文字列」と「数値」はしっかり整理してから利用しないと、あとあと **実は計算したかった** とかなったら苦労します。

自動計算でも同じことが言えて、**文字列１行フィールド** を使った自動計算と、**計算フィールド** を使った自動計算では、結果が【文字列型】なのか【数値型】なのか変わってきます。

まぁいろいろとそこらへんに引っかかったわけなのですが、
そんなときに **「計算フィールド」** が意外と便利！と気づいたのでそのメモです。

# やりたいこと

**文字列1行フィールドに記入した数字を使って計算をしたい**

まぁ普通には無理ですね。文字列1行フィールドではデータは【文字列】として扱われるので四則演算はできません。素直に数値フィールドを使いましょうってなると思います。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/894d63e3-38d8-9e80-3031-531e5e294367.png)


# 計算フィールドを挟むと・・・

ただ、こんな状況でも計算フィールドをワンクッション挟めば、、、
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/2eadbe35-edd1-82ed-2db3-736ca7f9db7a.png)
計算できました！
文字列1行フィールドの【文字列】データも、内容が数字だった場合は、計算フィールドでは【数値】に変わるっぽいですね。

当たり前ですがテキストに数字ではなく文字を入れたら動かないです。
![スクリーンショット 2020-06-26 22.27.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/9febe4b1-f9bd-4298-98c3-b58aceec0ff7.png)

ちなみに、文字列１行フィールド以外にもラジオボタンやドロップダウンでも同じ動きをしました。
![スクリーンショット 2020-06-26 21.17.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/27a80c7f-c9e1-61cb-845d-cab43a8d57f9.png)
**計算フィールドクッション**（←とりあえず命名w） 結構使えそう！

ってことで試しに cybozu developer network の **[ラジオボタンを利用してレコード内集計する](https://developer.cybozu.io/hc/ja/articles/360000701283)** が標準機能だけでできるのかチャレンジしてみました！！
※ まぁ、この記事書いてる時点でできることはバレてるんですがwww

# 記事改修！

記事内でやってることは、記事のタイトル通り「ラジオボタンを使った集計」です。
登録するユーザー目線だとフリーテキストより選択式の方が入力が楽だけど、選択式だと計算ができない・・・みたいな問題を JavaScript カスタマイズで解決！って記事ですね。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/4fd54f69-3d8a-9979-de8a-2f6937ac5801.png)

はい！標準機能だけでできちゃいました！！
![スクリーンショット 2020-06-26 21.20.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/166c0030-9aad-63d3-c8ba-eea9b61492ee.png)
※ 「合計（ラジオボタン直接）」ってのは計算フィールド挟まずに直接のやつ。直接だとやはり計算できない。
もちろん、割り算とかもいけます。

・・・

しかし、記事には別のシナリオもあって、こちらは選択肢が数字ではなくローマ字、、、
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/eb4bd25c-dbf3-fb9b-0cfc-2ca178aa8021.png)
これだと計算フィールドに直接値が入れられないから困った困った、、、

・・・

しかし当時はまだなかったあの機能を使えば、、、

はい！標準機能だけでできちゃいました！！ （計算フィールドクッションは使ってないけどw）
![スクリーンショット 2020-06-26 21.29.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/9d16c03d-1744-21a4-df93-6c0a0ed0bda5.png)
４つの計算フィールドの中身はこんな感じ。条件部分をそれぞれS/A/B/Cに変えてもらえればOK！

```
// Sの計算
IF(select_0="S",1,0) + IF(select_1="S",1,0) + IF(select_2="S",1,0) + IF(select_3="S",1,0)
```

当時はまだなかったあの機能とは、、、

<br/>

＿人人人人人＿
＞　**IF関数**　＜
￣Y^Y^Y^Y^Y￣

<br/>

ほんと2020年最大のアップデートですよ！！
（まだ2020年終わっていないのでこれからもっとすごいの来るかもだけど・・・）

# 余談

IF関数はめっちゃ便利だけど、使い所によっては今回の計算フィールドの使い方の方が有利な場合も・・・
→ 「ラジオボタンの集計（数字項目）」を計算フィールドを挟まないでIF関数だけでやろうとすると結構複雑になります。

```
IF(radio_0="1", 1,
  IF(radio_0="2", 2,
    IF(radio_0="3", 3,
      IF(radio_0="4", 4,
        IF(radio_0="5", 5, 0)
      )
    )
  )
) +
IF(radio_1="1", 1,
  IF(radio_1="2", 2,
    IF(radio_1="3", 3,
      IF(radio_1="4", 4,
        IF(radio_1="5", 5, 0)
      )
    )
  )
) +
IF(radio_2="1", 1,
  IF(radio_2="2", 2,
    IF(radio_2="3", 3,
      IF(radio_2="4", 4,
        IF(radio_2="5", 5, 0)
      )
    )
  )
) +
IF(radio_3="1", 1,
  IF(radio_3="2", 2,
    IF(radio_3="3", 3,
      IF(radio_3="4", 4,
        IF(radio_3="5", 5, 0)
      )
    )
  )
)
```

計算フィールドを挟めば↓だけだからね。

```
culc_0 + culc_1 + culc_2 + culc_3
```

## 余談の余談

計算フィールドの表示形式は何を選んでも集計には影響なかった。解せぬ。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/b3901979-7436-09b4-fa7c-65b35fc2f09f.png)

でもAPIでデータ構造みたらちゃんと違ってた。さらに解せぬ。

```
// ラジオボタンで1を選んでいる時
culc_0:
  type: "CALC"
  value: "1970-01-01T00:00:01Z"

// ラジオボタンで5を選んでいる時
culc_0:
  type: "CALC"
  value: "1970-01-01T00:00:05Z"
```

でもでも表示形式を「時間（例：1日2時間3分）」にしてAPIでデータ構造見てみたら一緒だった。さらにさらに解せぬ。

```
// ラジオボタンで1を選んでいる時
culc_1:
  type: "CALC"
  value: "00:00"
// ラジオボタンで5を選んでいる時
culc_１:
  type: "CALC"
  value: "00:00"
```

最後に解せないことがたくさん出てきたけど気力なくなったのでまた今度！

# おわりに

もともとこの記事を書こうと思った経緯は **「最近のアプデでdevnet記事カスタマイズはどれだけいらなくなったのか」**ってのをやりたいなと思ったわけで、まさか計算フィールドに焦点を当てるなんて思ってなかったですw

ただ、使い所によってはIF関数すら凌駕する計算フィールドクッション。。もう少しちゃんと使ってあげよう、と思った今日このごろでした^^

それでは！≧(+･` ཀ･´)≦