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
J2K failure story : UNIT
Search
Paraya
August 24, 2018
Programming
120
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
150
Other Decks in Programming
See All in Programming
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
430
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.7k
Vite+ Unified Toolchain for the Web
naokihaba
0
130
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
230
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
550
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
Lessons from Spec-Driven Development
simas
PRO
0
150
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
170
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
Inside Stream API
skrb
1
660
Featured
See All Featured
Statistics for Hackers
jakevdp
799
230k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
A designer walks into a library…
pauljervisheath
211
24k
Google's AI Overviews - The New Search
badams
0
1k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
300
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
290
Designing Experiences People Love
moore
143
24k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Designing for humans not robots
tammielis
254
26k
Docker and Python
trallard
47
3.9k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
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 ͠Ύͬͪΐ͏Μ