Upgrade to Pro — share decks privately, control downloads, hide ads and more …

長期運営で肥大化したExcelマスターデータの解消に向けた移行事例

 長期運営で肥大化したExcelマスターデータの解消に向けた移行事例

CEDEC2026で発表された資料です。
https://cedec.cesa.or.jp/2026/timetable/detail/s6985c4a1c2ac8/

Avatar for gree_tech

gree_tech PRO

August 19, 2026

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. 自己紹介 麻生 航平 / Kohei Aso 嶋田 翔太 / Shota

    Shimada スタジオ本部 スタジオ本部 アナザーエデンチーム メインプログラマ アナザーエデンチーム マネージャー ©WFS
  2. 課題② ファイル単位のロックによる待ち時間 • データ数増大によるExcelの処理落ち • ファイル単位のロックによる待ち時間 • Git管理のためデータの活用が困難 編集したい エリア

    クエスト キャラクター キャラクター定義 シート スタイル シート パラメータ シート スキル シート アビリティ シート git lfs lock 編集したいシート以外もロックされてしまう…… ©WFS
  3. ②ビルドスクリプトの改修 • スプレッドシート → CSVをダウンロードする機能 • CSVからビルドできる機能 • 分割されたシートに対応 •

    ExcelとCSVをファイル単位で切り替え可能に ダウンロード スプレッドシート CSV CSV CSV ︙ ︙ ︙ CSV CSV CSV CSV ビルド ゲーム用データ ©WFS
  4. ②ビルドスクリプトの改修 • スプレッドシート → CSVをダウンロードする機能 • CSVからビルドできる機能 • 分割されたシートに対応 •

    ExcelとCSVをファイル単位で切り替え可能に Excel ダウンロード スプレッドシート CSV CSV CSV ︙ ︙ ︙ CSV CSV CSV CSV ビルド ゲーム用データ ©WFS
  5. 基本は「閲覧者」編集時のみ「編集者」にする方法 1. 専用の管理アカウントを作成、権限はオーナー、全シートをロック 2. ユーザーがシートをロック/解除するAPIを実装 ロック API • • •

    管理アカウントがユーザーを「編集者」権限に変更 ユーザーと管理アカウントが指定シートをロック 管理シートにアカウント名を記載 ©WFS
  6. 基本は「閲覧者」編集時のみ「編集者」にする方法 1. 専用の管理アカウントを作成、権限はオーナー、全シートをロック 2. ユーザーがシートをロック/解除するAPIを実装 ロック API • • •

    管理アカウントがユーザーを「編集者」権限に変更 ユーザーと管理アカウントが指定シートをロック 管理シートにアカウント名を記載 ©WFS
  7. 基本は「閲覧者」編集時のみ「編集者」にする方法 1. 専用の管理アカウントを作成、権限はオーナー、全シートをロック 2. ユーザーがシートをロック/解除するAPIを実装 ロック API • • •

    管理アカウントがユーザーを「編集者」権限に変更 ユーザーと管理アカウントが指定シートをロック 管理シートにアカウント名を記載 ロック 解除 API • • • ユーザーと管理アカウントが指定シートをロック解除 管理アカウントがユーザーを「閲覧者」権限に変更 管理シートからアカウント名を削除 ©WFS
  8. 移行後の課題① ロックしていないシートが数式参照により変更されてしまうことがある キャラクター定義 編集 スタイル パラメータ スキル 数式で参照 ← 勝手に変更されてしまう

    アビリティ • 変更されたシートを編集する際に意図しない差分として出力されてしまう • 数式参照している値は確認用途であり、ゲーム用データに使われないため許容 ©WFS
  9. ② 待ち時間: 4人同時に作業していた日 ある日、キャラクター関係シートを 4人が別々に編集した記録 4人が同時に 手を動かした時間 Aさん Bさん Cさん

    Dさん 0900 1200 1500 1800 ※実ログをもとにした概念図。帯が重なる時間=同時に作業していた時間 ©WF S ©WFS
  10. ② 計測してみた( 5回平均) テストデータで処理速度を計測 • 読み込み:getValue / getValues / Sheets

    API • 書き込み:setValue / setValues • シートのコピー:copyTo / batchUpdate / makeCopy ©WFS
  11. ② コードの組み方:機能ごとに分け、土台を 1箇所に どの機能も共通して使う処理は、土台になる 1箇所だけに置く シートロック・ ロック解除 個人用シート 作成 マスターデータ

    へのマージ … ベースの関数 定数群 シートの高速な読み書き、 APIリクエスト制御、例外ハンドリング など全ての個別モジュールが共通で依存する処理をカプセル化 したプロジェクト スプレッドシート ID、管理者用アカウント情報などのグローバ ルな情報を一元管理するプロジェクト ©WFS
  12. ② コードの組み方:機能ごとに分け、土台を 1箇所に どの機能も共通して使う処理は、土台になる 1箇所だけに置く シートロック・ ロック解除 個人用シート 作成 マスターデータ

    へのマージ … 読み込み処理の改善 ベースの関数 定数群 シートの高速な読み書き、 APIリクエスト制御、例外ハンドリング など全ての個別モジュールが共通で依存する処理をカプセル化 したプロジェクト スプレッドシート ID、管理者用アカウント情報などのグローバ ルな情報を一元管理するプロジェクト ©WFS
  13. ② コードの組み方:機能ごとに分け、土台を 1箇所に どの機能も共通して使う処理は、土台になる 1箇所だけに置く シートロック・ ロック解除 個人用シート 作成 マスターデータ

    へのマージ … 定数の変更 ベースの関数 定数群 シートの高速な読み書き、 APIリクエスト制御、例外ハンドリング など全ての個別モジュールが共通で依存する処理をカプセル化 したプロジェクト スプレッドシート ID、管理者用アカウント情報などのグローバ ルな情報を一元管理するプロジェクト ©WFS
  14. ② コードの組み方:機能ごとに分け、土台を 1箇所に どの機能も共通して使う処理は、土台になる 1箇所だけに置く シートロック・ ロック解除 個人用シート 作成 マスターデータ

    へのマージ … ベースの関数 定数群 シートの高速な読み書き、 APIリクエスト制御、例外ハンドリング など全ての個別モジュールが共通で依存する処理をカプセル化 したプロジェクト スプレッドシート ID、管理者用アカウント情報などのグローバ ルな情報を一元管理するプロジェクト ©WFS