SlideShare a Scribd company logo
1 of 37
Download to read offline
Go言語で作る
Webアプリ
- RESTful APIを作ろう -


2013/4/13(Sat.)
@GoCon 2013 spring
自己紹介

上田拓也
新卒1年目


twitter : @tenntenn
blog: http://u.hinoichi.net
目標と対象

【目標】
● net/httpパッケージを知る
● gowebの基本的な使い方を知る

【対象】
● Go言語初心者
● goweb知らない人
アジェンダ

● Webサーバを作ろう
  ○ net/httpパッケージ
● RESTful APIを作ろう
  ○ RESTful APIとは?
  ○ gowebの使い方
● おまけ
Webサーバを作ろう
はじめに

● ドキュメントを軽く見ながら聞いて下さい
  ○ http://golang.org/pkg/net/http
  ○ http://godoc.org/github.
    com/stretchrcom/goweb/goweb
Go言語でhttpリクエストをハンドル




                http.Server           http.Handler
       80番ポート
                ListenAndServe ハンドル
                @80ポート
ブラウザ




クライアントサイド             サーバサイド
http.Server型
type Server struct {
   Addr                string
   Handler             Handler
   ReadTimeout             time.Duration
   WriteTimeout        time.Duration
   MaxHeaderBytes      int
   TLSConfig           *tls.Config
}
http.Server型

● type Server struct
  ○ func (srv *Server) ListenAndServe() error
  ○ func (srv *Server) ListenAndServeTLS(certFile,
      keyFile string) error
   ○ func (srv *Server) Serve(l net.Listener) error
http.Handler型

type Handler interface {
   ServeHTTP(ResponseWriter, *Request)
}
複数のハンドラを設定する

                                                     http.Handler

                                        aa
                                      /a
                                                     http.Handler
                                                 b
http.Server           http.ServeMux          /bb
ListenAndServe ハンドル
@80ポート                                /zzz
                                                     http.Handler
http.ServeMux型
type struct ServeMux{}
// 指定したパタンでハンドラを登録
func (mux *ServeMux) Handle(pattern string,
handler Handler)
// 指定したパタンでハンドラ関数を登録
func (mux *ServeMux) HandleFunc(pattern
string, handler func(ResponseWriter, *Request)
// http.Handlerの実装
func (mux *ServeMux) ServeHTTP(w
ResponseWriter, r *Request)
http.Handleの実装めんどい

● ServeMux.HandleFuncを使えばいい
● HandlerFuncを使って、関数にhttp.Handlerを
  実装させている
http.HandlerFunc型

type HandlerFunc func(ResponseWriter,
*Request)

// src/pkg/net/http/server.goで実装
// http.Handlerを実装
func (f HandlerFunc) ServeHTTP(w
ResponseWriter, r *Request) {
    f(w, r)
}
http.ServeMux作るのめんどい

● http.DefaultServeMuxというグローバル変数
  がある
● http.Handleやhttp.HandleFuncはhttp.
  DefaultServeMuxのメソッドのラッパー
● ハンドラが明示されないと、http.
  DefaultServerMuxが使用される
簡単な例:hello, http!!

 func main() {
    f := func(w http.ResponseWriter, r *http.
 Request) {
        fmt.Fprintf(w, "hello, http!!")
    }

     http.HandleFunc("/", f)
     http.ListenAndServe(":8080", nil)
 }
https://github.com/golang-samples/http/tree/master/handlefunc
簡単な例:静的ファイル

func main() {

    // static以下のファイルを提供
    http.Handle("/", http.FileServer(http.Dir("static")))
    http.ListenAndServe(":8080", nil)
}



https://github.com/golang-samples/http/tree/master/fileserv
DEMO1
RESTful APIを作ろう
RESTful APIとは?

● 明示的にHTTPメソッドを使う
 ○ POST, GET, PUT, DELETE
 ○ CRUDと対応
● ステートレスにする
 ○ 状態を保存しない
● ディレクトリ構造に似たURI
 ○ /api/persons/10
● XML、JSONなどを転送する
 ○ リクエストやレスポンスにXMLやJSONを使用
Go言語でRESTful APIを作る

● URIだけではなく、httpのメソッドでも分岐したい
● JSONやXMLで来たリクエストを簡単にオブジェ
  クトにしたい
● JSONやXMLでレスポンスを返すのを簡単にし
  たい




  GoWebがあるよ!
GoWebってなに?

● RESTful APIを作るためのライブラリ
  ○ https://github.com/stretchrcom/goweb
● 細かいルーティング管理できる
● Controllerを作り、POST, GET, PUT, DELETE
  などの単位でハンドリング
● JSONやXMLをリクエストから作れる
● レスポンスを簡単に作れる
  ○ 良く使うステータスコード
  ○ JSONやXML
GoWebの構造
                     DefaultRouteManager
   :HttpHandler         :RouteManager
                                             :Controller


ServeHTTP   GetMathingRoute()




            routes

             loop:routes
            if:route.DoesMatchContext
              route.Controller.HandleRequest()
GoWebの簡単な使い方
 func main() {
    handler := func(c *goweb.Context) {
       name := c.PathParams["name"]
       animal := c.PathParams["animal"]
       fmt.Fprintf(c.ResponseWriter, "Hey %s,
 your favorite animal is a %s", name, animal)
    }
    goweb.MapFunc("/people/{name}/animals/
 {animal}", handler)
    goweb.ListenAndServe(":8080")
 }
https://github.com/golang-samples/goweb/tree/master/mapfunc
GoWebの簡単な使い方 RESTful API
// REST用のコントローラー
type MyController struct {}
 HTTPメソッド      URI例            実装するメソッド
POST        /api/      RestCreater.Create
GET         /api/      RestManyReader.ReadMany
GET         /api/123   RestReader.Read
PUT         /api/      RestManyUpdater.UpdateMany
PUT         /api/123   RestUpdater.Update
DELETE      /api/      RestManyDeleter.DeleteMany
DELETE      /api/123   RestDeleter.Delete
※必要なものだけ、実装する
GoWebの簡単な使い方 RESTful API
// POSTをハンドリングする
func (cr *MyController) Create(cx
*goweb.Context) {
      fmt.Fprintf(cx.ResponseWriter,
"Create new resource")
}
GoWebの簡単な使い方 RESTful API
// GETをハンドリング(id指定)
func (cr *MyController) Read(id string, cx *goweb.
Context) {
      fmt.Fprintf(cx.ResponseWriter, "Read
resource %s", id)
}

// GETをハンドリング(id指定なし)
func (cr *MyController) ReadMany(cx *goweb.
Context) {
      fmt.Fprintf(cx.ResponseWriter, "Read many
resources")
}
GoWebの簡単な使い方 RESTful API
// PUTをハンドリング(id指定)
func (cr *MyController) Update(id string, cx
*goweb.Context) {
      fmt.Fprintf(cx.ResponseWriter, "Update
resource %s", id)
}

// PUTをハンドリング(id指定なし)
func (cr *MyController) UpdateMany(cx *goweb.
Context) {
      fmt.Fprintf(cx.ResponseWriter, "Update
many resources")
}
GoWebの簡単な使い方 RESTful API
// DELETEをハンドリング(id指定)
func (cr *MyController) Delete(id string, cx
*goweb.Context) {
      fmt.Fprintf(cx.ResponseWriter, "Delete
resource %s", id)
}

// DELETEをハンドリング(id指定なし)
func (cr *MyController) DeleteMany(cx *goweb.
Context) {
      fmt.Fprintf(cx.ResponseWriter, "Delete many
resources")
}
GoWebの簡単な使い方 RESTful API
func main() {
  controller := new(MyController)
  goweb.MapRest("/api", controller)
  goweb.ListenAndServe(":8080")
}




https://github.com/golang-samples/goweb/tree/master/rest
DEMO2
まとめ

● Go言語でWebサーバ作るの簡単!
 ○ net/httpパッケージを使う
● gowebを使えばRESTful API作るの簡単!
 ○ 各HTTPメソッドとURIに対応したメソッドを実装
話きれなかったこと

● テンプレートエンジン
  ○ html/template, text/template
● テスト
  ○ net/http/httptest
● FastCGI
  ○ net/http/fcgi
  ○ nginxなどで使用
● gowebの具体的な使用例
  ○ AngularJSから使う
  ○ https://github.com/golang-
    samples/goweb/tree/master/diary
おまけ
Go言語のサンプル置き場

● https://github.com/golang-samples
● みんなでサンプルを増やそう!
  ○ すでにあるパッケージはフォークしてもOK!
  ○ メンバーに加わって、新たにパッケージを追加しても
    OK!
Go言語が使えるエディタ/IDE

●   https://code.google.com/p/go-
    wiki/wiki/IDEsAndTextEditorPlugin
    s
●   Vim
●   Emacs
●   Sublime Text
●   LiteIDE
●   Goclipse(Eclipse)
●   Goworks(Netbeans)
ご清聴ありがとうございました

More Related Content

What's hot

Yocto bspを作ってみた
Yocto bspを作ってみたYocto bspを作ってみた
Yocto bspを作ってみたwata2ki
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみたPython製BDDツールで自動化してみた
Python製BDDツールで自動化してみたKeijiUehata1
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxShota Shinogi
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...NTT DATA Technology & Innovation
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Kenjiro Kubota
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話dcubeio
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングPython入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングYuichi Ito
 

What's hot (20)

Yocto bspを作ってみた
Yocto bspを作ってみたYocto bspを作ってみた
Yocto bspを作ってみた
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
 
Python製BDDツールで自動化してみた
Python製BDDツールで自動化してみたPython製BDDツールで自動化してみた
Python製BDDツールで自動化してみた
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話Go初心者がGoでコマンドラインツールの作成に挑戦した話
Go初心者がGoでコマンドラインツールの作成に挑戦した話
 
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
今さら聞けない人のためのDocker超入門 – OpenStack最新情報セミナー 2015年4月
 
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングPython入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
 
入門 シェル実装
入門 シェル実装入門 シェル実装
入門 シェル実装
 

Similar to Go言語で作る webアプリ@gocon 2013 spring

ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方Yosuke Furukawa
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
はじめての FuelPHP
はじめての FuelPHPはじめての FuelPHP
はじめての FuelPHPSho A
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented featuretamtam180
 
about Thrift
about Thriftabout Thrift
about ThriftNaoya Ito
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlInnami Satoshi
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ Daisuke Ikeda
 
Beginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_studyBeginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_studyikeyat
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレットTakashi Makino
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Goyaegashi
 
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話id774
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Kikunaga Taishi
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 

Similar to Go言語で作る webアプリ@gocon 2013 spring (20)

ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 
Apache Module
Apache ModuleApache Module
Apache Module
 
はじめての FuelPHP
はじめての FuelPHPはじめての FuelPHP
はじめての FuelPHP
 
Thrift
ThriftThrift
Thrift
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
Nginx
NginxNginx
Nginx
 
about Thrift
about Thriftabout Thrift
about Thrift
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http url
 
社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~ 社内向けTech Talk資料~Fluentdの基本紹介~
社内向けTech Talk資料~Fluentdの基本紹介~
 
Beginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_studyBeginning Java EE 6 勉強会(7) #bje_study
Beginning Java EE 6 勉強会(7) #bje_study
 
20120423 hbase勉強会
20120423 hbase勉強会20120423 hbase勉強会
20120423 hbase勉強会
 
HTTPとサーブレット
HTTPとサーブレットHTTPとサーブレット
HTTPとサーブレット
 
Microsoft Graph API Library for Go
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Go
 
HHVM Hack
HHVM HackHHVM Hack
HHVM Hack
 
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
Twitter クライアント “Termtter” の紹介と収集したソーシャルデータを Fluentd + Hadoop で分析する話
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 

More from Takuya Ueda

Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −Takuya Ueda
 
WebAssembly with Go
WebAssembly with GoWebAssembly with Go
WebAssembly with GoTakuya Ueda
 
GAE/Goとsyncパッケージ
GAE/GoとsyncパッケージGAE/Goとsyncパッケージ
GAE/GoとsyncパッケージTakuya Ueda
 
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発Takuya Ueda
 
そうだ、Goを始めよう
そうだ、Goを始めようそうだ、Goを始めよう
そうだ、Goを始めようTakuya Ueda
 
マスター・オブ・goパッケージ
マスター・オブ・goパッケージマスター・オブ・goパッケージ
マスター・オブ・goパッケージTakuya Ueda
 
メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新Takuya Ueda
 
Go1.8 for Google App Engine
Go1.8 for Google App EngineGo1.8 for Google App Engine
Go1.8 for Google App EngineTakuya Ueda
 
Go Friday 傑作選
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選Takuya Ueda
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発Takuya Ueda
 
Static Analysis in Go
Static Analysis in GoStatic Analysis in Go
Static Analysis in GoTakuya Ueda
 
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話Takuya Ueda
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGoTakuya Ueda
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオンTakuya Ueda
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Takuya Ueda
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選Takuya Ueda
 
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポートGopher Fest 2017参加レポート
Gopher Fest 2017参加レポートTakuya Ueda
 
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめGoogle Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめTakuya Ueda
 
Cloud functionsの紹介
Cloud functionsの紹介Cloud functionsの紹介
Cloud functionsの紹介Takuya Ueda
 
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するgoパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するTakuya Ueda
 

More from Takuya Ueda (20)

Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −
 
WebAssembly with Go
WebAssembly with GoWebAssembly with Go
WebAssembly with Go
 
GAE/Goとsyncパッケージ
GAE/GoとsyncパッケージGAE/Goとsyncパッケージ
GAE/Goとsyncパッケージ
 
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
 
そうだ、Goを始めよう
そうだ、Goを始めようそうだ、Goを始めよう
そうだ、Goを始めよう
 
マスター・オブ・goパッケージ
マスター・オブ・goパッケージマスター・オブ・goパッケージ
マスター・オブ・goパッケージ
 
メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新
 
Go1.8 for Google App Engine
Go1.8 for Google App EngineGo1.8 for Google App Engine
Go1.8 for Google App Engine
 
Go Friday 傑作選
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選
 
GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発
 
Static Analysis in Go
Static Analysis in GoStatic Analysis in Go
Static Analysis in Go
 
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
 
エキスパートGo
エキスパートGoエキスパートGo
エキスパートGo
 
Go静的解析ハンズオン
Go静的解析ハンズオンGo静的解析ハンズオン
Go静的解析ハンズオン
 
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポートGopher Fest 2017参加レポート
Gopher Fest 2017参加レポート
 
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめGoogle Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめ
 
Cloud functionsの紹介
Cloud functionsの紹介Cloud functionsの紹介
Cloud functionsの紹介
 
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するgoパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現する
 

Go言語で作る webアプリ@gocon 2013 spring