背景と目的

  • ノーコード(kintone)とコード(Python)を組み合わせて業務の効率化を目指した
  • 社内オペレーションの手作業を減らしたかった(見積確認・通知など)

やったことの概要

  • kintoneからWebhookでデータ受け取り
  • FastAPIで受信 → Google DriveやSMS送信
  • Dockerでローカル開発環境を構築してFargateで運用できる状態へ

Webhookの流れ

  1. kintoneで「新しいレコードが追加された!」
  2. そのタイミングで 事前に登録しておいたURL(API)に対してPOSTリクエストが飛ぶ
  3. FastAPIが /webhook1/webhook2 で受け取る
  4. Pythonで処理スタート!

kintoneを経由せずに、ローカル実行もできる

定期実行も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 の連携

  1. 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:

  1. サービスログ群: /aws/apprunner/[service-name]/service

App Runnerがサービスを管理する際に生成されるログ
ビルドとデプロイメントのログ
サービス状態変更のログ

  1. アプリケーションログ群: /aws/apprunner/[service-name]/application

実行中のアプリケーションコードの出力
あなたのPythonアプリケーションのprint()やlogger.info()の出力

CloudWatch とは? CloudWatch AWSの監視サービス 📝 ログ アプリの出力を保存 エラーやデバッグ情報 📊 メトリクス CPU、メモリ使用率 グラフで表示 🚨 アラーム 異常時に通知 メール・SMS 基本的な使い方 1 AWSコンソール → CloudWatch を開く 2 左メニューから「ログ」「メトリクス」「アラーム」を選択 3 確認したいサービス(EC2、RDS、App Runnerなど)を選ぶ よくある使い方 🔍 エラー発生時 → ログでエラー内容を確認  📈 負荷確認 → メトリクスでCPU使用率をチェック ⚠️ 監視設定 → アラームで異常時の自動通知を設定

開発Tips

  • FastAPIのCLI実行方法とAPI起動の使い分け
  • Docker内でログディレクトリに書けないときの対応方法
  • kintoneの認証とレコード更新

学び&反省

  • Webhook運用と手動バッチの両立で柔軟性UP
  • エラーや未読時の通知処理はシステムに任せてOK!
  • kintoneは業務データの「起点」として便利

まとめ

業務系システムでもPython×kintoneでコードとノーコードのいいとこ取りができる。
Slack通知やLINE連携も今後試したい!