Upgrade to Pro — share decks privately, control downloads, hide ads and more …

普段iOS書いてるつもりなのでgomobileを取り上げてみる

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 普段iOS書いてるつもりなのでgomobileを取り上げてみる

Aizu.goでのLTです

Avatar for Shoma Saito

Shoma Saito

July 22, 2017
Tweet

More Decks by Shoma Saito

Other Decks in Programming

Transcript

  1. HPNPCJMFCVJMEΛݟͯΈΔ GVODNBJO \  BQQ.BJO GVOD BBQQ"QQ \  

    WBSHMDUYHM$POUFYU   WBST[TJ[F&WFOU   GPSFSBOHFB&WFOUT \    TXJUDIFB'JMUFS F  UZQF \    DBTFMJGFDZDMF&WFOU     TXJUDIF$SPTTFT MJGFDZDMF4UBHF7JTJCMF \     DBTFMJGFDZDMF$SPTT0O      HMDUY @F%SBX$POUFYU HM$POUFYU       PO4UBSU HMDUY       B4FOE QBJOU&WFOU\^      DBTFMJGFDZDMF$SPTT0GG      PO4UPQ HMDUY       HMDUYOJM     ^
  2. HPNPCJMFCVJMEΛݟͯΈΔ GVODNBJO \  BQQ.BJO GVOD BBQQ"QQ \  

    WBSHMDUYHM$POUFYU   WBST[TJ[F&WFOU   GPSFSBOHFB&WFOUT \    TXJUDIFB'JMUFS F  UZQF \    DBTFMJGFDZDMF&WFOU     TXJUDIF$SPTTFT MJGFDZDMF4UBHF7JTJCMF \     DBTFMJGFDZDMF$SPTT0O      HMDUY @F%SBX$POUFYU HM$POUFYU       PO4UBSU HMDUY       B4FOE QBJOU&WFOU\^      DBTFMJGFDZDMF$SPTT0GG      PO4UPQ HMDUY       HMDUYOJM     ^ Ϛδ͔ʜˠ
  3. HPNPCJMFCVJMEΛݟͯΈΔ package main import ( "encoding/binary" "log" "golang.org/x/mobile/app" "golang.org/x/mobile/event/lifecycle" "golang.org/x/mobile/event/paint"

    "golang.org/x/mobile/event/size" "golang.org/x/mobile/event/touch" "golang.org/x/mobile/exp/app/debug" "golang.org/x/mobile/exp/f32" "golang.org/x/mobile/exp/gl/glutil" "golang.org/x/mobile/gl" ) ˡTIJOZͰ͸ͳ͍ͬΆ͍ ˡϥΠϑαΠΫϧΛ࢘ͬͯΔ ˡλοϓΠϕϯτΛ࢘ͬͯΔ
  4. HPNPCJMFCVJMEΛݟͯΈΔ λοϓΠϕϯτ func main() { app.Main(func(a app.App) { for e

    := range a.Events() { switch e := a.Filter(e).(type) { case touch.Event: // ͜͜ʹॲཧॻͬ͘Ά͍ } } }) }
  5. HPNPCJMFCVJMEΛݟͯΈΔ λοϓΠϕϯτ func main() { app.Main(func(a app.App) { for e

    := range a.Events() { switch e := a.Filter(e).(type) { case touch.Event: // ͜͜ʹॲཧॻͬ͘Ά͍ } } }) } ਏͦ͏ʜ࢖͍ͨ͘ͳ͍ʜ
  6. HPNPCJMFCJOEΛݟͯΈΔ 4JHOFEJOUFHFSBOEqPBUJOHQPJOUUZQFT 4USJOHBOECPPMFBOUZQFT #ZUFTMJDFUZQFT/PUFUIBUCZUFTMJDFTBSFQBTTFECZSFGFSFODF  BOETVQQPSUNVUBUJPO "OZGVODUJPOUZQFBMMPGXIPTFQBSBNFUFSTBOESFTVMUTIBWF TVQQPSUFEUZQFT'VODUJPOTNVTUSFUVSOFJUIFSOPSFTVMUT  POFSFTVMU

    PSUXPSFTVMUTXIFSFUIFUZQFPGUIFTFDPOEJT UIFCVJMUJOFSSPSUZQF "OZJOUFSGBDFUZQF BMMPGXIPTFFYQPSUFENFUIPETIBWF TVQQPSUFEGVODUJPOUZQFT "OZTUSVDUUZQF BMMPGXIPTFFYQPSUFENFUIPETIBWF TVQQPSUFEGVODUJPOUZQFTBOEBMMPGXIPTFFYQPSUFEpFMET IBWFTVQQPSUFEUZQFT ରԠͯ͠Δ΋ͷ
  7. HPNPCJMFCJOEΛݟͯΈΔ ରԠͯ͠Δ΋ͷ 4JHOFEJOUFHFSBOEqPBUJOHQPJOUUZQFT 4USJOHBOECPPMFBOUZQFT #ZUFTMJDFUZQFT/PUFUIBUCZUFTMJDFTBSFQBTTFECZSFGFSFODF  BOETVQQPSUNVUBUJPO "OZGVODUJPOUZQFBMMPGXIPTFQBSBNFUFSTBOESFTVMUTIBWF TVQQPSUFEUZQFT'VODUJPOTNVTUSFUVSOFJUIFSOPSFTVMUT 

    POFSFTVMU PSUXPSFTVMUTXIFSFUIFUZQFPGUIFTFDPOEJT UIFCVJMUJOFSSPSUZQF "OZJOUFSGBDFUZQF BMMPGXIPTFFYQPSUFENFUIPETIBWF TVQQPSUFEGVODUJPOUZQFT "OZTUSVDUUZQF BMMPGXIPTFFYQPSUFENFUIPETIBWF TVQQPSUFEGVODUJPOUZQFTBOEBMMPGXIPTFFYQPSUFEpFMET IBWFTVQQPSUFEUZQFT جຊతʹ͸࢖͑ΔͬΆ͍
  8. HPNPCJMFCJOEΛݟͯΈΔ package hello import "fmt" func Greetings(name string) string {

    return fmt.Sprintf("Hello, %s!", name) } import Hello HelloGreetings("test")
  9. HPNPCJMFCJOEΛݟͯΈΔ package hello import "fmt" func Greetings(name string) string {

    return fmt.Sprintf("Hello, %s!", name) } import Hello HelloGreetings("test") QLH໊ GVOD໊ ͍ͬͯ͏ؔ਺͕ग़དྷΔ
  10. 'SBNFXPSLΛ࡞ͬͯΈΔ (PMBOH func Fibonacci(n int64) int64 { if n <=

    2 { return 1 } return Fibonacci(n-1) + Fibonacci(n-2) }
  11. 'SBNFXPSLΛ࡞ͬͯΈΔ 4XJGU public func fibonacci(n: Int64) -> Int64 { if

    n <= 2 { return 1 } return fibonacci(n: n-1) + fibonacci(n: n-2) }
  12. 'SBNFXPSLΛ࡞ͬͯΈΔ let fibnum = Int64(37) print("swift") let swiftstart = Date()

    for i in 1...30 { let x = fibonacci(n: fibnum) print(i, x) } let swiftelapsed = Date().timeIntervalSince(swiftstart) print("golang") let gostart = Date() for i in 1...30 { let x = HelloFibonacci(fibnum) print(i, x) } let goelapsed = Date().timeIntervalSince(gostart) print("swift: ", swiftelapsed) print("golang:", goelapsed) ͜Μͳײ͡Ͱܭଌͯ͠Έͨ
  13. ݺͼग़͕͠஗͍ʁ print("swift") let swiftstart = Date() for _ in 1...100000

    { emptyFunc() } let swiftelapsed = Date().timeIntervalSince(swiftstart) print("golang") let gostart = Date() for _ in 1...100000 { HelloEmptyFunc() } let goelapsed = Date().timeIntervalSince(gostart) print("swift: ", swiftelapsed) print("golang:", goelapsed) ߟ͑ͯΈΔ