GAS × LINEの予約システムを高速化できた話

GAS × LINEの予約システムを高速化できた話

記事
コラム
こんにちは。Web制作会社でエンジニアをしている古賀です。

今回は、GAS(Google Apps Script)とGoogleスプレッドシートで作ったLINE予約システムが「動作が重い」という課題を、コストをかけずに改善できた話を書きます。同じような構成で開発している方の参考になれば嬉しいです。

抱えていた課題

LINEの予約システムを、GAS + Googleスプレッドシートという構成で作っていました。


・サーバー費用がかからない
・スプレッドシートがそのままデータベースになる
・導入のハードルが低く、小規模なサロンやクリニックにも提案しやすい

というメリットがある一方で、利用が進むにつれて「予約画面や管理画面の表示が重い」という問題が出てきました。原因を探ると、画面を開くたびにスプレッドシートへ問い合わせて重い処理をその場で実行していたことが、待ち時間の大きな原因になっていました。

「無料で」がこだわりポイントだった

有料のサーバーやDBサービスに切り替えれば速くなるのは分かっていたのですが、今回はあくまで無料の範囲で改善したいという条件がありました。GAS自体は無料で使えるので、構成を変えずに処理の仕方を見直す方向で解決策を考えました。

やったこと

対応の中心は、次の2つです。

1. GASをWebアプリとしてデプロイし、発行されたURLをHTMLに埋め込む

GASのスクリプトをWebアプリとして公開すると、専用のデプロイURLが発行されます。このURLをHTML側からfetchなどで呼び出す形にしました。

2. 重い処理を行う関数をクラウド側(デプロイしたGAS)に切り出す

これまで画面表示と同時に実行していた重い処理(スプレッドシートの読み込みや集計など)を、デプロイしたGASの関数側にまとめました。HTML側は表示に専念し、重い処理はクラウド側の関数を呼び出して結果を受け取るだけ、という役割分担にしています。

こうすることで、画面の表示処理と重い処理を切り離すことができ、体感の待ち時間が大きく改善しました。

やってみて感じたこと

構成自体を大きく変えなくても、「どこで処理を実行するか」を整理するだけで体感速度は変わるのだと実感しました。無料枠の範囲内でも、工夫次第でまだまだ改善できる余地があるなと感じています。

同じようにGASでシステムを組んでいて、動作の重さに悩んでいる方の参考になれば幸いです。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す