こんにちは!かねごん(@hrbk25)です!
今回は、kintone と AWS Lambda を連携する方法 について、devCamp で学んだ内容を簡単にまとめました。
当日の勉強会の内容に加え、座学で学んだ CORS(クロスドメイン制約)の回避方法、Lambda 関数の基本について少しだけ詳しくまとめています。
どんな人向けの記事か
- devCampでどんな内容が行われているか気になっている人
- kintone と AWS Lambda の基礎を知りたい人
devCamp とは
devCampとは、エンジニア向けのkintone開発勉強会です。
動画のコンテンツなどもあり、非常に有益な情報がいっぱいあります。
devCamp(エンジニア向け kintone 開発勉強会)とは、 kintone 開発案件の対応に必要なスキルが無料で学べる、サイボウズ主催の勉強会です。
devCamp の概要
今回の devCamp は、座学 + ハンズオンの形式で、kintone と AWS Lambda の連携の基本概念や実装方法を学ぶ勉強会でした。
座学で学んだこと
- CORS(クロスドメイン制約)の回避方法
- Lambda 関数の基本的な仕組みと活用方法
ハンズオンの内容
① フォームのデータを kintone に登録する
- Lambda 関数の設定がメインで、コードの実装は事前に準備されたものを使用
- フォームから送信されたデータを受け取り、kintone の「問い合わせ管理アプリ」にレコードを登録
- テストの実施は含まれず、設定完了までを学習
② kintone の Webhook を利用して担当者をランダムに割り当て
- Lambda 関数の設定に加え、コードの実装も行う
- プロセス管理や Webhook の設定など、kintone の標準機能も活用
- 新規レコードが登録された際にLambda を利用して、担当者をランダムに割り当て、ステータスを更新する処理を実装
今回の内容について
- 初めて AWS Lambda を触る人でも理解しやすい内容
- kintone 開発経験 1 年程度の人なら問題なく取り組める難易度
座学で学んだことのことの掘り下げ
今回の記事では座学で学んだことを少しだけ掘り下げていきます。
CORS(クロスドメイン制約)の回避方法
CORS とは?
CORS(Cross-Origin Resource Sharing)は、異なるドメイン間でのリクエストを制御するブラウザのセキュリティ機能 です。
kintoneで外部サービスとデータをやり取りする際に、この制約によって直接 API を叩けない場面があります。
詳細はメンバーの以下の記事を参照してください。
回避方法
CORS を回避するには、サーバーを介してリクエストを送信 する方法があります。
この役割を担うのが AWS LambdaやAPI Gatewayなどです。
Lambda を利用した CORS 回避の流れ
- フロントエンドからLambda(API Gatewayなど)にリクエストを送信
- Lambdaからkintone APIにリクエストを転送
- kintone API のレスポンスをLambdaを経由してフロントエンドに返す
AWS Lambdaを「代理サーバー」として使うことで、CORS の制約を回避できるようになります。
Lambda 関数の基本的な仕組みと活用方法
そもそも Lambda とは?
AWS Lambda は、サーバーレスでコードを実行できる環境 です。
サーバーを管理せず、必要なときにだけ処理を実行できます。
Lambda の特長は以下の内容などがあげられます。
- Lambda関数を使用できる
- イベント駆動型アーキテクチャ
- 実行時間とメモリサイズに応じた従量課金制
それぞれについて以下に内容を記します。
Lambda 関数とは?
Lambda関数とは、AWS Lambda で管理・実行されるプログラムのコードとその設定 のことを指します。
Lambda関数の設定、例えば環境変数を活用することで、関数の柔軟性やセキュリティを向上させることができます。
また、Lambda関数の実行環境には、必要なライブラリを事前に組み込める Lambda レイヤーも用意されており、 複数の関数間で共通のコードを使い回すことも可能です。
イベント駆動型アーキテクチャとは?
イベント駆動型アーキテクチャは、特定のイベントが発生したときに処理を自動的に実行する仕組みです。
イベント駆動型アーキテクチャのメリット
-
必要なときだけ処理を実行し、無駄なリソースを使わない
→ kintone でデータが登録されたときに Lambda が動き、処理が終われば停止するため、余計なコストが発生しない。 -
負荷が増えても自動で対応
→ 大量のデータが一度に登録されても、Lambda は必要な数だけ並行して処理を実行するため、システムが遅くならずスムーズに動作する。
詳細は以下の記事を参照してください。
Lambda 関数のコスト管理は?
AWS Lambda は 実行時間とメモリサイズに応じた従量課金制 です。
以下のような特徴があります。
- 不要な処理を削減し、実行時間を短縮
- 無料枠があるため、小規模な処理なら無料で運用可能
kintone Webhook を活用したイベント駆動の流れ
上記のメリットなどを活用して、kintoneでは、以下のような活用方法があります。
- kintone で レコードが追加・更新される
- Webhook が発火し、Lambda にリクエストを送信
- Lambda で処理を実行し、kintone API を通じてレコードを更新
セキュリティやコストに注意しながら AWS Lambda を適切に活用することで、より柔軟な kintone 開発の提案が実現できます。
まとめ
今回は devCampの内容と、kintone × AWS Lambda の連携に必要な基礎知識(CORS 回避、イベント駆動、Lambda の仕組みなど)についてまとめました!
基礎的な内容が中心でしたが、これを踏まえて、今後さらにkintone × AWS Lambdaの活用方法を深掘りし、情報を共有していきたいと思います。