Slide 1

Slide 1 text

IIS URL Rewrite の ユニットテストをしよう! 株式会社一休 宿泊事業本部 開発部 飯迫 正貴 2017/10/07 LT

Slide 2

Slide 2 text

IIS URL Rewrite とは?

Slide 3

Slide 3 text

IIS URL Rewrite とは? • URL Rewrite Module • https://docs.microsoft.com/en-us/iis/extensions/url-rewrite- module/using-the-url-rewrite-module • 設定に書いたルールに従ってURLを書き換えてくれる

Slide 4

Slide 4 text

課題

Slide 5

Slide 5 text

課題 • 便利な反面、継ぎ足し続けるとわけが分からなくなる • 負債化しやすい • 全体が理解できず、変更すると他が壊れるのではという恐怖 • ジェンガ状態 • 気軽にリファクタリングできない

Slide 6

Slide 6 text

www.ikyu.com/rewrite.config

Slide 7

Slide 7 text

きっかけ • ある日の会議の雑談 • わたし「そういえばRewriteがバグりやすいんですよねえ」 • CTO「はてなでは rewrite のテスト書いてたよ」 • http://d.hatena.ne.jp/onishi/20101017/1287277579 • 数日後 • しばやん「テスト用のライブラリ作りました」 • http://blog.shibayan.jp/entry/20160620/1466392651

Slide 8

Slide 8 text

IIS Express TestKit

Slide 9

Slide 9 text

IIS Express TestKit • Rewrite Rule のテストが書けるハイパー便利ツール • Outbound Rule も対応 • OSS • https://github.com/shibayan/iisexpress-testkit

Slide 10

Slide 10 text

IIS Express TestKit

Slide 11

Slide 11 text

Project Example

Slide 12

Slide 12 text

Rewrite Rule Example

Slide 13

Slide 13 text

Outbound Rule Example

Slide 14

Slide 14 text

運用してみた

Slide 15

Slide 15 text

運用してみた • 壊れるのを恐れず、気軽に変更できるようになった • 最高 • CI に Rewrite のユニットテストを追加 • 不正なRewriteがリリースされる事故がなくなった • データセンターからクラウドに移行したときにも活躍 • PaaSに乗せるためアプリを分割したらテストが通らなくなった • 通らなくなったもの=分割してなくなった部分のテスト => Rewriteも分割 • ユニットテストを書いたことで参照されてないルールがあぶり 出された • そしてリファクタリング

Slide 16

Slide 16 text

参照されてないルール

Slide 17

Slide 17 text

まとめ • IIS の URL Rewrite もユニットテストが書ける! • URL Rewrite 運用で困っている人は今すぐインストールして書 きましょう! • Install-Package IisExpressTestKit