kintone と Microsoft Azure を連携してみよう (Azure Functions その 1)

著者名:菊地 宏司

目次

こんにちは。菊地です。

今回は kintone と Microsoft Azure の連携について紹介したいと思います。

Microsoft Azure とは

まず Microsoft Azure (External link) とは、分析、コンピューティング、データベース、モバイル、ネットワーク、ストレージ、Web の機能をもつ総合的なクラウドサービスプラットフォームです。

仮想マシン、モバイル、ビックデータ、機械学習、IoT とさまざまなことができる Azure ですが、今回はその中の Azure Functions を使って kintone と連携してみます。
この Azure Functions は小規模なコードを実行できるサービスになっており、AWS の Lambda に似たような物となっています。

設定方法はブラウザー上から可能で、Azure サービスのイベント処理、cron ジョブを使用したバッチ処理、HTTP トリガー(Webhook)等のイベントの際に NodeJS や C#のコードを実行できます。

また、これらの処理がサーバーレスで実現できるのも特徴です。
ハードやネットワークのことなんて考えなくて OK!お手軽ですね。

Azure Functions 使用例

定期実行で kintone REST API を実行する

Azure Functions の設定で cron 形式のタイマー設定が可能です。

HTTP トリガーを使って Azure サービスと連携する

Azure Functions を使うことにより Azure サービスとの連携が柔軟に対応できます。

ということで、発想次第でいろいろな使い方ができるサービスとなっています。
それでは Azure Functions を利用するための準備を以下の手順に沿ってやってみましょう。

Azure Functions の準備

以下の手順で Azure Functions の環境を準備しましょう。

  1. Microsoft Azure アカウントの準備 (External link)
  2. Azure Functions の準備 (External link)
  3. Azure Functions 関数の準備 (External link)

パッケージモジュールのインストール

次に以下の手順で NodeJS のパッケージをインストールします。

  1. 「高度なツール」→「移動」を選択します。

  2. Kudu が開かれます。
    「Debug console」から「CMD」をクリックしコンソール画面を表示します。

  3. このコンソールからパッケージをインストールしていきます。

  4. 画面上部にあるフォルダー名のリンクを選択して作成した Function のフォルダーに移動します。

    1
    
    D:\home\site\wwwroot\<function_name>

  5. フォルダーに移動したら、npm コマンドを実行します。

    • package.json の生成

      1
      
      D:\home\site\wwwroot\<function_name>> npm init

      いろいろ英語で質問されますが、"name"と"description"だけ入力して他は Enter キーで進んで問題ありません。

    • package install

      今回は node-fetch(バージョン 2)を使用します。

      1
      
      D:\home\site\wwwroot\<function_name>> npm install node-fetch@2

      インストールが完了したら node_modules フォルダーと package.json が作成されます。
      package.json を開いて、以下のように設定がされていたら OK です。

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      
      {
        "name": "test",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "dependencies": {
          "node-fetch": "^2.6.6"
        },
        "devDependencies": {},
        "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1"
        },
        "author": "",
        "license": "ISC"
        // ......
      }

これでパッケージのインストールは完了です。

Function エディターについて

① 表示する関数のファイルを切り替えることができます。

② 関数で実行する処理内容を記述します。

③ context.log などのログ内容が表示されます。

④ 関数実行時のパラメーターを設定します。

コードの記述

Azure Functions の準備ができたら次はコードを書いていきます。
今回はシンプルな kintone のレコードを取得してログに表示するサンプルです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
 * Copyright (c) 2021 Cybozu
 *
 * Licensed under the MIT License
*/
const fetch = require('node-fetch');

const GET_URL = 'https://{subdomain}.cybozu.com/k/v1/records.json';
const APP_ID = 0; // アプリID
const APP_TOKEN = '{app token}'; // アプリトークン

module.exports = async (context, data) => {
  const url = GET_URL + '?app=' + APP_ID;
  const response = await fetch(url, {
    headers: {
      'X-Cybozu-API-Token': APP_TOKEN,
    },
  }).catch((error) => {
    // 通信自体にエラーが発生したとき
    context.log('error:' + error);
    context.fail();
  });

  const body = await response.json();

  // kintoneからエラーのレスポンスがかえってきたとき
  if (!response.ok) {
    context.log('error:' + JSON.stringify(body, null, '  '));
    context.fail();
  }

  context.log('success:' + JSON.stringify(body, null, '  '));
  context.done();
};

上記の JS をエディターに貼り付けて kintone のサブドメインとアプリ ID と APIトークン を変更してください。

1
2
3
const GET_URL = 'https://{subdomain}.cybozu.com/k/v1/records.json';
const APP_ID = 0;
const API_TOKEN = '{app token}';

変更ができたらコードを保存して画面下部の「実行」ボタンを押します。
ログに kintone のレコードが表示され、出力の HTTP 応答コードが「200 OK」と出ていれば成功です。

おわりに

さて、今回はレコードの取得までとなりますが、この処理をベースにして kintone からレコードを取得→更新や、取得したレコード情報を別システムに登録などができます。

次回は定期的に kintone アプリ A のデータを集計して、アプリ B に登録してみます。
次回記事はこちら! kintoneとMicrosoft Azureを連携してみよう (Azure Functionsその2)

information

この Tips は、2022 年 1 月版 kintone で動作を確認しています。