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
J2K failure story : UNIT
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Paraya
August 24, 2018
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
J2K failure story : UNIT
Paraya
August 24, 2018
More Decks by Paraya
See All by Paraya
J2Kコンバータをカスタマイズする ver: 5min
paraya3636
0
1.9k
J2Kコンバータをカスタマイズする
paraya3636
1
2.3k
命名おじさん
paraya3636
1
190
Step up Kotlin
paraya3636
0
100
DDD失敗談
paraya3636
0
160
Other Decks in Programming
See All in Programming
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
530
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
1.9k
業務時間外もAIに働いてもらう話
colorful12
3
10k
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
1.1k
XHTMLが残したもの
yosuke_furukawa
PRO
2
690
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
120
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
780
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
0
140
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
490
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
2.4k
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
270
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
720
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Statistics for Hackers
jakevdp
799
230k
A Modern Web Designer's Workflow
chriscoyier
699
190k
How to Ace a Technical Interview
jacobian
281
24k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
490
New Earth Scene 8
popppiees
3
2.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Transcript
+BWB͔Β,PUMJOมͰ ͷࣦഊஊɿ7PJE➔6OJUฤ ,PUMJO'FTU !QBSBZB
ࣗݾհ ɾ ࡾӜՂ༞QBSBZB ɾ גࣜձࣾΠάχεॴଐ ɾ XJUI"OESPJE୲ ɾ ,PUMJOͷࠒ͔Β ఔ
,PUMJOԽίϯόʔτπʔϧ͕͋Δ͔Β؆୯ʂ ͱࢥ࣮ͬͯࡍͬͯΈΔͱࢁͷ͕ ͋Γ·͢
7PJEܕҾΛ࣋ͭϝιουͷ,PUMJO ԽͰɺΫϥογϡͤͯ͞͠·ࣦͬͨ ഊஊΛ͓͠·͢ɻ
Ҿ7PJEΛ࣋ͭϝιου public interface UseCase<Input, OutPut> { OutPut execute(Input input); }
public interface SaveActionUseCase extends UseCase<Void, Void> { } class SaveActionUseCaseImpl implements SaveActionUseCase { @Override public Void execute(Void input) { // save boolean value return null; } } δΣωϦΫεΛͬͨॲཧͰҾ7PJEʹOVMMΛ ड͚͢ͱ͍͏έʔε͕ଘࡏ͠·͢ ྫ͑$MFBO"SDIJUFDUVSFͰͷ6TF$BTF࣮
Ҿ7PJEϝιουΛ,PUMJOԽͯ͠ΈΔ interface SaveActionUseCase : UseCase<Unit, Unit> class SaveActionUseCaseImpl : SaveActionUseCase
{ override fun execute(input: Unit) { // save boolean value } } 6TF$BTFΛ,PUMJOԽͯ͠Έ·͢ ߋʹҾ7PJEΛ6OJUʹͯ͠Έ·ͨ͠ +BWBͷ7PJE,PUMJOͰ6OJUͰ͢͠Ͷ
Ҿ7PJEϝιουΛ,PUMJOԽͯ͠ΈΔ Caused by: java.lang.IllegalArgumentException: Parameter specified as non-null is null:
method kotlin.jvm.internal.Intrinsics.checkParameter IsNotNull, parameter input ͔͠͠+BWB͔Β࣮ߦ͢Δͱ࣮ߦ࣌Τϥʔ *MMFHBM"SHVNFOU&YDFQUJPO͕ൃੜͯ͠͠·͏ʜ
6OJUʹ/VMMͷ֓೦͋Δ private void saveByJava() { saveActionUseCase.execute(null); } ,PUMJOͰݺͼग़ͯ͠ΈΔͱϏϧυΤϥʔʹͳͬ ͍ͯΔɻ6OJUԿͳ͍ঢ়ଶΛදݱ͍ͯ͠Δ͕ /PO/VMMͩͬͨɻ6OJUʹ/VMMͷ֓೦͕ଘࡏ͠
ͨʜʂ
6OJU*/45"/$&ΛͬͯΈΔ private void saveByJava() { saveActionUseCase.execute(Unit.INSTANCE); } private fun saveByKotlin()
{ saveActionUseCase.execute(Unit) } ݺͼग़͠ଆΛ6OJUΛ͢ܗʹॻ͖͑·͢ɻ 6OJUPCKFDUDMBTTͱͯ͠ఆٛ͞Ε͍ͯΔͷͰ ΠϯελϯεΛͤ·͢ ͜ΕΤϥʔى͖ͣҰݟͳͦ͞͏ʜ
,PUMJOԽͷӨڹൣғ private void saveByJava1() { saveActionUseCase.execute(Unit.INSTANCE); } private void saveByJava2()
{ saveActionUseCase.execute(null); // Ϋϥογϡ!! } ݺͼग़͠Օॴ͕ͭͳΒ͍͍͚Ͳɺෳ͋Δͱͦ ΕΒΛશ෦ॻ͖͑Δ࡞ۀ͕ඞཁͰ͢ɻ Ͱ͖Ε,PUMJOԽͰͷมߋɺ,PUMJOԽͨ͠Ϋ ϥεʹཹΊ͍ͨ
7PJE ·ͨ6OJU Λ͓͏ interface SaveActionUseCase : UseCase<Unit?, Unit> class SaveActionUseCaseImpl
: SaveActionUseCase { override fun execute(input: Unit?) { } } interface SaveActionUseCase : UseCase<Void?, Void?> class SaveActionUseCaseImpl : SaveActionUseCase { override fun execute(input: Void?): Void? { return null } } 6OJU ͷ΄͏͕ΑΓ,PUMJOΆ͍͕+,ίϯόʔτ ޙͷίʔυ7PJE ͷ΄͏͕͍ۙɻ͓ΈͰɻ
ࠓճͷࣦഊஊ͔ΒಘΒΕͨݟ ɾ 6OJUʹ/VMMͷ֓೦͕ଘࡏ͢Δɻ ɾ δΣωϦΫεͰ7PJE6OJUҾΛѻ͏ͳΒɺ +BWB͔Βͷݺͼग़͠Λߟྀͯ͠/VMMBCMFͷ 7PJE 6OJU ͷͲͪΒ͔ʹ͢Δඞཁ͕͋Δɻ ɾ
,PUMJOԽ͢Δࡍ,PUMJOԽͨ͠Ϋϥεʹมߋ ΛཹΊ͓͍ͯͨ΄͏͕Өڹൣғ͕গͳͯ͘˕
༨ஊ ,PUMJOԽ࣌ʹྑ͘ൃੜ͢Δ/VMMೖΫϥογϡ͍ͭͯ+,ίϯόʔ λΛΧεϚΠζ͢Δํ๏Ͱճආ͢Δ༰ΛҎલൃද͍ͯ͠·ͨ͠ɻ Α͚Εͪ͜ΒͷεϥΠυͥͻ IUUQTTQFBLFSEFDLDPNQBSBZB KLLPOCBUBXPLBTVUBNBJ[VTVSV
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ʂ ྑ͍,PUMJOϥΠϑΛʂ
XJUI"OESPJEJ04ΤϯδχΞΛେઈࢍืूதʂ ϕςϥϯ,PUMJO4XJGUΤϯδχΞ͕αϙʔτ͢ΔͷͰ ॳ৺ऀͰ,PUMJO4XJGUʹڵຯ͕͋ΔͳΒ ؾܰʹԠืͯ͠ΈͯͶʂ IUUQTXXXXBOUFEMZDPNQSPKFDUT ͠Ύͬͪΐ͏Μ