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

Helpfeel小咄2選 Web WorkerとMutationObserver

Helpfeel小咄2選 Web WorkerとMutationObserver

Hiroki Akiyama

November 27, 2021
Tweet

More Decks by Hiroki Akiyama

Other Decks in Programming

Transcript

  1. 自己紹介 • 秋山博紀 ◦ Akiyama Hiroki • Twitterは@akiroom • Nota

    Inc. VP of Engineering ◦ プレイングマネージャーです • 書ける言語 ◦ TypeScript, JavaScript, Ruby, Objective-C • 悩み ◦ TypeScriptの型付け沼にハマって午後が終わる ◦ APEX Legendsに時間が溶けていく
  2. アジェンダ • 会社紹介 • プロダクト紹介 ◦ Gyazo ◦ Scrapbox ◦

    Helpfeel • 小咄① Web Workerを使ったフロントエンド検索 • 小咄② MutationObserverを使ったSPAプロトタイピング • 採用情報
  3. 会社名 Nota株式会社 (ノータ) 設立年月日 2007年12月21日(2020年12月4日に日本法人を設立) 代表取締役 洛西一周 資本金 3億3851万312円 主要外部株主

    One Capital株式会社、Salesforce Ventures LLC.、株式会社デジタルホールディングス、 Z Venture Capital株式会社、みやこキャピタル株式会社 社員数 44人(役員、社員、パート合計) 所在地 京都本社 京都市上京区御所八幡町 110-16 かわもとビル5階 東京営業所 東京都港区東新橋 1-5-2 汐留シティセンター 5階 米国支社 Nota Inc. 850 New Burton Road, Suite 201, Dover, County of Kent, DE 19904 Webサイト https://www.notainc.com Company Profile 4
  4. Web Workerの活用 • 複雑な検索処理 = 重い ◦ 1秒のUIロックがユーザー体験を損ねる • Web

    Workerを活用してUIスレッドから分離する ◦ 検索クエリをテキストボックスに入力したらWorker.postMessage() ◦ 検索が完了したらonmessageでイベント受信
  5. HelpfeelにおけるWeb Workerの工夫 • Worker.postMessage()を送りすぎない ◦ 大量のWeb Workerを並列実行しない ◦ UIスレッド側でチェックしてから実行 ◦

    IMEの状態などを見て制御する • 濫用しない ◦ バックグラウンドタスクに切り出す効果がある部分だけ ◦ 現状、Helpfeelでは検索実行時のみ2ヶ所で利用 ◦ なんでもかんでもWorkerにしてるわけではない ◦ 重いと感じてから利用を検討するぐらいで良いかも
  6. Web Workerを使ったフロントエンド検索まとめ • 従来サーバーで実行するような処理をどこで実行するか改めて考える ◦ アプリケーションサーバー? ◦ エッジコンピューティング? ◦ フロントエンド?

    • 適切にフロントエンドに委譲する設計がユーザー体験を高める ◦ 端末環境・ネットワーク環境の向上 ◦ Web Workerの活用 • 時には富豪的プログラミングのアプローチをとってみる
  7. Syntax Checker v1: setInterval • setIntervalでDOMを監視 • メリット ◦ 実装作業を高速に進められる

    • デメリット ◦ 考え得る限り最も雑 ◦ 常にDOMを検査しているので重い ◦ 指定したintervalを超えたユーザー操作に追従できない • 社内の少数で使うプロトタイプなので、まずはこれで良い
  8. Syntax Checker v2: MutationObserver • MutationObserverでDOMを監視 • DOMが変化した時だけイベント受信できる • メリット

    ◦ 不要なDOMのチェックがなくなるので、快適 • デメリット ◦ 監視されてる側(Scrapbox)の仕様変更に弱い • 社内で本格的に試すフェーズでは、丁寧にプロトタイピングした
  9. • Scrapboxにイベントシステムを実装してもらった • メリット ◦ 最速 ◦ 仕様変更に強い • デメリット

    ◦ 無い • 社内でドッグフーディングが済んでいるため、必要性を説明しやすかった Syntax Checker v3: Scrapboxに仕様を追加
  10. エンジニア プロダクトに真剣に向き合う2種類の技術職を募集中です Requisition List 募集中の職種 • 製品開発の主役 • 新機能の提案・企画・実装から分析・統計処理 まで幅広く担当

    • 改善・運用・保守にも責任を持つ • ユーザーや顧客の課題を発見して、 自らのアイ デアを実装して問題解決する • Helpfeelチームの課題を技術で解決 する Webディレクター • Helpfeel案件ごとに導入を支援する • 課題をヒアリングして、Helpfeelによって問題解 決する • 顧客折衝から案件の進行管理まで担当 • デザインも実装する • セールスから案件を引き継いでカスタマーサクセ スに引き継ぐ
  11. Helpfeel Workflow 仕事の流れ フィールドセールス 展示会のリードやインバウンドの問い合わせに対して、 サービス説明から契約締結までを行う。 Webディレクター テクニカルライター 導入後、お客様の課題を深く理解し、顧客のニー ズやゴールを把握。

    分析ツールを利用した調査・分析を行い、 成果を出すためのサポートをして顧客満足度の向 上を図る。 カスタマーサクセス 01 02 受注後、セールスから要件を引き継ぎ、エンジニアやテ クニカルライターを率いて制作のマネジメントを行う。 お客様のFAQに合わせた辞書、製品マニュアル、業務マ ニュアルなど制作を行う。 ユーザー獲得 Helpfeel構築 03 導入後 インサイドセールス エンジニア サービスを検討しているお客様を対象に、継続的なコ ミュニケーションやヒアリングを通じ関係構築を行う。 新機能の提案や企画・実装・統計処理や分析を行う。 ユーザーや顧客の課題を発見し自らアイデアを考案し、製 品を開発する。
  12. Kyoto 京都オフィス Remote Work リモートワーク 完全フルリモートワーク可 全員がリモートワークを実践 NotaではCOVID-19の影響以前からリモートワーク が盛んです。各メンバーが 多拠点

    に分散しているため、すべての業務がオンライン前提 となっています。 徹底したドキュメント化 コミュニケーションは Slack, Scrapboxなどのツールを使って テキストで共有され、経営 資料から日頃の作業メモまで 過去の経緯を誰もが簡単に確認できます。 フルフレックス制導入 2021年より10:00〜19:00のコアタイムは廃止 となりました。従来より柔軟に働いてい たメンバーの実態に合わせて 議論のもとに制度化 しました。