Slide 1

Slide 1 text

ソフトウェア開発   ナニモワカラナイ フロントエンドチョットデキル ミニ #01|hanetsuki

Slide 2

Slide 2 text

自己紹介 ちょっと株式会社 / EM hanetsuki ## 好きなもの ● お酒 ● 漫画 ## 最近の業務 ● フロントエンドのリアーキテクト / リニューアル ## ハマっているもの ● 漫画「モノクロのふたり」

Slide 3

Slide 3 text

ソフトウェアと聞いて どんなものを想像しますか?

Slide 4

Slide 4 text

Webアプリケーションソフトウェア についてお話しします。

Slide 5

Slide 5 text

ソフトウェア開発のそもそも流れ

Slide 6

Slide 6 text

ソフトウェア開発の流れ 1. 要件定義 2. 設計 3. 実装 4. テスト 5. リリース 6. 保守

Slide 7

Slide 7 text

ソフトウェア開発の流れ 1. 要件定義 2. 設計 3. 実装 4. テスト ← 今日の注目ポイント! 5. リリース 6. 保守

Slide 8

Slide 8 text

今日のゴール ● ソフトウェア開発におけるテストについてチョットデキル ● 保守性について日々頭を巡らせる習慣のきっかけを得る

Slide 9

Slide 9 text

待って待って、

Slide 10

Slide 10 text

テストテストってみんな言うけどさ

Slide 11

Slide 11 text

動きゃよくない?!

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

場合によって、それはそう - hanetsuki -

Slide 14

Slide 14 text

テストを意識することによって受けられる恩恵 ● 初見では逆に時間がかかるように思われるかもしれませんが、長期的に はテストがあることでバグ修正やデバッグに費やす時間が大幅に削減され ます。 ● 設計の段階から「テスト可能なコード」を書く習慣がつき、開発効率が上が ります。

Slide 15

Slide 15 text

フロントエンド開発におけるテストの役割とは? ● 個々のコンポーネントや関数の動作を検証 ○ (ユニットテスト) ● 複数のコンポーネントや関数が組み合わさった動作を確認 ○ (結合テスト) ● 実際のユーザーがアプリを操作する流れを再現して確認 ○ (E2E)

Slide 16

Slide 16 text

アプリケーションは常に成長を求められる ● 作っておしまい、そんなことはないです。 ● 売上の柱となるアプリケーションになった場合、5年、10年とそのコードは本 番環境で動き続けます。

Slide 17

Slide 17 text

具体的な話

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

理解するのにどれくらいかかりましたか?

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

シンプルでいいですね

Slide 22

Slide 22 text

全文を解説

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Diff

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

コード総量は増えましたが ...以下のような 素敵なことが コードの分割 ● 小さな単位で機能を実装することで、テストケースがシンプルになる。 ● 例: コンポーネントや関数を独立させて、状態やロジックを分離。 状態の明確化 ● 条件分岐や状態の種類を明示的に定義し、テスト対象を特定しやすくする。 ● Reactのカスタムフック (`useMembershipStatus`) の例がこれを実現。

Slide 30

Slide 30 text

具体的なテストコード

Slide 31

Slide 31 text

MembershipStatusComponent のテスト

Slide 32

Slide 32 text

MembershipStatusComponent のテスト ● 各 membershipStatus に応じて適切なコンポーネント (PaidMemberMessage, FreeMemberLink, LoginLink) が表示されることを確認します。 ● 表示される要素の内容を getByText でチェックします。

Slide 33

Slide 33 text

useMembershipStatus のテスト

Slide 34

Slide 34 text

useMembershipStatus のテスト ● ロジック部分を単体でテストし、さまざまな状態で正しい値が返されるかを確認しま す。 ● モック ( jest.mock ) を活用して useUserData の挙動をシミュレーションします。

Slide 35

Slide 35 text

終わりに

Slide 36

Slide 36 text

終わりに ● ソフトウェア( Webアプリケーション)は常に成長を求められる。 ● そのロングスパンを耐える設計や思考はしなければならない。 ● テストしやすいコードはソフトウェアと開発者に良い影響をもたらす。