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
cccccc
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
moznion
July 08, 2026
Technology
1k
0
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
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
moznion
16
14k
「データ無い! 腹立つ! 推論する!」から 「データ無い! 腹立つ! データを作る」へ チームでデータを作り、育てられるようにするまで / How can we create, use, and maintain data ourselves?
moznion
11
7.4k
避けられないI/O待ちに対処する: Rails アプリにおけるSSEとasync gemの活用 / Tackling Inevitable I/O Latency in Rails Apps with SSE and the async gem
moznion
4
8k
RubyKaigi Hack Space in Tokyo & 函館最速 "予習" 会 / RubyKaigi Hack Space in Tokyo & The Fastest Briefing of RubyKaigi 2026 in Hakodate
moznion
1
420
地に足の付いた現実的な技術選定から魔力のある体験を得る『AIレシート読み取り機能』のケーススタディ / From Grounded Tech Choices to Magical UX: A Case Study of AI Receipt Scanning
moznion
7
5.1k
Chrome Extension Techniques from Hell
moznion
1
310
Simple組み合わせ村から大都会Railsにやってきた俺は / Coming to Rails from the Simple
moznion
4
8.9k
AIレシート読み取り機能をRuby on Rails on AWSで実現するLLMにまつわるアレコレ / AI-based receipt reading function powered by LLM on Ruby on Rails on AWS
moznion
3
1.3k
Develop to Survive - YAPC::Hakodate 2024 Keynote
moznion
11
25k
Other Decks in Technology
See All in Technology
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
270
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
220
RAGの精度向上とエージェント活用
kintotechdev
2
120
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.8k
そのタスクオンスケですか?
poropinai1966
0
110
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
390
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
2
1.2k
どうして今サーバーサイドKotlinを選択したのか
nealle
0
180
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
230
水を運ぶ人としてのリーダーシップ
izumii19
4
1.2k
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
1
310
デジタル・デザイン:次の50年を描く「進化する青写真」
y150saya
0
750
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
The Curse of the Amulet
leimatthew05
2
13k
Rails Girls Zürich Keynote
gr2m
96
14k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Code Review Best Practice
trishagee
74
20k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
250
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
630
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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.