Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
長期運営で肥大化したExcelマスターデータの解消に向けた移行事例
Search
gree_tech
PRO
August 19, 2026
Technology
81
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
長期運営で肥大化したExcelマスターデータの解消に向けた移行事例
CEDEC2026で発表された資料です。
https://cedec.cesa.or.jp/2026/timetable/detail/s6985c4a1c2ac8/
gree_tech
PRO
August 19, 2026
More Decks by gree_tech
See All by gree_tech
AI画像認識を活用したゲーム内決済処理検証の自動化
gree_tech
PRO
0
82
ゲームにおけるメディアミックス展開との向き合い方 -ヘブンバーンズレッドのメディアミックス企画の立て方-
gree_tech
PRO
0
85
課題発見から始めるプロダクト密着型TA組織立ち上げ 〜小規模TAチームが3Dアセットの生産性を倍にした方法〜
gree_tech
PRO
0
92
属人化を叩き割れ!「制作加速」と「安定化」の矛盾を打破する:8年目プロダクトが辿り着いた「ミスが起こり得ない」アセット制作フローの全貌
gree_tech
PRO
0
84
20年続く長寿タイトルが、15年目にして売上を伸ばせた理由
gree_tech
PRO
0
80
我々はどう生きるか
gree_tech
PRO
1
820
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
5.2k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
84
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.8k
Other Decks in Technology
See All in Technology
なぜ Temporal の大小比較には compare しかないのか / Why Does Temporal Only Have compare() for Comparisons
kazukihayase
1
150
ハーレムエンジニアリング
kazuma777777
0
180
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
140
Bits AI を制するものは Datadog を制す / The player that controls Bits AI, controls Datadog
kaminashi
0
120
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
7.5k
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.4k
猫付きpingコマンドを自作
uyuki234
0
250
AIのためのEthernet技術動向 (SerDes)
markunet
1
200
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
250
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
320
Goでデータパイプラインを作ろう
sansantech
PRO
1
500
Featured
See All Featured
Making Projects Easy
brettharned
120
6.7k
My Coaching Mixtape
mlcsv
0
240
Bash Introduction
62gerente
615
220k
Being A Developer After 40
akosma
91
590k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
The browser strikes back
jonoalderson
0
1.5k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Speed Design
sergeychernyshev
33
2k
Docker and Python
trallard
47
4.1k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
A Tale of Four Properties
chriscoyier
163
24k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
Transcript
長期運営で肥大化した Excel マスターデータの解消に向けた移行事例 株式会社WFS 麻生 航平 / 嶋田 翔太 ©WFS
自己紹介 麻生 航平 / Kohei Aso 嶋田 翔太 / Shota
Shimada スタジオ本部 スタジオ本部 アナザーエデンチーム メインプログラマ アナザーエデンチーム マネージャー ©WFS
本セッションの扱いについて ©WFS
プロジェクト概要 ©WFS
アナザーエデン 時空を超える猫 ©WFS
10年分のマスターデータの規模 シート数 Excelファイル数 80ファイル 約 最大の行数(1シート) 50万行 最大 600シート 約
最大のファイルサイズ 50MB 最大
アナザーエデン 時空を超える猫 マスターデータは Excelで管理していました 動作が重い… 80ファイルを超える Excel ©WFS
アナザーエデン 時空を超える猫 マスターデータは Excelで管理していました 80ファイルを超える Excel スプレッドシート化 ©WFS
セッションで得られること Excel → スプレッドシート運用の移行事例 • 長期運用におけるマスターデータ移行のプロセス • スプレッドシート化による生産性向上効果 • 「事故らない運用」を実現するためのUX設計
©WFS
アジェンダ 1. 従来の運用課題 2. 改善の方針 3. 実装詳細 4. 移行計画とサポート体制 5.
移行後の課題 6. 導入効果 7. 知見と教訓 8. まとめ ©WFS
1. 従来の運用課題 ©WFS
マスターデータの更新頻度 更新頻度(1日あたり) 通常時 19.4回 繁忙期 25.9回 ©WFS
Excelでのマスターデータ管理の課題 • データ数増大によるExcelの処理落ち • ファイル単位のロックによる待ち時間 • Git管理のためデータの活用が困難 ©WFS
課題① データ数増大による Excelの処理落ち • データ数増大による Excelの処理落ち • ファイル単位のロックによる待ち時間 • Git管理のためデータの活用が困難
開くのに 1分かかる Excel ©WFS
課題② ファイル単位のロックによる待ち時間 • データ数増大によるExcelの処理落ち • ファイル単位のロックによる待ち時間 • Git管理のためデータの活用が困難 エリア クエスト
キャラクター定義 シート スタイル シート パラメータ シート スキル シート アビリティ シート キャラクター ©WFS
課題② ファイル単位のロックによる待ち時間 • データ数増大によるExcelの処理落ち • ファイル単位のロックによる待ち時間 • Git管理のためデータの活用が困難 編集したい エリア
クエスト キャラクター キャラクター定義 シート スタイル シート パラメータ シート スキル シート アビリティ シート git lfs lock 編集したいシート以外もロックされてしまう…… ©WFS
課題③ Git管理のためデータの活用が困難 • データ数増大によるExcelの処理落ち • ファイル単位のロックによる待ち時間 • Git管理のためデータの活用が困難 日頃の業務にスプレッドシートを活用している •
企画書・仕様書 • 入稿データを生成するシート • QAのデータの静的チェック ©WFS
課題③ Git管理のためデータの活用が困難 • データ数増大によるExcelの処理落ち • ファイル単位のロックによる待ち時間 • Git管理のためデータの活用が困難 日頃の業務にスプレッドシートを活用している ダウンロード
アップロード GitHubから最新のExcelをダウンロードして更新し続ける必要性 ©WFS
スプレッドシートへ移行した場合 • データ数増大によるExcelの処理落ち • ファイル単位のロックによる待ち時間 • Git管理のためデータの活用が困難 ©WFS
スプレッドシートへ移行した場合 • データ数増大によるExcelの処理落ち • ロードが速い • ファイル単位のロックによる待ち時間 • シートごとのロックが可能 •
Git管理のためデータの活用が困難 • データの活用が容易 ©WFS
スプレッドシートへ 移行を決意 ©WFS
2. 改善の方針とシステム構成 ©WFS
ゲーム用データ生成フロー Excelの場合 ビルド Excel (Git管理) ゲーム用データ ©WFS
ゲーム用データ生成フロー スプレッドシートの場合 ダウンロード スプレッドシート CSV CSV CSV ︙ ︙ ︙
CSV CSV CSV CSV (Git管理) ビルド ゲーム用データ ©WFS
マスターデータ入稿フロー Excelの場合 シート1 シート2 シート3 Excel (ローカル ) PR Excel
(リモート ) ©WFS
マスターデータ入稿フロー スプレッドシートの場合 シート1 CSV シート2 CSV PR シート3 上書き スプレッドシート
CSV CSV (ローカル ) … CSV (リモート ) ©WFS
スプレッドシート化の要件 1 従来の入稿の利便性を損なわないこと 2 ゲーム開発を止めないこと ©WFS
① 従来の入稿の利便性を損なわないこと Excelでは 簡単に元に戻せた のに…… ©WFS
① 従来の入稿の利便性を損なわないこと Excelでは 簡単に元に戻せた のに…… → 検証環境を用意 ©WFS
① 従来の入稿の利便性を損なわないこと Excelでは 簡単に元に戻せた のに…… Excel用の 効率化ツールが使 えなくなると困る なぁ →
検証環境を用意 ©WFS
① 従来の入稿の利便性を損なわないこと Excelでは 簡単に元に戻せた のに…… Excel用の 効率化ツールが使 えなくなると困る なぁ →
検証環境を用意 → 代替ツールを提供 ©WFS
スプレッドシート化の要件 1 従来の入稿の利便性を損なわないこと 2 ゲーム開発を止めないこと ©WFS
② ゲーム開発を止めないこと ※更新頻度:19.4回/日 ©WFS
② ゲーム開発を止めないこと ※更新頻度:19.4回/日 GASのシステム ビルドスクリプト 効率化ツール ©WFS
② ゲーム開発を止めないこと 新しいフローに一斉に切り替えると …… GASのシステム ビルドスクリプト ※更新頻度:19.4回/日 効率化ツール ©WFS
② ゲーム開発を止めないこと ※更新頻度:19.4回/日 新しいフローに一斉に切り替えると …… イレギュラー なデータ トラブル 不具合 GASのシステム
ビルドスクリプト 効率化ツール ©WFS
一斉に切り替えた場合に予想されるトラブル ①システムの不具合の修正に対応しきれない GAS・移行に伴うツール・600個のシートのどこかで不具合が起き得る ②入稿についての問い合わせ依頼が殺到してしまう 慣れない入稿手順の問い合わせに対応しきれない ©WFS
一斉に切り替えた場合に予想されるトラブル ①システムの不具合の修正に対応しきれない GAS・移行に伴うツール・600個のシートのどこかで不具合が起き得る ②入稿についての問い合わせ依頼が殺到してしまう 慣れない入稿手順の問い合わせに対応しきれない → 約半年の期間をかけて段階的な移行を計画 ©WFS
段階的な移行とは ©WFS
段階的な移行とは ©WFS
段階的な移行とは ©WFS
段階的な移行とは ©WFS
段階的な移行とは ©WFS
段階的な移行とは ©WFS
段階的な移行とは ©WFS
スプレッドシート化の要件 1 従来の入稿の利便性を損なわないこと → 検証環境「個人用シート」の作成・効率化ツールの移行 2 ゲーム開発を止めないこと → 約半年間かけて段階的に移行 ©WFS
3. 実装内容 ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
①Excelの前処理 Excelをスプレッドシートにインポートすると一部データがエラーに → Excelの数式・他ファイル参照をスプレッドシートでも使える値に変換 =JIS(A1)&"個" 100個 ©WFS
①Excelの前処理 Excelをスプレッドシートにインポートすると一部データがエラーに → Excelの数式・他ファイル参照をスプレッドシートでも使える値に変換 =JIS(A1)&"個" 100個 → スプレッドシートで扱えない数式をExcelに指定できないようバリデーションを作成 ©WFS
①Excelの前処理 Excelをスプレッドシートにインポートすると一部データがエラーに → Excelの数式・他ファイル参照をスプレッドシートでも使える値に変換 =JIS(A1)&"個" 100個 → スプレッドシートで扱えない数式をExcelに指定できないようバリデーションを作成 スプレッドシートのセル数上限( 1000万)を超えるとエラーに
→ ファイルを分割して複数シートに分離 ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
②ビルドスクリプトの改修 • スプレッドシート → CSVをダウンロードする機能 • CSVからビルドできる機能 • 分割されたシートに対応 •
ExcelとCSVをファイル単位で切り替え可能に ダウンロード スプレッドシート CSV CSV CSV ︙ ︙ ︙ CSV CSV CSV CSV ビルド ゲーム用データ ©WFS
②ビルドスクリプトの改修 • スプレッドシート → CSVをダウンロードする機能 • CSVからビルドできる機能 • 分割されたシートに対応 •
ExcelとCSVをファイル単位で切り替え可能に Excel ダウンロード スプレッドシート CSV CSV CSV ︙ ︙ ︙ CSV CSV CSV CSV ビルド ゲーム用データ ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
③シート単位の排他制御 スプレッドシート標準のロック機能「シートを保護」 • ロックしたユーザーのみがシートを編集可能 • 他のユーザーは閲覧のみ可能 ©WFS
③シート単位の排他制御 スプレッドシート標準のロック機能「シートを保護」 • ロックしたユーザーのみがシートを編集可能 • 他のユーザーは閲覧のみ可能 ※本発表では「保護」を「ロック」という言葉で統一させていただきます ©WFS
③シート単位の排他制御 スプレッドシート標準のロック機能の課題 • ロックされていないシートは全ユーザーが編集ができてしまう ◦ 閲覧したい場合でも誤って操作されてしまう ©WFS
③シート単位の排他制御 スプレッドシート標準のロック機能の課題 • ロックされていないシートは全ユーザーが編集ができてしまう ◦ 閲覧したい場合でも誤って操作されてしまう • 作業者がロック解除を忘れたら他のメンバーが編集できない ◦ 強制的にロックを解除できる仕組みがあると便利
©WFS
③シート単位の排他制御 スプレッドシート標準のロック機能の課題 • ロックされていないシートは全ユーザーが編集ができてしまう ◦ 閲覧したい場合でも誤って操作されてしまう • 作業者がロック解除を忘れたら他のメンバーが編集できない ◦ 強制的にロックを解除できる仕組みがあると便利
→ 編集するときだけユーザーを「編集者」に制御する運用 ©WFS
基本は「閲覧者」編集時のみ「編集者」にする方法 1. 専用の管理アカウントを作成、権限はオーナー、全シートをロック 2. ユーザーがシートをロック/解除するAPIを実装 ロック API • • •
管理アカウントがユーザーを「編集者」権限に変更 ユーザーと管理アカウントが指定シートをロック 管理シートにアカウント名を記載 ©WFS
基本は「閲覧者」編集時のみ「編集者」にする方法 1. 専用の管理アカウントを作成、権限はオーナー、全シートをロック 2. ユーザーがシートをロック/解除するAPIを実装 ロック API • • •
管理アカウントがユーザーを「編集者」権限に変更 ユーザーと管理アカウントが指定シートをロック 管理シートにアカウント名を記載 ©WFS
基本は「閲覧者」編集時のみ「編集者」にする方法 1. 専用の管理アカウントを作成、権限はオーナー、全シートをロック 2. ユーザーがシートをロック/解除するAPIを実装 ロック API • • •
管理アカウントがユーザーを「編集者」権限に変更 ユーザーと管理アカウントが指定シートをロック 管理シートにアカウント名を記載 ロック 解除 API • • • ユーザーと管理アカウントが指定シートをロック解除 管理アカウントがユーザーを「閲覧者」権限に変更 管理シートからアカウント名を削除 ©WFS
シートのロック・解除を APIとして提供した理由 スプレッドシート以外からもシートのロック・解除が可能 • 開発ツールからロック・解除できる • CSVのプルリクをマージしたときに自動で解除できる PRマージ ロック 解除
API ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
④個人用シートの作成 個人用シートの誕生背景 手元で自由に検 証したい 本番環境 ©WFS
④個人用シートの作成 個人用シートの誕生背景 手元で自由に検 証したい 本番環境 複製 個人用シート ©WFS
④個人用シートの作成 個人用シートの誕生背景 手元で自由に検 証したい 本番環境 複製 ダウンロード 個人用シート ©WFS
④個人用シートの作成 検証したデータを本 番環境に 反映させたい 本番環境 手作業で反映 …? 個人用シート ©WFS
④個人用シートの作成 個人用シート →本番環境にマージする機能も用意 検証したデータを本 番環境に 反映させたい 本番環境 マージ 個人用シート ©WFS
個人用シートから本番環境へのマージ機能 • 行単位の差分(追加・削除・変更)を抽出 • 数式や背景色といった見た目の情報も反映 変更 追加 削除 ©WFS
個人用シートから本番環境へのマージ機能 処理に時間がかかるため GASからPython製のWebアプリに移行 GAS Python (Streamlit + pandas) ©WFS
実装内容 ①Excelの前処理 ②ビルドスクリプトの改修 ③シート単位の排他制御 ④個人用シートの作成 ⑤専用GUIツールの開発 ©WFS
⑤専用GUIツールの開発 スプレッドシートのシート数が膨大で目当てのシートを探すのが大変でした ©WFS
⑤専用GUIツールの開発 スプレッドシートのシート数が膨大で目当てのシートを探すのが大変でした ©WFS
⑤専用GUIツールの開発 目的のシートに即座にアクセスできる GUIツールを開発 • スプレッドシートを開く • シート名検索 • シートのロック・解除 •
シートのロック状態の確認 • 個人用シートの作成・確認 ©WFS
4. 段階的な移行とサポート体制 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
段階的な移行のスケジュール 6段階で期間を空けて移行を実施 大型コンテンツ開発期間のため回避 全体説明 動画マニュアル 視聴期間 更新がほぼないもの 9/22〜 更新が低頻度のもの 10/6〜
フィールド関連 10/20〜 バトル関連 1/12〜 演出関連 1/26〜 運用関連 2/9〜 9月 10月 11月 12月 1月 2月 ©WFS
サポート体制 動画マニュアル 実際に入稿する様子を動画でキャプチャして、ナレーション付きで解説したものをチーム メンバーに展開 入稿手順書 画像付きで見やすいページを用意 ビデオ通話での入稿サポート 初回の入稿が不安な方向けに、ビデオ通話でサポート ©WFS
サポート体制 動画マニュアル 実際に入稿する様子を動画でキャプチャして、ナレーション付きで解説したものをチーム メンバーに展開 入稿手順書 画像付きで見やすいページを用意 ビデオ通話での入稿サポート 初回の入稿が不安な方向けに、ビデオ通話でサポート ©WFS
サポート体制 動画マニュアル 実際に入稿する様子を動画でキャプチャして、ナレーション付きで解説したものをチーム メンバーに展開 入稿手順書 画像付きで見やすいページを用意 ビデオ通話での入稿サポート 初回の入稿が不安な方向けに、ビデオ通話でサポート ©WFS
サポート体制 動画マニュアル 実際に入稿する様子を動画でキャプチャして、ナレーション付きで解説したものをチーム メンバーに展開 入稿手順書 画像付きで見やすいページを用意 ビデオ通話での入稿サポート 初回の入稿が不安な方向けに、ビデオ通話でサポート → 不便な点・わからない点を開発側で把握し改善
©WFS
5. 移行後の課題 ©WFS
移行後の課題① ロックしていないシートが数式参照により変更されてしまうことがある キャラクター定義 編集 スタイル パラメータ スキル 数式で参照 ← 勝手に変更されてしまう
アビリティ • 変更されたシートを編集する際に意図しない差分として出力されてしまう • 数式参照している値は確認用途であり、ゲーム用データに使われないため許容 ©WFS
移行後の課題② 本番環境のスプレッドシートで操作を戻したいという要望が発生 本番環境の 操作を戻したい 本番環境 • 個人用シートの内容をマージした後に取り消したい場合がある • CSVをマージするごとにスプレッドシート側でもバックアップを作成 ©WFS
6. 導入効果 ©WFS
3つの課題は、どう変わったか Excelで運用していた頃に抱えていた課題 1 処理落ち 2 待ち時間 3 データの活用 ©WFS
① 処理落ち Excelで運用していた頃に抱えていた課題 1 処理落ち 2 待ち時間 3 データの活用 ©WFS
① 処理落ち: Excelとスプレッドシートの比較動画 ©WFS
① 処理落ち:スプレッドシート化とシート分割で解消 ← データはクラウドにある ← 開くまでの時間は PCの性能とネットワーク環境に左右
① 処理落ち:スプレッドシート化とシート分割で解消 ※ 計測条件(M2 Max搭載のMacBook Pro、全セル同一値、ネットワーク環境に依存する簡易計測)
② 待ち時間 Excelで運用していた頃に抱えていた課題 1 処理落ち 2 待ち時間 3 データの活用 ©WFS
② 待ち時間 会話から「ロック」という言葉が消えた ©WFS
② 待ち時間:ロック待ちがほぼ消えた いつまでExcelファイルを使用しますか? 先にExcelファイルを編集させていただけないでしょうか 他の人が作業できなくなってしまうので解除をお願いします ◯◯さんがロック中なので登録するのがもう少し後になります ©WFS
② 待ち時間: 4人同時に作業していた日 ある日、キャラクター関係シートを 4人が別々に編集した記録 4人が同時に 手を動かした時間 Aさん Bさん Cさん
Dさん 0900 1200 1500 1800 ※実ログをもとにした概念図。帯が重なる時間=同時に作業していた時間 ©WF S ©WFS
② 待ち時間 シートA シートB シートC シートD シートE ©WFS
② 待ち時間 シートA シートB シートC シートD シートE ©WFS
② 待ち時間: Excelなら直列で約 8時間半の待ち Git LFSのロックはファイル単位 Excelで同じことをすると1人ずつ順番にしか進められない 実際(並⾏作業) 10時間45分 もし直列で作業したら
19時間10分 約8時間半 (ただ待っていただけの時間) 09:00 12:00 15:00 18:00 21:00 00:00 03:00 ©WFS
③ データ活用 Excelで運用していた頃に抱えていた課題 1 処理落ち 2 待ち時間 3 データの活用 ©WFS
③ データ活用:バイナリからテキスト管理へ Excel はバイナリファイル Git に乗せても中身の差分は見えない ©WFS
③ データ活用: CSV化で、変更がそのまま差分に 入稿データを CSV形式でGit管理に変更 • どの行のどのセルが変わったか、変更履歴の追跡が容易に • バグ発生時の原因調査(いつ・誰が・どう変えたか)のコスト減 ©WFS
③ データ活用: URL一つで最新を参照 https://docs.google.com/spreadsheets/d/… ©WFS
③ データ活用:運用 — お知らせ整形を GAS で自動化 全言語ぶんのデータを揃える手間が、体感でおよそ 10分の1に ©WFS
③ データ活用: QA — 最新データを直接チェック 最新のマスターデータを直接読んで静的チェックを自動化 ©WFS
③ データ活用:バトル — キャラクター比較ツール 中間データが CSVになったことでキャラクターの性能比較が格段にしやすく ©WFS
③ データ活用:スクリプト・ AIと相性がいい CSV Python Ruby Shell ©WFS
7. 移行から得られた知見と教訓 ©WFS
移行から得られた知見と教訓 実際にぶつかった落とし穴と教訓 1 「事故らない運用」はシステムで強制すべき 2 GASのシステム構築は初期設計が重要 3 定着の成否を分けるのは UX ©WFS
①「事故らない運用」をシステムで強制する スプレッドシートは自由度が高い = 誰でも・なんでも、壊せてしまう 、ということ ©WFS
①「事故らない運用」をシステムで強制する 機能を増やすのではなく、 あえて「できないこと」 を増やす ©WFS
① 編集できるのは 管理アカウントとロックをかけたユーザだけ 管理アカウント ロックをかけたユーザー ©WFS
①「事故らない運用」をシステムで強制する あえて「できないこと」を増やす設計 機能を拡張するのではなく、 マスターデータ本体は管理者アカウントとロックをかけたユーザ以外は編集不可に設定 決められたフローの厳守 個人用シートの作成やマージ処理、ロック・ロック解除などの操作は、 専用に用意した仕組みの中だけでしか実行できないように制御 ©WFS
② GASのシステム構築は初期設計が重要 GASの一度の実行時間は最大 6分まで 大規模なデータを扱うと、普通に書いたつもりでも簡単に6分の制限にぶつかる 遅さの正体は、スクリプト ⇔ スプレッドシート間の「通信の往復」 1セルずつ読み書きすると往復がセルの数だけ積み上がる 一括にまとめるだけで、速度は劇的に変わる
©WFS
② 計測してみた( 5回平均) テストデータで処理速度を計測 • 読み込み:getValue / getValues / Sheets
API • 書き込み:setValue / setValues • シートのコピー:copyTo / batchUpdate / makeCopy ©WFS
② 読み込み: getValue は1.5万セルで 6分の制限 getValue(1セルずつ) タイムアウト getValues(一括)/ Sheets API
② 書き込み: 1セルずつでもタイムアウトしない ©WFS
② シートのコピー:規模で最適な手段が変わる ©WFS
② GASのシステム構築は初期設計が重要 分割処理を前提とした設計 後から分割するのは困難 最初から「500件ずつ処理し、続きは次回の実行トリガーへ回す」設計思想を持つ 一時シートをキャッシュとして利用 計算の途中結果を一時シートに書き出し、APIの往復呼び出し回数そのものを削減する GASに固執しない GASの限界を超える巨大データ処理は、Pythonなど、別の手段で取得・加工する ©WFS
② コードの組み方:機能ごとに分け、土台を 1箇所に 機能のまとまりごとに「プロジェクト」単位で分割 ©WFS
② コードの組み方:機能ごとに分け、土台を 1箇所に どの機能も共通して使う処理は、土台になる 1箇所だけに置く シートロック・ ロック解除 個人用シート 作成 マスターデータ
へのマージ … ベースの関数 定数群 シートの高速な読み書き、 APIリクエスト制御、例外ハンドリング など全ての個別モジュールが共通で依存する処理をカプセル化 したプロジェクト スプレッドシート ID、管理者用アカウント情報などのグローバ ルな情報を一元管理するプロジェクト ©WFS
② コードの組み方:機能ごとに分け、土台を 1箇所に どの機能も共通して使う処理は、土台になる 1箇所だけに置く シートロック・ ロック解除 個人用シート 作成 マスターデータ
へのマージ … 読み込み処理の改善 ベースの関数 定数群 シートの高速な読み書き、 APIリクエスト制御、例外ハンドリング など全ての個別モジュールが共通で依存する処理をカプセル化 したプロジェクト スプレッドシート ID、管理者用アカウント情報などのグローバ ルな情報を一元管理するプロジェクト ©WFS
② コードの組み方:機能ごとに分け、土台を 1箇所に どの機能も共通して使う処理は、土台になる 1箇所だけに置く シートロック・ ロック解除 個人用シート 作成 マスターデータ
へのマージ … 定数の変更 ベースの関数 定数群 シートの高速な読み書き、 APIリクエスト制御、例外ハンドリング など全ての個別モジュールが共通で依存する処理をカプセル化 したプロジェクト スプレッドシート ID、管理者用アカウント情報などのグローバ ルな情報を一元管理するプロジェクト ©WFS
② コードの組み方:機能ごとに分け、土台を 1箇所に どの機能も共通して使う処理は、土台になる 1箇所だけに置く シートロック・ ロック解除 個人用シート 作成 マスターデータ
へのマージ … ベースの関数 定数群 シートの高速な読み書き、 APIリクエスト制御、例外ハンドリング など全ての個別モジュールが共通で依存する処理をカプセル化 したプロジェクト スプレッドシート ID、管理者用アカウント情報などのグローバ ルな情報を一元管理するプロジェクト ©WFS
③ 定着の成否を分けるのは UX 正しく動く ≠ 毎日使われる ©WFS
③ 定着の成否を分けるのは UX 専用GUIリリース時は、約 600シートから目的のものを探す道具だった 効果 探す時間が一気に短縮 探す時間が劇的に減り、 これだけで十分に役立つツールになると思っていた ©WFS
③ 定着の成否を分けるのは UX 課題 「探す」の先の操作 シートを開く ➔ GASメニューを呼び出す のように、目的のシートを「探す」以降の操作が多かった ©WFS
③ 定着の成否を分けるのは UX ©WFS
③ 定着の成否を分けるのは UX 内製ツールは「完成」を目指さない まず動くものを 使ってもらいながら 機能が 1〜2週間で出す 現場に寄せて育てていく 後から育つ
©WFS
8. まとめ ©WFS
まとめ Excel時代の課題 スプレッドシート移行後の解決策・結果 データ増大による処理落ち クラウド処理・シート分割 により瞬時に開ける ファイル単位ロックの待ち時間 シート単位のロック により同時編集が可能に Git管理(バイナリ)のデータ活用難
CSV管理化で差分可視化・最新データの参照が容易に ©WFS
まとめ 本質はツールの置き換えではなく、 大人数で安全に同時作業できる運用への作り直し ©WFS
ご清聴ありがとうございました ©WFS
©WFS