Slide 1

Slide 1 text

ɹɹɹղ๤ dόΠτίʔυΛಡΈղ͘d %SPJE,BJHJ 3PPNd 5PTIJIJSP:BHJ

Slide 2

Slide 2 text

"CPVU.F w 5PTIJIJSP:BHJ !TZTZBHJ w DPPLQBE w "OESPJEΤϯδχΞ ٕज़෦௕

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

,PUMJO

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

,PUMJO΍ͬͯ·͔͢ʁ

Slide 9

Slide 9 text

+BWBʹൺ΂ͯศརͳͷ͸෼͔ΔΜͩ ͚ͲɺͰ΋·͊ผʹ+BWBΛ࢖͍ͬͯ ͯΫϦςΟΧϧʹࠔ͍ͬͯΔΘ͚Ͱ ͸ͳ͍͠ͳʙֶशίετͱ͔νʔϜ ΁ͷಋೖίετΛߟ͑Δͱͦ͜·Ͱ ࢫຯΛײ͡ΒΕΔΘ͚Ͱ΋ͳ͍͠ͳʙ

Slide 10

Slide 10 text

w ,PUMJOίϯύΠϥ͕ੜ੒ͨ͠+BWBόΠτίʔ υͰಡΉ͜ͱͰɺ,PUMJO͕ߦͬͯ͘ΕΔ࢓ࣄ Λཧղ͢Δ w ,PUMJOΛॻ͘ͱ͖ʹɺ+BWBͩͱͲ͏ͳͬͯ ͍Δ͔ΠϝʔδͰ͖ΔΑ͏ʹͳΔɻࣗ෼Ͱ֬ ೝͰ͖ΔΑ͏ʹͳΔ w ,PUMJOΛ࢖͏͜ͱͰলུͰ͖ͨϘΠϥʔϓϨʔ τίʔυ͕ՄಡੑΛͲͷΑ͏ʹߴΊɺઃܭʹ ӨڹΛ༩͑Δͷ͔ʹ͍ͭͯΠϝʔδ͕༙͘ ຊηογϣϯͷ໨త

Slide 11

Slide 11 text

࠷ऴతʹ ײͯ͡΄͍͜͠ͱ

Slide 12

Slide 12 text

͋ɺͳʔΜͩ +BWBʹ͢Δͱ ͜Μͳײ͡ͳͷ͔

Slide 13

Slide 13 text

,PUMJO ؆୯ศར͡ΌΜ

Slide 14

Slide 14 text

,PUMJO ΍ͬͯΈΔ͔ʙ

Slide 15

Slide 15 text

w ,PUMJOͷಛఆͷݴޠػೳʹ͍ͭͯ ؆୯ʹղઆ͢Δ w ͦͷݴޠػೳΛ࢖ͬͨίʔυΛσ ίϯύΠϧ͠ɺ݁ՌΛಡΉ w +BWBͰॻ͘ͱ͖ͱൺ΂ͯԿΛ΍ͬ ͯ͘Ε͍ͯΔ͔ΛݟΔ ຊηογϣϯͷΞϓϩʔν

Slide 16

Slide 16 text

σίϯύΠϧͷํ๏

Slide 17

Slide 17 text

σίϯύΠϧͷํ๏

Slide 18

Slide 18 text

σίϯύΠϧͷํ๏

Slide 19

Slide 19 text

σίϯύΠϧͷํ๏

Slide 20

Slide 20 text

w OVMMڐ༰ܕ w ؔ਺ܕͱϥϜμࣜ w ֦ுؔ਺ w ϓϩύςΟ ΞδΣϯμલฤ

Slide 21

Slide 21 text

w ઃܭʹ༩͑ΔӨڹ w OVMMڐ༰ܕ w ֦ுؔ਺ ΞδΣϯμޙฤ

Slide 22

Slide 22 text

OVMMڐ༰ܕ

Slide 23

Slide 23 text

w OVMMڐ༰ܕ͸Ҿ਺΍ม਺΍໭Γ஋͕ɺ OVMMʹͳΓಘΔ͔Ͳ͏͔Λ໌ࣔతʹએݴ ͢Δػೳ OVMMڐ༰ܕͱ͸Կ͔ val name:String? = null ܕͷ຤ඌʹ Λ͚ͭΔ͜ͱͰએݴͰ͖Δ

Slide 24

Slide 24 text

w ҰํͰඇOVMMܕ͸OVMMΛ୅ೖͰ͖ͳ͍ɻ ม਺΍Ҿ਺΍໭Γ஋͕ඇOVMMܕͳΒɺ஋ ͕ඞͣඇOVMMͰ͋Δ͜ͱΛอূ͢Δ OVMMڐ༰ܕͱ͸Կ͔ val name:String = "Hello" // OK val name:String = null // Error fun toString() :String ໭Γ஋͕ඇOVMMͰ͋Δ͜ͱΛอূ͢Δ

Slide 25

Slide 25 text

w OVMMڐ༰ܕ͸ͦͷ··ૢ࡞Ͱ͖ͳ͍ OVMMڐ༰ܕͱ͸Կ͔ str.length ίϯύΠϧΤϥʔʹͳΔ

Slide 26

Slide 26 text

w OVMMڐ༰ܕʹରͯ҆͠શͳݺͼग़͠ͱة ݥͳݺͼग़͠Λબ୒͢Δ OVMMڐ༰ܕͱ͸Կ͔ // nullͳΒԿ΋͠ͳ͍ str?.length // nullͷ৔߹NullPointerException str!!.length

Slide 27

Slide 27 text

w Ҿ਺΍໭Γ஋ΛඇOVMMܕʹ͢Δ͜ͱͰؔ ਺಺Ͱ͸ؔ৺ࣄʹूதͰ͖Δ OVMMڐ༰ܕͱ͸Կ͔ fun semitransparent(view: View) { view.alpha = 0.5f } ؔ਺಺ͰWJFX͕ඇOVMMͰ͋Δ͜ͱΛอূ͢Δ

Slide 28

Slide 28 text

w OVMMͷڥքͰҧ൓͕͋ΔͱίϯύΠϥ͕ ڭ͑ͯ͘ΕΔ OVMMڐ༰ܕͱ͸Կ͔ val text: View? = findViewById(R.id.text) semitransparent(text) 5ZQFNJTTNBUDIͰίϯύΠϧΤϥʔ

Slide 29

Slide 29 text

w ةݥͳݺͼग़͠͸ةݥͳͷͰ௚͢΂͖ ͱ͍͏͜ͱ͕Θ͔Δ OVMMڐ༰ܕͱ͸Կ͔ val text: View? = findViewById(R.id.text) semitransparent(text!!) ةݥͳݺͼग़͠ɻཁվળͷγάφϧ

Slide 30

Slide 30 text

w ةݥͳݺͼग़͠͸ةݥͳͷͰ௚͢΂͖ ͱ͍͏͜ͱ͕Θ͔Δ OVMMڐ༰ܕͱ͸Կ͔ val text: View? = findViewById(R.id.text) text?.let { semitransparent(it) } OVMM͡Όͳ͚Ε͹࣮ߦɻ

Slide 31

Slide 31 text

OVMMڐ༰ܕ͸+BWBͰ ͲͷΑ͏ʹ࣮ݱ͞Ε͍ͯΔ͔ʁ

Slide 32

Slide 32 text

val nonNull: String = ”nonNull” nonNull.length

Slide 33

Slide 33 text

val nonNull: String = ”nonNull” nonNull.length String nonNull = “nonNull"; nonNull.length(); +BWBʹͳΔ͚ͩ

Slide 34

Slide 34 text

val nullable: String? = null nullable?.length

Slide 35

Slide 35 text

val nullable: String? = null nullable?.length String nullable = (String)null; if(nullable != null) { nullable.length(); } OVMMνΣοΫ͕௥Ճ͞ΕΔ

Slide 36

Slide 36 text

nullable!!.length

Slide 37

Slide 37 text

nullable!!.length if(nullable == null) { Intrinsics.throwNpe(); } nullable.length(); OVMMͳΒྫ֎Λεϩʔ

Slide 38

Slide 38 text

fun length(text: String) = text.length

Slide 39

Slide 39 text

Ҿ਺͕OVMMͳΒྫ֎Λεϩʔ public final int length(@NotNull String text) { Intrinsics.checkParameterIsNotNull(text, “text"); return text.length(); } fun length(text: String) = text.length

Slide 40

Slide 40 text

w ͳΒOVMMνΣοΫΛ௥Ճ͢Δ w ͳΒOVMMνΣοΫͱྫ֎ͷεϩʔΛ௥Ճ ͢Δ w ؔ਺ͷҾ਺͕ඇOVMMܕͳΒࣄલ৚݅ͷ νΣοΫΛ௥Ճ͢Δ w ཁ͢ΔʹOVMMνΣοΫ͕ඞཁͳͱ͜Ζʹ OVMMνΣοΫΛࣗಈͰࠩ͠ࠐΜͰ͘ΕΔ OVMMڐ༰ܕ͕΍͍ͬͯΔ͜ͱ

Slide 41

Slide 41 text

ؔ਺ܕɺϥϜμࣜ

Slide 42

Slide 42 text

w ϑΝʔετΫϥεΦϒδΣΫτɻؔ਺Λ ม਺ʹ୅ೖͨ͠Γɺؔ਺ͷҾ਺ʹͨ͠ Γɺ໭Γ஋ʹͨ͠ΓͰ͖Δ ؔ਺ܕͱ͸Կ͔ val onClick: (View) -> Unit Ҿ਺ʹ7JFXΛडऔΓɺ໭Γ஋͸ͳ͍ؔ਺Λද͢

Slide 43

Slide 43 text

w ߴ֊ؔ਺Λهड़Ͱ͖Δ ؔ਺ܕͱ͸Կ͔ fun calc( a: Int, b: Int, op: (Int, Int) -> Int ): Int { return op(a, b) }

Slide 44

Slide 44 text

ϥϜμࣜͱ͸Կ͔ calc(1, 2, { a, b -> a + b }) *OU *OU *OUܕΛͦͷ৔Ͱهड़Ͱ͖Δ w ؔ਺Ϧςϥϧɻؔ਺ܕͷ࣮૷Λࣜͱ͠ ͯهड़Ͱ͖Δ

Slide 45

Slide 45 text

ؔ਺ܕͱϥϜμࣜ listOf(1, 2, 3)
 .filter { it % 2 == 0 }
 .map { it * 2 } // 4 w ڧྗͳॲཧΛ؆ܿʹهड़Ͱ͖Δ

Slide 46

Slide 46 text

ؔ਺ܕͱϥϜμࣜ͸+BWBͰ ͲͷΑ͏ʹ࣮ݱ͞Ε͍ͯΔ͔ʁ

Slide 47

Slide 47 text

val onClick: (View) -> Unit

Slide 48

Slide 48 text

val onClick: (View) -> Unit @NotNull private final Function1 onClick; ਖ਼֬ʹ͸'VODUJPO7JFX 6OJU

Slide 49

Slide 49 text

public interface Function1 : Function { public operator fun invoke(p1: P1): R } 'VODUJPO͸ͨͩͷΠϯλϑΣʔε ؔ਺ܕ͸Ҿ਺ͷ਺ʹԠͯ͡ 'VODUJPO/ʹม׵͞ΕΔ

Slide 50

Slide 50 text

calc(1, 2, { a, b -> a + b })

Slide 51

Slide 51 text

calc(1, 2, { a, b -> a + b }) calc(1, 2, (Function2)null.INSTANCE);

Slide 52

Slide 52 text

calc(1, 2, { a, b -> a + b }) calc(1, 2, (Function2)null.INSTANCE); ίϯύΠϥ͕ϥϜμࣜΛ੩తͩͱ൑அͨ͠৔߹͸ γϯάϧτϯͷΫϥεΛੜ੒͢Δ

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

final class call$1 extends kotlin.jvm.internal.Lambda implements Function1 { public call$1() { super(2); } public final int invoke(int a, int b) { return a + b; } public final static $call$1 INSTANCE = new call$1(); } खಈͰ௚͢ͱ͜Μͳײ͡

Slide 55

Slide 55 text

final class call$1 extends kotlin.jvm.internal.Lambda implements Function1 { public call$1() { super(2); } public final int invoke(int a, int b) { return a + b; } public final static $call$1 INSTANCE = new call$1(); } -BNCEBΛܧঝ

Slide 56

Slide 56 text

final class call$1 extends kotlin.jvm.internal.Lambda implements Function1 { public call$1() { super(2); } public final int invoke(int a, int b) { return a + b; } public final static $call$1 INSTANCE = new call$1(); } Ҿ਺ͷ਺Λ਌Ϋϥεʹ౉͢ -BNCEBΛܧঝ

Slide 57

Slide 57 text

final class call$1 extends kotlin.jvm.internal.Lambda implements Function2 { public call$1() { super(2); } public final int invoke(int a, int b) { return a + b; } public final static $call$1 INSTANCE = new call$1(); } Ҿ਺ͷ਺Λ਌Ϋϥεʹ౉͢ 'VODUJPOΛ࣮૷ -BNCEBΛܧঝ

Slide 58

Slide 58 text

final class call$1 extends kotlin.jvm.internal.Lambda implements Function1 { public call$1() { super(2); } public final int invoke(int a, int b) { return a + b; } public final static $call$1 INSTANCE = new call$1(); } Ҿ਺ͷ਺Λ਌Ϋϥεʹ౉͢ γϯάϧτϯ 'VODUJPOΛ࣮૷ -BNCEBΛܧঝ

Slide 59

Slide 59 text

val seed = 10 calc(1, 2, { a, b -> a + b + seed })

Slide 60

Slide 60 text

val seed = 10 calc(1, 2, { a, b -> a + b + seed }) final byte seed = 10; calc(1, 2, (Function2)(new Function2(2) { public final int invoke(int a, int b) { return a + b + seed; } })); Ϋϩʔδϟͷ৔߹͸ແ໊ΫϥεΛੜ੒͢Δ

Slide 61

Slide 61 text

var seed = 10 calc(1, 2, { a, b -> seed++; a + b })

Slide 62

Slide 62 text

var seed = 10 calc(1, 2, { a, b -> seed++; a + b }) final IntRef seed = new IntRef(); seed.element = 10; calc(1, 2, (Function2)(new Function2(2) { public final int invoke(int a, int b) { int var3 = seed.element++; return a + b; } })); Ωϟϓνϟͨ͠ม਺Λมߋ͢Δ৔߹͸ 3FGΫϥε͕࢖ΘΕΔ

Slide 63

Slide 63 text

w ؔ਺ܕΛҾ਺ͷ਺ʹԠͨ͡'VODUJPO/Πϯλ ϑΣʔεʹม׵͢Δ w ϥϜμࣜΛɺ-BNCEBΛܧঝͯ͠'VODUJPO/Λ ࣮૷͢ΔΫϥεʹม׵͢Δ w ϥϜμࣜͷத਎ʹΑͬͯ࠷దͳίʔυΛੜ੒͢Δ w جຊతʹ͸SFUSPMBNCEB΍KBDLͳͲͰͷ+BWB ϥϜμࣜαϙʔτͱಉ͡Α͏ͳΞϓϩʔνͰؔ਺ ܕΛ࣮ݱͯ͘͠ΕΔɻࠩ෼ͱͯ͠͸Ϋϩʔδϟ͕ ͪΐͬͱॊೈͱ͍͏͘Β͍ ؔ਺ܕɺϥϜμ͕ࣜ΍͍ͬͯΔ͜ͱ

Slide 64

Slide 64 text

֦ுؔ਺

Slide 65

Slide 65 text

w طଘͷΫϥεʹରͯ͠৽͍ؔ͠਺Λ௥Ճ Ͱ͖Δػೳ ֦ுؔ਺ͱ͸Կ͔ fun Int.reversed(): Int { return toString().reversed().toInt() }

Slide 66

Slide 66 text

w ର৅ͷΫϥεͷΠϯελϯε͔Β௥Ճ͠ ͨؔ਺Λݺͼग़ͤΔΑ͏ʹͳΔ ֦ுؔ਺ͱ͸Կ͔ 334017.reversed() // 710433

Slide 67

Slide 67 text

w ৑௕ͳॲཧΛ֦ுؔ਺ʹ·ͱΊͨΓɺ ੹຿Λ௥Ճͨ͠ΓͰ͖Δ ֦ுؔ਺ͱ͸Կ͔ context.getSystemService(Context.WINDOW_SERVICE) as WindowManager

Slide 68

Slide 68 text

w ৑௕ͳॲཧΛ֦ுؔ਺ʹ·ͱΊͨΓɺ ੹຿Λ௥Ճͨ͠ΓͰ͖Δ ֦ுؔ਺ͱ͸Կ͔ context.getWindowService() context.getSystemService(Context.WINDOW_SERVICE) as WindowManager

Slide 69

Slide 69 text

֦ுؔ਺͸+BWBͰ ͲͷΑ͏ʹ࣮ݱ͞Ε͍ͯΔ͔ʁ

Slide 70

Slide 70 text

fun Context.getWindowService() = getSystemService(Context.WINDOW_SERVICE) as WindowManager

Slide 71

Slide 71 text

@NotNull public static final WindowManager getWindowService(@NotNull Context $receiver) { Intrinsics.checkParameterIsNotNull($receiver, “$receiver"); Object var10000 = $receiver.getSystemService(“window"); if(var10000 == null) { throw new TypeCastException("null cannot be cast to non-null type android.view.WindowManager”); } else {
 return (WindowManager)var10000;
 } } fun Context.getWindowService() = getSystemService(Context.WINDOW_SERVICE) as WindowManager

Slide 72

Slide 72 text

public static final WindowManager getWindowService(Context $receiver) { Object var10000 = $receiver.getSystemService(“window");
 return (WindowManager)var10000; } fun Context.getWindowService() = getSystemService(Context.WINDOW_SERVICE) as WindowManager ˞γϯϓϧʹͨ͠΋ͷ ର৅ͷΫϥεΛୈҰҾ਺ʹऔΔ੩తؔ਺͕ੜ੒͞ΕΔ

Slide 73

Slide 73 text

context.getWindowService()

Slide 74

Slide 74 text

ExtensionsKt.getWindowService(context) context.getWindowService() ͜͜͸֦ுؔ਺Λఆٛͨ͠Ϋϥεʹґଘ͢Δ

Slide 75

Slide 75 text

w ର৅ͷΫϥεΛୈҰҾ਺ʹऔΔ੩తؔ਺ Λੜ੒͢Δ w ֦ுؔ਺ͷݺͼग़͠Λ੩తؔ਺ͷݺͼग़ ͠ʹม׵͢Δ w ಺෦తʹ͸੩తͳؔ਺ΛूΊͨ6UJMΫϥε ͱಉ͡ɻର৅ͷΫϥεʹ੹຿Λ௥Ճͨ͠ Α͏ʹݟ͔͚ͤΒΕΔΑ͏ʹ͍ͯ͠Δ ֦ுؔ਺͕΍͍ͬͯΔ͜ͱ

Slide 76

Slide 76 text

ϓϩύςΟ

Slide 77

Slide 77 text

w Ϋϥε͕࣋ͭσʔλͱͯ͠એݴ͢Δɻ ϑΟʔϧυͷ୅ΘΓʹ࢖͏ ϓϩύςΟͱ͸Կ͔ class Product( val id: Int, var name: String )

Slide 78

Slide 78 text

w ίʔυ্Ͱ͸௚઀ϓϩύςΟʹΞΫη ε͍ͯ͠ΔΑ͏ʹݟ͑Δ͕ɺ҉໧తʹΞ ΫηαΛ͍࣋ͬͯΔ ϓϩύςΟͱ͸Կ͔ val product = Product(1, “tomato") val id = product.id product.name = "meat"

Slide 79

Slide 79 text

w ΧελϜΞΫηαΛ࣮૷Ͱ͖Δ ϓϩύςΟͱ͸Կ͔ class Product(val id: Int) { var name: String = “" get() = field set(value) { field = value } } ϓϩύςΟΞΫηε͸ඞͣΞΫηαΛհ͢ɻ ΞΫηα಺͔ΒͰͷΈΞΫηεͰ͖Δ όοΩϯάϑΟʔϧυͱ͍͏࣮ମ͕͋Δ

Slide 80

Slide 80 text

ϓϩύςΟ͸+BWBͰ ͲͷΑ͏ʹ࣮ݱ͞Ε͍ͯΔ͔ʁ

Slide 81

Slide 81 text

class Product(val id: Int, var name: String)

Slide 82

Slide 82 text

private final int id; @NotNull private String name; public final int getId() { return this.id; } @NotNull public final String getName() { return this.name; } public final void setName(@NotNull String var1) Intrinsics.checkParameterIsNotNull(var1, “"); this.name = var1; } class Product(val id: Int, var name: String)

Slide 83

Slide 83 text

private final int id; @NotNull private String name; public final int getId() { return this.id; } @NotNull public final String getName() { return this.name; } public final void setName(@NotNull String var1) Intrinsics.checkParameterIsNotNull(var1, “"); this.name = var1; } class Product(val id: Int, var name: String) QSJWBUFͳϑΟʔϧυ͕એݴ͞ΕΔ

Slide 84

Slide 84 text

private final int id; @NotNull private String name; public final int getId() { return this.id; } @NotNull public final String getName() { return this.name; } public final void setName(@NotNull String var1) Intrinsics.checkParameterIsNotNull(var1, “"); this.name = var1; } class Product(val id: Int, var name: String) QSJWBUFͳϑΟʔϧυ͕એݴ͞ΕΔ WBMͷ৔߹HFUUFSͷΈੜ੒͞ΕΔ

Slide 85

Slide 85 text

private final int id; @NotNull private String name; public final int getId() { return this.id; } @NotNull public final String getName() { return this.name; } public final void setName(@NotNull String var1) Intrinsics.checkParameterIsNotNull(var1, “"); this.name = var1; } class Product(val id: Int, var name: String) QSJWBUFͳϑΟʔϧυ͕એݴ͞ΕΔ WBMͷ৔߹HFUUFSͷΈੜ੒͞ΕΔ WBSͷ৔߹HFUUFSTFUUFS͕ੜ੒͞ΕΔ

Slide 86

Slide 86 text

val id = product.id product.name = "meat"

Slide 87

Slide 87 text

val id = product.id product.name = "meat" int id = product.getId(); product.setName("meat");

Slide 88

Slide 88 text

w ϑΟʔϧυͱΞΫηαΛࣗಈੜ੒͢Δ w ϓϩύςΟΞΫηεΛΞΫηαݺͼग़͠ ʹม׵͢Δ w ಈ࡞ͱͯ͠͸MPNCPLʹ͍ۙɻݟͨ໨͸ ௚઀ΞΫηε͕ͩඞͣΞΫηαΛܦ༝͠ ͨݺͼग़͠ʹͳΔɻ͞ΒʹFRVBMT΍ IBTI$PEFΛ࣮૷ͯ͘͠ΕΔσʔλΫϥ εͳͲ͕͋Δ ϓϩύςΟ͕΍͍ͬͯΔ͜ͱ

Slide 89

Slide 89 text

͜͜·Ͱͷ·ͱΊ

Slide 90

Slide 90 text

w +BWBʹͯ͠ΈΔͱͦΜͳʹ೉͍͜͠ ͱ͸΍ͬͯͳ͍ w ͪΐͬͱͨ͠ίʔυͷੜ੒Λݞ୅ΘΓ ͢Δ͜ͱͰ؆ܿͳॻ͖ํΛखॿ͚ͯ͠ ͍Δ w ݴޠػೳΛશ෦ؚΊΔͱ͔ͳΓͷྔͷ ίʔυ͕࡟ݮͰ͖Δ͜ͱʹͳΔ ͜͜·Ͱͷ·ͱΊ

Slide 91

Slide 91 text

ઃܭʹ༩͑ΔӨڹ

Slide 92

Slide 92 text

OVMMڐ༰ܕ

Slide 93

Slide 93 text

OVMMνΣοΫΛ௥Ճͯ͠ॲཧΛ εΩοϓͨ͠Γྫ֎Λεϩʔ͢ Δ͚ͩͷγϯϓϧͳߏ଄͚ͩͲ ͨͬͨͦΕ͚ͩͰઃܭʹӨڹ͕ ͋ΔΜͩΖ͏͔ʁ

Slide 94

Slide 94 text

!/VMMBCMF !/PO/VMMΛ׆༻ ͨ͠ΓOVMMνΣοΫΛద੾ʹ࣮ ૷͢Ε͹͍͍͚ͩͰ͸ʁʁ

Slide 95

Slide 95 text

fun semitransparent(view: View) { view.alpha = 0.5f } ؔ਺಺ͰWJFX͕ඇOVMMͰ͋Δ͜ͱΛอূ͢Δ

Slide 96

Slide 96 text

fun semitransparent(view: View) { view.alpha = 0.5f } val text: View? = findViewById(R.id.text) semitransparent(text)

Slide 97

Slide 97 text

fun semitransparent(view: View) { view.alpha = 0.5f } val text: View? = findViewById(R.id.text) semitransparent(text) 5ZQFNJTTNBUDIͰίϯύΠϧΤϥʔ

Slide 98

Slide 98 text

fun semitransparent(view: View) { view.alpha = 0.5f } val text: View? = findViewById(R.id.text) semitransparent(text!!) ةݥͳݺͼग़͠ɻཁվળͷγάφϧ

Slide 99

Slide 99 text

fun semitransparent(view: View) { view.alpha = 0.5f } val text: View? = findViewById(R.id.text) text?.let { semitransparent(it) } OVMM͡Όͳ͚Ε͹࣮ߦɻ

Slide 100

Slide 100 text

fun semitransparent(view: View) { view.alpha = 0.5f } val text: View? = findViewById(R.id.text) text?.let { semitransparent(it) } OVMM͡Όͳ͚Ε͹࣮ߦɻ ͳΜ͔ͩ৑௕ͩ͠ɺͦ΋ͦ΋OVMMͷέʔε͸૝ఆͯ͠ͳ͍ͷͰ͸ʁ

Slide 101

Slide 101 text

fun semitransparent(view: View) { view.alpha = 0.5f } val text: View? = findViewById(R.id.text) text?.let { semitransparent(it) } OVMM͡Όͳ͚Ε͹࣮ߦɻ ͳΜ͔ͩ৑௕ͩ͠ɺͦ΋ͦ΋OVMMͷέʔε͸૝ఆͯ͠ͳ͍ͷͰ͸ʁ %BUB#JOEJOH΍,PUMJO"OESPJE&YUFOTJPOTͷར༻Λݕ౼

Slide 102

Slide 102 text

fun semitransparent(view: View) { view.alpha = 0.5f } semitransparent(binding.text) OVMMڐ༰ܕ͕ݱΕΔͱ͜ΖݮΒͦ͏ͱ͍ͯ͘͜͠ͱͰɺ OVMMʹରͯ҆͠શͳൣғ͕޿͕͍ͬͯ͘

Slide 103

Slide 103 text

w OVMMʹؔ͢Δܖ໿ΛݴޠϨϕϧͰ୅ߦͯ͠ ͘ΕΔɻͦΕʹΑΓOVMMͷڥքͷઃܭʹू தͰ͖Δ w OVMMͷڥք͕ίʔυ্ͰՄࢹԽ͞ΕΔͷͰ ઃܭͷվળͷࡐྉʹͳΔ w ඇOVMMͷྖҬΛ޿͍͛ͯ͘͜ͱͰɺՄಡੑ ͱมߋ༰қੑ্͕͕ΓɺOVMM҆શͱͳΔ OVMMڐ༰ܕ͕ઃܭʹ༩͑ΔӨڹ

Slide 104

Slide 104 text

֦ுؔ਺

Slide 105

Slide 105 text

ͦΕͧΕͷؔ਺ͷ࣮૷ࣗମ͸౎ ౓͠ͳ͖Ό͍͚ͳ͍݁͠ہ੩త ؔ਺ͷݺͼग़͠Λஔ͖׵͑Δͩ ͚ͩ͠ҙຯ͋Δͷʁʁ

Slide 106

Slide 106 text

੩తؔ਺ΛूΊͨ6UJMΫϥε܈ Λద੾ʹӡ༻͢Ε͹͍͍͚ͩͰ ͸ʁʁ

Slide 107

Slide 107 text

val id = intent.getIntExtra("id", -1)

Slide 108

Slide 108 text

val id = intent.getIntExtra("id", -1) ͜ͷ*OUFOUύϥϝʔλ͕ඞਢͳͷ͔Ͳ͏͔ ͔͜͜Β͸ಡΈऔΕͳ͍

Slide 109

Slide 109 text

inline fun Intent.getRequired(key: String): T {
 extras?.get(key).let {
 if (it !is T) {
 throw IllegalArgumentException("$key")
 }
 return it
 } } LFZ͕ͳ͍৔߹ʹྫ֎Λεϩʔ͢Δɺ HFU3FRVJSFEؔ਺Λ*OUFOUʹ௥Ճ͢Δ

Slide 110

Slide 110 text

val id:Int = intent.getRequired("id") *OUFOUࣗ਎ʹඞਢ஋ΛऔΓग़͢ͱ͍͏੹຿Λ ௥Ճ͢Δ͜ͱͰɺҙਤ͕໌շͳݺͼग़͕͠ՄೳʹͳΔ

Slide 111

Slide 111 text

val id:Int = intent.getRequired("id") *OUFOUࣗ਎ʹඞਢ஋ΛऔΓग़͢ͱ͍͏੹຿Λ ௥Ճ͢Δ͜ͱͰɺҙਤ͕໌շͳݺͼग़͕͠ՄೳʹͳΔ

Slide 112

Slide 112 text

w ର৅ͷΫϥε͕͓͍࣋ͬͯͨ΄͏͕Α͍ͱ ͔Μ͕͑ΒΕΔ੹຿Λɺ࣮ࡍʹର৅ͷΫ ϥεʹ࣋ͨͤΔ͜ͱ͕Ͱ͖Δɻ w طଘͷΫϥεΛ͋ͱ͔Β֦ுͰ͖ΔͷͰɺ ϓϥοτϑΥʔϜͷ౎߹ͰՄಡੑ͕٘ਜ਼ ʹͳΔΑ͏ͳՕॴΛআڈ͠ɺຊདྷ͋Δ΂ ͖࢟ͱߟ͑ΒΕΔঢ়ଶʹ͍͍͚ۙͮͯΔ ֦ுؔ਺͕ઃܭʹ༩͑ΔӨڹ

Slide 113

Slide 113 text

w ,PUMJO͸+BWB w ϘΠϥʔϓϨʔτίʔυΛݴޠͷཪʹ Ӆ͢͜ͱͰɺຊ౰ʹ࡞Βͳ͚Ε͹͍͚ ͳ͍෦෼ʹूதͰ͖ΔΑ͏ʹͳͬͯΔ w OVMMͷڥքͷઃܭɺ੹຿ͷ௥ՃʹΑΔ Մಡੑ޲্ͳͲͳͲɺݴޠػೳ͕ιϑ τ΢ΣΞશମͷઃܭվળʹد༩͍ͯ͠ Δ શମͷ·ͱΊ

Slide 114

Slide 114 text

-FU`TFOKPZ,PUMJO

Slide 115

Slide 115 text

·ͩ·ͩ͋Δ,PUMJOͷػೳ w σϦήʔτϓϩύςΟ w ΦϖϨʔλΦʔόʔϩʔυ w ίϯύχΦϯΦϒδΣΫτ w γʔϧυΫϥε w XIFOࣜ w ίϧʔνϯ w λΠϓΤΠϦΞε w ۩৅Խ͞Εͨܕύϥϝʔλ w σʔλΫϥε w ໊લ෇͖Ҿ਺ w εϚʔτΩϟετ w ෼ղએݴ w ϩʔΧϧؔ਺ w ຤ඌ࠶ؼ࠷దԽ w MBUFJOJU w Πϯελϯεͷؔ਺ࢀর FUD

Slide 116

Slide 116 text

͜ͷઌ͸܅ͷ໨Ͱ ͔֬Ίͯ͘Εʂ

Slide 117

Slide 117 text

THANK YOU