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
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
150
数百円から始めるRuby電子工作
tarosay
0
100
AIが無かった頃の素敵な出会いの話
codmoninc
1
210
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
520
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
230
5分で問診!Composer セキュリティ健康診断
codmoninc
0
580
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
120
What's New in Android 2026
veronikapj
0
150
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
180
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.7k
Claude Team Plan導入・ガイド
tk3fftk
0
220
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
3.6k
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
590
Docker and Python
trallard
47
4k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
620
Believing is Seeing
oripsolob
1
170
Paper Plane (Part 1)
katiecoart
PRO
1
9.8k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
360
Building the Perfect Custom Keyboard
takai
2
820
Speed Design
sergeychernyshev
33
1.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
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 ͠Ύͬͪΐ͏Μ