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
ham
March 25, 2025
Technology
2
310
コード品質向上で得られる効果と実践的取り組み
2025/03/25 「コード品質向上のノウハウ」の登壇資料
https://form.findy-team.io/event_code-quality_250325
ham
March 25, 2025
Tweet
Share
More Decks by ham
See All by ham
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
110
データ駆動経営の道しるべ:プロダクト開発指標の戦略的活用法
ham0215
2
310
開発組織における意思決定の実例〜開発優先度・組織構成・ツール導入〜
ham0215
0
66
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
370
アウトカムを最速で最大化できる開発組織にするために
ham0215
1
100
開発者体験を定量的に把握する手法と活用事例
ham0215
2
270
チームトポロジーの4つのチームタイプ
ham0215
2
55
生成AI活用でエンジニア組織はどう変わったのか?
ham0215
3
190
メンバーがオーナーシップを発揮しやすいチームづくり
ham0215
3
540
Other Decks in Technology
See All in Technology
2025新卒研修・HTML/CSS #弁護士ドットコム
bengo4com
3
13k
ソフトウェア開発プロジェクトでの品質管理への提案(温故知新)
yohwada
0
110
リリース2ヶ月で収益化した話
kent_code3
1
180
Oracle Cloud Infrastructure:2025年7月度サービス・アップデート
oracle4engineer
PRO
1
110
Claude CodeでKiroの仕様駆動開発を実現させるには...
gotalab555
3
860
モバイルゲームの開発を支える基盤の歩み ~再現性のある開発ラインを量産する秘訣~
qualiarts
0
1.1k
Claude Codeから我々が学ぶべきこと
s4yuba
6
1.7k
「育てる」サーバーレス 〜チーム開発研修で学んだ、小さく始めて大きく拡張するAWS設計〜
yu_kod
1
250
Claude Codeが働くAI中心の業務システム構築の挑戦―AIエージェント中心の働き方を目指して
os1ma
9
1.5k
Mambaで物体検出 完全に理解した
shirarei24
2
210
私とAWSとの関わりの歩み~意志あるところに道は開けるかも?~
nagisa53
1
160
風が吹けばWHOISが使えなくなる~なぜWHOIS・RDAPはサーバー証明書のメール認証に使えなくなったのか~
orangemorishita
15
5.4k
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
A Modern Web Designer's Workflow
chriscoyier
695
190k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Unsuck your backbone
ammeep
671
58k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Designing for Performance
lara
610
69k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
Become a Pro
speakerdeck
PRO
29
5.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Transcript
© Findy Inc. 1 コード品質向上で得られる効果と 実践的取り組み 2025.03.25 コード品質向上のノウハウ 浜⽥ 直⼈
Naoto Hamada (ham)
© Findy Inc. 2 開発⽣産性が向上する⽅法を探求しているエンジニア! Ruby / Rails / React
/ TypeScript / AWS Agile / DevOps / Developer Productivity / DevEx Stock Investment 浜⽥ 直⼈ Naoto Hamada (ham) @hamchance0215
挑戦するエンジニアの プラットフォームをつくる。 テクノロジーによる社会変革の時代に最も必要なことは、エンジニアの可能性を拡げることです。 Findyは、アルゴリズムとヒューマニティの融合によって、 すべてのエンジニアが不安なく挑戦できる世界共通のプラットフォームをつくります。 個人のチャンスを生み出し、組織の生産性を向上させ、社会の人材資産を好循環させる。 エンジニアプラットフォームが、デジタル社会の発展を加速していきます。 ビジョン © Findy
Inc. 3
None
© Findy Inc. 5 Agenda - ソフトウェアの品質特性 - 保守性について -
保守性を向上させる取り組み - まとめ
© Findy Inc. ソフトウェアの品質特性 6
© Findy Inc. 7 ソフトウェアの品質特性とは? - ISO/IEC 25010では、システム及びソフトウェア製品の品質 特性を8つの特性とそれぞれの副特性で定義しています -
ISO/IEC 25010 ◦ 国際標準化機構(ISO)と国際電気標準会議(IEC)が共 同で発⾏した国際規格 - JIS X 25010 ◦ ISO/IEC 25010を基に、⽇本産業標準調査会(JISC)が ⽇本の国家規格(JIS規格)として発⾏したもの
© Findy Inc. 8 ソフトウェアの品質特性とは? - システム及びソフトウェアの品質測定量とその測定⽅法 https://www.ipa.go.jp/archive/files/000065866.pdf
© Findy Inc. 9 ソフトウェアの品質特性とは? - システム及びソフトウェアの品質測定量とその測定⽅法 https://www.ipa.go.jp/archive/files/000065866.pdf
© Findy Inc. 保守性について 10
© Findy Inc. 11 保守性とは? - ソフトウェアの変更が容易かつ効率的に⾏える度合いを⽰ す品質特性 - 保守性が⾼いとは、ソフトウェアの機能追加、バグ修正、
パフォーマンス改善などが容易に⾏えることを意味する
© Findy Inc. 12 保守性とは? - 保守性に含まれる5つの品質副特性 ◦ モジュール性 ◦
再利⽤性 ◦ 解析容易性 ◦ 修正容易性 ◦ 試験容易性
© Findy Inc. 13 モジュール性 - ソフトウェアが、独⽴したコンポーネントに分割されてい る度合い。これにより、特定のコンポーネントのみを変更 することが容易になり、他の部分への影響を最⼩限に抑え られます。
全然関係ないところが 壊れたー
© Findy Inc. 14 再利⽤性 - ソフトウェアのコンポーネントが、他のソフトウェアやシ ステムで再利⽤できる度合い。再利⽤性が⾼いほど、開発 効率が向上し、保守コストを削減できます。 同じことをしている
コードがたくさんある... 全部対応せねば...
© Findy Inc. 15 解析容易性 - ソフトウェアの障害や変更の影響を、容易に分析できる度 合い。解析容易性が⾼いほど、問題の特定や修正が迅速に ⾏えます。 ビッグバンリリースすぎて
変更の影響がわからん...
© Findy Inc. 16 修正容易性 - ソフトウェアの変更を、容易かつ効率的に⾏える度合い。 修正容易性が⾼いほど、変化する要求に柔軟に対応できま す。 コードが🍝
機能追加するには、どこを 触わればいいんだ...
© Findy Inc. 17 試験容易性 - ソフトウェアのテストを、容易かつ効率的に⾏える度合 い。試験容易性が⾼いほど、品質の⾼いソフトウェアを維 持できます。 テストがないので既存の
振る舞いを守れない...
© Findy Inc. 保守性を向上させる取り組み 18
© Findy Inc. 19 モジュール性 - 関⼼事の分離 - 結合度と凝集度 ◦
内部結合、共通結合、外部結合、制御結合、制御結合、スタンプ結合、データ結合 ◦ 偶発的凝集、論理的凝集、時間的凝集、⼿続き的凝集、通信的凝集、情報的凝集、機能的凝集 良いコードとは何か - エンジニア新卒研修 スライド公開 CyberZ Developer https://note.com/cyberz_cto/n/n26f535d6c575#E0aBe
© Findy Inc. 20 再利⽤性 - 汎⽤コンポーネントの作成 - 共通機能の集約 ◦
UIコンポーネント / Utils ... ◦ ※過度な共通化は結合度が⾼くなるので注意 ▪ 2,3箇所で使われるようになってから共通化を考える - 設計パターンとフレームワークの活⽤ ◦ Next.js / Rails / Clean Architecture / デザインパターン...
© Findy Inc. 21 解析容易性 - 明確なコーディング規約 - 適切なコメントとドキュメント -
ログ出⼒の活⽤ - ⼩さなパッチ単位でデプロイ
© Findy Inc. 22 解析容易性 - 「⼩さなパッチ単位でデプロイ」を中⼼にファインディの 事例をNoteで公開しています https://note.com/hamchance/n/n6a30971763e4 https://note.com/hamchance/n/n97c551bab985
https://note.com/hamchance/n/nc2333dd10083
© Findy Inc. 23 修正容易性 - シンプルなコード - テスト容易性を考慮した設計 -
バージョン管理システムの利⽤
© Findy Inc. 24 修正容易性 - 過度な共通化を排除し、低結合にすることで、可読性が⾼ く変更に強いコードへリファクタリング https://speakerdeck.com/ham0215/izikarasinpuruhe-purodakutonocheng-chang-nihe-wasetaakitekutiyanobian-geng
© Findy Inc. 25 試験容易性 - テストケースの⾃動⽣成 - テスト環境の整備 -
単体テストの実施
© Findy Inc. 26 試験容易性 - システムを守るテストコード - PRごとに実⾏できるように、 ⼿間なく実⾏できる環境を構
築するだけではなく、実⾏時 間にこだわる https://tech.findy.co.jp/entry/2024/06/13/111106 https://speakerdeck.com/ham0215/ciha5fen-yi-nei-su-zao-ikai-fa-saikuruwozhi-eruci
© Findy Inc. まとめ 27
© Findy Inc. 28 まとめ - 「コード品質」という⾔葉は曖昧なので、最初に認識を合 わせる ◦ ISO/IEC
25010は体系的にまとめられていて使いやすい ◦ 品質特性などに分解していくと、コード品質の伸びしろ や改善点が⾒つかりやすい - コード品質を向上させていくには⼩さな積み重ねと継続的 な活動が⼤事です!!
© Findy Inc. 29 まとめ - ⽣成AIの活⽤⽂脈でもコード品質は重要になってきそう! - [⽬次] -
既存コードの最適化 ◦ 不要なコードの削除 ◦ 統⼀されたコーディング規約 ◦ コードの設計の⼀意性 - ドキュメンテーションの充実 ◦ docコメントやAPIドキュメント ◦ カスタムインストラクション ◦ プロンプトを記録 - 継続的な改善を可能にする開発⽂化 ◦ テストコードとCI/CDの整備 ◦ Pull requestの粒度 https://tech.findy.co.jp/entry/2025/03/17/070000