公開日:2025-04-02
こんにちは。 花粉と黄砂で喉がガラガラなうっちーです。
このブログを読んでくださっている皆さんは Google Looker Studio をご存知ですか?
Looker Studio は Google が提供しているクラウドベースの無料の視覚化ツールで、以前は Google データポータルとか、Google Data Studioなどと呼ばれていました。数年前に製品名が Looker Studio へと変更されたようです。
kintone自体もグラフや集計などの機能を備えており、これはめっちゃクールな機能だと個人的には思っているのですが、どうしても専用の BIツールなどと比べるとグラフの見栄えが劣るなどと言われがちです。
複数のグラフを一緒に、いわゆるダッシュボード的に見たい場合に kintoneの標準機能では「お知らせ」内に埋め込むという話になるのですが幅がちょっと、、

Looker Studio で レポートを作成して kintoneアプリのカスタマイズビューに埋め込むと以下の感じになります。

あれ? あまり大きく変わらんじゃんという気がしてきたぞ・・笑
別の例にします。
Looker Studio は Google が提供しているため Googleマップを使用した視覚化ができます。
これは他のツールと比べて大きなポイントなのではないでしょうか? 無料で使えるし
(弊社の gusuku Customine を使用していただくと kintone の 「レコード一覧画面で(住所や緯度経度をもとに)Googleマップを表示する」や「郵便番号をもとに地図を表示する」ことが簡単にできます)
Looker Studio の地図にはいくつか種類があるのですが

シルバー(グレー?)やダークといったスタイルを選んだり、航空写真表示にもできます。


今回は Looker Studio で kintone のデータを利用する方法をいくつか紹介したいと思います。
Looker Studio は 現状は kintone への接続を直接サポートしていません。
Looker Studio で kintone のデータを利用する方法は以下の 3つになると思います。
- kintone のデータを ETLツールなどを使用して BigQuery などの Looker Studio が直接サポートしているデータソースへ持っていって使う
- CData Connect Cloud を介して kintone のデータを使用する
- Looker Studio 用の カスタムデータコネクタを実装して kintone へ接続する
1つ目が最もお勧めでスタンダードな方法だと思います。
ただし、つい先ほどに更新された kintone へのデータ変更内容をリアルタイムに反映できるかと言われると難しい場合があるかもしれません。
2つ目は CData さんの Connect Cloud や Connect Server という製品、サービスを使用して kintone へ接続する方法です。
CData Connect Cloud は kintone だけでなく 300以上の多種多様なデータソースとリアルタイムデータ連携を可能にする非常に優れたサービスです。
私も Amazon QuickSight から kintone へ接続する際にはこのサービスを使用しているのですが、現状 Looker Studio からだとうまくデータを取得できない(?)場合があり、(次に示す方法があることもあって) Looker Studio との組み合わせでは私は使用していません。
でも Connect Cloud 自体は将来性もある、とても良いサービスだと思っています。
先日 Google Cloud と CData の連携強化が発表されていましたし、Looker Studio 以外でも利用できる有望な選択肢だと思います。

3つ目は Google Apps Script を使用して Looker Studio で kintone データを扱えるようにする「カスタムデータコネクタ」の仕組みを実装する方法です。
実は 2017年に このブログで、当時は Google データスタジオと呼ばれていたこのサービスから kintone へ接続するカスタムデータコネクタと その利用方法を紹介していました。
ただ、 Google側の仕様(カスタムデータコネクタの仕様)が変わったりして、そのままで動かなくなったり、そもそも「ブログに書いてある通りにやったんだけど上手くいかないからなんとかして」みたいな問い合わせを度々いただくようになっちゃったんですよね・・
なので、
絶対に自己責任でお願いします。
Looker Studio の カスタムデータコネクタの作り方や仕様は https://developers.google.com/looker-studio/connector/build?hl=ja に書かれています。書かれている内容に沿って Google Apps Script で kintone用のコードを書いて deploy します。
この際に プロジェクト マニフェスト・ファイル (appsscript.json) に Looker Studio用の内容を記入しておくと「データポータルのアドオンの URL」という項目が表示されます。(データポータル笑)

この URL をクリックすると、コネクタを承認する画面が表示されます。
「承認」ボタンをクリックして承認操作を行い、 kintoneアプリへ接続するための情報を入力します。


一度コネクタを承認したら、以後は「データに接続」の画面で「kintone」と入力すれば、作成したコネクタが表示されるようになります。

cybozu.comドメイン、 kintoneアプリID、 APIトークンの 3点を入力して「追加」をクリックすると、いよいよ kintoneデータを取得しに行きます。何かが間違っていたらここでエラーが発生します。

kintoneアプリの情報が表示されます。 Looker Studio 上で「住所」や「郵便番号」は専用のデータタイプがありますので、必要があればここでタイプのプルダウンメニューからデータタイプを変更できます。

右上の「完了」をクリックすると kintoneから取得したデータをテーブル形式で表示できます。
あとは「グラフ」のメニューから好きな視覚化パターンを選択して好きなようにやっていくだけですね。
1つのレポート内に複数のグラフを設置することもできます。

良い感じにレポートを作成できたら「共有」のボタンメニューを開きます。
「他のユーザーを招待」で、このレポートを閲覧できる人や編集もできる人を決めます。
「レポートを埋め込む」で埋め込み用の URL を取得したら iframe で kintone に埋め込めますね。

それを実装したあとで、右下の「全画面表示」アイコンクリックで全画面になることを知りました笑
以上が kintone と Looker Studio の連携についてなのですが、「具体的に kintone用のカスタムデータコネクタをどのように実装するんだよ」とか「どういうコードを書くんだよ」という声が今にも聞こえてきそうです。
ここまで引っ張っておいて何なのですが、コードの内容はここには一切示しません。
僕はプログラミングという行為はするけれど、自分ではもうコードは書かないと決めたのです。
僕が Claude 3.7 Sonnet に実装させたカスタムコネクタのコードを改めて生成AIに読み込ませて
「このコードを完全に実装するための完全なプロンプトを生成して」と指示して出てきたドキュメントを掲載します。
どなたかの参考になれば幸いです。
# kintone Looker Studio コネクタ実装プロンプト
## 概要
このプロンプトは、kintoneのデータをLooker Studio(旧Data Studio)で分析できるようにするためのカスタムデータコネクタを最初からフルスクラッチで実装するためのガイドです。実装にあたっては、Googleが提供する「コミュニティ コネクタの作成」ドキュメント(https://developers.google.com/looker-studio/connector/build?hl=ja)を参照しながら進めてください。
## 目的
- kintoneアプリのデータをLooker Studioで可視化・分析できるようにする
- ユーザーが簡単に接続設定できるインターフェースを提供する
- 様々なkintoneフィールドタイプに対応する
- 安全にkintone APIと連携する
## 前提条件
- Google Apps Scriptの基本的な知識
- kintone REST APIの基本的な理解
- Googleアカウント
- kintoneアカウント(APIトークンを発行できる権限が必要)
## 実装手順
### 1. Google Apps Scriptプロジェクトの作成
1. [Google Apps Script](https://script.google.com/) にアクセスし、新しいプロジェクトを作成してください。
2. プロジェクト名を「kintone-looker-studio-connector」などわかりやすい名前に変更してください。
3. [ドキュメント](https://developers.google.com/looker-studio/connector/build?hl=ja) を参照し、基本的なコネクタの構造を理解してください。
### 2. マニフェストファイル(appsscript.json)の設定
1. メニューから「プロジェクトの設定」を選択し、「エディタで表示」をクリックしてマニフェストファイルを編集してください。
2. 以下の要素を含むマニフェストファイルを作成してください:
- タイムゾーン設定(日本の場合は "Asia/Tokyo")
- Looker Studio用の設定(name, logoUrl, company, addonUrl, supportUrl, description, sources)
- 外部リクエストを許可するOAuthスコープ
3. [ドキュメント](https://developers.google.com/looker-studio/connector/build?hl=ja) を参照し、必要な設定を行ってください。
### 3. 認証方式の実装
1. kintoneへの認証はAPIトークンを使用するため、Looker Studio側での認証は不要(NONE)に設定してください。
2. `getAuthType()` 関数を実装し、認証タイプを `AuthType.NONE` に設定してください。
3. [ドキュメント](https://developers.google.com/looker-studio/connector/build?hl=ja) を参照し、認証方式の実装方法を理解してください。
### 4. 設定画面の実装
1. `getConfig()` 関数を実装し、ユーザーに入力してもらう設定項目を定義してください。
2. 以下の3つの設定項目を含めてください:
- kintoneドメイン(例: yourdomain.cybozu.com)
- kintoneアプリID(数値)
- kintone APIトークン
3. 各設定項目には適切なヘルプテキストとプレースホルダーを設定し、ユーザーが正しく入力できるようにサポートしてください。
4. `setAllowOverride(true)` を設定し、レポートごとに異なる設定を使用できるようにしてください。
5. [ドキュメント](https://developers.google.com/looker-studio/connector/build?hl=ja) を参照し、設定画面の実装方法を理解してください。
### 5. スキーマ情報の取得(getSchema関数)の実装
1. `getSchema()` 関数を実装し、kintoneのAPIを呼び出してアプリのフィールド情報を取得し、Looker Studioのスキーマ形式に変換する処理を作成してください。
2. 以下の手順で実装してください:
- ユーザーが入力した設定値(ドメイン、アプリID、APIトークン)を取得
- 設定値の検証(必須項目が入力されているか確認)
- kintoneのフィールド情報取得API(/k/v1/app/form/fields.json)を呼び出し
- 各フィールドをLooker Studioのデータ型にマッピング
- フィールドコードとサニタイズされたフィールド名の対応関係を保存
3. kintoneの各フィールドタイプをLooker Studioの適切なデータ型にマッピングしてください:
- 数値型(NUMBER, CALC)→ メトリクス(NUMBER)
- テキスト型(SINGLE_LINE_TEXT, MULTI_LINE_TEXT, RICH_TEXT, LINK, DROP_DOWN, RADIO_BUTTON, CHECK_BOX, MULTI_SELECT, USER_SELECT, ORGANIZATION_SELECT, GROUP_SELECT)→ ディメンション(TEXT)
- 日付型(DATE)→ ディメンション(YEAR_MONTH_DAY)
- 日時型(DATETIME, CREATED_TIME, UPDATED_TIME)→ ディメンション(YEAR_MONTH_DAY_SECOND)
4. サブテーブル(SUBTABLE)、グループ(GROUP)、関連レコード(REFERENCE_TABLE)は現在サポートしないため、これらのフィールドタイプはスキップするようにしてください。
5. フィールド名のサニタイズ処理を実装し、Looker Studioで使用可能な形式に変換してください。
6. [ドキュメント](https://developers.google.com/looker-studio/connector/build?hl=ja) を参照し、スキーマの実装方法を理解してください。
### 6. データの取得(getData関数)の実装
1. `getData()` 関数を実装し、kintoneのAPIを呼び出してレコード情報を取得し、Looker Studio用の形式に変換する処理を作成してください。
2. 以下の手順で実装してください:
- ユーザーが入力した設定値を取得
- 設定値の検証
- フィールドマッピング情報を取得(または生成)
- Looker Studioから要求されたフィールドを元のkintoneフィールドコードに変換
- kintoneのレコード取得API(/k/v1/records.json)を呼び出し
- ページング処理を実装し、大量のレコードも取得できるようにする
- 各フィールド値をLooker Studio用に変換
- Looker Studioが期待する形式でデータを返却
3. フィールド値の変換処理(convertFieldValue関数など)を実装し、kintoneの各フィールドタイプに応じた適切な変換を行ってください:
- 日時型:ISO 8601形式の文字列をDateオブジェクトに変換
- 日付型:YYYY-MM-DD形式の文字列をDateオブジェクトに変換
- 数値型:文字列を数値に変換
- 計算型:結果が数値なら数値に、そうでなければ文字列に変換
- 複数選択型:配列をカンマ区切りの文字列に結合
- ユーザー/組織/グループ選択型:名前を抽出してカンマ区切りの文字列に結合
4. [ドキュメント](https://developers.google.com/looker-studio/connector/build?hl=ja) を参照し、データ取得の実装方法を理解してください。
### 7. エラーハンドリングの実装
1. 各処理でエラーハンドリングを実装し、ユーザーに適切なエラーメッセージを表示できるようにしてください。
2. 以下のエラーケースに対応してください:
- 設定値の検証エラー(必須項目が入力されていない)
- API応答エラー(レスポンスコードが200以外)
- エラーコード別の対応(401/403:認証エラー、404:アプリ不存在、500:サーバーエラーなど)
- データ変換エラー
3. try-catchを使用して予期せぬエラーにも対応し、デバッグ情報とユーザー向けメッセージを適切に設定してください。
4. [ドキュメント](https://developers.google.com/looker-studio/connector/build?hl=ja) を参照し、エラーハンドリングの実装方法を理解してください。
### 8. デバッグとログ出力の実装
1. デバッグ用のログ出力関数(logDebug関数など)を実装し、開発中のトラブルシューティングを容易にしてください。
2. 重要なポイント(API呼び出し前後、データ変換前後など)でログを出力し、処理の流れを追跡できるようにしてください。
3. [ドキュメント](https://developers.google.com/looker-studio/connector/build?hl=ja) を参照し、デバッグの方法を理解してください。
## 特定のkintoneフィールドタイプの処理
### 1. ユーザー選択フィールド(USER_SELECT)
ユーザー選択フィールドは、単一選択と複数選択の両方に対応する必要があります。フィールド値がオブジェクトの場合は単一選択、配列の場合は複数選択として処理してください。ユーザー名(name)またはユーザーコード(code)を抽出し、複数選択の場合はカンマ区切りの文字列に結合してください。
### 2. チェックボックス(CHECK_BOX)と複数選択(MULTI_SELECT)
これらのフィールドタイプは複数の値を持つことができます。フィールド値が配列の場合は、各要素をカンマ区切りの文字列に結合してください。
### 3. 計算フィールド(CALC)
計算フィールドは、結果の型に応じて適切に変換する必要があります。まず数値への変換を試み、変換できる場合は数値として、できない場合は文字列として扱ってください。
### 4. サポートしていないフィールドタイプ
サブテーブル(SUBTABLE)、グループフィールド(GROUP)、関連レコード(REFERENCE_TABLE)は複雑なデータ構造のため、現在のバージョンではサポートしないでください。これらのフィールドタイプはgetSchema関数内でスキップするように実装してください。
## セキュリティ対策
### 1. APIトークンの取り扱い
APIトークンはLooker Studioの設定に保存され、Googleのサーバーに保管されます。APIトークンには必要最小限の権限(対象アプリの参照権限のみ)を付与するようにユーザーに推奨してください。また、定期的にAPIトークンをローテーションすることでセキュリティを強化できることも説明してください。
### 2. 設定値の検証
ユーザーが入力した設定値(ドメイン、アプリID、APIトークン)を検証し、必須項目が入力されているか確認してください。また、APIトークンが有効かどうかをkintone APIを呼び出して確認し、無効な場合は適切なエラーメッセージを表示してください。
### 3. エラーメッセージの設計
エラーメッセージには詳細なデバッグ情報と、ユーザーにわかりやすい説明を含めてください。ただし、セキュリティ上の理由から、デバッグ情報には機密情報(APIトークンの全文など)を含めないように注意してください。
## デプロイと使用方法
### 1. Google Apps Scriptプロジェクトのデプロイ
1. Google Apps Scriptエディタで、メニューから「デプロイ」→「新しいデプロイ」を選択
2. 「デプロイの種類を選択」で「Looker Studioコネクタ」を選択
3. 説明を入力(例: 「kintone Looker Studioコネクタ v1.0」)
4. 「デプロイ」ボタンをクリック
5. 「アクセスを承認」をクリックし、必要な権限を許可
6. デプロイが完了すると、「デプロイID」と「Looker Studioでコネクタを使用」のリンクが表示される
### 2. Looker Studioでの使用方法
1. Looker Studioにアクセス(https://lookerstudio.google.com/)
2. 「レポートを作成」をクリック
3. 「データを追加」画面で「コネクタ」タブを選択
4. 「パートナーコネクタ」セクションを下にスクロールし、作成したコネクタを選択
5. 設定画面で必要な情報を入力:
- kintoneドメイン
- kintoneアプリID
- kintone APIトークン
6. 「接続」ボタンをクリック
7. フィールドの選択画面で、使用するフィールドを選択
8. 「レポートに追加」ボタンをクリック
## トラブルシューティング
実装中や使用中に発生する可能性のある問題と解決策を以下に示します。これらの情報をコネクタのドキュメントに含めることで、ユーザーが自己解決できるようにサポートしてください。
### 1. 「APIトークンが無効か、権限が不足しています」エラー
- **原因**: APIトークンが無効、または必要な権限がない
- **解決策**:
1. kintoneの管理画面でAPIトークンを再生成
2. 対象アプリの「参照」権限が付与されていることを確認
3. Looker Studioのデータソース設定で新しいAPIトークンを入力
### 2. 「指定されたアプリが見つかりません」エラー
- **原因**: アプリIDが間違っている、またはアプリが削除された
- **解決策**:
1. kintoneのURLからアプリIDを確認(例: `https://yourdomain.cybozu.com/k/123/` の `123` がアプリID)
2. Looker Studioのデータソース設定で正しいアプリIDを入力
### 3. 「フィールドマッピング情報の取得に失敗しました」エラー
- **原因**: スクリプトプロパティの保存/取得に問題がある
- **解決策**:
1. Looker Studioのデータソースを一度削除し、再作成
2. Google Apps Scriptのプロジェクト設定で「スクリプトプロパティ」を確認
### 4. データが表示されない
- **原因**: フィールドの選択が正しくない、またはレコードが存在しない
- **解決策**:
1. Looker Studioのデータソース設定で、使用するフィールドを再選択
2. kintoneアプリにレコードが存在することを確認
3. APIトークンに対象アプリの参照権限があることを確認
## パフォーマンス最適化のヒント
### 1. 取得するフィールドを最小限に
Looker Studioでは、実際に使用するフィールドのみを選択することで、データ取得のパフォーマンスが向上します。ユーザーに対して、必要なフィールドのみを選択するよう推奨してください。
### 2. レコード数が多い場合の対策
kintoneのレコード数が非常に多い場合(10,000件以上)、以下の対策を検討するようユーザーに推奨してください:
1. kintoneのAPIリクエストに条件を追加して、必要なレコードのみを取得
2. 定期的にデータをエクスポートし、Google スプレッドシートなどの中間データソースを使用
### 3. キャッシュの活用
スキーマ情報のキャッシュ機能を実装し、パフォーマンスを向上させてください。キャッシュの有効期間は適切な値(例: 6時間)に設定し、必要に応じて調整できるようにしてください。
## まとめ
このプロンプトに従って、kintoneのデータをLooker Studioで分析するためのカスタムデータコネクタを実装してください。実装にあたっては、[ドキュメント](https://developers.google.com/looker-studio/connector/build?hl=ja) を参照し、各機能の詳細な実装方法を理解してください。
特に、特定のkintoneフィールドタイプの処理、詳細なエラーハンドリング、セキュリティ設定に注意を払い、ユーザーが安全かつ効率的にkintoneデータを分析できるコネクタを作成してください。
実装中に疑問点や問題が発生した場合は、Googleのドキュメントや、kintone APIのドキュメント(https://cybozu.dev/ja/kintone/docs/rest-api/)を参照してください。
おまけです。
冒頭に紹介した前年対比グラフのデータは「サンプルのグラフを作って欲しいんですけど、テーマは昨年のデータと今年のデータを対比させるようなやつで、グラフによる可視化が効果的だということを顕著に示すようなやつをお願い」と投げかけて出てきたものをそのまま使い「kintoneアプリを新たに作ってレコードを入れて」と Claudeさんに指示して作ってもらいました。
1月に書いたブログ でご紹介した kintone 用の MCP Server を使用しているのですが、その後いろいろと機能を追加したり紆余曲折があったので次回ブログでそのことについて書ければと考えています。


投稿者プロフィール
