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 コドモン開発チーム
チーム一丸で取り組む採用とDevRel ~Engineering Office誕生の背景と取り組み~ / Engineering Office at CoDMON
codmoninc
3
320
休日・夜間のインスタンス自動停止をSREチームで運用してみた / The CoDMON SRE team tried to operate instance automatic shutdown on holidays and at night
codmoninc
1
44
フルリモートだけど、入社して半年足らずでかなり馴染んだ話 / How I adapted CoDMON despite being fully remote
codmoninc
1
180
おすすめAWSコスト対策 / Recommended AWS cost measures
codmoninc
1
34
手付かずだったSecurity Hub運用を改善した話 / improving the untouched Security Hub operation
codmoninc
1
210
プラットフォームってつくることより計測することが重要なんじゃないかという話 / I think it's more important to measure a platform than to create it
codmoninc
1
49
コドモンにおけるAPIテストを紹介するno / Introducing API testing in CoDMON
codmoninc
1
340
DDDでレガシーコードに立ち向かうリアル / Reality of confronting legacy code with DDD
codmoninc
10
4.9k
ECS Runtime Monitoring でコンテナランタイムセキュリティに入門 / Get started with container runtime security with ECS Runtime Monitoring
codmoninc
0
210
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
122
18k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
165
48k
Documentation Writing (for coders)
carmenintech
65
4.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
42
2k
Git: the NoSQL Database
bkeepers
PRO
424
64k
BBQ
matthewcrist
83
9.1k
Typedesign – Prime Four
hannesfritz
38
2.3k
Building Flexible Design Systems
yeseniaperezcruz
324
37k
What's in a price? How to price your products and services
michaelherold
241
11k
Designing with Data
zakiwarfel
98
5k
Six Lessons from altMBA
skipperchong
26
3.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
22
3.9k
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