ノンビン塾～エンジニアとしての成長記録5～

## ノンビン塾について
そもそもノンビン塾ってなに？
→[過去の記事参照](https://qiita.com/kenny_engineer/items/fc3a45ef2c123ce49495)

## 前回の課題提出
### テーマ
　閏年のコードを`elseif` を使って簡略化する

### 回答
　elseifは使った事がなかったので、まずはどういったものなのか調べてみた。

>if (条件式①) {
>  記述した条件が満たされた場合の処理
>} else if (条件式②) {
>  ①が満たされず②の条件が満たされた場合の処理
>} else {
>  ①も②満たされなかった場合の処理
>}

ふむふむ。何となくイメージはつかめた。
ではやってみよう。

```calc.js
(function() {
  'use strict';
  kintone.events.on(['app.record.create.submit','app.record.edit.submit'], function(event) {
    let str = '';
    let num = Number(event.record.年.value)
     if (num%4 !==0){
        // 4で割り切れない
        str = '平年です'
      } else if (num%100 !==0){
        // 100で割り切れない 
        str = '閏年です'
      } else if (num%400 ===0){
        // 400で割り切れる
        str = '閏年です'
      } else{
        str = '平年です'
      }
    event.record.結果.value = str;
    return event;
  });
})();
```
少しずつ修正しながらも完成させた。
テストしてみてると、無事に機能した。
だが、合っているか自信がなかったので、ウッチーと別日に答え合わせを実施。笑
結果、全く同じコードだったので、「あ、やっぱり合ってるんだな！」と自信がついた。

ノンビン塾当日、
よっしゃ、見せたるぜ！
と自信満々に見せると、・・・（以下フィードバックに続く）

### フィードバック
* もう少しコード削れるよ。
→最初のstrに「平年です」を入れると、最後のelse以降は削除できる。
```calc.js
(function() {
  'use strict';
  kintone.events.on(['app.record.create.submit','app.record.edit.submit'], function(event) {
    let str = '平年です'; //平年ですと追記
    let num = Number(event.record.年.value)
     if (num%4 !==0){
        str = '平年です'
      } else if (num%100 !==0){
        str = '閏年です'
      } else if (num%400 ===0){
        str = '閏年です' //else以降を削除できる
      // } else{
      //   str = '平年です'
      }
    event.record.結果.value = str;
    return event;
  });
})();
```
完璧だと思った回答も、一瞬でコードが短くなり、
開いた口が塞がらなかったのはここだけの話。。笑

なんと、まだ削れるらしい。
なるほど。
こうやってスキルが上がっていくと、
コードが見やすく・短くなっていくのか。

非常に面白い。

## 今回の講義
【テーマ】
　Kintoneの顧客アプリをAPIたたいて取得してみよう！
　
【事前準備】
　・Kintoneの開発者ライセンス入手
　　⇒アプリ：顧客リスト（＠Kintoneアプリストア）
　・プラグイン追加：JSEdit for kintone

### １）まずは、Kintoneのリファレンスを読もう。
いきなりコードを書き始めるのではなく、
顧客データから特定のものだけ取得するには、何をどうすれば良いのか。
を調べるのが最初の一手。

[このページ](https://developer.cybozu.io/hc/ja/articles/202331474#step2)を熟読する必要がある。

自分の為にも、再度念押ししておこう。 **「熟読」** である。
→後述するが、私は最初熟読しなかった為、少しハマってしまった。

なお、今回の場合重要なところは、
「リクエストパラメータ」と「演算子」である。
![スクリーンショット 2022-06-14 223317.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627323/3167741a-ee92-6a65-a598-0fe6d811b23d.png)

### ２）顧客アプリからレコード番号10未満のデータを取得してみよう
リファレンスをみながら、以下のqueryのところにコードを入れてみる。

```list.js
(function() {
  'use strict';
  kintone.events.on('app.record.index.show', function(event) {
    const body = {
      'app': kintone.app.getId(),
      'query': 'レコード番号 < 10', //ここにレコード番号10未満を指定
      'fields': []
    };
    kintone.api(kintone.api.url('/k/v1/records.json', true), 'GET', body, (resp) => {
      // success
      console.log(resp);
    }, (error) => {
      // error
      console.log(error);
    });
  });
})();

```
この状態で保存ボタンをクリックし、アプリ：顧客リストを開く。
キーボードのF12をクリックし、コンソールを表示させる。
そうすると、console.log(resp)で取得したデータを表示させることができた。
![スクリーンショット 2022-06-14 224141.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627323/ffc6b691-8a2e-e3e0-6500-4354056da321.png)
やったーー！

### ３）顧客アプリから会社名が林田商会のデータを取得してみよう
会社名が林田商会。が前提であるため、以下のようにする。
```list.js
(function() {
  'use strict';
  kintone.events.on('app.record.index.show', function(event) {
    const body = {
      'app': kintone.app.getId(),
      'query': '会社名 = "林田商会"', //　＝の演算子を使用する。
      'fields': []
    };
    kintone.api(kintone.api.url('/k/v1/records.json', true), 'GET', body, (resp) => {
      // success
      console.log(resp);
    }, (error) => {
      // error
      console.log(error);
    });
  });
})();

```
コンソールをみてみると、以下のようにきちんと取得できていた。
![スクリーンショット 2022-06-14 224742.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627323/a0d908a2-27c7-f35a-7cce-5e88543500d2.png)

### ４）顧客アプリから電話番号が090-××××-××××のデータを取得してみよう
これでハマってしまった。
まず、３）でやった形を真似てやってみた。
フィールドコードは【TEL（数字のみ）】である事をまず確認。
![スクリーンショット 2022-06-14 225556.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627323/74df4a3b-b97a-7be0-30f0-4873dd03cb96.png)
以下コードでやってみた。

```list.js
(function() {
  'use strict';
  kintone.events.on('app.record.index.show', function(event) {
    const body = {
      'app': kintone.app.getId(),
      'query': 'TEL（数字のみ） = "090-××××-××××"',
      'fields': []
    };
    kintone.api(kintone.api.url('/k/v1/records.json', true), 'GET', body, (resp) => {
      // success
      console.log(resp);
    }, (error) => {
      // error
      console.log(error);
    });
  });
})();

```
コンソールにエラーが出た(;'∀')
![スクリーンショット 2022-06-14 225812.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627323/f5647f26-d410-bc49-7c0d-ba0b8102179f.png)

どこがおかしいのか悩んだ。
しばらく悩んでいると、神の声が聞こえた。（ノンビンアドバイス。笑）
#### 「リファレンスをちゃんと読んでみよう」
そう。
実は、私はちゃんと読んでいたつもりでも、
無意識にサラーっと流していたあるキーワードがあった。
これだ。。。
![スクリーンショット 2022-06-14 230112.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627323/baf7ba63-9729-2c8c-774d-e88777d6f687.png)
#### フィールドコード
これが何かを明確に分かっていなかったのだ。
「熟読していなかった。」　

まずはフィールドコードとは何ぞや。と調べてみる。
結果、「TEL（数字のみ）」のフィールドコードは、以下の通りだった。
![スクリーンショット 2022-06-14 230517.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627323/c224d80a-faec-24ce-8b46-2d4e0b3f920e.png)
これか。。。。
ということで、修正し、以下コードで確認。
```list.js
(function() {
  'use strict';
  kintone.events.on('app.record.index.show', function(event) {
    const body = {
      'app': kintone.app.getId(),
      'query': 'TEL = "090-××××-××××"', //TELに修正
      'fields': []
    };
    kintone.api(kintone.api.url('/k/v1/records.json', true), 'GET', body, (resp) => {
      // success
      console.log(resp);
    }, (error) => {
      // error
      console.log(error);
    });
  });
})();
```
そうすると、以下のとおり取得できたーーーーー！！！
![スクリーンショット 2022-06-14 230934.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627323/12aed615-9cc3-34c3-a708-432c9bec29f8.png)

## 感想
今回の学び・気づきは、
* リファレンスはしっかり読もう。熟読！！！！！　超大事！
→今回は、これに尽きる気がする。笑