ローカルHTTPSサーバーとTypeScriptで手っ取り早くkintoneのカスタマイズ開発環境をつくる

ある日突然上司から、きみプログラミングできるらしいからうちで使ってるkintoneのカスタマイズをやってみてよと言われたとします。

たぶんこのあたりの情報を読みながら始めることになるのだと思いますが、

ちょっと待てと、まず何をインストールして始めたらええねん、ってなると思います。

そこでこの記事を読めば、ある程度JavaScriptの知識のある人であれば、ローカルのHTTPSサーバーを立てて手っ取り早くkintoneのカスタマイズ開発ができるようになります。Macから1分もかからないでしょう。なぜローカルのHTTPSサーバーを立てるかというと、変更を即時に反映させながらデバッグしたいからです。そして今どき素のJSを書きたくないので、TypeScriptで開発できるようにします。ついでにCSS Modulesも使えるようにします。

これをダウンロード

とりあえず何も考えず、こいつをgit cloneしてください。

git clone https://github.com/ryokdy/kintone-local-https.git
cd kintone-local-https
npm install

SSL証明書を作成する

mkcertをインストールします。

Macの場合

brew install mkcert

Windowsの場合

choco install mkcert

Windowsの場合はこのへんも参考にしてみてください。kintoneカスタマイズの開発はコマンドラインを使うことが多いので、WSL2上で開発するのがやりやすいと思います。

証明書を生成する

certフォルダに、localhot.pemとlocalhost-key.pemのふたつのファイルを生成します。

mkcert -install cd cert mkcert --key-file localhost-key.pem --cert-file localhost.pem localhost 127.0.0.1

はい、これだけで準備は完了です。

デバッグする

npm run dev

実行すると、dist/devフォルダにファイルが生成されます。kintoneの「アプリの設定」>「JavaScript / CSSでカスタマイズ」を開いて、生成されたJavaScriptファイルとCSSファイルのURLを指定します。

JavaScriptファイル

https://localhost:8080/dist/dev/desktop.js

CSSファイル

https://localhost:8080/dist/dev/desktop.css

JavaScript___CSSでカスタマイズ.png

設定を保存するとこんなふうにヘッダーに要素が現れます。

入居申込アプリ_-_レコードの一覧.png

src/dektop配下のindex.tsやindex.module.cssを編集すると、変更はただちに反映されます(ホットリロードではないのでブラウザはリロードしてください)

ビルドする

npm run build

本番環境のファイルをprodフォルダに出力します。

はい、簡単でしたね。あとはRESTクライアントでも何でも好きなライブラリを入れて、開発したらいいと思います。

何をやっているか

esbuild & TypeScript

ソースコードはesbuildでバンドルしています。Webpack? もう開発終了してますから。最近はViteが流行りらしいですが、Viteは厳密にいえばバンドラーではなくフロントエンド開発のフレームワークですし、開発モードではNative ESMになってしまうのでesbuildを使っています。kintoneでそんな大量のビルドをするはことないですが、Webpackの100倍速いらしいです。TypeScriptのトランスパイルもesbuildがやってくれます。

CSS Modules

kintoneのカスタマイズ開発では、他のプラグインなどとクラス名が被らないように注意しないといけません。なのでCSS Modulesが安全かなと思います。どうしてもTailwind CSSを使いたい!っていう人はプリフィクスをつけてクラス名が被らないようにしましょう。

CSS Modulesはこんなふうに使えます。

index.module.css

.headerElement { background-color: #282c34; color: white; padding: 0 8px; text-align: center; }

index.ts

import styles from './index.module.css';

const divElement = document.createElement('div'); divElement.textContent = 'Hello World'; divElement.classList.add(styles.headerElement);

まとめ

一昔前はIEの対応のためにBabelが必要だったり、簡単にHTTPSサーバーが立てられないのでDropboxやS3にちまちまアップロードして開発するのが主流(本当の話)だったりしたのですが、今はずいぶんシンプルな構成でkintoneのカスタマイズ開発ができるようになりました。ライブラリなども充実しているので、kintoneのカスタマイズ開発を手軽に行う環境が整ってきたのではないかと思います。突然上司からkintoneのカスタマイズやってみてよと頼まれたあなたに、この記事が役に立てば幸いです。