Slide 1

Slide 1 text

電子署名サービスの品質戦略 株式会社PICK 林憲吾 Hayashi Kengo

Slide 2

Slide 2 text

https://twitter.com/kenbu05 株式会社PICK CTO 林憲吾 Hayashi Kengo 自己紹介 ①経歴 ②趣味 学生時代  スペースマーケット (インターン ) 2018-2019  ヤフー 2019-2022 スリーシェイク 2022-現在  PICK CTO 筋トレ・バイク・釣り

Slide 3

Slide 3 text

会社紹介 品質戦略 01. PICKのテスト環境 02. 03. 目次 まとめ 04.

Slide 4

Slide 4 text

01. 会社紹介

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

- 株式会社 CTO - 林憲吾 Hayashi Kengo - 経歴 - スペースマーケット(インターン) → ヤフー →ス リーシェイク → PICK - PICKではPMとしてジョインし、開発をリード - 趣味 - 筋トレ、バイク 会社 01. https://twitter.com/kenbu05

Slide 7

Slide 7 text

不動産業界はまだまだ古臭い。たくさん課題がある。 不動産業界はレガシーでアナログ

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

PICKFORMの成長

Slide 10

Slide 10 text

不動産電子契約の今後の成長見込み

Slide 11

Slide 11 text

バックエンドで使っている技術 03. Nestjs Prisma ApolloServer Jest SuperTest

Slide 12

Slide 12 text

02. 品質戦略

Slide 13

Slide 13 text

品質とは? 02. 品質戦略 製品に対する期待はステークホルダーごとに違う もっと使いやすくして! とにかく安全稼働が必須! 運用・保守が 簡単なシステムをお願い! by事業担当者 byユーザー by運用担当者

Slide 14

Slide 14 text

バックエンドとしては何ができるか? 02. 品質戦略 テストを書き動作を保証 監視の精度を上げ、想定外動作はテストを書く コードの品質を保ち、変更容易性を担保

Slide 15

Slide 15 text

なぜテストを書くべきなのか? 02. 品質戦略 引用: https://learn.microsoft.com/ja-jp/archive/msdn-magazine/2009/december/code- cleanup-using-agile-techniques-to-pay-back-technical-debt 変更コスト曲線 「中長期の変更コストを最適化させる為」

Slide 16

Slide 16 text

テストの種類 02. 品質戦略 UIテスト E2Eテスト インテグレーションテスト ユニットテスト 引用:https://www.linkedin.com/pulse/unit-tests-vs-integration-end-to-end-ashraf-ragab/ テスト図解

Slide 17

Slide 17 text

テストピラミッド理論 02. 品質戦略 引用: https://gihyo.jp/dev/serial/01/savanna-letter/0005 テストピラミッド “テストピラミッド理論とは、 
 コストが高く忠実性が高いテストほどケース数を減ら し、実行速度と決定性が低いテストはケース数を増 やすべきという理論” 


Slide 18

Slide 18 text

テストピラミッドが機能する条件 02. 品質戦略 引用: https://gihyo.jp/dev/serial/01/savanna-letter/0005 テストピラミッド 仕様が明確・変更が多くない 設計がクリーンである チームがテストに習熟してる

Slide 19

Slide 19 text

初期のPICKだと? 02. 品質戦略 仕様が明確でなく、変更多い リリース優先で、クリーンでない 業務委託主体でスキル感ばらつき 引用: https://gihyo.jp/dev/serial/01/savanna-letter/0005 テストピラミッド

Slide 20

Slide 20 text

当初のPICKがなぜこの状況にあったのか? 02. 品質戦略 PMF達成が目標であり、早く市場にだすこと主目的であった。 署名機能を自社開発していた為、高い動作保証性が必要。  エンジニア社員1名に対して、業務委託が 4〜7名が1年半続いた。

Slide 21

Slide 21 text

どう解決するか? 02. 品質戦略 原則、E2Eを全てのユースケースで書く Unitテストは分岐の多い部分のみ

Slide 22

Slide 22 text

内部設計が未熟な設計ほど、 E2Eが効く 03. 品質戦略 1. E2Eは、内部的な I/Fと疎結合である 2. 内部的なI/Fの変更しやすい 3. リファクタリングハードルが下がった

Slide 23

Slide 23 text

03. PICKのテスト環境

Slide 24

Slide 24 text

実際PICKのテスト比率は? 03. PICKのテスト環境 E2Eテストを全てのユースケースで書く Unitテストは分岐の多い部分のみ ※ ユースケースは graphQLのmutation/query単位を指しています

Slide 25

Slide 25 text

E2Eテスト運用実態 03. PICKのテスト環境 E2E Test: 934 Unit Test: 137 137 Endpoints: 262

Slide 26

Slide 26 text

E2Eをどう実現している? 03. PICKのテスト環境 ※ ユースケースは graphQLのmutation/query単位を指しています UI上でテストデータを作成、 dumpファイルで管理 CI上で、DockerでDB立てて、データを流し込む テスト用DBに対してSuperTestでリクエストを送る

Slide 27

Slide 27 text

①UI上でテストデータを作成 03. PICKのテスト環境 UIがあれば、 localのUIから UIが無ければ、 PrismaStudioから PrismaStudio UI

Slide 28

Slide 28 text

①dumpファイルで管理 03. PICKのテスト環境 dumpデータをPRにてレ ビュー

Slide 29

Slide 29 text

①dump周りのコマンドをまとめて、フロー整備 03. PICKのテスト環境 E2E用の環境を localに用意 操作しテストデータ作成 差分をdumpしコミット

Slide 30

Slide 30 text

②CI上で、DockerでDB立てて、データを流し込む 03. PICKのテスト環境 GithubActionsでDB立てる dump入れる E2Eを走らせる

Slide 31

Slide 31 text

③SuperTestでリクエスト 03. SuperTestでリクエスト レスポンスを確認 PICKのテスト環境

Slide 32

Slide 32 text

E2E主軸での課題と解決 03. PICKのテスト環境 E2Eテスト記述文化作るの大変 テストがだんだん遅くなる テストデータケースの作成が大変 テスト無いと PR通さない 効率化・並列化 UIでデータ作成

Slide 33

Slide 33 text

03. まとめ

Slide 34

Slide 34 text

まとめ 03. E2E主体だと、確実性の高い動作保証を担保できる リファクタリング促進の効果を持つ コストは高いが、有用な手段の1つ

Slide 35

Slide 35 text

PICKの開発チームは、レガシーな産業に、 モダンな技術で立ち向かっております。

Slide 36

Slide 36 text

ご清聴ありがとうございました

Slide 37

Slide 37 text

No content