Slide 1

Slide 1 text

「攻め」のリプレース ナレッジワークのユーザー体験を支えるコンテンツ処理システムについて 2024-07-29 Encraft #16 プロダクトを支えるコアシステム 株式会社ナレッジワーク 宮田聖也

Slide 2

Slide 2 text

© Knowledge Work Inc. 自己紹介 2 2 • 宮田聖也 (@38xxer) • SWE at Knowledge Work • 2024 年 3 月入社 • Golang, Ruby が好き • 趣味:🍺🍺🍺, ⚽ (󰧹, 󰎼), 🎸, 📷

Slide 3

Slide 3 text

© Knowledge Work Inc. アジェンダ 3 3 ・ナレッジワークについて ・コアシステムである「コンテンツ処理システム (CP)」の概要 ・CP のリプレースの背景

Slide 4

Slide 4 text

© Knowledge Work Inc. 理解していただきたいポイント 4 4 ・ナレッジワークのコアシステムの概要 ・どんな課題にぶつかったか ・どう改善したか

Slide 5

Slide 5 text

© Knowledge Work Inc. プロダクト紹介 5 みんなが売れる営業になる セールスイネーブルメントクラウド セールスイネーブルメントクラウド「ナレッジワーク」 2022年リリース、資料共有・商談準備 SaaS

Slide 6

Slide 6 text

© Knowledge Work Inc. 6 ユーザー像 ・エンタープライズ企業の セールス ・主な業務は 顧客との商談、商談準備 ・商材数は膨大、新商品も続々登場 ・社内ファイル共有システム に膨大な社内資 料がある

Slide 7

Slide 7 text

© Knowledge Work Inc. セールスメンバーが感じるユーザー体験のペイン 7 7 より資料検索・資料閲覧を効率化したい これまで あるべき 見つかる 開ける 欲しい資料がすぐ見つかる ファイルが瞬時に開く 片っ端から社内システムのフォルダを開く ファイルツリーを深ぼって必要なファイルを探す、ファイル を開くのに 10秒 見つか らない 開け ない わから ない わかる

Slide 8

Slide 8 text

© Knowledge Work Inc. ナレッジワークについて 8 8 商品資料・提案資料・プレゼン動画などをアップロード 「ナレッジ」という単位で社内に共有

Slide 9

Slide 9 text

© Knowledge Work Inc. ナレッジワークについて 9 9

Slide 10

Slide 10 text

© Knowledge Work Inc. ナレッジとは 10 10 ナレッジワーク における情報共有の単位

Slide 11

Slide 11 text

© Knowledge Work Inc. ナレッジの種類 11 11 一つのナレッジには多様なコンテンツが紐づいている ナレッジ

Slide 12

Slide 12 text

© Knowledge Work Inc. それを生成するのが 12 12 コンテンツ処理システムです!

Slide 13

Slide 13 text

© Knowledge Work Inc. コンテンツ処理システム( CP) 13 13 コンテンツ処理= ナレッジに紐づくコンテンツの作成 画像・文字・動画 , … Content Processing ファイル

Slide 14

Slide 14 text

© Knowledge Work Inc. 14 14

Slide 15

Slide 15 text

© Knowledge Work Inc. 当初のコンテンツ処理システム( CP)(要点のみ抜粋) 15 15 Processor Converter Initiator Finalizer API Server Original Bucket Scanner User

Slide 16

Slide 16 text

© Knowledge Work Inc. 当初の CP(要点のみ抜粋) 16 16 Processor Converter Initiator Finalizer API Server Original Bucket Scanner User

Slide 17

Slide 17 text

© Knowledge Work Inc. 当初の CP(要点のみ抜粋) 17 17 Processor Converter Initiator Finalizer API Server Scanner ファイル形式 の判別 ファイル スキャン ファイル変換 コンテンツ 生成 終了の通知 責務が分割された多段階処理 Original Bucket

Slide 18

Slide 18 text

© Knowledge Work Inc. 18 ナレッジ閲覧用のコンテンツに加えて ユーザー体験向上に寄与するコンテンツも生成 生成されるコンテンツの例 ・一覧画面に表示するサムネイル ・PPT ファイルから生成した PDF ・PDF から抽出したテキスト ・詳細画面に表示する画像 + ・サムネイルへのホバー操作時に表示する コンテンツ ・軽量化した PDF … etc.

Slide 19

Slide 19 text

© Knowledge Work Inc. 音声・動画ファイルからのテキスト情報の抽出のような 重い処理が追加された ファイル変換、サムネイルの生成、 サムネイルへのホバー操作時に表示する コンテンツ、テキスト抽出処理 19 コンテンツ処理の要件 音声・動画ファイルからの 生成物の抽出 当初のコンテンツ 
 追加のコンテンツ 


Slide 20

Slide 20 text

© Knowledge Work Inc. 当初の CP(要点のみ抜粋) 20 20 Processor Converter Initiator Finalizer API Server Scanner External API Original Bucket

Slide 21

Slide 21 text

© Knowledge Work Inc. 課題① - ボトルネック処理による遅延 21 21 Processor Converter Initiator Finalizer API Server Scanner External API 全コンテンツ処理の終了まで ナレッジが閲覧できない Original Bucket

Slide 22

Slide 22 text

© Knowledge Work Inc. 課題② - 複雑さの増大によるスケーラビリティ悪化 22 22 Processor Converter Initiator Finalizer API Server Scanner External API 変換の順序が 標準化されていない 条件分岐が分散している Original Bucket

Slide 23

Slide 23 text

© Knowledge Work Inc. 課題② - 複雑さの増大によるスケーラビリティ悪化 23 23 Processor Converter Initiator Finalizer API Server Scanner External API 変換の順序が 標準化されていない 条件分岐が分散している Original Bucket

Slide 24

Slide 24 text

© Knowledge Work Inc. 課題② - 複雑さの増大によるスケーラビリティ悪化 24 24 Processor Converter Initiator Finalizer API Server Scanner External API 新たな処理の追加時に 考慮するケースが多くなる Original Bucket

Slide 25

Slide 25 text

© Knowledge Work Inc. 課題③ - トレーサビリティの低さ 25 25 Processor Converter Initiator Finalizer API Server Scanner External API どこかの段階で失敗した場合 原因調査が大変 Original Bucket

Slide 26

Slide 26 text

© Knowledge Work Inc. コンテンツ処理システムを取り巻く外部環境 26 26 ナレッジはコアのドメイン 今後展開されるプロダクトでも参照される可能性が高い 2024 - 2026 年に 10 個のプロダクトを展開することが決定している ナレッジ

Slide 27

Slide 27 text

© Knowledge Work Inc. コンテンツ処理システムを取り巻く外部環境 27 27 今後展開されるプロダクトでは ドメインに応じた新たなコンテンツが必要になる可能性がある ナレッジ

Slide 28

Slide 28 text

© Knowledge Work Inc. コンテンツ処理システムを取り巻く外部環境 28 28 コンテンツ処理システムの追加開発は 複数のプロダクトチームが実行する可能性がある 開発プロセスを標準化したい ナレッジ

Slide 29

Slide 29 text

© Knowledge Work Inc. コンテンツ処理システムを取り巻く外部環境 29 29 今後、確実に複雑度を増す処理システム それに伴って追加実装の難易度は上がる ユーザー体験も悪くなる可能性がある

Slide 30

Slide 30 text

© Knowledge Work Inc. 30 30 実際に問題が発生する前にリプレース

Slide 31

Slide 31 text

© Knowledge Work Inc. 31 31 実際に問題が発生する前にリプレース 前のめりなリプレース ➡ 「攻め」のリプレース

Slide 32

Slide 32 text

© Knowledge Work Inc. 新 CP 32 32 Dispatcher Engine A DB API Server Engine C Engine B Original Bucket

Slide 33

Slide 33 text

© Knowledge Work Inc. 新 CP(要点のみ抜粋) 33 33 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B ・エンジン処理の起 動 ・処理ステータス管 理 ・終了の通知 ・広義のファイル変換処理 ・形式判別やスキャンも含む ステータス保存 Original Bucket

Slide 34

Slide 34 text

© Knowledge Work Inc. 旧システムは多段階処理だった 34 34 Processor Converter Initiator Finalizer API Server Scanner ファイル形式 の判別 ファイル スキャン ファイル変換 コンテンツ 生成 終了の通知 Original Bucket

Slide 35

Slide 35 text

© Knowledge Work Inc. 新 CP 35 35 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B 責務を分割しつつ 「エンジン」という形に抽象化 Original Bucket

Slide 36

Slide 36 text

© Knowledge Work Inc. 旧システムの課題① - ボトルネック処理による遅延 36 36 Processor Converter Initiator Finalizer API Server Cloud Storage Scanner External API 全コンテンツ処理の終了まで ナレッジが閲覧できない

Slide 37

Slide 37 text

© Knowledge Work Inc. 新 CP 37 37 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B save state Original Bucket

Slide 38

Slide 38 text

© Knowledge Work Inc. 新 CP 38 38 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B save state Original Bucket

Slide 39

Slide 39 text

© Knowledge Work Inc. 新 CP 39 39 Dispatcher Engine A DB API Server notify Original Bucket Engine C Engine B Original Bucket

Slide 40

Slide 40 text

© Knowledge Work Inc. 新 CP 40 40 Dispatcher Engine A DB API Server notify Original Bucket Engine C Engine B 早い成果物から利用可能 Original Bucket

Slide 41

Slide 41 text

© Knowledge Work Inc. 新 CP 41 41 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B Original Bucket

Slide 42

Slide 42 text

© Knowledge Work Inc. 新 CP 42 42 Dispatcher Engine A DB API Server Original Bucket notify Engine C Engine B Original Bucket

Slide 43

Slide 43 text

© Knowledge Work Inc. 新 CP 43 43 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B 一部失敗した場合も 他の成果物は利用可能 Original Bucket

Slide 44

Slide 44 text

© Knowledge Work Inc. 旧システムの課題② - 複雑さの増大によるスケーラビリティ悪化 44 44 Processor Converter Initiator Finalizer API Server Scanner External API 変換の順序が 標準化されていない 条件分岐が分散している Original Bucket

Slide 45

Slide 45 text

© Knowledge Work Inc. 新 CP 45 45 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B I/F が統一され 追加開発が 容易になった Engine D Original Bucket

Slide 46

Slide 46 text

© Knowledge Work Inc. 新 CP 46 46 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B コンテンツ処理 の順序の知識が 集約された Original Bucket

Slide 47

Slide 47 text

© Knowledge Work Inc. 旧システムの課題③ - トレーサビリティの低さ 47 47 Processor Converter Initiator Finalizer API Server Scanner External API どこかの段階で失敗した場合 原因調査が大変 Original Bucket

Slide 48

Slide 48 text

© Knowledge Work Inc. 新 CP 48 48 Dispatcher Engine A DB API Server Original Bucket Engine C Engine B 処理ステータスを DB 保存 ➡失敗時の調査が容易 Original Bucket

Slide 49

Slide 49 text

© Knowledge Work Inc. ユーザー観点ではナレッジのコンテンツの可用性が向上 開発者観点ではシステムの認知容易性・メンテナンス性が向上 直列処理 障害発生時の調査が難しい 機能追加が難しい 49 課題と解決策のまとめ 並列処理 処理ステータスが保存されている 機能追加しやすい 旧システム 
 新システム 


Slide 50

Slide 50 text

© Knowledge Work Inc. リプレース時に議論した点 50 今後も継続的な改善を続けていきます ・Dispatcher の責務分割 ・状態管理 処理全体、個々のエンジン ・エンジンの I/F 定義 ... etc.

Slide 51

Slide 51 text

© Knowledge Work Inc. リプレース時に議論した点 51 今後も継続的な改善を続けていきます ・Dispatcher の責務分割 ・状態管理 処理全体、個々のエンジン ・エンジンの I/F 定義 ... etc. まず形式判別、次に スキャン... ファイル変換の後に テキスト抽出...

Slide 52

Slide 52 text

© Knowledge Work Inc. 52 カジュアル面談のご連絡、お待ちしています! 最後に ・プロダクト開発が好きだが、共通基盤シス テムにも興味があるという方 ・ユーザー体験を向上させたいという方 ・コアなシステムの議論が好きという方 …

Slide 53

Slide 53 text

© Knowledge Work Inc. Vision 人は起きている時間の半分を仕事に、 半分を余暇に使うと言われています。 余暇においては、以前より遥かに多くの喜びを 私たちは得られるようになりましたが、 それに比べて仕事の喜びは充分に得られていません。 余暇の時間に「誰かから与えられる喜び」も大切ですが、 仕事の時間に「自らできるようになる喜び」は 何にも代えがたいほどに尊いものです。 私たちは「できる喜び」をお互いに届けあえる機会が 毎日訪れる社会の実現に貢献します できる喜びが巡る日々を届ける Deliver the joy of enablement 53