Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
cccccc
Search
moznion
July 08, 2026
Technology
2.9k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
cccccc
Findy オフラインシリーズ感謝祭 〜先陣たちの宴〜の発表資料です
https://findy.connpass.com/event/390197/
moznion
July 08, 2026
More Decks by moznion
See All by moznion
go-sqletch
moznion
0
140
ブラウザアプリの継続的パフォーマンスモニタリング (序) / Continuous Browser Application Performance Monitoring; Act 1
moznion
0
140
reFACToring
moznion
1
1.4k
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
moznion
16
16k
「データ無い! 腹立つ! 推論する!」から 「データ無い! 腹立つ! データを作る」へ チームでデータを作り、育てられるようにするまで / How can we create, use, and maintain data ourselves?
moznion
11
7.7k
避けられないI/O待ちに対処する: Rails アプリにおけるSSEとasync gemの活用 / Tackling Inevitable I/O Latency in Rails Apps with SSE and the async gem
moznion
4
9.9k
RubyKaigi Hack Space in Tokyo & 函館最速 "予習" 会 / RubyKaigi Hack Space in Tokyo & The Fastest Briefing of RubyKaigi 2026 in Hakodate
moznion
1
480
地に足の付いた現実的な技術選定から魔力のある体験を得る『AIレシート読み取り機能』のケーススタディ / From Grounded Tech Choices to Magical UX: A Case Study of AI Receipt Scanning
moznion
7
5.3k
Chrome Extension Techniques from Hell
moznion
1
340
Other Decks in Technology
See All in Technology
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
Getting Started with Google Antigravity
glaforge
0
270
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
150
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
680
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
110
WasmをRustにする
sansantech
PRO
0
240
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
970
大型犬好きによるPugの紹介
yamanoku
1
150
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
270
今さら理解するウェブフォントver.2026
takanorip
3
700
継続的なAIコスト最適化
bgpat
1
310
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
280
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The Cost Of JavaScript in 2023
addyosmani
55
10k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Docker and Python
trallard
47
4.2k
Thoughts on Productivity
jonyablonski
76
5.4k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
Visualization
eitanlees
153
17k
Transcript
© Timeleap Inc. 1 CONFIDENTIAL https://timeleap.co.jp/ cccccc Thu, 25 Jun
2026 Findy オフラインシリーズ感謝祭 〜先陣たちの宴〜 @moznion
@moznion タイムリープ株式会社 ソフトウェアエンジニア プロダクト責任者
© Timeleap Inc. Cyclomatic Complexity / Cognitive Complexity 3 •
Cyclomatic Complexity - 循環的複雑度 ◦ 制御フローを使ってプログラムの複雑さを数学的に定義して 指標としたもの ▪ ソフトウェア⼯学的な理論的メトリクス ◦ ざっくり⾔うと: どれくらい分岐 (経路) があって複雑なのか • Cognitive Complexity - 認知的複雑度 ◦ ⼈間の認知負荷を数値化して指標としたもの ▪ 循環的複雑度の⾜りていない部分を補う⽬的 ▪ 開発者体験を重視した実務的メトリクス
© Timeleap Inc. Cyclomatic Complexity 4 • 分岐が増えるほど独⽴した実⾏経路が増える ◦ =>
テストすべき経路数を複雑さとして測る ◦ 理論上はコードのグラフを描画して計算して求める • 定義 ◦ M = E - N + 2P ▪ M = Cyclomatic Complexity ▪ E = Edge(辺) ▪ N = Node(ノード) ▪ P = 連結成分数 ◦ 実質上はグラフを描かず 1 + 分岐数 で計測されることが多い ▪ 分岐‧制御構⽂が発⽣するとスコアが+1
© Timeleap Inc. Cyclomatic Complexity 5 • 課題 ◦ ネストを考慮しない
これらはどちらもスコア4
© Timeleap Inc. Cyclomatic Complexity 6 • 課題 ◦ 理解容易性を測ることはできない
スコアだけでは負荷の差を考慮できない
© Timeleap Inc. Cognitive Complexity 7 • Cyclomatic Complexityを補うための指標 •
原則 ◦ 線形な流れを壊すと加点 ◦ ネストするとネスト階層ぶん加点 ◦ シンタックスシュガーは無視
© Timeleap Inc. Cyclomatic Complexity / Cognitive Complexity 8 •
Cyclomatic Complexityで⾒れるもの ◦ テスト容易性 ◦ バグ混⼊リスク • Cognitive Complexityで⾒れるもの ◦ 可読性 ◦ 保守性 ◦ (「ネストは悪い」「早期 return は良い」「switch は思った ほど悪くない」というような熟達者の経験則のスコア化)
© Timeleap Inc. 有⽤なメトリクスなのか? 9 • YES! ◦ 例) ▪
分岐経路は多い (Cyclomatic⾼) ▪ 理解は⽐較的容易 (Cognitive低) ▪ => テストケースは増えるが保守性は それほど悪くない
© Timeleap Inc. 有⽤なメトリクスなのか? 10 • YES! ◦ 例) ▪
経路数は少ない (Cyclomatic低) ▪ 理解が難しい (Cognitive⾼) ▪ => テストはそれほど⼤変ではないが コードレビューや保守は⾟い
© Timeleap Inc. • No… ◦ 現在のソフトウェアの複雑さは「関数」だけに閉じない ◦ このメトリクスの値だけを改善してもソフトウェアが 良くなるわけではない
▪ むしろいびつになる可能性がある ▪ グッドハートの法則 ™ とはいえ数値が低ければ多くの場合良いというのはそう。 有⽤なメトリクスなのか? 11
© Timeleap Inc. なぜ今? 12 • Cyclomatic Complexity は 1976
年、 Cognitive Complexity は 2017 年の概念 • 依然として有効 ◦ 関数の複雑さの測定 • ⼤規模なアーキテクチャ‧構造の変化による効果を追える ◦ ヘルスチェック的にメトリクスを追える ▪ どんな変更がどこで起こったのかがわかる ▪ ⼤きなリファクタリングをやっている間などでは有益 ◦ LLMの台頭によって⼤きな変更が容易になった ◦ (LLMにスコアを下げさせる指⽰をすることに意味は……?)
© Timeleap Inc. というわけで 13 https://github.com/moznion/cccc • Cyclomatic/Cognitive Complexity計測器‧CLI •
特徴 ◦ Rust製 ◦ ⾼速 ◦ Language agnostic (es, rust, goがdefault supported)
© Timeleap Inc. cccc 14 • GitHub Actionsでトラッキングできるようにしている ◦ https://github.com/moznion/cccc-es-action
• k1LoW/octocovを使って継続トラッキング
© Timeleap Inc. cccc 15 • コーディングエージェント華の時代 ◦ コードの治安がおかしなことになっていないかを 確認できるに越したことはない
(ヘルスチェック) ◦ 何か⼤きな変更が加えられた時に、それがどのように影響した のかを数値トレンドを追うことで認識できる ▪ 逆に数値が⼤きく変化したことから何か⼤規模な変更を 加えられたことに気付ける • コーディングエージェント⾃体にスコアは追わせていない ◦ ⼈間がこれを追うのは無意味だがAIだとどうか……?
© Timeleap Inc. 16 CONFIDENTIAL https://timeleap.co.jp/ cccccc Thu, 25 Jun
2026 Findy オフラインシリーズ感謝祭 〜先陣たちの宴〜 @moznion
© Timeleap Inc. 17 CONFIDENTIAL https://timeleap.co.jp/ cccccc Thu, 25 Jun
2026 Findy オフラインシリーズ感謝祭 〜先陣たちの宴〜 @moznion Cyclomatic Complexity & Cognitive Complexity
© Timeleap Inc. 18 CONFIDENTIAL https://timeleap.co.jp/ cccccc Thu, 25 Jun
2026 Findy オフラインシリーズ感謝祭 〜先陣たちの宴〜 @moznion Cyclomatic Complexity & Cognitive Complexity Claude Code
© Timeleap Inc. なぜこの話を????? 19 • かつてPerl::Lintというものを作っていました ◦ めっちゃ発表しました ▪
YAPC::Asia 2014 ▪ YAPC::EU 2015 ◦ 登壇って良いものですね • このPerl::Lintの中でもCyclomatic Complexity計測器を書いていた ◦ 10年ぶりに再実装 ◦ そしてここで発表 ◦ 登壇って良いものですね
© Timeleap inc. All Rights Reserved.