kintoneとFastAPIを連携して業務プロセスを自動化するAPIをDocker環境で構築した話
更新日:2025/05/22
背景と目的
- ノーコード(kintone)とコード(Python)を組み合わせて業務の効率化を目指した
- 社内オペレーションの手作業を減らしたかった(見積確認・通知など)
やったことの概要
- kintoneからWebhookでデータ受け取り
- FastAPIで受信 → Google DriveやSMS送信
- Dockerでローカル開発環境を構築してFargateで運用できる状態へ
Webhookの流れ
kintoneを経由せずに、ローカル実行もできる
- kintoneで「新しいレコードが追加された!」
- そのタイミングで 事前に登録しておいたURL(API)に対してPOSTリクエストが飛ぶ
- FastAPIが
/webhook1や/webhook2で受け取る - Pythonで処理スタート!
WebフックからWebフックは実際によくあります!これを「Webhookチェーン」と呼んだりします。
そもそもWebhookとは
定期実行もPython側のスケジューラーで
import schedule
import time
schedule.every(10).minutes.do(run_timetriger)┌────────────┐
│ kintone │────┐ Webhookを叩く
└────────────┘ │
▼
┌──────────────┐
│ FastAPI App │
│ main.py │
└──────────────┘
▲ ▲
定期実行(10分)│ │手動実行(runjob_once.py)
│ │
▼ ▼
runtimetriger()
├─ xx()
├─ send_mail()
└─ send_sms()
Fargateでデプロイ
「Dockerイメージを渡すだけで、勝手に動かしてくれる」
[ Dockerイメージ(FastAPI) ]
│
▼
[ Amazon ECR ] ← コンテナ登録
│
▼
[ AWS Fargate ]
(ECSサービス or タスク)
│
▼
[ パブリックURLでアクセス ]技術構成
- Python 3.9 + FastAPI
- kintone REST API
- Google Drive API
- SMS送信API(MediaSMSなど)
- Docker / AWS Fargate(予定)
ログの仕組み
loggingモジュールで標準出力&ファイル出力- エラーログはファイルに保存
Log_to_textヘルパーで環境モードごとにログ分類
AWS App Runner と CloudWatch の連携
- CloudWatch での監視機能
📊 メトリクス監視
App Runnerは様々なメトリクスを収集し、AWS/AppRunner 名前空間でCloudWatchに発行します Viewing App Runner service metrics reported to CloudWatch – AWS App Runner:
主要メトリクス:
CPU使用率 (CPUUtilization) – パーセンテージベース
メモリ使用率 (MemoryUtilization) – パーセンテージベース
リクエスト数 (RequestCount)
レスポンス時間 (ResponseTime)
4xxエラー数 (4XXStatusResponses)
5xxエラー数 (5XXStatusResponses)
アクティブインスタンス数 (ActiveInstances)
📝 ログ管理
App Runnerは各App Runnerサービスに対して2つのCloudWatchログググループを定義します Viewing App Runner logs streamed to CloudWatch Logs – AWS App Runner:
- サービスログ群: /aws/apprunner/[service-name]/service
App Runnerがサービスを管理する際に生成されるログ
ビルドとデプロイメントのログ
サービス状態変更のログ
- アプリケーションログ群: /aws/apprunner/[service-name]/application
実行中のアプリケーションコードの出力
あなたのPythonアプリケーションのprint()やlogger.info()の出力
開発Tips
- FastAPIのCLI実行方法とAPI起動の使い分け
- Docker内でログディレクトリに書けないときの対応方法
- kintoneの認証とレコード更新
学び&反省
- Webhook運用と手動バッチの両立で柔軟性UP
- エラーや未読時の通知処理はシステムに任せてOK!
- kintoneは業務データの「起点」として便利
まとめ
業務系システムでもPython×kintoneでコードとノーコードのいいとこ取りができる。
Slack通知やLINE連携も今後試したい!
-
検索
(例) debug search etc.. -
カテゴリー
-
mixhostでのWordPress利用について
更新日:2024/04/02
303 view
-
scrollHint
更新日:2024/03/13
251 view
-
XML Sitemap Generator for Google不具合のダウングレード対応、代替プラグイン
更新日:2024/06/13
243 view
-
【SnowMonkey】納品までのフローまとめ
更新日:2025/02/15
164 view
-
【Snow Monkey】ショートコードで編集画面で任意の場所にHTMLファイルを挿入
更新日:2025/04/18
131 view
-
【Googleサーチコンソール】検索画面で表示させたくない「Googleのインデックス削除」
更新日:2024/06/07
131 view
-
tailwindcss使い方
更新日:2024/03/13
125 view
-
キーワード検索で上位表示させる方法【SEO】
更新日:2023/10/28
120 view
-
Recline: GitHub Copilotで動作するClaude 3.5 Sonnet搭載の開発支援ツール
更新日:2025/01/20
115 view
-
WordPressプラグイン「All-in-One WP Migration」のトラブル
更新日:2022/03/31
84 view
-
ワードプレスセキュリティー対策まとめ【2025年】「site guard wordpress」「BackWPup バージョン5でUI変更!?」
更新日:2025/02/25
77 view
-
VSCodeで開発効率を劇的に向上させる!Roo Code(Roo-Cline)プラグイン完全ガイド
更新日:2025/04/06
75 view
-
Express、FastAPIを使用し、二重fetch構成のメリット
更新日:2025/04/26
51 view
-
SSHを使用してGitHubのリポジトリをクローン、複数の接続元で公開鍵をディレクトリで区別する方法
更新日:2025/01/13
49 view
-
「JSONスキーマ」と「Few-shot Learning」で実現する次世代生成AIソフトウェア開発の可能性
更新日:2025/07/06
44 view
-
Supabase 初心者向け解説、Supabase CLI インストール(Scoop)
更新日:2025/06/07
44 view
-
リファクタリング【VSCode Javasctipt Python】
更新日:2025/03/09
37 view
-
Windowsショートカットエラーの原因と解決方法「このショートカットは、リンク先のファイルが変更または移動されているので、正しく機能しません」
更新日:2025/02/09
37 view
-
Next.jsでAWS Amplifyを使ってPDFアップロード機能を実装、Fast APIにPOST(こちらはApp runner)
更新日:2025/06/06
37 view
-
形態素解析とは?初心者でもわかるツールの使い方と実践例
更新日:2025/02/08
34 view