$30 off During Our Annual Pro Sale. View Details »

OSSで楽に作るGo言語クライアントツール

 OSSで楽に作るGo言語クライアントツール

Goの入門に最適です

Makoto Tano

January 22, 2016
Tweet

More Decks by Makoto Tano

Other Decks in Programming

Transcript

  1. github.com/codegangsta/cli
    OSSͰָʹ࡞ΔGoݴޠΫϥΠΞϯτπʔϧ
    makoto tano - @makotano
    ஶ࡞ݖදه / GoݴޠͷΩϟϥΫλʔGopherͷݪஶ࡞ऀ͸Renée French͞ΜͰ͢ɻ

    View Slide

  2. Makoto Tano
    Golang Engineer @
    @makotano
    ʮ͸͡ΊͷҰาʯ͕޷͖ͰϘΫγϯά΍ͬͯ·͢

    View Slide

  3. Goݴޠָ͍͠Ͱ͢ʂ
    • Syntax͕γϯϓϧɺ͔ͩΒؾܰʹॻ͚Δ
    • ίϯύΠϧ͢Δ͔Βಈ࡞଎͍
    • ܕ͕͋Δ͔Β҆৺ͯ͠ॻ͚Δ
    ؆୯ʹࢼͯ͠ɺ

    ʮͪΐͬͱ͚ͩͳΒॻ͚·͢Αʂ ʯ

    ʹ࠷దͳݴޠɻʢͱࢥͬͯϚεʣ

    View Slide

  4. Hello WorldҎ্ʹษڧ͢Δʹ͸ʂ
    ΞϓϦΛ͕ͬͪΓॻ͘ඞཁͳΜͯͳ͍ʂ

    ίϚϯυϥΠϯπʔϧΛ࡞Γ·͠ΐ͏ʂ

    View Slide

  5. ίϚϯυϥΠϯπʔϧͰؾʹ͢Δ͜ͱ
    1. {command} = ίϚϯυຊମ
    w w w w w w
    2. {command} -R = ίϚϯυΦϓγϣϯ
    w w w w w w w w w
    3. {command} args.. = ύϥϝʔλ
    w w w w w
    4. {command} help = ίϚϯυϔϧϓ
    w w w w w w w
    ɾɾɾ͍ͬͺ͍΍Δ͜ͱΞϧωɻ

    View Slide

  6. OSSͰղܾͰ͖·͢ʂ
    github.com/codegangsta/cli
    ɹઌ΄Ͳͷ̐ཁૉΛඪ४ύοέʔδͰॻ͘ͷ͸େมɻ

    ͔͠͠ɺ͜ͷOSSΛ࢖͑͹੔ཧͯ͠ॻ͚·͢ɻ
    ͔͠΋ɺίϚϯυϥΠϯπʔϧΛ࡞Δ࣌ͷςϯϓϨʔτ΋࡞Γ·ͨ͠ʂ
    https://gist.github.com/MakoTano/624fe3fdea914b262e2c

    View Slide

  7. ςϯϓϨʔτͷղઆ

    1. ίϚϯυຊମ
    app.Commands = []cli.Command{
    {
    Name: "hello",
    Aliases: []string{"h"},
    Usage: "show Hello World",
    Action: func(c *cli.Context) {
    },
    },
    }
    ίϚϯυ໊
    γϣʔτΧοτ
    ίϚϯυϔϧϓ
    ͜͜ʹίϚϯυ಺༰Λॻ͘

    ʢษڧͷ͠Ͳ͜ΖͰ͢ʂʣ

    View Slide

  8. ςϯϓϨʔτͷղઆ

    2. ίϚϯυΦϓγϣϯ
    app.Flags = []cli.Flag{
    cli.BoolFlag{
    Name: "dryrun, d",
    },
    }
    Φϓγϣϯ͸Flagͱݺͼ·͢
    ϩϯά/γϣʔτωʔϜ
    “Value”Λ଍͢ͱσϑΥϧτ஋͕ࢦఆՄೳ

    View Slide

  9. ςϯϓϨʔτͷղઆ

    3. ύϥϝʔλ
    var paramFirst = ""
    if len(c.Args()) > 0 {
    paramFirst = c.Args()[0]
    }
    c.Args() Ͱ഑ྻ͕[]stringͰฦΔ
    .First(), .Tail() ͳͲͰ΋औಘՄೳ

    View Slide

  10. ςϯϓϨʔτͷղઆ

    4. ίϚϯυϔϧϓ
    mako ~/dev/gopath1.5.2/src/sample $ go run main.go
    NAME:
    sample_client - github.com/codegangsta/cli ͷςϯϓϨʔτͰ͢
    USAGE:
    main [global options] command [command options] [arguments...]
    VERSION:
    0.0.1
    COMMANDS:
    hello, h hello world Λදࣔ͠·͢
    help, h Shows a list of commands or help for one command
    GLOBAL OPTIONS:
    --dryrun, -d
    --help, -h show help
    --version, -v print the version
    ͳΜͱطʹͰ͖ͪΌͬͯ·͢ʂ
    ΠϠοϑʔʂ

    View Slide

  11. ༻ҙͨ͠gistςϯϓϨʔτͷ࣌఺Ͱ͜͜·Ͱಈ͖·͢
    # Setup
    mako ~/dev/gopath1.5.2/src/sample $ go get github.com/codegangsta/cli
    # Execute

    mako ~/dev/gopath1.5.2/src/sample $ vi main.go # ςϯϓϨΛίϐϖ
    mako ~/dev/gopath1.5.2/src/sample $ go run main.go —dryrun hello Tom
    ։࢝
    this is dry-run

    Hello world! Tom

    ऴྃ

    View Slide

  12. ͓ΘΓ
    • GoͷSyntaxษڧ͸ʮγϡοͱ golang ʹೖ໳͢Δ࿩ʯ
    ͕ݸਓతʹ͸޷͖Ͱ͢ɻ

    http://sixeight.hatenablog.com/entry/2015/03/16/032222
    • ਺࣌ؒͱΔ͚ͩͰɺGopherʹͳΕΔνϟϯεʂ ಀ͢
    w w
    Θ͚ʹ͸͍͔ͳ͍Ͱ͢Ͷʂ

    w w w w w w w w
    ʢͦ͜·Ͱͷ͜ͱ͔ͬͯ࿩΋͋Γ·͕͢ʣ
    • GoݴޠΠϕϯτ΍ͬͯΔ͔Β༡ͼʹ͖ͯͶʂ

    http://eure.connpass.com/

    View Slide