Slide 1

Slide 1 text

ˏ)VOBDIJ ,PUMJOѪ޷ձWPM (PPHMF*0`T &YUFOTJPOT

Slide 2

Slide 2 text

ࣗݾ঺հ ;ͳͪ ߴઐ೥ੜ (JU)VC!)VOBDIJ 5XJUUFS!@IVOBDIJ ,PUMJOΛॻ͖࢝Ί͔ͯΒϓϩάϥϛϯά͕޷͖ʹͳͬͨɽ ࠓ͸8BOUFEMZ*OD͞ΜͷݩͰΠϯλʔϯதͰ͢ʗʢ,PUMJOಋೖ͠·ͨ͠ʣ

Slide 3

Slide 3 text

$PEFɿIUUQTHJUIVCDPNHPPHMFJPTDIFE 0⒏DJBM#MPHɿIUUQTNFEJVNDPNBOESPJEEFWFMPQFSTHPPHMFJPBQQ BSDIJUFDUVSFBOEUFTUJOHGFGDFC (PPHMF*0BQQ

Slide 4

Slide 4 text

w ,PUMJO w ࠓ೥͸ྫ೥ΑΓσεϚͯ͠ͳͦ͞͏ ʢ$POUSJCVUJPO਺͚ͩͰ͸ݴ͑ͳ͍͔΋ ͚ͩͲʣ

Slide 5

Slide 5 text

6TFE5PPMBOE-JCSBSZ w 'JSF4UPSFɼ'JSF#BTF"VUIFOUJDBUJPO w "OESPJEY w %BHHFSɼ5JNCFSɼ(TPOɼ5ISFF5FOɼ$SBTIMZUJDTɼ(MJEFɼ&TQSFTTPɼ .PDLJUPɼ+6OJUɼMFBLDBOBSZɽ

Slide 6

Slide 6 text

"SDIJUFDUVSF w $MFBO"SDIJUFDUVSF w 1SFTFOUBUJPOɿ7JFXˍ7JFX.PEFM w %PNBJOɿ6TF$BTF w %BUBɿ3FQPTJUPSZ 6TFS.BOBHFS w .77.

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

&YUFOTJPOT /PUBMM FYUFOTJPOTPG NZGBWPSJUF

Slide 9

Slide 9 text

// Listͱ͔ͰView͕ΨλϯͬͯͳͬͨΓ͢ΔͷΛ๷͙༻ɽ inline fun T.executeAfter(block: T.() ->Unit){ block() // ͙͢ʹbinding͍ͤͨ࣌͞ʹ࢖͏ɽ executePendingBindings() } // ࢖༻ྫ binding.executeAfter { //͜͜Ͱbind͢Δɽ event = item } ᶃ

Slide 10

Slide 10 text

// TransitionΛ஗Ԇͤ͞Δ fun Activity.postponeEnterTransition(timeout: Long) { postponeEnterTransition() window.decorView.postDelayed(timeout) { startPostponedEnterTransition() } } // ࢖༻ྫ activity?.postponeEnterTransition(500L) ᶄ

Slide 11

Slide 11 text

// ॳظԽɼࢀর͕ৗʹγϯάϧεϨουͰ͔͠ߦΘΕͳ͍࣌༻ɽ fun lazyFast(operation: () -> T): Lazy = lazy(LazyThreadSafetyMode.NONE) { operation() } // SYNCRONIZED: σϑΥϧτɽ୯ҰεϨου͔ΒͷॳظԽͰɼෳ਺εϨου͔Βͷࢀর͕Մೳɽ // PUBLICATION: ෳ਺εϨου͔ΒॳظԽ͠Α͏ͱ͢Δࣄ͕Մೳɽ // ࢖༻ྫ private val day: Int by lazyFast { val args = arguments ?: throw IllegalStateException("Missing arguments!") args.getInt(ARG_INT) } ᶅ

Slide 12

Slide 12 text

inline fun FragmentActivity.viewModelProvider( provider: ViewModelProvider.Factory ) = ViewModelProviders.of(this, provider).get(VM::class.java) // ࢖༻ྫ // Before val viewModel: HogeViewModel = ViewModelProviders.of(this, viewModelFactory) .get(HogeViewModel::class.java) //After val viewModel: HogeViewModel = viewModelProvider(viewModelFactory) ᶆ

Slide 13

Slide 13 text

fun ViewGroup.inflate( @LayoutRes layout: Int, attachToRoot: Boolean = false ): View { return LayoutInflater.from(context) .inflate(layout, this, attachToRoot) } // ࢖༻ྫ … Holder( parent.inflate(VIEW_TYPE_HEADING, false) ) ᶇ

Slide 14

Slide 14 text

inline fun FragmentManager.inTransaction( func: FragmentTransaction.() -> FragmentTransaction ) { beginTransaction().func().commit() } // ࢖༻ྫ supportFragmentManager.inTransaction { add(FRAGMENT_ID, fragment) } ᶈ

Slide 15

Slide 15 text

// enumΫϥεΛbundleʹೖΕΕΔܗʹ͢Δ fun > Bundle.putEnum(key: String, value: T) = putString(key, value.name) // ↑ͰೖΕͨenumΫϥεΛऔΓग़͢ inline fun > Bundle.getEnum(key: String): T = enumValueOf(getString(key)) // ParcelʹbooleanΛॻ͖ࠐΉ fun Parcel.writeBoolean(value: Boolean) = writeInt(if (value) 1 else 0) // ↑Ͱม׵ͨ͠booleanΛಡΈࠐΉ fun Parcel.readBoolean() = readInt() != 0 ᶉ

Slide 16

Slide 16 text

// ࢖༻ྫ // ಡΈ΍͍͢ʂ pacel.apply { writeInt(state) writeInt(peekHeight) writeBoolean(isFitToContents) writeBoolean(isHideable) writeBoolean(skipCollapsed) writeBoolean(isDraggable) }

Slide 17

Slide 17 text

fun MutableLiveData.setValueIfNew(newValue: T) { if (this.value != newValue) value = newValue } fun MutableLiveData.postValueIfNew(newValue: T) { if (this.value != newValue) postValue(newValue) } // ObserverଆͰ൑ఆͨ͠ํ͕҆શͳؾ͕͢Δ͚ͲͲ͏ͳΜͩΖ͏ɽɽ ᶊ

Slide 18

Slide 18 text

fun LiveData.map(body: (X) -> Y): LiveData { return Transformations.map(this, body) } fun LiveData.switchMap(body: (X) -> LiveData): LiveData { return Transformations.switchMap(this, body) } ᶋ

Slide 19

Slide 19 text

// ࢖༻ྫ liveData = parentLiveData.map { (it as? Result.Success)?.data?: 0 } liveData = parentLiveData.switchMap { if(value == null) dataLiveData else parentLiveData } // ࠷ॳ֦ுؔ਺ͬͯࣄʹؾ͔ͮͣɼڻ͍ͨɽ

Slide 20

Slide 20 text

val T.checkAllMatched: T get() = this // ࢖༻ྫ // OK when (sealed) { ONE -> {…} TWO -> {…} }.checkAllMatch // error when (sealed) { ONE -> {…} //TWO -> {…} }.checkAllMatch ᶌ

Slide 21

Slide 21 text

w ௒ஸೡʂ ͜ͷ࣮૷͸७ਮʹ಄ ͍͍ͱࢥ͏ɽ

Slide 22

Slide 22 text

5IBOLZPV ,PUMJOՄѪ͍ʂ