Slide 1

Slide 1 text

AppSheet を使った データ品質の改善 2024/05/08 西山 由倭

Slide 2

Slide 2 text

自己紹介 西山 由倭 / Yui Nishiyama ⚫ データエンジニアリング部 DREチーム所属 ⚫ 2023/04 入社(元SIer) ⚫ 一昨年から乗馬を始めました 「猫吸い」ならぬ「馬吸い」してます

Slide 3

Slide 3 text

タイミーの実績 スキマ バイト No.1 ※2024年2月時点 ※1 [調査方法]デスクリサーチ及びヒアリング調査 [調査期間]2021年2月8日~22日 [調査概要]スキマバイトアプリ サービスの実態調査 [調査対象]2020年12月までにサービスを開始しているスキマバイトアプリ10サービス [調査実施]株式会社ショッ パーズアイ ※2 [出典]AppStoreライフスタイルカテゴリーランキング(2021年5月時点) 3 累計求人案件数 ・ダウンロード数 ※1 ※2 導入事業者数 98,000企業 ワーカー数 700万人

Slide 4

Slide 4 text

4

Slide 5

Slide 5 text

目次 ● データ品質を悪化させる原因とは ● ノーコードツールの導入 ● AppSheetを運用してみて ● まとめ

Slide 6

Slide 6 text

データ入力ツールとして 表計算ソフト を使っていませんか?

Slide 7

Slide 7 text

手軽に使える一方で データ品質 を守れない そんな課題に対して取り組んだことをお話します

Slide 8

Slide 8 text

1 データ品質を 悪化させる原因とは

Slide 9

Slide 9 text

データ品質問題を発生させる一般的な原因 1. リーダーシップの欠如による問題 多くのデータ品質問題は高品質なデータに対する組織のコミットメントの欠如によって引き起こされる。 コミットメントの欠如、それはリーダーシップの欠如に由来する。 2. データ入力プロセスで発生する問題 入力インターフェースの設計が不十分であったり、 業務プロセスの変更や一貫性のない業務プロセスが実行されることで発生する。 3. データ処理機能の稼働中に発生する問題 データソース仕様の誤認識やソースシステム側のデータ構造の変更によって引き起こされる。 4. システム設計が原因で起きる問題 参照整合制制約、一意性制約の不備等がこれに当たる。 5. 問題の修復により発生する問題 業務の中断を招く不正データの流入、セキュリティの喪失などが発生すると手作業でデータパッチを適用することになる。 急造したスクリプトや手動コマンドは、予期せぬ結果がさらにエラーを発生させたり、必要以上にデータを変更したりするリスクが高い。 『データマネジメント知識体系ガイド』第13章より

Slide 10

Slide 10 text

データ品質問題を発生させる一般的な原因 1. リーダーシップの欠如による問題 多くのデータ品質問題は高品質なデータに対する組織のコミットメントの欠如によって引き起こされる。 コミットメントの欠如、それはリーダーシップの欠如に由来する。 2. データ入力プロセスで発生する問題 入力インターフェースの設計が不十分であったり、 業務プロセスの変更や一貫性のない業務プロセスが実行されることで発生する。 3. データ処理機能の稼働中に発生する問題 データソース仕様の誤認識やソースシステム側のデータ構造の変更によって引き起こされる。 4. システム設計が原因で起きる問題 参照整合制制約、一意性制約の不備等がこれに当たる。 5. 問題の修復により発生する問題 業務の中断を招く不正データの流入、セキュリティの喪失などが発生すると手作業でデータパッチを適用することになる。 急造したスクリプトや手動コマンドは、予期せぬ結果がさらにエラーを発生させたり、必要以上にデータを変更したりするリスクが高い。 『データマネジメント知識体系ガイド』第13章より

Slide 11

Slide 11 text

特定の施策のデータ収集のツールとして Googleスプレッドシートや Google Forms を使用 列の追加や列名の変更によって スキーマが変わってしまう 入力規則が十分に設定できない タイミーで発生したデータ入力インターフェースの問題 手軽に作成できる一方で…

Slide 12

Slide 12 text

データ入力プロセスで発生した問題による影響

Slide 13

Slide 13 text

2 ノーコードツールの導入

Slide 14

Slide 14 text

ツールの選定 ● バリデーションチェックが柔軟に設定できる ● BigQuery への連携が可能である ● 導入コストが低い Google Workspace の全エディションで AppSheet Core (標準ライセンス) を利用できることもあり 試験的に AppSheet を導入

Slide 15

Slide 15 text

  AppSheet とは Google が提供するノーコードツール ● 既存のデータソースとの連携 ○ スプレッドシート / Excel / BigQueryやMySQL等のDB / Salesforce etc. との連携が可能 ● テンプレートによる効率的な開発 ○ 10 種類以上の UI・UX が用意されており、それらをカスタマイズするだけでOK ● データ入力以外の豊富な機能 ○ 写真撮影・保存 ○ 電子署名・フリーハンド入力 ○ メール連携 ○ GPS 情報連携・地図表示 etc.

Slide 16

Slide 16 text

アプリの作成方法 ① 新規アプリを作成 ② データソースを追加 これだけで 入力フォーム や 一覧画面 といった 基本的な画面が 自動的 に作られる あとは バリデーション や デザイン などの 細かな設定を調整すれば それだけで シンプルなデータ入力アプリ が完成!!

Slide 17

Slide 17 text

バリデーション の設定 入力必須チェック データソースの設定画面で「REQUIRE?」にチェックするだけ

Slide 18

Slide 18 text

バリデーション の設定 重複チェック データソースの設定画面で「KEY?」にチェックするだけ ※複合キーを作成したい場合※  ① Virtual Columnを追加  ② カラムAとカラムBの値を結合する関数を設定  ③ 「KEY?」にチェック

Slide 19

Slide 19 text

バリデーション の設定 型チェック データソースの設定画面で「TYPE」を選択するだけ ※既存のデータソースに接続した場合は自動で選択される 選択した型にあわせた「UIコンポーネント」が 自動で生成される 例:  Number ▶ +-ボタン付きのテキストボックス  DateTime ▶ カレンダー  Enum ▶ プルダウン ※各TYPEの詳細についてはこちら

Slide 20

Slide 20 text

初期値 の設定 データソースの設定画面で「INITIAL VALUE」を入力するだけ 文字列や数値だけでなく、関数の指定も可能 加えて「EDITABLE?」のチェックを外すことで初期値から修正できなくすることができる 使用例:登録日時、登録者名

Slide 21

Slide 21 text

+α AppSheet でやろうとしたこと BigQuery からマスターデータを取得し入力に使用 目的:入力ミスや表記揺れの防止 承認フロー の実装 目的:データオーナーによる登録データの確認

Slide 22

Slide 22 text

BigQuery からのマスターデータの取得 ● Read Only の設定が可能 ● 他データソースとの紐付けが可能 ● 取得したデータをプルダウンの中身に設定することが可能 !!注意!! 様々なかたちでBigQueyのデータをアプリ上で使用することはできるが… 最大10万件までしか扱うことができない 複数テーブルから取得しているとあっという間に10万件を超えてしまって 実はデータが全件表示されていなかったなんてことも セキュリティーフィルターという機能を使ってユーザー毎に表示件数を絞る等の対策が必要

Slide 23

Slide 23 text

承認フロー の実装 アクション(機能) ボタンを追加してその動作を設定できる 動作の種類は メール送信・データ更新・画面遷移など ボタンの表示条件も設定可能 ※管理者テーブルを作成してユーザー追加することで  管理者だけが承認できる ▼画面イメージ ▼アクションの設定

Slide 24

Slide 24 text

契約プラン による違い 契約プランによってできることが変わってくる 上位プランを契約していなくても一部機能が使えてしまったりするので注意 プラン Core(標準のライセンス) Enterprise データソースの種類 スプレッドシート Excel AppSheet(独自)データベース Cloud データベース (BQ/DynamoDB/MySQL…) SaaSプロバイダ(Salesforce) 他 監査ログの保持 7日間 180日間 +エクスポート可能 アプリのバージョン履歴 7日間 180日間 ※各種プランの詳細についてはこちら

Slide 25

Slide 25 text

3 AppSheetを運用してみて

Slide 26

Slide 26 text

導入した結果 Good ● データ入力に起因するスキーマの 破壊的な変更 は防げるようになった ● 表記揺れ がなくなった More ● 大量データの登録 が不便になった ○ 似たようなデータを数件~数十件一括登録するケースがあった ○ データコピーやCSVインポートの機能はあるものの、スプレッドシートと比べると入力が煩雑 ● 一部入力制御が不足し、入力ミス を完全には無くせなかった ○ データ件数制限でマスターデータが扱いきれない ○ 正規表現を使うような複雑なバリデーションが設定できない

Slide 27

Slide 27 text

蓋を開けたら機能していなかった入力制御 背景: タイミーを導入している企業に関する情報を管理 アプリケーションで発行されるIDなどを入力していたが 値を間違って入力してもユーザー自身が気づかない問題があった AppSheet で試した解決策: BigQuery からアプリケーションのデータを取得しマスターデータとして活用 入力フロー  ① 求人を出している店舗のIDを入力  ② 店舗に紐づく情報(企業名・店舗名・求人)が表示  ③ 表示された情報を元に入力値が間違いないかチェック    表示されない場合は登録不可 ※ちなみにプルダウンから店舗IDを選択させようとするとアプリが重すぎて動作しなくなりました

Slide 28

Slide 28 text

蓋を開けたら機能していなかった入力制御 起きた事象: 正しいIDを入力しても紐づく情報が表示されない 原因: データ件数の超過 AppSheetの仕様として アプリ起動時に全ての関連データを取得し内包していることが判明 BigQuery から取得できるデータの上限は 10万件 だが [企業情報]数万件 + [店舗情報]数万件 + [求人情報]数万件 + 他 でとっくに10万件を超えていた

Slide 29

Slide 29 text

運用を始めて発覚した課題 デグレ が発生しやすい ノーコードツールゆえにテストの手段が乏しい 既存の設定が変更されていることに気づかずリリースしてしまうことがあった 設定値のエクスポートができると良さそう 入力ツール側でエラーが発生する 異常データによる後続パイプラインでのエラーは減ったが ツールの内部エラーによって入力できない事態が発生した そうした障害対応もありAppSheet導入後も 運用コスト はあまり削減されなかった

Slide 30

Slide 30 text

特に AppSheet が有用なケース シンプルなデータ入力を行いたい リッチなバリデーションを設定したり、アプリの動作を複雑にカスタマイズしたりしなければ 導入・運用ともにコスト低く、データ品質の担保ができる 運用開始後、頻繁に改修を行わない テストの手段が目視でのチェックや手動での動作確認しかない以上、 改修すればするほど障害発生のリスクが高まる

Slide 31

Slide 31 text

タイミーでのユースケース PoC的に活用 例: 営業が使用する各社の情報入力用のフォーム ▶ SFA を拡張させるまでの繋ぎとしてAppSheetを使用 例: 特定の施策を適用するための登録フォーム あるオペレーションを適用するために、カスタマーサポートチームが設定値を登録する入力フォーム ▶ タイミーのアプリケーションに実装されるまでの繋ぎ

Slide 32

Slide 32 text

4 まとめ

Slide 33

Slide 33 text

まとめ ◇ データ入力の精度をあげる手段としてノーコードツールは有用 特に別システムへの移行期間など 低コストで一定以上のデータ品質の担保が必要なケースにおいて有効 ◇ 特殊なことをやりたい場合は仕様をよく確認する 簡単に実装できたり、テストの手段が限られているため、 不備に気づかずリリースしてしまわないよう留意する必要がある ◇ 運用性まで考慮してツールを選定すべし 安定性などすぐに判断できないものもあるが観点としては持っておきたい

Slide 34

Slide 34 text

いっしょにデータ品質を改善していきましょう!! https://hrmos.co/pages/timee/jobs/1682251404118319115 We're hiring!