こんにちは!GameWithサービス開発部です。
サービス開発部では月に一度、全体会にて どのように業務課題を改善したか をアピールする会を行っています。
今回は2件の内容をご紹介します!
前回の発表内容はこちらです

利用者はGASで想定しない使い方をすることがある話
提供したGASで忘れた頃に問い合わせがあり、確認したら想定していない使い方があったという話でした。
今回例として出てきたGASはスプレッドシートの1行を1レコードとして、特定の処理を行った結果を末尾のカラムに書き込むといった単純なものでした。
提供前は1行につき1秒未満で処理できており、問題が無いと判断し提供したそうです。
しかし、運用を続けて日が経ったある日にタイムアウトして困るという問い合わせがありました。
GASは30分でタイムアウトしますが、処理対象行はそこまで多くなかったそうです。
問題のあるシートを確認したところ、GASで処理しているシート内にqueryやsumなどの計算が発生する式や条件付き書式が入っていたことが原因だったそうです。
1行の処理を行う→シート内で再計算を行う→次の1行→シート内で再計算を行う→次の1行、といった流れになり再計算の時間が伸びれば伸びるほど1行当たりの処理が長くなってしまいます。
GASのタイムアウトは処理開始から計測され、シート内の再計算も処理の一部とカウントされた結果タイムアウトになってしまっていたそうです。
出力結果を別シートで参照し、集計など計算処理を行うようにしてもらい改善したそうです。
問い合わせの積み重ねで知見も貯まっていくので、たくさんフィードバックがある環境を目指していきたいですね!
BigQueryのスケジュールクエリを改善していった話
既存の集計周りの構成を改善していった話でした。
かつて実行されていたBigQueryのスケジュールクエリに依存関係があり、スケジュールクエリは固定時間で設定されていました。 そのため、Aの処理時間が伸びてしまい、処理中に依存関係のあるBの実行時間が来てしまうと、集計に問題が発生し、都度手動でリカバリー対応を行っていたそうです。 (しかもその依存関係が最大4層もあり、大変だったそうです)
現在は、Workflows で各処理の完了をAPI経由でチェックしながら実行順を管理するようにしました。CloudSchedulerで定期実行もしています。
さらに使っているクエリもTerraformから反映できるようにして、Git管理もできるようにしたとのことでした。
同チームの過去の記事もあるので、併せて読んでみてください! tech.gamewith.co.jp
今年からRealForceをやめて、HHKBにして、小さくなって手の動きがほぼなくなり、QOLが向上した!とのことでした
最後に
今回もGameWithサービス開発部の裏側をお伝えしました。新たな発見に繋がっていれば幸いです。
こんなGameWithではエンジニアを絶賛募集中です!
サーバーエンジニアやフロントエンジニアの方、AIに興味がある方や、Unityでの開発に興味がある方もお気軽にカジュアル面談をお申し込みください!