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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
220
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
300
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
240
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.7k
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
180
Claude Team Plan導入・ガイド
tk3fftk
0
220
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
230
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
120
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1k
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
110
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1k
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Making the Leap to Tech Lead
cromwellryan
135
10k
Practical Orchestrator
shlominoach
191
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Typedesign – Prime Four
hannesfritz
42
3.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
240
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 ͠Ύͬͪΐ͏Μ