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
350
コード品質向上で得られる効果と実践的取り組み
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と過ごす1日〜全業務フローにAIを組み込む実践ガイド〜
ham0215
0
45
生成AIによる生産性向上〜テック企業やファインディの活用事例〜
ham0215
1
66
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
400
データ駆動経営の道しるべ:プロダクト開発指標の戦略的活用法
ham0215
2
420
開発組織における意思決定の実例〜開発優先度・組織構成・ツール導入〜
ham0215
0
88
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
450
アウトカムを最速で最大化できる開発組織にするために
ham0215
1
190
開発者体験を定量的に把握する手法と活用事例
ham0215
2
310
チームトポロジーの4つのチームタイプ
ham0215
2
230
Other Decks in Technology
See All in Technology
通勤手当申請チェックエージェント開発のリアル
whisaiyo
3
490
202512_AIoT.pdf
iotcomjpadmin
0
150
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
半年で、AIゼロ知識から AI中心開発組織の変革担当に至るまで
rfdnxbro
0
150
アラフォーおじさん、はじめてre:Inventに行く / A 40-Something Guy’s First re:Invent Adventure
kaminashi
0
170
Amazon Connect アップデート! AIエージェントにMCPツールを設定してみた!
ysuzuki
0
140
AI駆動開発の実践とその未来
eltociear
2
500
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
5
2.2k
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
2.5k
M&Aで拡大し続けるGENDAのデータ活用を促すためのDatabricks権限管理 / AEON TECH HUB #22
genda
0
280
ESXi のAIOps だ!2025冬
unnowataru
0
400
"人"が頑張るAI駆動開発
yokomachi
1
630
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
ラッコキーワード サービス紹介資料
rakko
0
1.8M
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
340
The Language of Interfaces
destraynor
162
25k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
We Have a Design System, Now What?
morganepeng
54
7.9k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
94
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
200
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