Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
モダンな開発環境を用いた カンタン/安全なカスタマイズ開発 サイボウズ株式会社 kintone DXチーム tasshi
Slide 2
Slide 2 text
2 tasshi (田代 雅治) サイボウズ株式会社 kintone DXチーム所属 • プロダクトオーナー • エンジニア 趣味 • サイクリング
Slide 3
Slide 3 text
3 kintone DXチーム kintoneエコシステムの開発者により良い Developer eXperience (DX)を提供するチーム 現在は2つのOSSを主に開発・保守 • kintone/js-sdk • kintone/cli-kintone
Slide 4
Slide 4 text
4 kintone/js-sdk kintoneの拡張機能・連携サービスを 開発しやすくするライブラリ・支援ツール群 • APIクライアント • プラグインテンプレート • プラグイン・カスタマイズアップローダ など
Slide 5
Slide 5 text
5 kintone/cli-kintone (v1) kintoneを操作するためのコマンドラインツール レコードのインポート/エクスポート/削除が可能 • データバックアップ(添付ファイル含む) • 他基幹システム連携 など ※v0系は2023年10月末にメンテナンス終了
Slide 6
Slide 6 text
6 Cybozu Inside Out https://blog.cybozu.io/entry/2023/06/09/113000
Slide 7
Slide 7 text
7 それではセッション開始です! お待たせしました
Slide 8
Slide 8 text
8 このセッションでは npmエコシステムやサイボウズが提供している 便利なツール・ライブラリをフル活用した カンタン/安全なkintoneカスタマイズ開発を 体験しながら学んでいただけます!
Slide 9
Slide 9 text
9 Resume 知識編 – ツールの紹介(30min) 実践編 – カスタマイズを開発 (60min)
Slide 10
Slide 10 text
10 ツールの説明 知識編
Slide 11
Slide 11 text
11 カンタン/安全なカスタマイズ開発 カンタン: • 作業が自動化されている • コードの記述量が少ない など 安全: • 人為的ミスが発生しにくい • コードの品質が保たれている など
Slide 12
Slide 12 text
12 紹介するカスタマイズ開発フロー コーディング ビルド テスト 反映 APIを少ない記述量で操作 静的解析でバグを早期発見 1つのJavaScript ファイルに変換 kintoneアプリに 自動アップロード 自動テスト • TypeScript • ESLint/Prettier • @kintone/rest-api-client • @kintone/dts-gen • Vite • Vitest • @kintone/customize- uploader +これらのサイクルを高速で実行できること
Slide 13
Slide 13 text
13 TypeScript JavaScriptの代替言語 (AltJS)の1つ JavaScript + 型チェック • 変数名の間違いや異なる型への代入に気付ける • エディタの補完による快適コーディング JavaScriptと文法がほぼ同じ(スーパーセット) • 学習コストや導入コストが低い
Slide 14
Slide 14 text
14 ESLint/Prettier ESLint: リンター • バグの原因になる構文などを指摘・修正 • var禁止、未使用変数禁止 など Prettier: フォーマッター • インデントや改行を統一 ESLint + Prettierを併用することが多い =>自動的に開発者間で一貫した書き方ができる
Slide 15
Slide 15 text
15 @kintone/rest-api-client kintone REST APIをJavaScriptから 簡単に操作するためのライブラリ • レコード一括処理のメソッド • リクエスト/レスポンスの型サポート ※Node.js/ブラウザ両方で使用可能
Slide 16
Slide 16 text
16 @kintone/dts-gen kintoneアプリからTypeScript向けの 型定義ファイル(d.ts)を生成するCLIツール メリット • JS APIで取得したレコードに型を指定可能 • イベントハンドラなどをより安全に書ける ※生成した型はrest-api-clientでは使用不可
Slide 17
Slide 17 text
17 モジュールバンドラー 複数のJSファイルの依存関係を解決して 1つのJSファイルに変換するツール メリット • 大規模プロジェクトを複数JSに分割して開発できる • 異なるカスタマイズ・プラグイン間の変数アクセスを最小にできる • ダウンロード時のパフォーマンスが向上する(HTTP/1.1) Browserify, Webpack, Rollup, Viteなど → 今回は設定が簡単なViteを使います!
Slide 18
Slide 18 text
18 自動テスト プログラムによって実行される試験手順 メリット • 繰り返し発生するテストの自動化 • 複数パターンで検証が必要なテストの効率化 • 人為的ミスを防止 後述のCI/CDサービスを組み合わせることで 継続的にコードの品質をチェックできる →今回はViteと相性の良いVitestを使用します!
Slide 19
Slide 19 text
19 @kintone/customize-uploader kintoneカスタマイズを アップロード/ダウンロードするCLIツール メリット • カスタマイズのデプロイを自動化 • 開発中のカスタマイズを素早く反映 • アプリのカスタマイズ設定をバックアップ
Slide 20
Slide 20 text
20 GitHub Actions GitHubが提供するCI/CDサービス CI/CD ≒自動化プロセスによってソフトウェアの検証・デプ ロイを継続的に行う手法 コミット・プルリクエストなどをトリガーに指定した 自動処理を実行可能 • 自動試験やデプロイなど
Slide 21
Slide 21 text
21 kintoneカスタマイズを 作ってみましょう! 実践編
Slide 22
Slide 22 text
22 テーマ:顧客管理アプリの自動更新 案件管理アプリのレコード追加・更新時に 顧客管理アプリの総費用フィールドを自動更新 案件管理 アプリ 顧客管理 アプリ レコード追加・更新 ※総費用フィールドを追加 (数値) 総費用フィールドを更新
Slide 23
Slide 23 text
23 セットアップ 以下のリポジトリの「セットアップ」を実施 https://github.com/mshrtsr/kintone-devCamp-Boost-2023
Slide 24
Slide 24 text
24 1. 必須ツールのインストール • Node.js • Visual Studio Code (VSCode) • Git (任意)
Slide 25
Slide 25 text
25 2. リポジトリのセットアップ リポジトリをダウンロード • 「Code」→「Download ZIP」を選択 • ダウンロードしたZIPファイルを展開 リポジトリをセットアップ cd kintone-devCamp-Boost-2023 npm install npm run setup
Slide 26
Slide 26 text
26 3. VSCodeのセットアップ 1. VSCodeでリポジトリをオープン 2. 拡張機能(Extensions)メニュー 3. “@recommended”と入力 4. プラグインをインストール
Slide 27
Slide 27 text
27 4. アプリの作成 kintoneアプリストアにアクセス ↓ 「営業支援パック」を追加 ※案件管理アプリにカスタマイズを追加します
Slide 28
Slide 28 text
28 5. 認証情報・アプリ情報の設定 以下のファイルを編集 .env • KINTONE_BASE_URL: kintone環境のURL • KINTONE_USERNAME: ユーザー名 • KINTONE_PASSWORD: パスワード customize-manifest.json • app: カスタマイズを追加するアプリID
Slide 29
Slide 29 text
29 6. 動作確認 カスタマイズをビルド・デプロイ npm run build npm run upload アプリのレコード一覧画面で ダイアログが表示されたら成功!!
Slide 30
Slide 30 text
30 それでは開発スタートです! いつでも質問OKです!
Slide 31
Slide 31 text
31 開発手順 1. 顧客管理アプリに総費用フィールドを追加 2. 案件管理アプリにイベントハンドラを追加 3. 案件管理アプリから関連するレコードを取得 4. レコードから費用を集計 5. 顧客管理アプリの総費用フィールドを更新 ※リポジトリのREADMEのTipsも参照
Slide 32
Slide 32 text
32 型定義ファイル(.d.ts)の生成 カスタマイズで操作するアプリの型定義を生成 npm run generate:dts アプリID 今回は以下の2つのアプリの型定義ファイルを使用 • 顧客管理アプリ • 案件管理アプリ ※READMEのTips 2を参照
Slide 33
Slide 33 text
33 ビルドプロセスの起動 以下のコマンドを実行 npm run start ファイルの変更時にカスタマイズが 自動的にビルド・アップロードされる
Slide 34
Slide 34 text
34 1. 総費用フィールドを追加 顧客管理アプリに数値フィールドを追加 ※フィールドコードは「総費用」
Slide 35
Slide 35 text
35 2. イベントハンドラを追加 案件管理アプリにイベントハンドラを追加 • app.record.create.submit.success • app.record.edit.submit.success ✅ イベントオブジェクトの型を指定する ※READMEのTips 1を参照
Slide 36
Slide 36 text
36 3. 関連するレコードを取得 追加・更新されたレコードと 顧客名が一致するレコードを取得 1. イベントからアプリID・顧客名を取得 2. REST APIで関連するレコードを取得 ✅ レコード取得にはrest-api-clientを使用する ✅ レコードには生成した型定義を反映する ※READMEのTips 2, 3を参照
Slide 37
Slide 37 text
37 4. レコードから費用を集計 取得したレコードから総費用を集計 (あともう少しで完成です)
Slide 38
Slide 38 text
38 5. 総費用フィールドを更新 顧客管理アプリの総費用フィールドを更新 1. 顧客管理アプリの更新対象のレコードを取得 2. 集計結果を反映して更新 ✅ 更新対象のレコードにも型定義を指定 ※READMEのTips 2, 3を参照
Slide 39
Slide 39 text
39 時間の余った方は 追加実装にもチャレンジしてみてください 例 • レコード削除時に再集計する • インライン編集時に再集計する • 再集計実行ボタンを追加する
Slide 40
Slide 40 text
40 終わりに ご参加いただきありがとうございました! 今後のカスタマイズ開発の参考になれば幸いで す。 js-sdk/cli-kintoneへのフィードバックは GitHubのIssueでいつでも受け付けています! ※バグ修正・機能改善に繋がります
Slide 41
Slide 41 text
41 付録 補足情報など
Slide 42
Slide 42 text
42 Vite (ヴィート) 高速動作を特徴とするビルドツール メリット • 開発時は依存モジュールをesbuildで高速に処理 • esbuildはGo製の超高速バンドラ • 設定ファイル無しでも使用可能(Zero config) • 実際には細かい挙動を調整したい場合が多い • webpackと比べて記述量はかなり少なくて済む • rollupプラグインを利用可能 ※今回はライブラリモードのためesbuildは不使用
Slide 43
Slide 43 text
43 Vitest (ヴィテスト) Vite環境のためのテスティングライブラリ メリット • 実行速度が高速 • デファクトスタンダードのJestと互換性 • ゼロコンフィグ