PR

サーバーレスコンピューティングを試してみる

Webアプリ

いつか使ってみようと思っていたら数年経ちました。

サーバーレスコンピューティングとは

サーバーレスコンピューティングとは、開発者がサーバーを意識せずにユーザーにアプリケーションサービスなどを提供することができるサービスのことです。

サーバーレスというと「サーバーがないの?」と思われるかもしれませんが、そのようなことはもちろんなく、あくまで開発者がサーバーを直接イジる必要がないというものです。

主な例

主にFaaS(Function as a Service)と呼ばれる事前に登録した関数を実行するサービスを中心としたサービス群のことを言います。

FaaSの代表例として

などが挙げられます。

メリット・デメリット

メリット

  • 比較的簡単
  • 安価
    • 有名ベンダーには大体月当たりの無料枠が設けられている
    • Google Cloud Functionでは1ヶ月あたり200万回の呼び出し、400,000GB秒・200,000GHz秒のコンピューティング時間、5GBの送信データが無料枠となっている(記事執筆現在)1

デメリット

  • 自由度が低い
  • 設定ミスで膨大な請求もありうる2

実際に使ってみる

今回はGoogleのCloud Functionsを使ってみました。理由はなんとなくです。

作るもの

LINE Notifyと連携して天気通知アプリを作ってみようと思います。

天気情報は気象庁から持ってこようと思います。

気象庁は非公式Web APIを公開しているようで、様々な気象関連データがプログラムから取得できます。

https://www.jma.go.jp/bosai/common/const/area.json」から都道府県のエリアコードを取得し、「https://www.jma.go.jp/bosai/forecast/data/forecast/{エリアコード}.json」から各地の天気や気温データが取得できます。

アプリイメージ

だいぶ省いてますが、アプリ全体のイメージはこんな感じです。

Google Cloudへの登録

  1. https://console.cloud.google.comにアクセスし、利用するGoogleアカウントを選択
  2. 本人確認
  3. 支払い情報(クレジットカード)登録

って感じだったと思います。

ファンクションの作成

Google Cloud Platform
Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure ...
にアクセスし、ファンクション(関数)を作成します。

シークレットの作成

Google Cloud Platform
Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure ...
にアクセスし、LINE Notifyのトークンを登録します。

Google Cloudにおけるシークレットとは、APIキーやパスワードなどの機密データのことです。

今回の場合は別にそこまでの機密ではないのですが、一応教科書通りにやりました。

環境変数

シークレットを環境変数として登録

ファンクション作成時の設定として、上記で作成したシークレットを環境変数として扱えるようにします。

環境変数2

ソースコードの登録

これが今回作成するWebアプリの本体となります。

Cloud Functionsでは様々な実行環境が用意されており、記事執筆現在ではNode.js 18、Python 3.11、Go 1.20などが推奨環境とされています3

ソースコード

トリガーの設定

トリガーとは、ファンクションを実行する条件のことです。

今回はURLにPOSTリクエストがあった時としています。

これも深い理由はないです。

スケジュールの設定

Google Cloud プラットフォーム
Google Cloud Platform では、Google と同じインフラストラクチャでアプリケーション、ウェブサイト、サービスを構築、導入、拡大することができます。
にアクセスしてファンクションの実行スケジュールを設定します。

Google Cloudではcron形式でスケジュールします4

スケジュール
スケジュール2
スケジュール3

画像の設定では日本時間21:00に毎日実行されます。

設定した時刻になると

LINE

このようにLINEで天気情報が送られてきました。

成功です!

実はソースコードのエントリポイントからのreturnを忘れていてエラーログがあったのは内緒です。

注意点

上記したように膨大な数の処理や通信が発生してしまうと問答無用で大金を請求されます。

また、設定方法や機能もベンダーの都合で変更・追加・削除されていくので、利用する際は都度ドキュメントを参照しましょう。

まとめ

今回は天気予報を通知するアプリを作成しましたが、通知する内容は天気でなくてもなんでもいいし、通知アプリではなくて株自動売買アプリとか、チャットボットとかもできそうですね。

ぜひ活用してみてください。


  1. https://cloud.google.com/functions/pricing?hl=ja#free_tier ↩︎
  2. https://www.itmedia.co.jp/news/articles/2209/09/news014.html ↩︎
  3. https://cloud.google.com/functions/docs/concepts/execution-environment?hl=ja ↩︎
  4. https://cloud.google.com/scheduler/docs/configuring/cron-job-schedules?hl=ja#defining_the_job_schedule ↩︎

コメント

タイトルとURLをコピーしました