高い開発生産性を実現するために取り組んだMagicPodの利活用
by
t-jimbo
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
高い開発生産性を実現するために 取り組んだMagicPodの利活用 MagicPodユーザーLT会 2023.07.14 1
Slide 2
Slide 2 text
神保 拓眞(t-jimbo) 2 ■ BuySell Technologies 所属 ■ フロントエンドエンジニア ■ 店舗買取システム「Store」の開発 https://twitter.com/ce_mm スライドアップしてます!
Slide 3
Slide 3 text
プロダクトの紹介
Slide 4
Slide 4 text
買取 から 販売 まで、総合リユースビジネスを展開 4
Slide 5
Slide 5 text
リユースプラットフォーム「Cosmos」 ■ リユースのあらゆる課題を、テクノロジーで解決する。 5
Slide 6
Slide 6 text
リユースプラットフォーム「Cosmos」 ■ リユースのあらゆる課題を、テクノロジーで解決する。 6
Slide 7
Slide 7 text
リユースプラットフォーム「Cosmos」 ■ リユースのあらゆる課題を、テクノロジーで解決する。 7
Slide 8
Slide 8 text
店舗買取システム「Store」 8 https://newswitch.jp/p/37111 ステップ形式で操作に迷わず買取業務を進める iPad用のWebアプリ
Slide 9
Slide 9 text
フィードバック 全国で運用中=障害は出せない 9 昨年9月にリリース 店舗買取を行うグループ会社へも展開 Storeの障害 = 買取機会損失 New!! 新機能リリース
Slide 10
Slide 10 text
バイセルグループ3社にまたがって利用 ■ バイセル、TIMELESS、WAKABAで利用 ■ 会社によって業務フローが異なるため、求められる機能が異なる ● 機能の表示・非表示、用語の切り替えなど 10
Slide 11
Slide 11 text
安全かつ高速なデリバリーを実現する ■ featureフラグを活用したトランクベース開発 ● 小さく高頻度でリリース ● 開発、テスト、デプロイのサイクルを高速に回していく ● PR数が1日10件を超える日も! 11
Slide 12
Slide 12 text
自動テストが安全性を担保 ■ CI/CDでテストを回しまくる ● 単体テスト ● 画像回帰テスト ● インタラクションテスト ● E2Eテスト 12
Slide 13
Slide 13 text
自動テストが安全性を担保 ■ CI/CDでテストを回しまくる ● 単体テスト ● 画像回帰テスト ● インタラクションテスト ● E2Eテスト ● MagicPod をフル活用 13
Slide 14
Slide 14 text
こんな風にMagicPodを使っています
Slide 15
Slide 15 text
コードベースのE2Eテストに課題 ■ 壊れやすいE2Eテストをコードで書くのはつらい ● メンテナンスコストが大きく、開発体験が悪化 ● 属人化しがち ■ 結果としてテストが書かれなくなってしまう... 15
Slide 16
Slide 16 text
MagicPodの嬉しいところ 16 ノーコードでテスト作成 AIによる自動修復機能 iOSのエミュレータ テストケースのバージョン管理など、日々 嬉しい機能がアップデートされています
Slide 17
Slide 17 text
MagicPodの嬉しいところ ■ テストケースの作成がかんたん ■ メンテナンスコストが低い ■ 開発とQAのエンジニアを分離できる 17
Slide 18
Slide 18 text
StoreでのMagicPodの利用 とにかくたくさん実行して品質チェックする!! けどテスト待ちで開発スピードを落としたくはない 18
Slide 19
Slide 19 text
StoreでのMagicPodの利用 3種類の実行方法を使い分けています 19 定期実行で PR時点でも(New) デプロイ前に
Slide 20
Slide 20 text
定期実行でMagicPodを回す ■ 3時間に1回の実行 ● 実行数が無制限! ■ ここであらゆるケースをカバー ● 基本フロー ● 中止や特殊なフロー 20
Slide 21
Slide 21 text
デプロイ前にMagicPodを回す ■ 本番環境へのデプロイ前にstaging環境でE2Eテストを自動実行 ● 変更による障害を防ぐ ● 詳細は バイセル Tech Blog を参照! 21
Slide 22
Slide 22 text
デプロイ前にMagicPodを回す ■ (余談)ワークフローはさらに進化中... ● buildの並列化 ● CODEOWNERによる承認フローの追加 ● リリースノートの自動作成 22
Slide 23
Slide 23 text
PR時点でもMagicPodを回す ■ デプロイ直前にしかテストが実行できないのが課題だった ● マージ前にCIでもテストを実行したい! 23 Merge テスト失敗 Revert
Slide 24
Slide 24 text
PR時点でもMagicPodを回す ■ PRを作成すると自動でプレビュー環境を立てる 24 PR作成 Cloud Runへデプロイ PR番号でURL生成 https://pr-1234-an.a.run.app/
Slide 25
Slide 25 text
PR時点でもMagicPodを回す ■ MagicPod API Client をGitHub Actionsで利用する ■ 環境変数で渡すことで任意のURLに対応 25 MagicPod API Client 渡されたURLに遷移
Slide 26
Slide 26 text
実行方法 定期実行 デプロイ前(CD) PR時点(CI) テスト内容 全フロー 基本フローのみ 実行時間 長(合計30~40分) 短(約5分) 役割 完全な品質の担保 デプロイ時の障害防止 変更時の自動テスト ■ 定期実行で全フローのテストを行い恒常的な品質を担保 ■ CI/CDでは開発スピード重視で軽量な基本フローのみを実行 StoreでのMagicPodの利用まとめ 26
Slide 27
Slide 27 text
開発生産性の向上にかなり寄与しています
Slide 28
Slide 28 text
MagicPodを回しまくることで... ■ 安心・安全が得られる! ● 障害の未然防止 ■ 人間の確認作業を最小限に抑えられる!! ■ エンジニアがテスト作成や機能開発に集中できる!!! 28 使い倒しましょう!!!!
Slide 29
Slide 29 text
B U Y S E L L T E C H N O L O G I E S B U Y S E L L T E C H N O L O G I E S リユース業界 No.1テックカンパニーへ