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

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

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

Aizu.goでのLTです

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) ߟ͑ͯΈΔ