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

MDMサービスの巨大さと特殊さに負けない開発体制と品質プロセス / technight250218

OPTiM
February 19, 2025

MDMサービスの巨大さと特殊さに負けない開発体制と品質プロセス / technight250218

OPTiM

February 19, 2025
Tweet

More Decks by OPTiM

Other Decks in Technology

Transcript

  1. © 2019-2025 OPTiM Corp. All rights reserved. 3  アカサカ

    / 株式会社オプティム PMO ◼2010年4月オプティムに入社。 ◼テスト設計、及び実施を担当した後、現在はOPTiM Bizの開発プロセス改善を主に担当しています。 ◼よく使うツール: PowerAutomate ◼趣味 ⚫各種ゲーム[最近は Elin, ゼンゼロ, マダミス など] ⚫バイクツーリング 発表者について
  2. © 2019-2025 OPTiM Corp. All rights reserved. 4  戸舘

    / 株式会社オプティム エンジニア ◼2021年4月オプティムに入社。 ◼OPTiM BizのWindowsクライアントアプリ開発とRailsでのサーバーサイド開発を主に担当 ◼ありきたりなC++erです ⚫cpprefjpに貢献を継続しています ◼社内の迷える人たちを探して質問に答えるのが趣味です。 ◼趣味はスキーとかローカル路線バス乗り継ぎの旅とか 発表者について
  3. © 2019-2025 OPTiM Corp. All rights reserved. 6  OPTiMは、AI・IoT・Cloud・Mobile・Roboticsを使った新しい価値を創造し続け、

    あらゆる産業のDXを実現し、すべての人々に、豊かでサステナブルな未来を実現する企業です。 当社事業と、OPTiM Bizについて
  4. © 2019-2025 OPTiM Corp. All rights reserved. 7 OPTiM Bizとは

    モバイル端末・PCを管理し、紛失時の問題対処・アップデート等の管理工数を削減するサービスです エージェントアプリを導入するだけで スマホ・タブレット・パソコン等を保護対象下 に! モバイル端末の業務利用に伴うメンテナンス 工数の削減や紛失・情報漏洩リスクを削減 ブラウザの管理サイトから対象端末に対して 簡単に制御や設定配信が可能! 管理者のアプリ・設定配信など管理工数の削減や トラブル時の遠隔操作による早期対処を実現 従業員向け導入メリット 管理者向け導入メリット
  5. © 2019-2025 OPTiM Corp. All rights reserved. 8 OPTiM Bizとは

    OPTiM Bizは、スマートフォンやタブレットの ビジネス活用における幅広い課題を解決 ー モバイルの可能性を広げるー 180,000社以上 の 圧倒的な導入実績 紛失・盗難・ 情報漏えい対策 資産管理・ 端末監視 セキュリティ設定 端末設定の 効率化 平均解約率 約 0.5% ※3 ※2 PC・モバイル管理SaaSサービス ※1 出典:デロイト トーマツ ミック経済研究所 「クラウドサービス市場の現状と展望 2013年度版」IT資産管理(MDM含む)市場「合計売上高」2011年度~2012年度実績(2013年発刊)、 「コラボレーション/コンテンツ・モバイル管理パッケージソフトの市場展望 2014年度版」MDM市場動向「MDM出荷ID数(SaaS・ASP含む)」2013年度実績(2014年発刊)、 「コラボレーション/コンテンツ・モバイル管理パッケージソ フトの市場展望」MDM市場動向「MDM出荷ID数(SaaS・ASP含む)」2014年度~2017年度実績(2015~2018年発刊)、 「コラボレーション・モバイル管理ソフトの市場展望」MDM市場「MDM出荷ID数(SaaS・ASP含む)」2018年度~ 2023年度実績および2024年度見込(2019年~2024年発刊)より。 ※2 2019年6月25日、当社集計 ※3 主要パートナー実績をもとに当社が算出した月間平均集計期間(2021年4月-2022年3月) ※1
  6. © 2019-2025 OPTiM Corp. All rights reserved. 9 OPTiM Bizとは

    2024.10.31 プレスリリース ※アルファベット順に掲載 ライフコーポレーションでの導入開始 発注・商品管理・シール印刷、POP操作※1など さまざまな業務の端末共通化を独自機 能で実現、店舗DXを加速 関東・関西あわせて311店舗※2のスーパーマーケットを展開する株式会社ライフコ ーポレーションにて、MDM・PC管理サービス「OPTiM Biz」の導入が開始されまし た。 業務ごとに複数種類の端末を利用することが主だった店舗環境において、業務端 末を一本化し、従業員操作によって生じる端末不具合を「OPTiM Biz」で制御する ことで、店舗DXの推進に繋げることが可能になります。 キーエンス、京セラ、オプトエレクトロニクス、 シャープ など、 スマホ・タブレットメーカーとの協力体制を強化 店舗内や物流・工場などの現場で活用を実現する業務専用端末管理メニューを追加 MDM・PC管理サービス「OPTiM Biz」では、業務専用スマートフォンやタブレット端末 のメーカーとの協力体制を強化しており、あらゆる業界や業種の専用端末への対応が進 んでおります。 また、新たに対応した業務専用端末を用いて、飲食店や小売店舗、物流業、工場などの 現場でのDX化及び効率化を実施すべく、業務専用端末管理メニューを追加しました。 今後もスマホ・タブレットメーカーとの連携強化をはじめ、安全性を確保しながら業務 効率化を実現する機能を拡充してまいります。 ※1 電子棚札のPOP操作:POSレジやPOP作成システムから商品名や価格、バーコード情報などを 電子棚札に送信し、店頭での価格表示やプロモーション情報を更新するプロセス。 ※2 2024年9月10日時点。ライフコーポレーション会社概要より。
  7. © 2019-2025 OPTiM Corp. All rights reserved. 12  背景

    ◼ Bizに関わるチーム数は多く、開発17チーム、その他3チームもある ⚫ 開発メンバーだけで100名規模 ⚫ 協力会社で完結しているチームもあり全員がオフィスに来るわけではない ◼ 誰に質問すれば答えを知っているのかわからないというケースも頻発する ⚫ 日頃のコネが大事な世界線  Biz質問箱を導入した ◼ だれでも気軽に質問してよい ◼ 有識者が空いてるタイミングで回答する ◼ 回答がつかなさそうなときは有志が有識者にメンションする ◼ 質問者が有識者を知らなくていい ◼ 解決に至るかはともかく、反応は9割以上のケースでついている ◼ 気がついたら営業や企画も質問してくるようになった  をリアクションで送って褒め称える ◼ リアクションをつけられた数をbotで集計していて 週次でランキングとして公開している(これはSlackのほぼ全チャンネルで) ⚫ 「タコスの送り合い」で組織改革!?気軽にピアボーナスが導入できる「HeyTaco!」とは | SELECK [セレック] Biz質問箱の話 戸舘
  8. © 2019-2025 OPTiM Corp. All rights reserved. 14  リリースが近づいてくると・・・

    ◼やることが多い ⚫ リリース用のバイナリがFixするまでに、各種試験や各チームで対応が必要なタスクが多数存在する ◼関係者・関係チームも多い ⚫ コンポーネント毎の開発チーム(10チーム前後)、サーバー運用チーム などと連携が必要 ◼そのため、各種タスクのリマインドを毎日実施する必要がある ⚫ 進捗管理の担当者が手作業でリマインドを行うことになるのだが、 毎日漏れなく、担当者宛にメンションをつけてリマインドをするのは、結構大変… ◼→botに任せよう リリースタスクの管理について
  9. © 2019-2025 OPTiM Corp. All rights reserved. 15  リマインドbot実行時の様子

    ◼ 進捗管理担当者向けと、各要件の担当者向けで、2種類のリマインドを発出するようになっています。 リリースタスクの管理について (表示の一部に修正を行っています)
  10. © 2019-2025 OPTiM Corp. All rights reserved. 16  リマインドbotの仕組みについて

    ◼ タスクの進捗管理表については、 Excelで作成したものを使用している。 ◼ 定期的にPowerAutomateで作成したFlowが、 Excelのタスク一覧が記載されたテーブルを読み取り、 通知が必要なタスクを選別し、 Slackに向けて通知を行うようになっている。 ◼ 各種タスクのリマインドが自動で行われるようになったことで、 進捗管理の担当者は毎日のリマインドが不要となり、 負荷軽減することができました。 リリースタスクの管理について Slack PowerAutomate タスク進捗管理表 (Excel)
  11. © 2019-2025 OPTiM Corp. All rights reserved. 18  ひとつの要件に対して、要件定義、設計、実装、検証、リリースまで進めていく中での、

    それぞれの工程のことを 「開発プロセス」 としています。 品質担保の取り組み - 「開発プロセス」について 要件定義 基本設計 詳細設計 単体テスト 結合テスト システムテスト 実装 コードレビュー 検証 検証 検証
  12. © 2019-2025 OPTiM Corp. All rights reserved. 19  OPTiM

    Biz の開発では「それぞれの工程でやるべきこと」を定義し、 「開発プロセスの中でやるべきことをすべてやっているか」を都度確認しながら進めています。 ◼ この「やるべきことをやっているか」の確認精度を「プロセス品質」と表現しています。 品質担保の取り組み - 「プロセス品質」について 要件定義 基本設計 詳細設計 単体テスト 結合テスト システムテスト 実装 コードレビュー 検証 検証 検証 要件定義で 必ず検討すべき ことは…? 設計で 必ず検討すべき ことは…? 負荷試験の結果 問題ないという 根拠は…?
  13. © 2019-2025 OPTiM Corp. All rights reserved. 20  コードレビューやテストといった工程は、要件定義や設計など上流工程の成果物における、

    プロダクト品質を上げる作業と考えています。  一方、それぞれの工程の作業そのものに対する検証を行うことで、プロセス品質を上げることに繋がると考えています。 品質担保の取り組み - プロダクト品質とプロセス品質の違い 要件定義 基本設計 詳細設計 単体テスト 結合テスト システムテスト 実装 コードレビュー 検証 検証 検証 要件定義で 必ず検討すべき ことは…? 設計で 必ず検討すべき ことは…? 負荷試験の結果 問題ないという 根拠は…? 検証 検証 検証 要件定義~実装までの工程に対し、品質を上げるために検証を行う=プロダクト品質を上げる プロダクト品質を上げるだけでは品質向上に限界があるので、プロセス品質も上げる必要がある
  14. © 2019-2025 OPTiM Corp. All rights reserved. 21  大前提として、品質が悪いものはユーザーに使ってもらえなくなります。

     また、OPTiM Bizの場合は、数多くのパートナー様が存在するため、品質は更に重要になってきます。 ◼ パートナー様は当社を信用して、OPTiM Bizを販売する。 ◼ 重大なバグが発生すると、パートナー様も対応に追われる、サービス利用者を失うといった不利益を被ってしまう。 ◼ 「バグが多い製品の販売は難しい」「バグが多い製品を作る会社との取引に不安が生じる」といった、 マイナスイメージがついてしまう。 ◼ 信用が失われることで、利用者減少に繋がってしまう。 品質担保の取り組み - なぜ品質を上げないといけないのか
  15. © 2019-2025 OPTiM Corp. All rights reserved. 22  そういったリスクを回避するため、

    開発プロセスの中で「レビュー会」という形の クオリティゲートを設けています。  レビュー会では、部門の責任者(Mgr)及び、 テクニカルサポートチームや企画チームといった、 開発チーム外の有識者が適時集まり、 様々な観点から内容を確認しています。  本取り組みはプロセス品質を担保するものとして、 2019年頃から開始され、 現在に至るまでブラッシュアップしながら 運用が続けられています。 品質担保の取り組み - 「レビュー会」について
  16. © 2019-2025 OPTiM Corp. All rights reserved. 23  各種レビュー会の分析について

    ◼ レビュー会にて上げられた指摘の数や、開催工数については都度集計を行っており、傾向を観測しています。 品質担保の取り組み - 「レビュー会」について
  17. © 2019-2025 OPTiM Corp. All rights reserved. 24  レビュー会の取り組みが始まった際、「品質を高めるための3箇条」といった指針が定義されました。

    ◼ 書き出してみると当たり前のことと思われる面もありますが、メンバー全員が日々意識し業務に取り組んでいます。 1. あやふやなままにしない、はっきりさせる ◼ お互いにわかりあった気になって、あやふやなまま作業を進めていませんか? ◼ お客様から見ても一意に伝わるよう、極力定量的にはっきりと確認しましょう。 2. 担当者任せにしない、必ず成果物を確認する ◼ 担当者に投げて終わりではなく、当事者意識を持って成果物や結果を把握するようにしましょう。 3. 手抜きをしない、面倒でもやる、最後までやりきる ◼ OPTiM Bizは非常に大きなシステムで歴史も長いため、「やるべきことをやる」というだけでも時間がかかります。 ◼ それでも、開発プロセスとして定義していることはすべて必要なことと考え、最後まできっちりやりきりましょう。 品質担保の取り組み - 「レビュー会」について
  18. © 2019-2025 OPTiM Corp. All rights reserved. 26 クライアント側の結合テストの自動化がなぜ難しいのか 

    リモートワイプを自動テストしたいが、その時自動テストをする環境は消えている! ◼ ワイプ後にADBを有効にする機能がない(Android) ◼ 方式によってはOSがそもそも起動しなくなることも(Windows)  設定反映にOS再起動が必要なものはCIを組みにくい ◼ AppLocker(Windows)とか  MDMはOSのAPIを叩いて設定をしているが、設定できたことをどうやって担保すればいいのか不明瞭 ◼ APIで設定値を取得すると、それは設定されたことの保証に必ずしもならない ◼ かといってOSの設定画面を見てもそこに反映されるとは限らない ⚫ Windows 11 24H2 26100.1000(Release Preview)ではIUpdateServiceManager2::AddService2を使っても「その他のMicrosoft製品の更新を受け取る」がONに ならない?→というより関連がなくなっているみたい #Windows11 – Qiita ◼ OSなどの設定画面のUIはよく変わるのでその度テストが壊れる ◼ 設定したことで発生させた事象を都合よく観測できるとは限らないか時間がかかることもある ⚫ 例) 毎回Windows Updateが降るまで待つというわけにもいかない  シミュレーターで実行できない機能が多い ◼ jailbreak検知(iOS)、外部デバイス禁止、位置情報取得
  19. © 2019-2025 OPTiM Corp. All rights reserved. 27  テストの自動化に取り組んでいるものの、信頼できる安定性をもった自動テストにならない

    ◼ よって、現状は人の手によって温かみあふれるテストが行われている  Androidについては端末のタッチ操作をRaspberry Piを用いて物理的に行って自動化する手法を検討したが頓挫 ◼ 端末によってUIの差分が大きくて汎用的にできない  管理サイトで完結する結合試験についてはplaywrightを用いてフルスクラッチ中 ◼ OPTiM Biz 10.0で大きなデザイン変更があり、既存のテストを大幅改修する必要があったため ◼ マニュアル用の画像を自動撮影するために書かれたコードを活用して結合試験に転用する  Windowsの結合試験については大きく壊れてはいない部分をCIに組み込むことを計画中 結合試験をどうしているのか、どうするのか
  20. © 2019-2025 OPTiM Corp. All rights reserved. 28  90%以上の高いカバレッジを維持している

    ◼ 要件開発時の見積もりにrspec修正の工数があらかじめ入っている ◼ CIで回っている ◼ 「C0(命令網羅)レベルでの動作確認を行った、もしくはテストコードで代替した」というチェックリストがMRにある ◼ リリース時に落ちているテストがないか確認している  テスト一回の合計実行時間は2日~3日もかかっている ◼ 50jobに分割して37並列(時間帯により変動)程度で回すことで2時間程度で終わっている  Launchableを利用して、頻繁に回るMR pipelineの実行テスト数を1/3程度に削減している ◼ 自作スクリプトでMRの変更ファイルから自明に回すべきrspecも 回るようにしている ◼ 削減率はテストのflakyさや差分の内容によるので大きな幅がある ◼ 合計実行時間にして1時間~8時間程度 単体テスト(管理サイト)
  21. © 2019-2025 OPTiM Corp. All rights reserved. 29  クライアント側は単体テストを考慮した設計になっていない既存コードが多く、障壁になっている

    ◼ クラスが大きすぎるとか・・・ ◼ DIする余地を欠いているとか・・・ ◼ OSのAPIをモックしにくいとか・・・  Windows ◼ 過去3度にわたり単体テストを書く試みがなされたがいずれも維持できていない ◼ COM(Component Object Model)自体は原理的にテストしやすいはずなのだが、COMの学習コストが高い  Android ◼ JVM単体で動かせる部分とAndroidのAPIを必要としてエミュレーター上で動く部分がある ◼ カバレッジは高くないが近年テストを拡充する動きがある  iOS ◼ 最近Objective-CだったプロジェクトをSwiftでフルスクラッチした時に単体テストも整備された ◼ iOSとiPad OSのエミュレータがいい感じに動いてその中でテストが走る ◼ カバレッジは60%くらいある ◼ ただしiOSのMDM機能の多くは管理サイトからAppleのMDM Agentと通信して行われるため、クライアントアプリケーションの規模が 小さい 単体テスト(クライアント)
  22. © 2019-2025 OPTiM Corp. All rights reserved. 31  OPTiM

    Bizという製品と、その開発環境・プロセスについてご紹介しました  チームのコミュニケーションについては、仕組みを上手く使って適切なやり取りが行えるよう心がけています ◼ Biz質問箱 ◼ リマインドbot  開発プロセスの品質を定義し、そのプロセスで開発が行われていることを関係者がレビューし、品質担保を行っています ◼ 開発プロセス ◼ 各種レビュー会の実施  クライアント側のテストの自動化には課題が山積していますが少しずつでも自動化を進めています  サーバー側のテストの自動化は今後も高い水準を維持しつつ高速化を目指していきます まとめ