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

「Small is Going big」mercari.go#10

taqboz
August 20, 2019

「Small is Going big」mercari.go#10

taqboz

August 20, 2019
Tweet

Other Decks in Technology

Transcript

  1. 8/20 2019 Mercari.go #10
    Small is going
    big GopherCon2019

    View full-size slide

  2. TQBOZ 吉⽥ 拓海
    @taqboz
    ⼤学4年⽣ 経営学部
    Go歴:6ヶ⽉

    View full-size slide

  3. 実際に参加してみて

    View full-size slide

  4. もちろん、楽しみにしていましたが、
    懸念点が、、、
    • Go歴が短く、ついていけるか不安
    • 英語を聞き取り続けていけるか不安
    • コミニケーションが中⼼なのでは → 英語が不安
    ⾏く前

    View full-size slide

  5. 話の難易度はセッションによるので、
    事前にアジェンダを⾒て⾒るものを
    決めておけば⼤丈夫
    GopherのコミニティSlackで
    情報が流れてくるので、
    ある程度は聞き逃しても情報を追える
    ⾏ったあと

    View full-size slide

  6. やっぱり英語ができないと難しい
    けど、
    • セッションのときには字幕がある
    • 割とフランクに接してもらえる
    • 結構⾃由に過ごせる
    ただやっぱり⾃分のしたい話をする、聞きたい話を聞くのに不便
    様々な機会を取り逃すので英語は⼤事
    ⾏ったあと

    View full-size slide

  7. source
    code
    Go TinyGo
    Go SSA LLVM
    LLVM IR binary
    TinyGoについて
    • LLVMを使ったGoコンパイラ
    • バイナリファイルのサイズを抑えてビルド
    • LLVMがWebAssembly対応 → 副産物としてTinyGoも対応
    • 現時点でのバージョン:0.7.1

    View full-size slide

  8. WebAssemblyで試してみる
    ファイルサイズが約1/20になった
    WebAssembly goals
    「Be fast, efficient, and portable」<- ファイルサイズが⼩さくなるのでロードを⾼速化できる
    main.go (Hello, World) Go標準コンパイラ(1.12.7)とTinyGoの⽐較

    View full-size slide

  9. デメリット / 制限
    1. Gotoutineのサポートが完全ではない
    2. GCはARMマイクロコントローラー (Cortex-M)のみ対応
    3. 使えない標準パッケージが多い(net/http等)
    参照:https://tinygo.org/lang-support/stdlib/
    4. mapのキーは⽂字列、整数、ポインタ、
    構造体(前記の型で構成されたもののみ)のみ対応

    View full-size slide

  10. TinyGoについて
    主にIoTデバイス、
    マイクロコントローラーでの活⽤
    制限があるなかでどこまでできるか
    親⼦でデモで実践
    by Ron Evans(@deadprogram)
    Small is going big: Go on microcontrollers

    View full-size slide

  11. セッション内でのデモ
    • Digispark上でLEDの点滅
    (8bitプロセッサー & 8KB RAM)
    • Gopherbot
    ボタンの押し込み
    でLEDの点灯
    package main
    Import (
    "machine”
    "time”
    )
    func main() {
    led := machine.LED
    led.Configure(machine.PinConfig{Mode:
    machine.PinOutput})
    for {
    led.Low()
    time.Sleep(time.Millisecond * 500)
    led.High()
    time.Sleep(time.Millisecond * 500)
    }
    }

    View full-size slide

  12. セッション内でのデモ
    フライトコントローラー
    • Arduino Nano 33 IoT
    • アナログスティック
    • ボタン
    • OLEDディスプレイ
    net系パッケージは動作しないものの
    Arduinoチップに組み込まれたWi-Fi
    チップで動作するインターフェイス
    をコントリビューターの⽅が実装し
    たとのこと。

    View full-size slide

  13. Droneデモ
    Tello Ryze Drone
    IP: 192.168.10.1
    PORT : 11111
    Video
    PORT : 8889
    Commands &
    Response
    Arduino Nano33 IoT
    UDP
    I2C
    JoyStick
    Button
    A/O
    GPIO
    OLED
    IP: 192.168.10.2
    PC

    View full-size slide

  14. TinyGo PlayGround
    https://play.tinygo.org/ マイクロコントローラー持ってない⽅でも
    試せるのでこちらで試してみては?

    View full-size slide

  15. ご清聴ありがとう
    ございました

    View full-size slide