Slide 1

Slide 1 text

Anko͸؁ͯ͘ඒຯ͍͠ ʙAnkoʹݟΔKotlinͷදݱྗʙ ΤϜεϦʔY(VOPTZ#FFSCBTIʂ HVOPTZCFFS 
 ௕ᖒଠ࿠!OHTX@UBSP

Slide 2

Slide 2 text

ࣗݾ঺հ w ௕ᖒଠ࿠!OHTX@UBSP w "OESPJEΤϯδχΞ w ,PUMJOΤϰΝϯδΣϦετ ࣗশ w ࡀɺֈ࠲ɺͱ͕େ޷͖

Slide 3

Slide 3 text

Kotlinͱ͸ w +FU#SBJOT։ൃͷ+7.ݴޠ w "OESPJE΋αϙʔτ w ೥ൃදɺ·ͩϕʔλ൛ w "OESPJE+BWB͔Β,PUMJO৐Γ׵͑ϫϯνϟϯ w ࠷ۙɺ঺հهࣄ͕ཚཱͯ͠ΔͷͰͦͪΒࢀর

Slide 4

Slide 4 text

Ankoͱ͸ w ,PUMJOͰهड़͞Εͨ"OESPJEϥΠϒϥϦ w +FU#SBJOT։ൃʢઆಘྗɾ҆৺ײ͕͋Δʣ w ओʹ6*Λ૊ΈཱͯΔ%4-

Slide 5

Slide 5 text

UIΛ૊ΈཱͯΔDSL w جຊతʹ"OESPJEͰ͸9.-Ͱ6*Λදݱ͢Δ w ࠶ར༻ੑɺ҆શੑɺύϑΥʔϚϯεͷ໘Ͱෆར w ͱ͸͍͑ίʔυͰ໋ྩతʹ6*Λߏங͢Δͷμα Πʢ4XJOHΈ͍ͨͳΠϝʔδʣ w %4-Ͱએݴతʹ6*Λߏங͢Δ
 ʢ+BWB'94DSJQUΈ͍ͨͳΠϝʔδʣ

Slide 6

Slide 6 text

ඪ४APIͰΰϦΰϦ΍Δ val act = this! val layout = LinearLayout(act)! layout.orientation = LinearLayout.VERTICAL! val name = EditText(act)! val button = Button(act)! button.text = "Say Hello"! button.setOnClickListener {! Toast.makeText(act,! "Hello, ${name.text}!”,! Toast.LENGTH_SHORT).show()! }! layout.addView(name)! layout.addView(button)

Slide 7

Slide 7 text

AnkoͰDSL verticalLayout {! val name = editText()! button("Say Hello") {! onClick {! toast("Hello, ${name.text}!”)! }! }! }

Slide 8

Slide 8 text

Ͳ͏ಈ͍͍ͯΔͷ͔ There is no .

Slide 9

Slide 9 text

ϥϜμࣜ Lambda Expression

Slide 11

Slide 11 text

֦ுؔ਺ Extension Function

Slide 12

Slide 12 text

֦ுؔ਺ fun String.hello() = “Hello, $this”! ! “world”.hello() //=> “Hello, world”

Slide 14

Slide 14 text

Anko class MainActivity : Activity() {! override fun onCreate(savedInstanceState: Bundle?) {! super.onCreate(savedInstanceState)! ! verticalLayout {! val name = editText()! button("Say Hello") {! onClick { toast("Hello, ${name.text}!") }! }! }! }! }

Slide 15

Slide 15 text

Anko class MainActivity : Activity() {! override fun onCreate(savedInstanceState: Bundle?) {! super.onCreate(savedInstanceState)! ! verticalLayout {! val name = editText()! button("Say Hello") {! onClick { toast("Hello, ${name.text}!") }! }! }! }! } "DUJWJUZͷ֦ுؔ਺ UIJT͕লུ͞ΕͯΔ

Slide 16

Slide 16 text

Anko class MainActivity : Activity() {! override fun onCreate(savedInstanceState: Bundle?) {! super.onCreate(savedInstanceState)! ! verticalLayout {! val name = editText()! button("Say Hello") {! onClick { toast("Hello, ${name.text}!") }! }! }! }! } ͜ͷUIJT͸ WFSUJDBM-BZPVU

Slide 17

Slide 17 text

Anko class MainActivity : Activity() {! override fun onCreate(savedInstanceState: Bundle?) {! super.onCreate(savedInstanceState)! ! this.verticalLayout {! val name = this.editText()! this.button(“Say Hello") {! onClick { toast("Hello, ${name.text}!") }! }! }! }! } UIJT͕ผͷ΋ͷΛࢦ͢ Կނ͔ʁ

Slide 18

Slide 18 text

֦ுؔ਺ΛҾ਺ʹऔΔߴ֊ؔ਺ class Builder { fun foo() {} }! ! fun build(f: Builder.() -> Unit) {! Builder().f()! }! ! build {! foo()! }

Slide 19

Slide 19 text

Կ͕خ͍͠ͷ͔ verticalLayout {! button(“foo”)! verticalLayout {! button(“bar”)! verticalLayout {! button(“baz”)! }! }! }

Slide 20

Slide 20 text

Կ͕خ͍͠ͷ͔ verticalLayout {! button(“foo”)! verticalLayout {! button(“bar”)! verticalLayout {! button(“baz”)! }! }! } ֊૚ߏ଄ΛදݱͰ͖Δ ϝιουͷείʔϓ ΛߜΕΔ ܕ҆શ OVMM҆શ

Slide 21

Slide 21 text

XMLͰฤू͢Δͱ ը໘ϓϨϏϡʔ ݟΕΔ͡ΌΜʁ

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

ͦΕɺAnkoͰ΋ Ͱ͖·͢ʂ

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

࢖Θͳ͍ख͸ͳ͍

Slide 26

Slide 26 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠