狠狠撸

狠狠撸Share a Scribd company logo
プログラミング言語Goのご提
案



  2013年3月
  やまぐちよしふみ
メッセージ
?   21世紀のプログラミング言語で、クラ
    ウド時代を生き抜くコアインフラの最
    適化を!




                     2
こういう话はしません


             3
プログラミング言語 Goの紹介

                山口 能迪
         id : ymotongpoo
                           4
お前、誰よ?

? 山口能迪(やまぐちよしふみ)
? YouTube Technical Account Manager, Google
  Inc.
? id: ymotongpoo
  – とんぷーと呼ばれています




                                              5
お前、誰よ?

? Pythonが好きです
? 翻訳

   「Java開発者のための関数プログラミング」
        オライリー?ジャパン
        2012年06月発行 1,365円 (Ebook)


   「Learn You Some Erlang for Great Good!」
        オーム社
        絶賛翻訳中 価格未定 (がんばります...)


                                             6
今日は非常に簡単な
Goの紹介をします



            7
細かい文法を知りたい人は
 http://tour.golang.org
   をやってください


                          8
もうちょっと充実した资料が
    狠狠撸Shareに
    あがってます
   (あとで見てね)


              9
今日は
 機能概要と
事例绍介のみ

         10
機能概要

このへんをざーっと話します

?   実行速度&ビルド
?   言语仕様
?   标準パッケージ
?   标準ツール




                11
実行速度
  &
 ビルド

       12
実行速度&ビルド
            実行速度
出典:The Computer Language Benchmarks Game
                                                                    LL




                                              Go




               http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.php
                                                                                             13
実行速度&ビルド
          ビルド

? ビルドファイルを作成する必要がない
? 3rdパーティーパッケージは勝手に取得
ソースコード                          ビルド
package hoge                    $   cd $GOPATH
                                $   go get
import (                        $   go build -o main
   “github.com/foo/go-spam”     $   ./main
   “bitbucket.org/gopher/bar”
   …
)

func SomeProcess(…) {…}
                                                       14
言语仕様


       15
言语仕様
            強く柔軟な型付け
            強い型付け

ダメな例                     良い例
type JPY float64         type JPY float64
type USD float64         type USD float64

func SomeFunc() JPY {    func Exchange(u USD) JPY {
   j := JPY(1000)           return JPY(u * 100)
   u := USD(10)          }

    return j + u         func SomeFunc() JPY {
}                           j := JPY(1000)
                            u := USD(10)

                             return j + Exchange(u)
                   型推論   }

                                                   16
言语仕様
         強く柔軟な型付け
         柔軟な型付け

Goではstructとinterfaceが定義できる
? struct
  – フィールドとメソッドを宣言/定義
? interface
  – メソッドの型定義のみを宣言




                                    17
言语仕様
            強く柔軟な型付け
            柔軟な型付け(例: io.Readerの定義)

io.Readerの定義
type Reader interface {
   Read(p []byte) (n int, err error)
}

                                            io.Readerとみなされる
os.Fileの定義
type File struct {
   // filtered and private fields
}

func (f *File) Read(b []byte) (n int, err error)



                                                          18
言语仕様
            強く柔軟な型付け
            柔軟な型付け(例: CSVファイルの読み込み)


import (
   “encoding/csv”                os.Fileはio.Readerを実
   “fmt”                         装している
   “os”
)                                io.Readerを引数にとる
…                                関数
file, _ := os.Open(“hoge.csv”)

reader := csv.NewReader(file)
records, _ := reader.ReadAll()
                                 記述力 大!
for i, r := range records {
   fmt.Println(r[1])
}
…
                                                       19
言语仕様
                   Intel CPUと言語の歴史

8086-8088   i386    Pentium      Xeon       Pentium D Core Duo Xeon Quad Core i7




 1978       1985    1993        2000         2005           2006           2008


                                                マルチコアCPU時代
  1971      1987              1995                                          2009
                    圧倒的現代感!!!!!
         1983   1991 1993            2000



                                                                                   20
言语仕様
        並行プログラミング

言语仕様として並行プログラミングをサポート

? goroutine
? channel




                           21
言语仕様
         goroutine

簡単な記述で並列(非同期)処理が可能に

同期                    非同期
Foo()                 go Foo()
Bar()                 go Bar()
SomeFunc()            SomeFunc()




     “go” と書けば新しい
    goroutineが立ち上がる

                                          22
言语仕様
            channel

  複数のgoroutine間でのやり取りができる

イメージ                                コード例
                                    func ProcessA(c chan int) {
                                       …
                                       c <- SomeProcessA()
Process B               Process A      …
                                    }
            Channel C
                                    func ProcessB(c chan int) {
                                       …
                                       SomeProcessB(<-c)
                                       …
                                    }
                                                            23
标準パッケージ


          24
标準パッケージ
                    豊富な标準パッケージ

   “Battery included”と呼ばれるPython並
archive     crypto        database        errors         image             net                  regexp          unicode
   tar         aes           sql          expvar             color               http               syntax         utf16
   zip         cipher            driver   flag               draw                    cgi        runtime            utf8
bufio          des        debug           fmt                gif                     fcgi           cgo         unsafe
builtin        dsa           dwarf        go                 jpeg                    httptest       debug
bytes          ecdsa         elf              ast            png                     httputil       pprof
compress       elliptic      gosym            build      index                       pprof      sort
   bzip2       hmac          macho            doc            suffixarray         mail           strconv
   flate       md5           pe               parser     io                      rpc            strings
   gzip        rand       encoding            printer        ioutil                  jsonrpc    sync
   lzw         rc4           ascii85          scanner    log                     smtp               atomic
   zlib        rsa           asn1             token          syslog              textproto      syscall
container      sha1          base32       hash           math                    url            testing
   heap        sha256        base64           adler32        big           os                       iotest
   list        sha512        binary           crc32          cmplx             exec                 quick
   ring        subtle        csv              crc64          rand              signal           text
               tls           gob              fnv        mime                  user                 scanner
               x509          hex          html               multipart     path                     tabwriter
                   pkix      json             template                         filepath             template
                             pem                                           reflect                      pars
                             xml                                                                e
                                                                                                time
http://golang.org/pkg/
                                                                                                                  25
标準パッケージ
                 豊富な标準パッケージ

 準标準パッケージ
 標準ではないがコアメンバーが管理している
レポジトリ名
     crypto                              net            image
  bcrypt         otr                 dict               bmp
  blowfish       pbkdf2              html               testdata
  bn256          poly1305               atom            tiff
  cast5          ripemd160              testdata
  curve25519     salsa20                   webkit
  md4               salsa                    scripted
  nacl           scrypt              idna
     box         ssh                 ipv4
     secretbox      terminal         proxy
  ocsp              test             publicsuffix
  openpgp        twofish             spdy
     armor       xtea                websocket
     clearsign   xts
     elgamal
     errors
     packet                    https://code.google.com/p/go/source/browse?repo=xxxxx
     s2k
                                                                                  26
标準ツール


        27
标準パッケージ
     便利な标準ツール群

Goでの開発を助ける标準ツール
? go build   パッケージをビルド
? go get     必要なパッケージを取得
? go install 必要なパッケージを取得&ビルド
? go run     一時的にビルドし実行
? go test    テストとベンチマークを実行
? gofmt      フォーマットを直してくれる
? godoc      ドキュメントを生成

                           28
事例绍介


       29
事例
     vitess (YouTube)

? vitess (vtocc)
? MySQLのロードバランサ
 – YouTubeの全MySQLクエリをさばいている
 – Rowキャッシュとかもしてる
? プレゼンはここで見られます




                               30
事例
     vitess (YouTube)

? Goを採用した理由
 1. CとPythonの間で書きやすく簡潔に書ける
   ? ログローテーション                 105行
   ? コネクションプール                 227行
   ? memcacheクライアント     250行
 2. ビルド&テストのサイクルが早い
 3. 標準ライブラリが豊富で楽
 4. 簡潔に書ける




                                       31
事例
           Doozer (Heroku)

? Doozer
? PaxosのGo実装

? Goを採用した理由
 1. 言語として並行性のサポート
      ?    goroutine
 2.       标準パッケージが豊富
 3.       gofmt
 4.       静的リンクのバイナリ
 5.       文法が簡潔

                              32
事例
       IronWorker (Iron.io)

? IronWorker
? タスクキューサーバ
 – Ruby on Railsで書いてたAPIサーバをGoで書きなおした
 – 30台のサーバが2台に


? Goを採用した理由
 1.   言語として並行性のサポート
 2.   标準パッケージの豊富さ
 3.   簡潔
 4.   ビルドが早い

                                        33
事例
        他の大きな事例

? SoundCloud
  – Bazookaと呼ばれるDoozerを使った社内デプロイ
    ツールを始め、多くの箇所で利用
? Canonical
  – JujuをPythonからGoに移行
? Atlassian
  – 仮想マシンクラスタのテストシステム
? ngmoco:)
  – 独自HTTPサーバ & ロガー
               https://code.google.com/p/go-wiki/wiki/GoUsers


                                                           34
その他


      35
Go 1.1 リリース間近




                36
イベント告知

Go Conference 2013 spring
http://connpass.com/event/1906/




                                  37
38

More Related Content

What's hot (18)

Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
?
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会
Takuya Ueda
?
静的解析を使った开発ツールの开発
静的解析を使った开発ツールの开発静的解析を使った开発ツールの开発
静的解析を使った开発ツールの开発
Takuya Ueda
?
贰颁惭础厂肠谤颈辫迟没辫谤辞辫辞蝉补濒追悼式
贰颁惭础厂肠谤颈辫迟没辫谤辞辫辞蝉补濒追悼式贰颁惭础厂肠谤颈辫迟没辫谤辞辫辞蝉补濒追悼式
贰颁惭础厂肠谤颈辫迟没辫谤辞辫辞蝉补濒追悼式
京大 マイコンクラブ
?
Polyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGAPolyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGA
ryos36
?
PyCon JP 2014 plone terada
PyCon JP 2014 plone teradaPyCon JP 2014 plone terada
PyCon JP 2014 plone terada
Manabu Terada
?
笔测迟丑辞苍と笔测颁辞搁础惭でお手軽に贵笔骋础システムを开発してみよう
笔测迟丑辞苍と笔测颁辞搁础惭でお手軽に贵笔骋础システムを开発してみよう笔测迟丑辞苍と笔测颁辞搁础惭でお手軽に贵笔骋础システムを开発してみよう
笔测迟丑辞苍と笔测颁辞搁础惭でお手軽に贵笔骋础システムを开発してみよう
Shinya Takamaeda-Y
?
20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide
cosmo0920
?
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
Tetsuya Morimoto
?
マスター?オフ??驳辞ハ?ッケーシ?
マスター?オフ??驳辞ハ?ッケーシ?マスター?オフ??驳辞ハ?ッケーシ?
マスター?オフ??驳辞ハ?ッケーシ?
Takuya Ueda
?
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリームVivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
marsee101
?
骋辞入门
骋辞入门骋辞入门
骋辞入门
Takuya Ueda
?
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
?
pkgsrc で gimp がアレだった件 - デマと放置と私
pkgsrc で gimp がアレだった件 - デマと放置と私pkgsrc で gimp がアレだった件 - デマと放置と私
pkgsrc で gimp がアレだった件 - デマと放置と私
Akio OBATA
?
笔测迟丑辞苍と型チェッカー
笔测迟丑辞苍と型チェッカー笔测迟丑辞苍と型チェッカー
笔测迟丑辞苍と型チェッカー
Tetsuya Morimoto
?
エキスハ?ート骋辞
エキスハ?ート骋辞エキスハ?ート骋辞
エキスハ?ート骋辞
Takuya Ueda
?
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
?
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会
Takuya Ueda
?
静的解析を使った开発ツールの开発
静的解析を使った开発ツールの开発静的解析を使った开発ツールの开発
静的解析を使った开発ツールの开発
Takuya Ueda
?
贰颁惭础厂肠谤颈辫迟没辫谤辞辫辞蝉补濒追悼式
贰颁惭础厂肠谤颈辫迟没辫谤辞辫辞蝉补濒追悼式贰颁惭础厂肠谤颈辫迟没辫谤辞辫辞蝉补濒追悼式
贰颁惭础厂肠谤颈辫迟没辫谤辞辫辞蝉补濒追悼式
京大 マイコンクラブ
?
Polyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGAPolyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGA
ryos36
?
PyCon JP 2014 plone terada
PyCon JP 2014 plone teradaPyCon JP 2014 plone terada
PyCon JP 2014 plone terada
Manabu Terada
?
笔测迟丑辞苍と笔测颁辞搁础惭でお手軽に贵笔骋础システムを开発してみよう
笔测迟丑辞苍と笔测颁辞搁础惭でお手軽に贵笔骋础システムを开発してみよう笔测迟丑辞苍と笔测颁辞搁础惭でお手軽に贵笔骋础システムを开発してみよう
笔测迟丑辞苍と笔测颁辞搁础惭でお手軽に贵笔骋础システムを开発してみよう
Shinya Takamaeda-Y
?
20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide20160730 fluentd meetup in matsue slide
20160730 fluentd meetup in matsue slide
cosmo0920
?
Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)Python と型ヒント (Type Hints)
Python と型ヒント (Type Hints)
Tetsuya Morimoto
?
マスター?オフ??驳辞ハ?ッケーシ?
マスター?オフ??驳辞ハ?ッケーシ?マスター?オフ??驳辞ハ?ッケーシ?
マスター?オフ??驳辞ハ?ッケーシ?
Takuya Ueda
?
Vivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリームVivado hlsのシミュレーションとhlsストリーム
Vivado hlsのシミュレーションとhlsストリーム
marsee101
?
2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会2017/12/21 虎の穴 Python勉強会
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
?
pkgsrc で gimp がアレだった件 - デマと放置と私
pkgsrc で gimp がアレだった件 - デマと放置と私pkgsrc で gimp がアレだった件 - デマと放置と私
pkgsrc で gimp がアレだった件 - デマと放置と私
Akio OBATA
?
笔测迟丑辞苍と型チェッカー
笔测迟丑辞苍と型チェッカー笔测迟丑辞苍と型チェッカー
笔测迟丑辞苍と型チェッカー
Tetsuya Morimoto
?
エキスハ?ート骋辞
エキスハ?ート骋辞エキスハ?ート骋辞
エキスハ?ート骋辞
Takuya Ueda
?

Viewers also liked (20)

私なりの the Go in 2014
私なりの the Go in 2014私なりの the Go in 2014
私なりの the Go in 2014
Ryuji Iwata
?
AWS SDK for Go を使って作ってみた話
AWS SDK for Go を使って作ってみた話AWS SDK for Go を使って作ってみた話
AWS SDK for Go を使って作ってみた話
uchimanajet7
?
骋辞による奥别产アプリ开発のキホン
骋辞による奥别产アプリ开発のキホン骋辞による奥别产アプリ开発のキホン
骋辞による奥别产アプリ开発のキホン
Akihiko Horiuchi
?
Apcera Case Study: The selection of the Go language
Apcera Case Study: The selection of the Go languageApcera Case Study: The selection of the Go language
Apcera Case Study: The selection of the Go language
Derek Collison
?
Xamarin 概要 @ 2015/1/29 CROSS 2015
Xamarin 概要 @ 2015/1/29 CROSS 2015Xamarin 概要 @ 2015/1/29 CROSS 2015
Xamarin 概要 @ 2015/1/29 CROSS 2015
Yoshito Tabuchi
?
CROSS 2015 モバイル開発環境セッション
CROSS 2015 モバイル開発環境セッションCROSS 2015 モバイル開発環境セッション
CROSS 2015 モバイル開発環境セッション
Masahiro Tanaka
?
Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)
Jun Hosokawa
?
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
matsuo kenji
?
骋辞言语と过ごした一週间
骋辞言语と过ごした一週间骋辞言语と过ごした一週间
骋辞言语と过ごした一週间
Shintaro Kitayama
?
骋颈迟丑耻产第8章
骋颈迟丑耻产第8章骋颈迟丑耻产第8章
骋颈迟丑耻产第8章
Yuto Suzuki
?
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
Hidenori Takeshita
?
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみる
Masakazu Muraoka
?
HighBatch
HighBatchHighBatch
HighBatch
Nobuhito Sato
?
骋辞+谤别惫别濒
骋辞+谤别惫别濒骋辞+谤别惫别濒
骋辞+谤别惫别濒
Amuro Nishizawa
?
骋辞を知る
骋辞を知る骋辞を知る
骋辞を知る
Hirokazu Fukami
?
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #gocon
Hideyuki TAKEI
?
alphawing meets heroku
alphawing meets herokualphawing meets heroku
alphawing meets heroku
Kyosuke Kameda
?
私なりの the Go in 2014
私なりの the Go in 2014私なりの the Go in 2014
私なりの the Go in 2014
Ryuji Iwata
?
AWS SDK for Go を使って作ってみた話
AWS SDK for Go を使って作ってみた話AWS SDK for Go を使って作ってみた話
AWS SDK for Go を使って作ってみた話
uchimanajet7
?
骋辞による奥别产アプリ开発のキホン
骋辞による奥别产アプリ开発のキホン骋辞による奥别产アプリ开発のキホン
骋辞による奥别产アプリ开発のキホン
Akihiko Horiuchi
?
Apcera Case Study: The selection of the Go language
Apcera Case Study: The selection of the Go languageApcera Case Study: The selection of the Go language
Apcera Case Study: The selection of the Go language
Derek Collison
?
Xamarin 概要 @ 2015/1/29 CROSS 2015
Xamarin 概要 @ 2015/1/29 CROSS 2015Xamarin 概要 @ 2015/1/29 CROSS 2015
Xamarin 概要 @ 2015/1/29 CROSS 2015
Yoshito Tabuchi
?
CROSS 2015 モバイル開発環境セッション
CROSS 2015 モバイル開発環境セッションCROSS 2015 モバイル開発環境セッション
CROSS 2015 モバイル開発環境セッション
Masahiro Tanaka
?
Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)Delphi のひみつ!(2015/01/29 CROSS 2015)
Delphi のひみつ!(2015/01/29 CROSS 2015)
Jun Hosokawa
?
骋辞言语と过ごした一週间
骋辞言语と过ごした一週间骋辞言语と过ごした一週间
骋辞言语と过ごした一週间
Shintaro Kitayama
?
骋颈迟丑耻产第8章
骋颈迟丑耻产第8章骋颈迟丑耻产第8章
骋颈迟丑耻产第8章
Yuto Suzuki
?
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
Hidenori Takeshita
?
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみる
Masakazu Muraoka
?
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #gocon
Hideyuki TAKEI
?

Similar to 20130316 プログラミング言語Go (20)

骋辞て?かんたんソースコート?の静的解析
骋辞て?かんたんソースコート?の静的解析骋辞て?かんたんソースコート?の静的解析
骋辞て?かんたんソースコート?の静的解析
Takuya Ueda
?
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
Hiro Yoshioka
?
贰虫驳别迟迟别虫迟の话
贰虫驳别迟迟别虫迟の话贰虫驳别迟迟别虫迟の话
贰虫驳别迟迟别虫迟の话
k1complete
?
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
?
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
nukaemon
?
骋辞肠辞苍2017:骋辞のロギング周りの考察
骋辞肠辞苍2017:骋辞のロギング周りの考察骋辞肠辞苍2017:骋辞のロギング周りの考察
骋辞肠辞苍2017:骋辞のロギング周りの考察
貴仁 大和屋
?
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
Noboru Irieda
?
L-1グランプリ "D言語"
L-1グランプリ "D言語"L-1グランプリ "D言語"
L-1グランプリ "D言語"
det coder
?
ソフトウェア工学2023 14 ヒ?ルト?
ソフトウェア工学2023 14 ヒ?ルト?ソフトウェア工学2023 14 ヒ?ルト?
ソフトウェア工学2023 14 ヒ?ルト?
Toru Tamaki
?
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
Norito Agetsuma
?
Emacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェア
Emacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェアEmacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェア
Emacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェア
Masaharu IWAI
?
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
エピック?ゲームズ?ジャパン Epic Games Japan
?
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
Tomoya Nakayama
?
初心者向け骋辞言语勉强会
初心者向け骋辞言语勉强会初心者向け骋辞言语勉强会
初心者向け骋辞言语勉强会
leverages_event
?
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
Hideki Takase
?
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
?
骋辞て?かんたんソースコート?の静的解析
骋辞て?かんたんソースコート?の静的解析骋辞て?かんたんソースコート?の静的解析
骋辞て?かんたんソースコート?の静的解析
Takuya Ueda
?
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
Hiro Yoshioka
?
贰虫驳别迟迟别虫迟の话
贰虫驳别迟迟别虫迟の话贰虫驳别迟迟别虫迟の话
贰虫驳别迟迟别虫迟の话
k1complete
?
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
Hiro Yoshioka
?
2011年10月21日
2011年10月21日2011年10月21日
2011年10月21日
nukaemon
?
骋辞肠辞苍2017:骋辞のロギング周りの考察
骋辞肠辞苍2017:骋辞のロギング周りの考察骋辞肠辞苍2017:骋辞のロギング周りの考察
骋辞肠辞苍2017:骋辞のロギング周りの考察
貴仁 大和屋
?
Python physicalcomputing
Python physicalcomputingPython physicalcomputing
Python physicalcomputing
Noboru Irieda
?
L-1グランプリ "D言語"
L-1グランプリ "D言語"L-1グランプリ "D言語"
L-1グランプリ "D言語"
det coder
?
ソフトウェア工学2023 14 ヒ?ルト?
ソフトウェア工学2023 14 ヒ?ルト?ソフトウェア工学2023 14 ヒ?ルト?
ソフトウェア工学2023 14 ヒ?ルト?
Toru Tamaki
?
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
Norito Agetsuma
?
Emacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェア
Emacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェアEmacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェア
Emacsでの翻訳 - Emacsで訳す、gettextで国際化されたソフトウェア
Masaharu IWAI
?
初心者向け骋辞言语勉强会
初心者向け骋辞言语勉强会初心者向け骋辞言语勉强会
初心者向け骋辞言语勉强会
leverages_event
?
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
ロボットシステムのつくりかた ?Robot Operating Systemというアプローチ?
Hideki Takase
?
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
Hiro Yoshioka
?

More from Yoshifumi Yamaguchi (8)

Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
?
厂辫丑颈苍虫で翻訳してたら本が出てた话
厂辫丑颈苍虫で翻訳してたら本が出てた话厂辫丑颈苍虫で翻訳してたら本が出てた话
厂辫丑颈苍虫で翻訳してたら本が出てた话
Yoshifumi Yamaguchi
?
Learn You Some Erlang for great good! 日本語化プロジェクト
Learn You Some Erlang for great good! 日本語化プロジェクトLearn You Some Erlang for great good! 日本語化プロジェクト
Learn You Some Erlang for great good! 日本語化プロジェクト
Yoshifumi Yamaguchi
?
[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT
Yoshifumi Yamaguchi
?
YouTube APIの紹介
YouTube APIの紹介YouTube APIの紹介
YouTube APIの紹介
Yoshifumi Yamaguchi
?
[20110219] pfffについて[20110219] pfffについて
[20110219] pfffについて
Yoshifumi Yamaguchi
?
[20110129] sphinx theme collection 2011春
[20110129] sphinx theme collection 2011春[20110129] sphinx theme collection 2011春
[20110129] sphinx theme collection 2011春
Yoshifumi Yamaguchi
?
[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)
[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)
[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)
Yoshifumi Yamaguchi
?
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
?
厂辫丑颈苍虫で翻訳してたら本が出てた话
厂辫丑颈苍虫で翻訳してたら本が出てた话厂辫丑颈苍虫で翻訳してたら本が出てた话
厂辫丑颈苍虫で翻訳してたら本が出てた话
Yoshifumi Yamaguchi
?
Learn You Some Erlang for great good! 日本語化プロジェクト
Learn You Some Erlang for great good! 日本語化プロジェクトLearn You Some Erlang for great good! 日本語化プロジェクト
Learn You Some Erlang for great good! 日本語化プロジェクト
Yoshifumi Yamaguchi
?
[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT[20120410] @marqsの転職を祝うLT
[20120410] @marqsの転職を祝うLT
Yoshifumi Yamaguchi
?
[20110219] pfffについて[20110219] pfffについて
[20110219] pfffについて
Yoshifumi Yamaguchi
?
[20110129] sphinx theme collection 2011春
[20110129] sphinx theme collection 2011春[20110129] sphinx theme collection 2011春
[20110129] sphinx theme collection 2011春
Yoshifumi Yamaguchi
?
[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)
[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)
[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)
Yoshifumi Yamaguchi
?

Recently uploaded (11)

测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?

20130316 プログラミング言語Go

  • 2. メッセージ ? 21世紀のプログラミング言語で、クラ ウド時代を生き抜くコアインフラの最 適化を! 2
  • 4. プログラミング言語 Goの紹介 山口 能迪 id : ymotongpoo 4
  • 5. お前、誰よ? ? 山口能迪(やまぐちよしふみ) ? YouTube Technical Account Manager, Google Inc. ? id: ymotongpoo – とんぷーと呼ばれています 5
  • 6. お前、誰よ? ? Pythonが好きです ? 翻訳 「Java開発者のための関数プログラミング」 オライリー?ジャパン 2012年06月発行 1,365円 (Ebook) 「Learn You Some Erlang for Great Good!」 オーム社 絶賛翻訳中 価格未定 (がんばります...) 6
  • 9. もうちょっと充実した资料が 狠狠撸Shareに あがってます (あとで見てね) 9
  • 11. 機能概要 このへんをざーっと話します ? 実行速度&ビルド ? 言语仕様 ? 标準パッケージ ? 标準ツール 11
  • 12. 実行速度 & ビルド 12
  • 13. 実行速度&ビルド 実行速度 出典:The Computer Language Benchmarks Game LL Go http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest.php 13
  • 14. 実行速度&ビルド ビルド ? ビルドファイルを作成する必要がない ? 3rdパーティーパッケージは勝手に取得 ソースコード ビルド package hoge $ cd $GOPATH $ go get import ( $ go build -o main “github.com/foo/go-spam” $ ./main “bitbucket.org/gopher/bar” … ) func SomeProcess(…) {…} 14
  • 16. 言语仕様 強く柔軟な型付け 強い型付け ダメな例 良い例 type JPY float64 type JPY float64 type USD float64 type USD float64 func SomeFunc() JPY { func Exchange(u USD) JPY { j := JPY(1000) return JPY(u * 100) u := USD(10) } return j + u func SomeFunc() JPY { } j := JPY(1000) u := USD(10) return j + Exchange(u) 型推論 } 16
  • 17. 言语仕様 強く柔軟な型付け 柔軟な型付け Goではstructとinterfaceが定義できる ? struct – フィールドとメソッドを宣言/定義 ? interface – メソッドの型定義のみを宣言 17
  • 18. 言语仕様 強く柔軟な型付け 柔軟な型付け(例: io.Readerの定義) io.Readerの定義 type Reader interface { Read(p []byte) (n int, err error) } io.Readerとみなされる os.Fileの定義 type File struct { // filtered and private fields } func (f *File) Read(b []byte) (n int, err error) 18
  • 19. 言语仕様 強く柔軟な型付け 柔軟な型付け(例: CSVファイルの読み込み) import ( “encoding/csv” os.Fileはio.Readerを実 “fmt” 装している “os” ) io.Readerを引数にとる … 関数 file, _ := os.Open(“hoge.csv”) reader := csv.NewReader(file) records, _ := reader.ReadAll() 記述力 大! for i, r := range records { fmt.Println(r[1]) } … 19
  • 20. 言语仕様 Intel CPUと言語の歴史 8086-8088 i386 Pentium Xeon Pentium D Core Duo Xeon Quad Core i7 1978 1985 1993 2000 2005 2006 2008 マルチコアCPU時代 1971 1987 1995 2009 圧倒的現代感!!!!! 1983 1991 1993 2000 20
  • 21. 言语仕様 並行プログラミング 言语仕様として並行プログラミングをサポート ? goroutine ? channel 21
  • 22. 言语仕様 goroutine 簡単な記述で並列(非同期)処理が可能に 同期 非同期 Foo() go Foo() Bar() go Bar() SomeFunc() SomeFunc() “go” と書けば新しい goroutineが立ち上がる 22
  • 23. 言语仕様 channel 複数のgoroutine間でのやり取りができる イメージ コード例 func ProcessA(c chan int) { … c <- SomeProcessA() Process B Process A … } Channel C func ProcessB(c chan int) { … SomeProcessB(<-c) … } 23
  • 25. 标準パッケージ 豊富な标準パッケージ “Battery included”と呼ばれるPython並 archive crypto database errors image net regexp unicode tar aes sql expvar color http syntax utf16 zip cipher driver flag draw cgi runtime utf8 bufio des debug fmt gif fcgi cgo unsafe builtin dsa dwarf go jpeg httptest debug bytes ecdsa elf ast png httputil pprof compress elliptic gosym build index pprof sort bzip2 hmac macho doc suffixarray mail strconv flate md5 pe parser io rpc strings gzip rand encoding printer ioutil jsonrpc sync lzw rc4 ascii85 scanner log smtp atomic zlib rsa asn1 token syslog textproto syscall container sha1 base32 hash math url testing heap sha256 base64 adler32 big os iotest list sha512 binary crc32 cmplx exec quick ring subtle csv crc64 rand signal text tls gob fnv mime user scanner x509 hex html multipart path tabwriter pkix json template filepath template pem reflect pars xml e time http://golang.org/pkg/ 25
  • 26. 标準パッケージ 豊富な标準パッケージ 準标準パッケージ 標準ではないがコアメンバーが管理している レポジトリ名 crypto net image bcrypt otr dict bmp blowfish pbkdf2 html testdata bn256 poly1305 atom tiff cast5 ripemd160 testdata curve25519 salsa20 webkit md4 salsa scripted nacl scrypt idna box ssh ipv4 secretbox terminal proxy ocsp test publicsuffix openpgp twofish spdy armor xtea websocket clearsign xts elgamal errors packet https://code.google.com/p/go/source/browse?repo=xxxxx s2k 26
  • 28. 标準パッケージ 便利な标準ツール群 Goでの開発を助ける标準ツール ? go build パッケージをビルド ? go get 必要なパッケージを取得 ? go install 必要なパッケージを取得&ビルド ? go run 一時的にビルドし実行 ? go test テストとベンチマークを実行 ? gofmt フォーマットを直してくれる ? godoc ドキュメントを生成 28
  • 30. 事例 vitess (YouTube) ? vitess (vtocc) ? MySQLのロードバランサ – YouTubeの全MySQLクエリをさばいている – Rowキャッシュとかもしてる ? プレゼンはここで見られます 30
  • 31. 事例 vitess (YouTube) ? Goを採用した理由 1. CとPythonの間で書きやすく簡潔に書ける ? ログローテーション 105行 ? コネクションプール 227行 ? memcacheクライアント 250行 2. ビルド&テストのサイクルが早い 3. 標準ライブラリが豊富で楽 4. 簡潔に書ける 31
  • 32. 事例 Doozer (Heroku) ? Doozer ? PaxosのGo実装 ? Goを採用した理由 1. 言語として並行性のサポート ? goroutine 2. 标準パッケージが豊富 3. gofmt 4. 静的リンクのバイナリ 5. 文法が簡潔 32
  • 33. 事例 IronWorker (Iron.io) ? IronWorker ? タスクキューサーバ – Ruby on Railsで書いてたAPIサーバをGoで書きなおした – 30台のサーバが2台に ? Goを採用した理由 1. 言語として並行性のサポート 2. 标準パッケージの豊富さ 3. 簡潔 4. ビルドが早い 33
  • 34. 事例 他の大きな事例 ? SoundCloud – Bazookaと呼ばれるDoozerを使った社内デプロイ ツールを始め、多くの箇所で利用 ? Canonical – JujuをPythonからGoに移行 ? Atlassian – 仮想マシンクラスタのテストシステム ? ngmoco:) – 独自HTTPサーバ & ロガー https://code.google.com/p/go-wiki/wiki/GoUsers 34
  • 35. その他 35
  • 37. イベント告知 Go Conference 2013 spring http://connpass.com/event/1906/ 37
  • 38. 38

Editor's Notes

  • #5: 3年前のPyFesでもりよしさんが発表したが、2012年3月のversion 1.0のリリースはかなり充実したものだった。プロダクション環境での利用事例も増えているのでぜひ試して貰いたい。
  • #8: 20分という时间では语りきれない
  • #10: 密度高く书きました
  • #24: チャンネルにも型があるチャンネルに値を渡す/チャンネルから値を持ってくる演算子は矢印
  • #26: 147の标準パッケージcrypto: 暗号化関係encoding: フォーマット関係image: 画像関係net: 通信関係testing: テストgo: Goのソースコード解析など
  • #29: 全部绍介するのは大変なので下の3つだけ绍介
  • #31: https://www.usenix.org/conference/lisa12/vitess-scaling-mysql-youtube-using-go
  • #32: 丑迟迟辫蝉://飞飞飞.耻蝉别苍颈虫.辞谤驳/肠辞苍蹿别谤别苍肠别/濒颈蝉补12/惫颈迟别蝉蝉-蝉肠补濒颈苍驳-尘测蝉辩濒-测辞耻迟耻产别-耻蝉颈苍驳-驳辞动画ではビルドは3秒で终わると言っている他にも肠辞苍肠耻谤谤别苍肠测と肠驳辞について触れていた
  • #33: Paxosは、信頼性の低い複数の処理ノードによるネットワークで「コンセンサス」を得るための各種手順Paxos自体は汎用的なアルゴリズムでさまざまな問題に適用できますが、最近のNoSQLの文脈で語られるのは「データストアをマルチマスター構成にしたときに、どうやってデータの整合性を効率的に確保するか」って問題へのPaxos応用です。Paxosは独立した並列なプロセスをメッセージパッシングで行うので、goroutine &amp; channelがはまったwebsocketとか便利だった(いまは準标準パッケージ)無駄な議論をしなくて済むようになったデプロイがすごく楽簡潔に書けてとてもよい
  • #35: 闯耻箩耻は「サービス実装?オーケストレーションフレームワーク」と呼ばれる管理ツールで、复数の物理/仮想サーバーを一括管理できる。丑迟迟辫://产补肠办蝉迟补驳别.蝉辞耻苍诲肠濒辞耻诲.肠辞尘/迟补驳/驳辞濒补苍驳/