Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
何故ソフトウェア品質が大事なのか
Search
Shelfy.inc
January 23, 2023
Programming
0
210
何故ソフトウェア品質が大事なのか
シェルフィー株式会社の毎日LTより、好評だった回をご紹介しています。
エンジニアからビジネスサイドへ、技術的負債への取り組みについてわかりやすく説明しています。
Shelfy.inc
January 23, 2023
Tweet
Share
More Decks by Shelfy.inc
See All by Shelfy.inc
構造化の学びのすすめ〜どうやって僕らは問い合わせの一次対応しているのか〜
shelfy
0
260
【シェルフィー株式会社】会社紹介資料/hello-shelfy
shelfy
9
44k
Other Decks in Programming
See All in Programming
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
32k
ALL CODE BASE ARE BELONG TO STUDY
uzulla
25
6k
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
170
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
530
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1.1k
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
0
1.3k
3年ぶりにコードを書いた元CTOが Claude Codeと30分でMVPを作った話
maikokojima
0
300
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
140
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
1k
Flutterで分数(Fraction)を表示する方法
koukimiura
0
130
Railsだからできる 例外業務に禍根を残さない 設定設計パターン
ei_ei_eiichi
0
910
私達はmodernize packageに夢を見るか feat. go/analysis, go/ast / Go Conference 2025
kaorumuta
2
570
Featured
See All Featured
Building Applications with DynamoDB
mza
96
6.7k
Context Engineering - Making Every Token Count
addyosmani
6
250
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Leading Effective Engineering Teams in the AI Era
addyosmani
6
440
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
189
55k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
Statistics for Hackers
jakevdp
799
220k
The Language of Interfaces
destraynor
162
25k
Designing Experiences People Love
moore
142
24k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
We Have a Design System, Now What?
morganepeng
53
7.8k
Making Projects Easy
brettharned
120
6.4k
Transcript
何故ソフトウェア品質が大事 なのか for Biz
取り上げた理由
取り上げた理由 ・リファクタ(品質改善)って本当に大事なの? ・事業展開が遅くなる? ・急がばまわれや開発リソースの調整(同時並行PJの制限)などソフトウェア都合の何 かが存在するぞ〜、それって本当に事業に大事?
去年から今までのプロダクトチームの行動の理 由を改めて伝えたい
目次 ・一般論から見るソフトウェアとは ・シェルフィーのプロダクトチームの今
ソフトウェアの4大特性
ソフトウェアの4大特性 ・複雑性 ・同調整 ・可変性 ・不可視性 参考: 人月の神話
複雑性 ソフトウェアを構築するコードは数万、数 百万行に肥大していく。 また、各コードの関係性は複雑に絡み合 い依存関係は非線形に増大する。
機能の数や歴史に比例し必ず増え、コードの増 加や複雑性は避けられない
シェルフィーのプロダクト規模はどれくらい?
コード行数 26万行,ファイル数3500個 (インフラは除く)
同調整 ソフトウェアはあらゆるものに同調する必 要がある。 扱っている業界の知識(法律) 利用される機器 利用するユーザ 他のアプリケーションなどなど
ソフトウェアはユーザ以外にも思いを馳せる場所 がたくさんあるということ
特にユーザ要望部分はめちゃくちゃ大事で要望 を整理して伝えてくれている皆さんには感謝!
可変性 ソフトウェアは常に変化できなければなら ない 事業、ユーザ、技術的課題...etc 参考: ストラテジーと実装の一致
期待や外的要因による変化に応え続ける必要 がある
様々な軸からの攻守の要望!
不可視性 ソフトウェアはこうしたい(概念)を積み上 げた具体の塊! 積み上げの過程を目で見ることができ ず、簡易的な図などでしか表現できな い! なぜ実装したのか?なぜこのような方法 で実現したのか?などの意思決定や見え ない制約はコードからはわからない
作られたものから確実にこれが正しいという事実 が得られない
ソフトウェアは上手に作れば複雑じゃなくなる?
なんてことはないです!
None
ソフトウェアは複雑だからソフトウェア
複雑性を表すもっと身近な例
None
なぜ品質が大事?
高品質=上がり続ける複雑性の傾き、変化量を 小さくできているORできる状態
ある一定の品質を維持できなくなったら
事業的な理由からの舵を切りづらくなる
事業的な理由からの舵を切りづらくなる ・機能を追加するにしても、メンテナンスが行き届いていないと、実現に時間がかかりや すくなる→事業の変化スピードについて行けない
何も機能を追加できないソフトウェアになる 参考: 突如発表された『拡散性ミリオンアーサー』 サービス終了の真相を訊く
何も機能を追加できないソフトウェアになる ・複雑であるためコントロールできず、属人化が発生しやすくなる ・コアメンバーが抜けたら、誰もわからない ・バグやデグレードが発生しやすくなる
プロダクトチームが実施してきた、していること
プロダクトチームが実施してきた、していること ・開発効率の改善 by 知恵 ← エンジニアがアプリケーションを作ることだけに全集中で きる環境の整備 ・Kotlin化プロジェクト推進 by lennon ←
複雑化したコードベースを整えるためのルール の整備とそれの適用 ・Autifyの整備 by moe ← デグレードなどの検知タイミングを設けて、コード変更をよりし やすく
すべて増加する複雑性を抑えるため
例えば安全書類
安全書類 ・待望の施工体系図Previewの改善 ・Preview表示スピードがめちゃくちゃ速い&体系図が正しく表示される ・これもソフトウェアの品質改善で実現されている
例えば入退場の例
入退場
None
入退場 ・裏側の品質改善を進めていることで受けている恩恵(現時点で) ・UXの向上機能の簡単な実現 ・素早い一覧画面表示 ・反応の速いフォーム編集(Twitterのいいねみたいな反応の良いUI) ・もしメンテナンスをしていなかった場合は目の前実装になり実現できても壊れやすいも のになっていく、、、
持続的に事業に応えていく、ユーザに価値を届 け続けるためにリファクタ(品質改善)が必要