カスタマイズでできること、始め方 - kintone Café 広島 Vol.18@福山


「カスタマイズでできること」は事実を書いています。
「カスタマイズの始め方」は私の解釈ばかりです。


# カスタマイズでできること
### 1. kintone JavaScript API
[はじめようJavaScript第11回 kintone JavaScriptカスタマイズをする](https://developer.cybozu.io/hc/ja/articles/360000387883)を参考にしてください。

以下ができることの例になります。

- [回答の条件によってグループフィールドの開閉を切り替える](https://developer.cybozu.io/hc/ja/articles/207377396)
- [関連レコードの件数を取得するワザ](https://developer.cybozu.io/hc/ja/articles/213209606)
- [カスタマイズビューでレコード毎の差分を表示 - 検針票の場合 -
](https://developer.cybozu.io/hc/ja/articles/115001968743)

### 2. kintone REST API
[REST APIを「叩く」って何？ツール使ったら初心者でも簡単だった](https://kintone-blog.cybozu.co.jp/developer/000270.html)を参考にしてください。

以下ができることの例になります。

- [高度なwebフォームをkintoneに連携！フォームブリッジ](https://developer.cybozu.io/hc/ja/articles/360016337372)
- [kintone コマンドラインツール](https://developer.cybozu.io/hc/ja/articles/202708214)

### 1と2のあわせ技
kintone JavaScript API上でkintone REST APIを実行できます。
つまり、レコード保存時に別アプリの内容を参照する、などの処理が可能になります。

- [安全に在庫管理を行うテクニック2 - リビジョンを試そう -
](https://developer.cybozu.io/hc/ja/articles/115002152143)

### Webhook
WebhookとはWebアプリケーションでイベントが実行された際、外部サービスにHTTP で通知する仕組みです。
詳細は[Webhookって何？を子どもでもわかるように描いてみた](https://kintone-blog.cybozu.co.jp/developer/000283.html)を参考にしてください。

kintoneのWebhookとWebアプリケーションを繋ぐことができる[Power Automate](https://flow.microsoft.com/ja-jp/)や[Zapier](https://zapier.com/home)を利用すればカスタマイズなしでサービス連携が可能になります。

- [kintoneコネクタ（Microsoft Power Automate）を使う前に知っておきたいこと11選](https://developer.cybozu.io/hc/ja/articles/360000361506)
- [Office365 連携！ - Microsoft Power Automateを使ってkintoneのデータをOutlookの予定表に登録する -](https://developer.cybozu.io/hc/ja/articles/360000171006)
- [コーディングなしで超簡単！kintoneのWebhookでGmailに通知する](https://developer.cybozu.io/hc/ja/articles/115000299143)

# カスタマイズが必要になったときの選択肢
### 1. プラグインやサービスを探す
[kintone公式](https://kintone-sol.cybozu.co.jp/integrate/#tab-refine2)
[SmaBiz! kintone プラグインマーケット](https://smabiz.jp/lp/kintone-plugin/)
[ググる](https://www.google.com/search?q=kintone+%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3)


### 2. 誰かに依頼する
[cybozu公式 パートナー一覧](https://topics.cybozu.co.jp/products/partner/?product=kintone&list=0)


### 3. [gusuku Customine](https://customine.gusuku.io/ja/)
プログラミングすることなくカスタマイズできるサービスです。
本当に様々なことができます。プログラムを学ぶ前に一度は試してみることをオススメします。


### 4. 自分でカスタマイズする


# 自分でカスタマイズする場合の始め方


### 開発者用のkintone環境取得
kintone公式HPから申込みできるお試し環境でもkintoneのカスタマイズはできます。
ただ、お試し環境は有効期限が30日なので開発者用の環境（開発者ライセンス）を取得しましょう。
[kintone環境の取得方法 (開発者ライセンス)](https://qiita.com/RyBB/items/73c50f1751ad137ba410)

開発者ライセンスは開発目的にのみ利用できます。
それ以外の場合は[公式のお試し](https://kintone.cybozu.co.jp/trial/)を利用してください。

<font color="red">開発者ライセンスと公式のお試しは同じメールアドレスでは申込みできません。
そのため、開発者ライセンスの申込みはGmailなど公式のお試しでは利用しないメールアドレスでの申込みをオススメします。</font>

### API、developer networkの更新情報フォロー
kintoneは毎月の定期メンテナンスで機能の追加や不具合を改修しています。
利用者向けの情報は[アップデート情報/kintone公式](https://kintone.cybozu.co.jp/update/main/)で、技術者向けの情報はdeveloper networkでアナウンスされています。
非常に重要なので常にウォッチしておきましょう。

技術者向けの情報はdeveloper networkのアカウントを取得していると、更新情報をメールで受け取れるようにできます。
開発者ライセンス取得の過程でdeveloper networkのアカウントを登録していますね。
ログインした状態で以下のページを開くとページ上部に「このセクションをフォロー」というボタンがあるのでクリックしましょう。
[API更新情報/developer network](https://developer.cybozu.io/hc/ja/sections/200129785)

また、developer networkではさまざまなサンプルプログラムを公開しています。
その情報も受け取れるように以下のページもフォローしましょう。
[サイト更新情報/developer network](https://developer.cybozu.io/hc/ja/sections/202364246)


SNSは下記が公式アカウントになります。フォローしておくと何かと便利です。

- [kintone developer JP/Twitter](https://twitter.com/kintonedevjp)
- [キ(リ)ントーン@サイボウズ公式/Twitter](https://twitter.com/cybozu_kintone)
- [cybozu kintone/Facebook](https://www.facebook.com/kintone/)

### Google Chromeのインストール
ブラウザはMozilla FirefoxやMicrosoft Edgeでも良いのですが、オススメなのはGoogle Chromeです。
JavaScriptカスタマイズ時にはブラウザーを使ったデバッグが必要です。
デバッグ時に必要な機能が揃っており、Web上にデバッグ関係の記事が多いのがGoogle Chromeです。
まだインストールしていない人はインストールしましょう。


### developer networkの歩き方
カスタマイズするにあたってdeveloper networkは何十回、何百回と開くことになります。
ブックマークがまだの人はブックマークしておきましょう。
また、どこを見たらよいかわからないという方用にカンタンな解説をしておきます。

- **チュートリアル**  
初心者向けの情報がまとまっています。  
全部見なければカスタマイズを始められないわけではありません。必要なところだけを見ましょう。（詳細は後述）
- **APIドキュメント > kintone API**  
APIリファレンスです。kintoneのAPIの機能や仕様がまとめられています。  
ここは何度も何度も見ることになります。
- **APIドキュメント > User API**  
cybozu.com（ユーザー管理）のAPIリファレンスで、ユーザーの組織情報を取得する場合などに利用します。  
カスタマイズの内容によっては必要になりますが、基本的に利用するシーンは少ないです。  
- **ツール**  
開発者向けのツールをまとめています。（詳細は後述）
- **Tips**  
サンプルコード&ノウハウ集です。  
APIリファレンスだけではわからん！という場合やもっと良いやり方ないかな～と思ったときに見ましょう。
- **コミュニティ**  
kintone開発者の交流の場です。  
わからないことを質問することもできますが、回答があるかはあなたの姿勢次第でしょう。

### はじめの一歩を踏み出す前に
カスタマイズする前の最低限知ってほしい情報をまとめました。

- [開発プラットフォームとしてのkintone
](https://developer.cybozu.io/hc/ja/articles/210064823)
- [kintone開発前によくある質問
](https://developer.cybozu.io/hc/ja/articles/213504206)
- [セキュアコーディング ガイドライン
](https://developer.cybozu.io/hc/ja/articles/201919400)
- [kintone JavaScript コーディングガイドライン](https://developer.cybozu.io/hc/ja/articles/201793484)
- [JavaScriptでセキュアなコーディングをするために気をつけること
](https://developer.cybozu.io/hc/ja/articles/201850320)

### はじめの一歩
以下のチュートリアルから始めましょう。

- [はじめようJavaScript](https://developer.cybozu.io/hc/ja/articles/115002336526)
- [はじめようkintone API](https://developer.cybozu.io/hc/ja/articles/115002336526)

プログラミング経験者などですでにわかっている部分は飛ばしても大丈夫です。
「はじめようkintone API」の第1回～第4回は必ず目を通すようにしてください。
kintoneカスタマイズ特有の情報が盛りだくさんです。

カスタマイズビューやREST APIなど開発したいカスタマイズと関係ない部分も飛ばしても大丈夫です。
ただ、カスタマイズビューという機能があることは知っておいたほうが良いかもしれません。


### 動かない、エラーが発生する場合
プログラムが期待通りに動かない場合はデバッグしましょう。

- [動かない？そんな時はデバッグをしてみよう！入門編](https://developer.cybozu.io/hc/ja/articles/207613916)
- [Google Chrome 開発者ツールのTips集 -kintone開発特化編-](https://developer.cybozu.io/hc/ja/articles/360033708051)


### 次のステップに進む前に
JavaScriptカスタマイズではJavaScriptファイルをkintoneのアプリに適用する必要があります。
これが割と面倒なので早めに以下の記事を参考にして楽な方法に移行しましょう。
[kintone カスタマイズファイルのアップロード方法まとめ](https://developer.cybozu.io/hc/ja/articles/360030433312)

npmがわからない人は方法1 or 4、npmが分かる人は方法2 or 3がオススメです。


### 次のステップ
チュートリアルは終わりましたか？
次はカスタマイズしたいと考えるようになったきっかけのカスタマイズを作り始めましょう。
目標が遠すぎる場合、まずはその一部を作ることを目指しましょう。

中にはJavaScriptの知識がまだ不安だから、本を買って・・・という人もいるかもしれません。
時間に余裕がある、体系的に学びたい、という人はそれでも大丈夫です。
時間に余裕がない人は目的のカスタマイズを作ることを目標に、必要な時に本を参考にするのが良いと思います。

### その他の勉強方法
誰かに教えてもらいたい、という場合は以下を参考にしてください。

- [cloud university](https://clouduniversity.jp/kintone/)  
体系的にkintoneのカスタマイズを学びたい場合に有効です。有償です。
- [kintone devCamp](https://kintonedevcamp.connpass.com/)  
サイボウズ主催の勉強会です。無償ですが学べる範囲は限定的です。


### 困ったとき
APIの仕様は[Cybozu 公式](https://faq.cybozu.info/alphascope/cybozu/web/kintone/Detail.aspx?id=1763) からお問い合わせください。

その他の問い合わせ（例：動かない、どうしたらいい）先はありません。
が、[developer networkのコミュニティ](https://developer.cybozu.io/hc/ja/community/topics)で質問するとアドバイスが貰えるかもしれません。

### コミュニティに書き込む前の心構え
コミュニティは **有志のエンジニアによって運営** されています。
回答する人はお金を貰っているわけでも、暇だから回答しているわけでもありません。

回答してくれる人への感謝の気持ちを忘れないようにしましょう。
また、コミュニティは支え合いによってなりたっています。
質問するばかりではなく、回答できるものがあれば回答しましょう。

そこで、気持ちよく回答して貰える可能性を高めるためのチェックシートを用意しました。

### コミュニティに書き込む前のチェックシート
1. 過去の問い合わせを検索しましたか？  
よくある問い合わせがまとめられています。同じ質問がないか見ましょう。  
[コミュニティの回答に引用される記事まとめ【kintone版】](https://developer.cybozu.io/hc/ja/articles/360024712692)
2. 過去の問い合わせを検索しましたか？  
同じような問い合わせがあるかもしれません。検索しましょう。
3. ベストを尽くしましたか？  
「時間がないから、書き込んじゃえ！」はNGです。  
時間がないのであれば[サイボウズ公式 パートナー一覧](https://topics.cybozu.co.jp/products/partner/?product=kintone&list=0)を検索して、有償で対応してもらうことを考えましょう。

### コミュニティに書き込む時のチェックシート
1. 他の人の書き込みを見る  
どういう内容がわかりやすいか、どういう内容にコメントが付いているか（付いていないか）を見ましょう。
2. 質問の内容がわかるタイトルをつける   
良い例：レコード保存時のイベントで添付ファイルが取得できない  
悪い例：JavaScriptカスタマイズが動かない  
3. 本文は詳しく、わかりやすく  
回答する人はエスパーではありません。  
あなたは何をしたいのか、何を試したのか、その結果どうなったのか、を詳しく書きましょう。  
ここで詳細を省略するとコメントがつかない、ついたとしてもやり取りが増えて結局は時間がかかることになります。  


### gusuku Boostone
コミュニティはちょっと・・・
有償でもいいから質問先がほしいという場合は[gusuku Boostone](https://boostone.gusuku.io/)があります。
gusuku Boostone(グスク ブーストーン)は、kintoneによるシステム開発・業務改善について、相談・開発サポートを行う、サブスクリプション型のSIサービスです。
いくつかプランがあり、その中にJavaScriptについて相談できるプランがあります。


### さらなる高みへ
ぜひ自分の学びをアウトプットしましょう。
アウトプットすることで学びを整理できますし、さらにインプットを増やすことができます。
アウトプットの方法は何でも構いません。例えば以下のようなものがあります。

- [kintone Café](https://www.kintonecafe.com/)  
楽しく学び・教え合うことで、kintoneの魅力や活用法をみんなで共有するための勉強会コミュニティです。  
全国各地で開催されています。参加、登壇してみましょう。  
- [Qiita](https://qiita.com/search?q=tag%3Akintone)  
この記事のようにkintoneについての学びを共有しましょう。
- [Twitter](https://twitter.com/search?q=kintone&src=typed_query)  
kintoneについてツイートしている人が大勢います。  


### 開発者向けツール
kintoneの簡単なカスタマイズはできるようになりましたか？
となれば次のステップを踏み出すときです。
開発者向けツールを使いこなして、開発効率をアップさせていきましょう。
[kintoneの開発者ツールまとめ](https://qiita.com/potara/items/28ec42bc9a468cdcc0f4)を参考にしてください。


### 認定資格
kintoneには[認定資格制度](https://cybozu.co.jp/kintone-certification/)があります。
その中のCustomization Specialistが開発者向けの資格になります。力試しに是非。（私は1回落ちました）
※受験にはAssociate資格を取る必要があります。


### そして伝説へ...
[kintone Evangelist](https://www.kintone-eva.com/)という制度があります。
> あふれんばかりのkintoneへの愛と豊富な知識や経験を持ち、
> kintoneのあらゆる可能性をオープンな場で、公開・発信し続ける 個人を対象にサイボウズが公認する制度です。

20名のkintoneEvangelistがそれぞれの個性を活かしながら精力的に活動されています。（2020年2月時点）
興味があれば是非応募してください。

### 最後に
この記事がkintone活用の手助けになれば幸いです。