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
270
コード品質向上で得られる効果と実践的取り組み
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
エンジニアリングで組織のアウトカムを最速で最大化する!
ham0215
1
91
アウトカムを最速で最大化できる開発組織にするために
ham0215
1
66
開発者体験を定量的に把握する手法と活用事例
ham0215
1
220
チームトポロジーの4つのチームタイプ
ham0215
2
25
生成AI活用でエンジニア組織はどう変わったのか?
ham0215
3
110
メンバーがオーナーシップを発揮しやすいチームづくり
ham0215
3
480
Platform Engineeringのエッセンスを小規模な開発組織に取り入れた事例紹介
ham0215
9
1.8k
開発者の定量・定性データを組み合わせて開発者体験を把握するための取り組み
ham0215
5
2.3k
アジャイルを始めるための基礎を固める
ham0215
1
110
Other Decks in Technology
See All in Technology
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
coconala_engineer
1
290
Making a MIDI controller device with PicoRuby/R2P2 (RubyKaigi 2025 LT)
risgk
1
250
読んで学ぶ Amplify Gen2 / Amplify と CDK の関係を紐解く #jawsug_tokyo
tacck
PRO
1
160
Mastraに入門してみた ~AWS CDKを添えて~
tsukuboshi
0
270
白金鉱業Meetup_Vol.18_AIエージェント時代のUI/UX設計
brainpadpr
0
120
品質文化を支える小さいクロスファンクショナルなチーム / Cross-functional teams fostering quality culture
toma_sm
0
120
MCPを活用した検索システムの作り方/How to implement search systems with MCP #catalks
quiver
12
6.7k
watsonx.data上のベクトル・データベース Milvusを見てみよう/20250418-milvus-dojo
mayumihirano
0
120
CodePipelineのアクション統合から学ぶAWS CDKの抽象化技術 / codepipeline-actions-cdk-abstraction
gotok365
5
200
技術者はかっこいいものだ!!~キルラキルから学んだエンジニアの生き方~
masakiokuda
2
270
Terraform Cloudで始めるおひとりさまOrganizationsのすゝめ
handy
2
180
AI AgentOps LT大会(2025/04/16) Algomatic伊藤発表資料
kosukeito
0
140
Featured
See All Featured
Side Projects
sachag
452
42k
Being A Developer After 40
akosma
91
590k
Why Our Code Smells
bkeepers
PRO
336
57k
Making the Leap to Tech Lead
cromwellryan
133
9.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
550
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
104
19k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
What's in a price? How to price your products and services
michaelherold
245
12k
GitHub's CSS Performance
jonrohan
1030
460k
Designing Experiences People Love
moore
141
24k
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