Slide 1

Slide 1 text

何故ソフトウェア品質が大事 なのか for Biz

Slide 2

Slide 2 text

取り上げた理由

Slide 3

Slide 3 text

取り上げた理由 ・リファクタ(品質改善)って本当に大事なの? ・事業展開が遅くなる? ・急がばまわれや開発リソースの調整(同時並行PJの制限)などソフトウェア都合の何 かが存在するぞ〜、それって本当に事業に大事?

Slide 4

Slide 4 text

去年から今までのプロダクトチームの行動の理 由を改めて伝えたい

Slide 5

Slide 5 text

目次 ・一般論から見るソフトウェアとは ・シェルフィーのプロダクトチームの今

Slide 6

Slide 6 text

ソフトウェアの4大特性

Slide 7

Slide 7 text

ソフトウェアの4大特性 ・複雑性 ・同調整 ・可変性 ・不可視性 参考: 人月の神話

Slide 8

Slide 8 text

複雑性 ソフトウェアを構築するコードは数万、数 百万行に肥大していく。 また、各コードの関係性は複雑に絡み合 い依存関係は非線形に増大する。

Slide 9

Slide 9 text

機能の数や歴史に比例し必ず増え、コードの増 加や複雑性は避けられない

Slide 10

Slide 10 text

シェルフィーのプロダクト規模はどれくらい?

Slide 11

Slide 11 text

コード行数 26万行,ファイル数3500個 (インフラは除く)

Slide 12

Slide 12 text

同調整 ソフトウェアはあらゆるものに同調する必 要がある。 扱っている業界の知識(法律) 利用される機器 利用するユーザ 他のアプリケーションなどなど

Slide 13

Slide 13 text

ソフトウェアはユーザ以外にも思いを馳せる場所 がたくさんあるということ

Slide 14

Slide 14 text

特にユーザ要望部分はめちゃくちゃ大事で要望 を整理して伝えてくれている皆さんには感謝!

Slide 15

Slide 15 text

可変性 ソフトウェアは常に変化できなければなら ない 事業、ユーザ、技術的課題...etc 参考: ストラテジーと実装の一致

Slide 16

Slide 16 text

期待や外的要因による変化に応え続ける必要 がある

Slide 17

Slide 17 text

様々な軸からの攻守の要望!

Slide 18

Slide 18 text

不可視性 ソフトウェアはこうしたい(概念)を積み上 げた具体の塊! 積み上げの過程を目で見ることができ ず、簡易的な図などでしか表現できな い! なぜ実装したのか?なぜこのような方法 で実現したのか?などの意思決定や見え ない制約はコードからはわからない

Slide 19

Slide 19 text

作られたものから確実にこれが正しいという事実 が得られない

Slide 20

Slide 20 text

ソフトウェアは上手に作れば複雑じゃなくなる?

Slide 21

Slide 21 text

なんてことはないです!

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

ソフトウェアは複雑だからソフトウェア

Slide 24

Slide 24 text

複雑性を表すもっと身近な例

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

なぜ品質が大事?

Slide 27

Slide 27 text

高品質=上がり続ける複雑性の傾き、変化量を 小さくできているORできる状態

Slide 28

Slide 28 text

ある一定の品質を維持できなくなったら

Slide 29

Slide 29 text

事業的な理由からの舵を切りづらくなる

Slide 30

Slide 30 text

事業的な理由からの舵を切りづらくなる ・機能を追加するにしても、メンテナンスが行き届いていないと、実現に時間がかかりや すくなる→事業の変化スピードについて行けない

Slide 31

Slide 31 text

何も機能を追加できないソフトウェアになる 参考: 突如発表された『拡散性ミリオンアーサー』 サービス終了の真相を訊く

Slide 32

Slide 32 text

何も機能を追加できないソフトウェアになる ・複雑であるためコントロールできず、属人化が発生しやすくなる ・コアメンバーが抜けたら、誰もわからない ・バグやデグレードが発生しやすくなる

Slide 33

Slide 33 text

プロダクトチームが実施してきた、していること

Slide 34

Slide 34 text

プロダクトチームが実施してきた、していること ・開発効率の改善 by 知恵 ← エンジニアがアプリケーションを作ることだけに全集中で きる環境の整備 ・Kotlin化プロジェクト推進 by lennon ← 複雑化したコードベースを整えるためのルール の整備とそれの適用 ・Autifyの整備 by moe ← デグレードなどの検知タイミングを設けて、コード変更をよりし やすく

Slide 35

Slide 35 text

すべて増加する複雑性を抑えるため

Slide 36

Slide 36 text

例えば安全書類

Slide 37

Slide 37 text

安全書類 ・待望の施工体系図Previewの改善 ・Preview表示スピードがめちゃくちゃ速い&体系図が正しく表示される ・これもソフトウェアの品質改善で実現されている

Slide 38

Slide 38 text

例えば入退場の例

Slide 39

Slide 39 text

入退場

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

入退場 ・裏側の品質改善を進めていることで受けている恩恵(現時点で) ・UXの向上機能の簡単な実現 ・素早い一覧画面表示 ・反応の速いフォーム編集(Twitterのいいねみたいな反応の良いUI) ・もしメンテナンスをしていなかった場合は目の前実装になり実現できても壊れやすいも のになっていく、、、

Slide 42

Slide 42 text

持続的に事業に応えていく、ユーザに価値を届 け続けるためにリファクタ(品質改善)が必要