Slide 1

Slide 1 text

։ൃ೥໨ͷΞϓϦ΁ͷ,PUMJOಋೖ %SPJE,BJHJ1SFMVEF!%F/"

Slide 2

Slide 2 text

ٶԼཽେ࿠ $IBU8PSLגࣜձࣾ ΫϥΠΞϯτΞϓϦέʔγϣϯ։ൃ෦ !SZVHPP@

Slide 3

Slide 3 text

,PUMJO

Slide 4

Slide 4 text

։ൃ೥໨ͷΞϓϦ΁ͷ,PUMJOಋೖ ‣ ೥ͷ(PPHMF*0Ͱެࣜ։ൃݴޠԽͨ͠ Ҏલ͔Βಋೖ͸ݕ౼͍ͯͨ͠ ެࣜαϙʔτ͕ಘΒΕͨ͜ͱͰ҆৺Λಘͨ ཌ೔͔ΒಋೖΛ։࢝ͨ͠ʜ͔͠͠ʜ ‣ طଘͷΞϓϦ΁ͷಋೖ͸Ͳ͏ͨ͠Βྑ͍ͷ͔ʁ Ͳ͔͜Βʁ શͯॻ͖׵͑Δʁ ϋοΩϦ͍ͯ͠ͳ͍͕ɺ΍ͬͯΈΑ͏

Slide 5

Slide 5 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ ಋೖ౰ॳ͸શͯΛ,PUMJOԽ͢Δ༧ఆ͸ແ͔ͬͨ ͸͡Ί͸৽ن%JBMPH'SBHNFOU͔Β։࢝ ࣍ʹطଘͷ"DUJWJUZΛ,PUMJOԽ ͦͷޙɺ৽نίʔυΛ,PUMJOͰ௥Ճ ‣ +BWBͱͷͭͳ͗ࠐΈ͕ωοΫʹͳ͍ͬͯ͘ !+WN'JFME!+WN4UBUJD!+WN0WFSMPBET SFUVSO6OJU*/45"/$& 1MBUGPSN5ZQFT

Slide 6

Slide 6 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ !+WN'JFME!+WN4UBUJD!+WN0WFSMPBET DPNQBOJPOPCKFDUதʹॻ͘ͱTUBUJDʹల։ class SomeFragment : Fragment() { companion object { @JvmField val TAG: String = SomeFragment::class.java.simpleName } }

Slide 7

Slide 7 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ !+WN'JFME!+WN4UBUJD!+WN0WFSMPBET DPNQBOJPOPCKFDUதʹॻ͘ͱTUBUJDʹల։ class SomeFragment : Fragment() { companion object { @JvmStatic fun newInstance() = SomeFragment() } }

Slide 8

Slide 8 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ !+WN'JFME!+WN4UBUJD!+WN0WFSMPBET σϑΥϧτҾ਺͕͋Δ਺͚ͩΦʔόʔϩʔυ class SomeFragment : Fragment() { companion object { @JvmStatic @JvmOverloads fun newInstance(id: Long, name: String = "") = SomeFragment() } }

Slide 9

Slide 9 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ SFUVSO6OJU*/45"/$& ؔ਺ΛҾ਺ʹऔΔॲཧΛ+BWB͔Βݺͼग़͢ͱʁ class Model { fun async(callback: () -> Unit) { // Some asynchronous processing callback() } }

Slide 10

Slide 10 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ SFUVSO6OJU*/45"/$& lWPJEz͸ͳ͍ͷͰɺl6OJUzΛฦ͢ඞཁ͕͋Δ Model model = new Model(); model.async(() -> { // Some callback processing return Unit.INSTANCE; });

Slide 11

Slide 11 text

IUUQTEJTDVTTLPUMJOMBOHPSHUKBWBJOUFSPQVOJUDMPTVSFTSFRVJSFEUPSFUVSOLPUMJOVOJU !+WN7PJEͷఏҊ ೥ʹಉ͡໰୊ఏى

Slide 12

Slide 12 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ 1MBUGPSN5ZQFT /PO/VMM·ͨ͸/VMMBCMF͔΋͠Εͳ͍ܕ "OESPJE4%,͸جຊతʹ1MBUGPSN5ZQFT !/PO/VMM!/VMMBCMF͕෇͍͍ͯΕ͹ϋοϐʔ val inflater = LayoutInflater.from(this) ˡฦΓ஋ʹlz͕෇͍͍ͯΔ

Slide 13

Slide 13 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ "OESPJE4%,Ͱ͋Ε͹த਎ΛݟΔ public static LayoutInflater from(Context context) { LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (LayoutInflater == null) { throw new AssertionError("LayoutInflater not found."); } return LayoutInflater; } val inflater: LayoutInflater = LayoutInflater.from(this) ˡͲ͏΍ΒOVMMʹ͸ͳΒͳ͍Β͍͠ ˣ/PO/VMMܕͱͯ͠ѻ͏Α͏ʹ͢Δ

Slide 14

Slide 14 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ "OESPJE4%,Ͱ͋Ε͹த਎ΛݟΔ lTPVSDFTz͕͋ΔͳΒ͹"OESPJE4UVEJPͰ $ISPNFͷ"OESPJE4%,4FBSDI΋Φεεϝ ‣ IUUQCJUMZBOESPJETELTFBSDI

Slide 15

Slide 15 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ "OESPJE4%,Ͱ͋Ε͹த਎ΛݟΔ lTPVSDFTz͕͋ΔͳΒ͹"OESPJE4UVEJPͰ $ISPNFͷ"OESPJE4%,4FBSDI΋Φεεϝ ‣ IUUQCJUMZBOESPJETELTFBSDI ˡιʔεϑΝΠϧ΁ͷϦϯΫ͕෇͘

Slide 16

Slide 16 text

݁࿦શͯ,PUMJOԽͨ͠ํ͕ϝϦοτ͕େ͖͍ ‣ ࣗ෼ୡ͕ॻ͍ͨίʔυ͸ʁ !/PO/VMM!/VMMBCMFΛ෇͚͍ͯ͘ʁ ͍ͬͦͷ͜ͱ,PUMJOʹͯ͠͠·ͬͨํ͕ʁ ‣ ͭͣͭ,PUMJOԽ͍ͯ͘͠ ؔ࿈͢Δ+BWBʹ͸Ξ ϊςʔγϣϯΛ෇͚Δ যΒͣɺΏͬ͘ΓͱͰ΋શͯΛ,PUMJOԽ͢Δ

Slide 17

Slide 17 text

ݱঢ়

Slide 18

Slide 18 text

+BWBͷΛ,PUMJOԽ ‣ ϲ݄Ͱ೥ؒʹॻ͍ͨ+BWBͷ͕,PUMJOԽ ‣ ϑΝΠϧ਺ ,PUMJO +BWB

Slide 19

Slide 19 text

+BWBͷΛ,PUMJOԽ ‣ ϲ݄Ͱ೥ؒʹॻ͍ͨ+BWBͷ͕,PUMJOԽ ‣ νʔϜ΁ͷޮՌ /PO/VMM/VMMBCMFΛڧ͘ҙࣝ͢ΔΑ͏ʹͳͬͨ ‣ !/PO/VMM!/VMMBCMFΞ ϊςʔγϣϯͷ෇͚๨Ε͕ͳ͍ ‣ ݴޠػೳʹ/VMMTBGFUZ͕͋Δํ͕๨Εͳ͍͠ҙࣝ͢Δ ‣ ͜Ε·Ͱ΋+BWBͰ0QUJPOBM"1*΋࢖͍ͬͯͨ ‣ ͨͩɺ0QUJPOBMΛ࢖͍ͬͯΔͱ,PUMJOଆͰ໘౗ʜʜ

Slide 20

Slide 20 text

+BWBͷΛ,PUMJOԽ ‣ ϲ݄Ͱ೥ؒʹॻ͍ͨ+BWBͷ͕,PUMJOԽ ‣ νʔϜ΁ͷޮՌ ޿ൣғͷWBSΛආ͚ΔΑ͏ʹͳͬͨ ‣ ΠϯελϯεϓϩύςΟ͸Ͱ͖Δ͚ͩWBM ‣ ϝιου಺ͳͲڱ͍ൣғͰ͸WBS΋࢖͍ͬͯΔ ‣ -JTU.VUBCMF-JTUͳͲ΋ҙࣝతʹ࢖͍෼͚Λ͍ͯ͠Δ

Slide 21

Slide 21 text

͓͠·͍ %SPJE,BJHJ1SFMVEF!%F/"