Slide 1

Slide 1 text

面倒くさいから生まれる 小さなカイゼン 株式会社ポッケ 熊谷

Slide 2

Slide 2 text

・PHP(LAMP)歴6年 ・AWS歴3年 自己紹介 2

Slide 3

Slide 3 text

ポッケ(現在) ◉ Java ◉ SQL Server ◉ Kubernetes ◉ CI / CD ◉ Azure ◉ アジャイル、スクラム ◉ マイクロサービス ◉ CDC 3

Slide 4

Slide 4 text

ポッケ(現在) ◉ Java ◉ SQL Server ◉ Kubernetes ◉ CI / CD ◉ Azure ◉ アジャイル、スクラム ◉ マイクロサービス ◉ CDC 4 ->初めて ->初めて ->初めて ->初めて ->初めて ->初めて ->初めて ->初めて

Slide 5

Slide 5 text

5 Image by AnnaKovalchuk on Pixabay 来るとこ間違えちゃった?

Slide 6

Slide 6 text

目次 1. モック起動スクリプトを作ってみた話 2. API 仕様書の自動作成ツール を作ってみた話 3. (バグ管理を Google スプレッドシートから Backlog に移行してみた話) 6 時間があれば

Slide 7

Slide 7 text

モック起動スクリプトを作ってみた話 面倒くさい作業を 3 回したら自動化! 1 7

Slide 8

Slide 8 text

モックについて 8 1 GET http://localhost:8080/users/ {"users": [{"name": "hoge"}]} .yml 決められた URL をリクエストすると 決められたレスポンスを返す モック

Slide 9

Slide 9 text

9 1 Aサービス :8080 Bサービス :8081 Cサービス :8082 常時、複数サービスのモックを 立ち上げるが・・ モックについて

Slide 10

Slide 10 text

問題1 モックのバグでコケる 10 1 Aサービス :8080 Bサービス :8081 Cサービス :8082 どれが一つがコケる時があった (5回中4回くらい)

Slide 11

Slide 11 text

問題2 ポート重複エラー 11 1 Aサービス :8080 Bサービス :8081 Cサービス :8082 開発中サービスのモックを 起動するとポート重複エラー Aサービス :8080 モック達

Slide 12

Slide 12 text

問題 12 1 実際のモックの数はもっと多い これが単体テストの度に発生・・ どれ落とすんだっけ? あれ、コケたの誰だよ? モック達

Slide 13

Slide 13 text

13 面倒くさい・・ ©AnnaKovalchuk

Slide 14

Slide 14 text

カイゼン 14 1 開発中サービスを引数で 指定してモックを立ち上 げないように コケたら自動でリトライ するように モック達

Slide 15

Slide 15 text

#!/bin/bash declare -A SERVICES SERVICES=( ['a-service']='8080' ['b-service']='8081' ['c-service']='8082' ) # kill child processes trap "pkill -P $$" EXIT # exclude specific service if [ $# = 1 ]; then unset -v SERVICES[$1] Fi for service in ${!SERVICES[@]}; do # retry (until ./mockingjay-server -config=../${service}.yml -port=${SERVICES[$service]}; do sleep 2; done) & Done Sleep 8h 15 サンプル (bash) 配列作って 引数のもの を unset コケた時は until で 2 秒後にリトライ trap で親プロセスを落とした時に子プロセスも全部落とす

Slide 16

Slide 16 text

API 仕様書の自動作成ツールを 作ってみた話 「これ面倒くさいですね」と呟くことでメンバーから知恵をもらえる 2 16

Slide 17

Slide 17 text

17 2 API 仕様書について .html .java apiDoc で変換 コメントファイル

Slide 18

Slide 18 text

18 /** * @api {get} /user/:id Request User information * @apiName GetUser * @apiGroup User * * @apiParam {Number} id Users unique ID. * * @apiSuccess {String} firstname Firstname of the User. * @apiSuccess {String} lastname Lastname of the User. */ サンプル http://apidocjs.com/ こんな感じの Java コメントファイルを作ると・・

Slide 19

Slide 19 text

19 サンプル http://apidocjs.com/ いい感じの HTML が作成 される $ apidoc -i input_dir

Slide 20

Slide 20 text

20 /** * @api {get} /user/:id Request User information * @apiName GetUser * @apiGroup User * * @apiParam {Number} id Users unique ID. * * @apiSuccess {String} firstname Firstname of the User. * @apiSuccess {String} lastname Lastname of the User. */ 問題はこれをほとんど手で書いていた・・ サンプル http://apidocjs.com/

Slide 21

Slide 21 text

21 2 API 仕様書について .html .java apiDoc で変換 コメントファイル (手書き)

Slide 22

Slide 22 text

22 面倒くさい・・ ©AnnaKovalchuk

Slide 23

Slide 23 text

面倒くさいを言葉にする 23 2 これ面倒くさい ですね。 面倒くさいですよ ね

Slide 24

Slide 24 text

24 2 どうにかなりませ んかね? こうしたらいいん じゃない? 面倒くさいを言葉にする なるほど!

Slide 25

Slide 25 text

25 2 カイゼン .html .java 対象のサービ スの単体テス ト実行 .yml テスト結果の リクエスト・ レスポンス yml をスクリ プトで変換 (Node.js)

Slide 26

Slide 26 text

26 2 カイゼン .html .java .yml 単体テストを元に仕様書を自動生成 動いているコードを元にしているため正確

Slide 27

Slide 27 text

バグ管理を Google スプレッドシートから Backlog に移行してみた話 面倒くさい管理は可視化とフローで減らせる! 3 27

Slide 28

Slide 28 text

それまでのバグ管理 28 3 Google スプレッドシート バグを発見したので起票 しておこう

Slide 29

Slide 29 text

29

Slide 30

Slide 30 text

30 あのバグどこに書い てあるっけ・・?

Slide 31

Slide 31 text

31 あのバグどこに書い てあるっけ・・? 書いてある意味がわから ないから直接本人に聞か ないと・・

Slide 32

Slide 32 text

32 あのバグどこに書い てあるっけ・・? 追記で質問したから slack でメンション もしとかないと・・ 書いてある意味がわから ないから直接本人に聞か ないと・・

Slide 33

Slide 33 text

33 あのバグどこに書い てあるっけ・・? 書いてある意味がわから ないから直接本人に聞か ないと・・ 追記で質問したから slack でメンション もしとかないと・・ 「このバグ、明日までに直し てって書いたんだけど」 「いや、私その担当じゃない んで・・」

Slide 34

Slide 34 text

34 あのバグどこに書い てあるっけ・・? 書いてある意味がわから ないから直接本人に聞か ないと・・ 追記で質問したから slack でメンション もしとかないと・・ 「このバグ、明日までに直し てって書いたんだけど」 「いや、私その担当じゃない んで・・」 起票しても全然直らない から直接誰かにお願いし よう

Slide 35

Slide 35 text

35 あのバグどこに書い てあるっけ・・? 書いてある意味がわから ないから直接本人に聞か ないと・・ 追記で質問したから slack でメンション もしとかないと・・ 「このバグ、明日までに直し てって書いたんだけど」 「いや、私その担当じゃない んで・・」 えーと口頭ですか? どういう事象ですか? (また差し込みだ・・)

Slide 36

Slide 36 text

36 面倒くさい・・ ©AnnaKovalchuk

Slide 37

Slide 37 text

バグ管理を Backlog へ移行 37 3 Backlog Google スプレッドシート 社内で使っている人が 多かった

Slide 38

Slide 38 text

フローを作る 38 3 未担当 処理中 処理済 完了 起票者 起票者 担当者 担当者 調査開始 PR が merge

Slide 39

Slide 39 text

起票時のテンプレを作成 39 3 [事象] ○○の条件で検索した時に検索結果が0件になる [期待値] ○○の条件で検索した時に検索結果が1件以上になる [手順] 1 ○○をクリック 2 ☓☓をクリック 3 △△を確認する ポイント!! ちゃんと書く。急がば回れ

Slide 40

Slide 40 text

起票時のテンプレを作成 40 3 [再現率] 100% [キャプチャ] 添付参照 [検証環境] Windows10 / Chrome71 ポイント!! 画像か動画を必ず添付

Slide 41

Slide 41 text

41 「バグ」「タスク」「要望」を定義

Slide 42

Slide 42 text

カイゼン 42 3 1. 起票内容を口頭で確認する時間が大幅に減った (当社比80%) 2. 各バグ修正の進捗がわかるようになった 3. 優先度「高」「中」「低」がわりと意識される ようになり、緊急度の高いものから修正される ようになった 他にも色々・・

Slide 43

Slide 43 text

ご清聴頂きありがとうござ いました! Qiita ◉ https://qiita.com/sunadorinekop Thanks! 43