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
エラーハンドリングを少しずつ改善していく / improving error handling...
Search
コドモン開発チーム
July 18, 2024
4
1.7k
エラーハンドリングを少しずつ改善していく / improving error handling little by little
コドモン開発チーム
July 18, 2024
Tweet
Share
More Decks by コドモン開発チーム
See All by コドモン開発チーム
業界に標準を提案し、業界と長くお付き合いするVertical SaaS / Vertical SaaS that Proposes Industry Standards and Builds Long-Term Relationships with the Industry.
codmoninc
0
17
「Be agile」でいるためにしていること / What we do to stay 'agile'
codmoninc
1
400
ペアプロに納得感がなかった話 / A story about not being convinced by pair programming
codmoninc
1
460
だいじなこと、に集中するチームでいるために / To be a team that focuses on what matters
codmoninc
1
420
遅延読み込みの歩みから理解するSeekableOCI / Understanding SeekableOCI from the Perspective of Lazy Loading
codmoninc
0
15
コドモンがXPを取り入れている理由 / The reason why Codmon is incorporating XP
codmoninc
1
490
ベイビーステップで実現! 地図検索機能のVue2→3移行話/Achieving Baby Steps: Transitioning Map Search Functionality from Vue 2 to Vue 3
codmoninc
3
160
とっ散らかったログバケットを S3バッチオペレーションで整理整頓! / Organizing Chaotic Log Buckets with S3 Batch Operations
codmoninc
0
17
CDKとLambda Aliasで実現する、SQS+Lambdaの安全なリリース手法 / SQS+Lambda release method with CDK and Lambda Alias
codmoninc
2
430
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
Why Our Code Smells
bkeepers
PRO
334
57k
Done Done
chrislema
181
16k
How GitHub (no longer) Works
holman
310
140k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
720
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Faster Mobile Websites
deanohume
305
30k
A Tale of Four Properties
chriscoyier
156
23k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Transcript
2024年7月18日 上代洋平 エラーハンドリングを 少しずつ改善していく
2 経歴 2022年12月にコドモンに入社。コドモンでは既存機能のリプレイス や新規プロダクトの開発をサーバーサイドKotlinで行っています。 自己紹介 上代 洋平 かじろ ようへい
3 Mission
4 すべての先生に 子どもと向き合う 時間と心のゆとりを こんなプロダクトを開発しています メインプロダクトは、保育・教育施設向けWebアプリケーション。 保護者と施設のやり取りを支えるモバイルアプリケーションや、施設職員向けモバイル版 アプリケーション、外部サービスと連携するAPIなども開発しています。
5 導入施設数推移(ICT) 8,000 5,200 1,500 全国導入数 18,000 施設 11,000 17,000
(2024年3月時点) 14,000 2021年4月 2020年4月 2019年4月 3,000 2018年4月 2017年4月 500 2016年4月 120 2022年2月 2024年3月 2023年4月
6 エラーハンドリングの改善を行っているのでその 話をします
7 CONFIDENTIAL - © 2022 CoDMON Inc. 7 用語の説明 •
LOGICAL FAILURE ◦ ドメイン内では成功とはみなされないが、まだそのドメインの範囲内に ある状況を指す。 • REAL EXCEPTIONS ◦ 技術的な問題であり、ドメインの一部ではないもの。
8 CONFIDENTIAL - © 2022 CoDMON Inc. 8 アーキテクチャ
9 CONFIDENTIAL - © 2022 CoDMON Inc. 9 アーキテクチャ
10 CONFIDENTIAL - © 2022 CoDMON Inc. 10 なぜRepository? •
入出力の部分はコードが制御できない外部起因のエラー が発生しやすい。 • LOGICAL FAILUREとREAL EXCEPTIONSを区別しない ので処理が煩雑になってしまっていた。
11 CONFIDENTIAL - © 2022 CoDMON Inc. 11 コード例
12 CONFIDENTIAL - © 2022 CoDMON Inc. 12 良い点/改善点 •
全てEitherで扱うのでルールとしてわかりやすい • コード量が増えやすい • LOGICAL FAILUREとREAL EXCEPTIONSを同じように 扱っているためハンドリングしたいものに集中しづらい
13 改善したい
14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 方針 •
Repositoryのみ改善をする • LOGICAL FAILUREはEitherで扱う • REAL EXCEPTIONSはthrowする → フレームワークで処理をする
15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 改善後のコード例(REAL EXCEPTIONSのみ発生)
16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 改善後のコード例
17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 改善後 •
すべてEitherで扱うのでルールとしてわかりやすい → エラーを区別するためルールとしては多少は複雑性が増した • コード量が増えやすい → エラーの型をチェックするコードなどを以前より減らせる
18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 改善後 •
LOGICAL FAILUREとREAL EXCEPTIONSを同じように 扱っているためハンドリングしたいものに集中しづらい → エラーを判別することによりドメインでハンドリングしたいもの(LOGICAL FAILURE)に集中できる
19 CONFIDENTIAL - © 2022 CoDMON Inc. 19 結果 •
LOGICAL FAILUREとREAL EXCEPTIONSを区別して適 切にハンドリングするとコードの見通しが良くなる。
20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 参考 https://elizarov.medium.com/kotlin-and-exceptions-
8062f589d07
21 ちなみに
22 コドモン採用ページ 開発ブログ コドモンでは一緒に働きたい仲間を募集しています!
23 ご清聴ありがとうございました!
None