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
250
【シェルフィー株式会社】会社紹介資料/hello-shelfy
shelfy
9
41k
Other Decks in Programming
See All in Programming
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
1
13k
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
140
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
21
4k
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
170
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
200
PipeCDのプラグイン化で目指すところ
warashi
1
280
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
14
4.8k
Goで作る、開発・CI環境
sin392
0
230
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
640
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
120
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
150
スタートアップの急成長を支えるプラットフォームエンジニアリングと組織戦略
sutochin26
1
5.8k
Featured
See All Featured
Being A Developer After 40
akosma
90
590k
Done Done
chrislema
184
16k
Building an army of robots
kneath
306
45k
Making Projects Easy
brettharned
116
6.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Raft: Consensus for Rubyists
vanstee
140
7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
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) ・もしメンテナンスをしていなかった場合は目の前実装になり実現できても壊れやすいも のになっていく、、、
持続的に事業に応えていく、ユーザに価値を届 け続けるためにリファクタ(品質改善)が必要