みんなで育てて行きたい！kintone_tools.jsのご紹介！

**この記事は「[kintone Advent Calendar 2018](https://qiita.com/advent-calendar/2018/kintone)」の13日目の記事です！**


ども、株式会社AISICの久米です。
福岡でkintoneエバンジェリストしています。
Qiitaは初めて書くんですけど、頑張って書いてみます！

kintoneでのjavascriptカスタマイズをちょっと楽＆きっちりさせるためのjavascriptライブラリを作ったので、そのご紹介です！

# はじめに…
kintoneのカスタマイズを、かれこれ5～6年位やってきてまして、ライトな開発からヘビーな開発まで結構な案件を取り組んできました。

開発をやっていく中で徐々に知見が溜まってきて、自分なりの定石ができてきまして、結果的に毎回同じようなコードを書く訳ですよ。

で、俺々ライブラリを作っていたのですが、みんなで使えた方が幸せじゃね？？って気付いたこともあって、みんなで使って、みんなで育てていけるといいなとの思いから、Githubに公開しちゃいました！

**[Github]** [kintone_tools](https://github.com/j-kume/kintone_tools)


最近のkintone界隈では、**NoCode**や**LowCode**が流行っていますが、やはり自分でコードを書いた方がいいんじゃないかなと思うことは良くありますし、[TENJIKU](https://www.ictcom.jp/training/tenjiku/)という、kintoneの開発初心者向けの講座の講師をやっているのですが、初心者の方にはコードをイチから書くのは、何かとハードルが高いので、こういう外部ライブラリを使うことで、もっとコードを書いてくれる人が増えるといいなと思っています！


# カスタマイズ時によく起きる困りごと

- **一度振られたレコード番号は二度と振られない**
    - レコードに振られるユニークキーとなるのが、レコード番号だけ。
    - kintoneの仕組み上、仕方ない…。まぁ、当たり前か。
    - ファイルに書き出す(バックアップ)＆ファイルから読み込む(リストア)した時に、レコード番号をキーにして、アプリ間連携してしまったりしていると、爆死します…。

- **ファイルから読み込む時、ルックアップフィールドにしている先の項目が重複禁止にしていないために、ファイルアップロードができない**
    - 【ルックアップ参照元のアプリ】**「値の重複を禁止する」**にチェックを付けたフィールドを作っておかないといけない。
    - 【ルックアップ参照先のアプリ】上記フィールドに対してルックアップの対象項目**「コピー元のフィールド」**に指定しないといけない。
    - これ知らずにアプリを作ってて、いざデータの更新しようとなったときに、めちゃ焦ります...(　= =) ﾄｵｲﾒ

- **レコードタイトルを作るのを忘れちゃう**
    - ある程度一意に指定できるような名称が望ましい。
        - そのレコードの複数のフィールドの文字列を結合したような文字列がいいよね！
    - データ投入が始まった後で、セットしていないことに気付く…。
        - 後でデータの一括更新するのがめんどくさい。
        - ドロップダウンの項目なんかを結合したいと思っても、標準機能ではできない…。つまり、コードを書いてあげないといけません。



# 初期設定として共通的にやってしまう

kintone開発をする時に、**最初から準備**しておいた方がいいフィールドってあるし、それに伴った**お決まり**のjavascriptでのカスタマイズも必要なんだから、そこまで**ワンセット**でやっとくといいよね！！
あと、よく使うような処理は**ライブラリ化**しとくと使いまわししやすいよね！

ということで、

- **uidを作ろう！**
    - これがあれば、レコードを一意に指定できる番号を設定＆取得できるよね！
- **レコードタイトルを作ろう！**
    - どうせ後から欲しくなるなら、最初から作っといた方がイケてるよね！
- **ルックアップキーを作ろう！**
    - 使うか使わないかは分からないけど、後からセットするのはツライ…。だったら最初から作っておいた方がイイよね！
- **kintoneでしか使わない(使えない)様な関数が欲しいよね～**
    - ライブラリ化して、実績あるコードを使いまわした方が、効率的かつ安全だしね！

となった訳です＾＾

# どんなことできるの？？
こんなことができます。
- 画面情報に次のuidをセットする
- 画面情報にレコードタイトルをセット
- 画面情報にlookup_Keyをセット
- Uniq番号生成
- 指定したフィールドのカウントアップ＆ゼロ埋めした値の生成
- 次のuid生成
- 指定フィールド値結合
- 数値を3桁カンマ区切りにする
- パディング
- 丸め処理
- クエリパラメータから値取得

サンプルのアプリテンプレートを使えばこんなアプリを作れます。
<img width="300px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102790/c607708d-aafe-86fb-f412-8bdc74076e40.png" />

# どんな使い方するの？？
この辺は、とにかく、論より実践ですw
kintoneのアプリテンプレートを準備しているので、お試しいただければと＾＾

1. [JSEdit for kintone（プラグイン）](https://developer.cybozu.io/hc/ja/articles/205452653)をインストールする。（インストールがまだの人のみ）
2. [Github上のkintone用のテンプレート](https://github.com/j-kume/kintone_tools/tree/master/kintone_template)をダウンロードする。
3. そのテンプレートを元に、ご自身のkintone環境上にアプリを新規作成する。
4. 新規作成したアプリ内のプラグイン設定からJSEdit for kintoneの設定画面を開き、「_config.js」内のアプリID等を必要に応じて修正する。(勿論、他の手段で修正いただいても構いません。)
5. 新規作成したアプリにて、レコードを新規追加する。
6. 正常に登録できればOK。

**~~※細かい使い方は、Githubのドキュメントを読んでください！(まだ書けてない…TT)~~**
**※まずは使ってください！(ドキュメント書くところまで追い付いていないTT)**


# kintone_js_template について
kintone用のjavascriptテンプレートファイルもgithubに置いていますので、よければお使いくださいませ～
**[Github]** [kintone_js_template](https://github.com/j-kume/kintone_js_template)


# 最後に…
このライブラリは、生まれたばっかりですし、言わば私が欲しいなぁと思っているものだけをとりあえずまとめたような状態です。
kintoneをより使い易くするための仕組みつくりに一人でも多くご協力いただいて、ぜひ皆さんの力でこのライブラリを育ててもらえると嬉しいです！
なので、プルリクとか要望とかもらえると嬉しいです！

と言いつつ、Githubでのリポジトリ管理役って初めてなので、色々と不備が出てくるかと思いますが、ご容赦を…。
精進しますので、長い目で見てやってください＞＜