Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Takuya Ueda
PDF, PPTX
4,522 views
Goでwebアプリを開発してみよう
Go言語LT大会! 「最近、Go言語始めました」の会の発表資料です。 https://connpass.com/event/28621/
Technology
◦
Read more
6
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 26
2
/ 26
3
/ 26
4
/ 26
5
/ 26
6
/ 26
7
/ 26
8
/ 26
9
/ 26
10
/ 26
11
/ 26
12
/ 26
13
/ 26
14
/ 26
15
/ 26
16
/ 26
17
/ 26
18
/ 26
19
/ 26
20
/ 26
21
/ 26
22
/ 26
23
/ 26
24
/ 26
25
/ 26
26
/ 26
More Related Content
PDF
GAE/GoでLINE Messaging API を使う
by
Takuya Ueda
PDF
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
by
Takuya Ueda
PDF
今日から始めるGopher - スタートGo #0 @GDG名古屋
by
Takuya Ueda
PDF
エディタの壁を越えるGoの開発ツールの文化と作成法
by
Takuya Ueda
PDF
Go初心者向けハンズオン コマンドラインツールを作ろう
by
Takuya Ueda
PDF
Goでかんたんソースコードの静的解析
by
Takuya Ueda
PDF
Goとテスト
by
Takuya Ueda
PDF
GAE/GoでWebアプリ開発入門
by
Takuya Ueda
GAE/GoでLINE Messaging API を使う
by
Takuya Ueda
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
by
Takuya Ueda
今日から始めるGopher - スタートGo #0 @GDG名古屋
by
Takuya Ueda
エディタの壁を越えるGoの開発ツールの文化と作成法
by
Takuya Ueda
Go初心者向けハンズオン コマンドラインツールを作ろう
by
Takuya Ueda
Goでかんたんソースコードの静的解析
by
Takuya Ueda
Goとテスト
by
Takuya Ueda
GAE/GoでWebアプリ開発入門
by
Takuya Ueda
What's hot
PDF
粗探しをしてGoのコントリビューターになる方法
by
Takuya Ueda
PDF
オススメの標準・準標準パッケージ20選
by
Takuya Ueda
PDF
Goだけでモバイルアプリを作ろう
by
Takuya Ueda
PDF
Go入門
by
Takuya Ueda
PDF
Go mobileでモバイルアプリを作ろう
by
Takuya Ueda
PDF
GoによるiOSアプリの開発
by
Takuya Ueda
PDF
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
by
Takuya Ueda
PDF
Golang入門
by
Yukihiro Kitazawa
PDF
GoでMinecraftっぽいの作る
by
京大 マイコンクラブ
PDF
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会
by
Takuya Ueda
PDF
PyCon JP 2016 ビギナーセッション
by
Tetsuya Morimoto
PDF
Goroutineと channelから はじめるgo言語
by
Takuya Ueda
PDF
goパッケージで型情報を用いたソースコード検索を実現する
by
Takuya Ueda
PDF
Cloud functionsの紹介
by
Takuya Ueda
PDF
GAE/Goとsyncパッケージ
by
Takuya Ueda
PDF
Gopher Fest 2017参加レポート
by
Takuya Ueda
PDF
Go1.8 for Google App Engine
by
Takuya Ueda
PDF
今日から始める Go言語 と appengine
by
a know
PDF
条件式評価器の実装による管理ツールの抽象化
by
Takuya Ueda
PPTX
Pyladies tokyo 2nd anniversary LT
by
drillan
粗探しをしてGoのコントリビューターになる方法
by
Takuya Ueda
オススメの標準・準標準パッケージ20選
by
Takuya Ueda
Goだけでモバイルアプリを作ろう
by
Takuya Ueda
Go入門
by
Takuya Ueda
Go mobileでモバイルアプリを作ろう
by
Takuya Ueda
GoによるiOSアプリの開発
by
Takuya Ueda
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
by
Takuya Ueda
Golang入門
by
Yukihiro Kitazawa
GoでMinecraftっぽいの作る
by
京大 マイコンクラブ
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会
by
Takuya Ueda
PyCon JP 2016 ビギナーセッション
by
Tetsuya Morimoto
Goroutineと channelから はじめるgo言語
by
Takuya Ueda
goパッケージで型情報を用いたソースコード検索を実現する
by
Takuya Ueda
Cloud functionsの紹介
by
Takuya Ueda
GAE/Goとsyncパッケージ
by
Takuya Ueda
Gopher Fest 2017参加レポート
by
Takuya Ueda
Go1.8 for Google App Engine
by
Takuya Ueda
今日から始める Go言語 と appengine
by
a know
条件式評価器の実装による管理ツールの抽象化
by
Takuya Ueda
Pyladies tokyo 2nd anniversary LT
by
drillan
Similar to Goでwebアプリを開発してみよう
PDF
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
PDF
ヒカルのGo 資料 Webアプリケーションの作り方
by
Yosuke Furukawa
PDF
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
by
Takuya Ueda
PDF
メルカリ・ソウゾウでは どうGoを活用しているのか?
by
Takuya Ueda
PDF
【とらラボLT】go言語でのweb apiの作り方3選
by
虎の穴 開発室
PDF
Go言語によるWebアプリケーション開発
by
エンジニア勉強会 エスキュービズム
PPTX
オタク×Node.js勉強会
by
虎の穴 開発室
PDF
SocketStream入門
by
Kohei Kadowaki
PPTX
EchoyaGinhanazeSu_inoka.pptx
by
keink
PDF
WebSocket + Node.jsでつくるチャットアプリ
by
Kohei Kadowaki
PPTX
Tiny server
by
komem3
PDF
WebAssembly with Go
by
Takuya Ueda
PDF
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
by
Shoot Morii
PDF
らくちん Go言語
by
株式会社YEBIS.XYZ
PDF
Go言語で作る webアプリ@gocon 2013 spring
by
Takuya Ueda
PDF
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
by
Nobuhiro Ueda
PPTX
20190809
by
iPride Co., Ltd.
PPTX
Gunosy Go lang study #6 net http url
by
Innami Satoshi
PDF
みんなでWAIWAI Webアプリ
by
Kiwamu Okabe
PDF
Janogia20120921 yoshinotakeshi
by
Keisuke Ishibashi
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
ヒカルのGo 資料 Webアプリケーションの作り方
by
Yosuke Furukawa
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
by
Takuya Ueda
メルカリ・ソウゾウでは どうGoを活用しているのか?
by
Takuya Ueda
【とらラボLT】go言語でのweb apiの作り方3選
by
虎の穴 開発室
Go言語によるWebアプリケーション開発
by
エンジニア勉強会 エスキュービズム
オタク×Node.js勉強会
by
虎の穴 開発室
SocketStream入門
by
Kohei Kadowaki
EchoyaGinhanazeSu_inoka.pptx
by
keink
WebSocket + Node.jsでつくるチャットアプリ
by
Kohei Kadowaki
Tiny server
by
komem3
WebAssembly with Go
by
Takuya Ueda
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
by
Shoot Morii
らくちん Go言語
by
株式会社YEBIS.XYZ
Go言語で作る webアプリ@gocon 2013 spring
by
Takuya Ueda
Firefox os勉強会 2nd WEB屋さんがWEBアプリを作ってみた
by
Nobuhiro Ueda
20190809
by
iPride Co., Ltd.
Gunosy Go lang study #6 net http url
by
Innami Satoshi
みんなでWAIWAI Webアプリ
by
Kiwamu Okabe
Janogia20120921 yoshinotakeshi
by
Keisuke Ishibashi
More from Takuya Ueda
PDF
エキスパートGo
by
Takuya Ueda
PDF
Goにおけるバージョン管理の必要性 − vgoについて −
by
Takuya Ueda
PDF
Go静的解析ハンズオン
by
Takuya Ueda
PDF
Mobile Apps by Pure Go with Reverse Binding
by
Takuya Ueda
PDF
メルカリ カウルのマスタデータの更新
by
Takuya Ueda
PDF
静的解析を使った開発ツールの開発
by
Takuya Ueda
PDF
Google Assistant関係のセッションまとめ
by
Takuya Ueda
PDF
Namespace API を用いたマルチテナント型 Web アプリの実践
by
Takuya Ueda
PDF
Cloud Functionsの紹介
by
Takuya Ueda
PDF
Go Friday 傑作選
by
Takuya Ueda
PDF
そうだ、Goを始めよう
by
Takuya Ueda
PDF
Goにおける静的解析と製品開発への応用
by
Takuya Ueda
PDF
Static Analysis in Go
by
Takuya Ueda
PDF
マスター・オブ・goパッケージ
by
Takuya Ueda
エキスパートGo
by
Takuya Ueda
Goにおけるバージョン管理の必要性 − vgoについて −
by
Takuya Ueda
Go静的解析ハンズオン
by
Takuya Ueda
Mobile Apps by Pure Go with Reverse Binding
by
Takuya Ueda
メルカリ カウルのマスタデータの更新
by
Takuya Ueda
静的解析を使った開発ツールの開発
by
Takuya Ueda
Google Assistant関係のセッションまとめ
by
Takuya Ueda
Namespace API を用いたマルチテナント型 Web アプリの実践
by
Takuya Ueda
Cloud Functionsの紹介
by
Takuya Ueda
Go Friday 傑作選
by
Takuya Ueda
そうだ、Goを始めよう
by
Takuya Ueda
Goにおける静的解析と製品開発への応用
by
Takuya Ueda
Static Analysis in Go
by
Takuya Ueda
マスター・オブ・goパッケージ
by
Takuya Ueda
Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
PDF
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PDF
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PMBOK 7th Edition Project Management Process Scrum
by
akipii ogaoga
PMBOK 7th Edition_Project Management Context Diagram
by
akipii ogaoga
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版
by
sorabatake
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研)
by
Yuto Matsuda
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PMBOK 7th Edition_Project Management Process_WF Type Development
by
akipii ogaoga
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
Goでwebアプリを開発してみよう
1.
GoでWebアプリを 開発してみよう 2016/12/08(木) @Go言語LT大会! 「最近、Go言語始めました」の会 The Go gopher
was designed by Renee French. The gopher stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license.
2.
自己紹介 メルカリ/ソウゾウ 上田拓也 twitter: @tenntenn ■ Go歴
/ GAE歴 Go:5〜6年くらい? GAE:最近再開、GCPUG Tokyoのスタッフ ■ 業務 GAE/Goでメルカリアッテを作ってます Goのコミュニティを盛り上げる仕事 Gopherを描く仕事(LINEスタンプ)
3.
アジェンダ ■ net/httpパッケージ ● 動かしてみよう ●
ハンドラ ● レスポンス ● リクエスト ■ html/templateパッケージ ● テンプレートエンジンとは ● 値埋め込んでみる ■ net/http/httptestパッケージ ● ハンドラをテストしてみよう
4.
net/httpパッケージ
5.
Hello, net/http パッケージ ■
まずは動かしてみよう package main import "fmt" import "net/http" func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, net/http!") }
6.
ハンドラ ■ ハンドラ ■ ハンドラの登録 func
handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, net/http!") } http.HandleFunc("/", handler) レスポンスを書き込むWriter リクエスト レスポンスの書き込み /というパターンのパスで来たリクエストを ハンドリングする関数を登録
7.
HTTPサーバの起動 ■ ListenAndServe http.ListenAndServe(":8080", nil) ホスト名:ポート番号 ホスト名を省略するとlocalhost HTTPハンドラ nilだとhttp.DefaultServeMux Listenするとここで処理が ブロックされリクエストを待つ
8.
http.Handlerインタフェース ■ ハンドラはインタフェースとして定義される type Handler
interface { ServeHTTP(ResponseWriter, *Request) } ServeHTTPメソッドを持つ型が ハンドラとして扱われる
9.
http.Handlerの登録 ■ http.Handleでhttp.Handlerを登録 func Handle(pattern
string, handler http.Handler) ServeHTTPメソッドを持つ型が ハンドラとして扱われる 実際には、ServeHTTPメソッドを 持つ型の具体的な値がくる
10.
http.HandlerFunc ■ http.HandlerFuncとは? type HandlerFunc
func(ResponseWriter, *Request) func (f HandlerFunc) ServeHTTP( w ResponseWriter, r *Request) { f(w, r) } ServeHTTPメソッドを 関数に実装させるための型
11.
http.HandleFuncは何をしてるのか ■ http.HandleFunc ● 関数をハンドラとして登録する ●
関数をhttp.HandlerFuncに変換する ● http.Handleで登録する func HandleFunc( pattern string, handler func(ResponseWriter, *Request)) Handlerは登録されるもの Handleは登録する関数
12.
http.ServeMuxについて ■ http.ServeMuxとは? ● 複数のハンドラをまとめる ●
パスによって使うハンドラを切り替える ● 自身もhttp.Handlerを実装している ● http.Handleとhttp.HandleFuncはデ フォルトのhttp.ServeMuxである http.DefaultServeMuxを使用している
13.
http.ResponseWriterについて ■ http.ResponseWriterインタフェース ● io.Writerと同じWriteメソッドをもつ ○
ResposeWriteを満たすとio.Writerを満たす ● io.Writerとしても振る舞える ○ fmt.Fprint*の引数に取れる ○ json.NewEncoderの引数に取れる インタフェースなので モックも作りやすい=テスト簡単
14.
HTMLの表示 ■ ResponseWriterにHTMLを書き込む func root(w
http.ResponseWriter, r *http.Request) { fmt.Fprint(w, guestbookForm) } const guestbookForm = ` <html> ... </html> ` HTMLを書き込めばブラウザが HTMLをレンダリングしてくれる
15.
http.Requestについて ■ http.Requesetとは? ● HTTPリクエストを表す ●
ヘッダーやBodyがとれる ● FormValueメソッドでリクエストで送られた 値を取り出せる
16.
ユーザ入力を受け付ける ■ リクエストからFormデータを取得する func handler(w
http.ResponseWriter, r *http.Request) { v := r.FormValue("myvalue") fmt.Fprint(w, v) } <form action="/post" method="post"> <input type="text" name="myvalue"> <input type="submit" value="post"> </form> Go HTML POSTで送られた 値を取得できる
17.
templateパッケージ
18.
テンプレートエンジンの利用 ■ html/templateを使う ● Go標準のテンプレートエンジン ●
text/templateのHTML特化版 ■ テンプレートの生成 ■ テンプレートに埋め込む template.New("sign").Parse(signTemplateHTML) テンプレート名 HTML template.Mustはエラーを panicに変換する関数 signTemplate.Execute(w, r.FormValue("content")) リクエストから貰った値を埋め込む
19.
よく使うテンプレートの記法 ■ その文脈でトップレベルのデータを埋め込む ■ フィールドやメソッド ■
条件分岐 ■ 繰り返し {{.}} {{.Filed}} {{.Method arg1 arg2}} {{if .}}{{.Filed}}{{else}}NO{{end}} {{range .}}{{.}}{{end} rangeの中の {{.}}は要素になる
20.
データの埋め込み ■ HTMLにリクエストの値を埋め込む const signTemplateHTML
= ` <html> <body> <p>You wrote:</p> <pre>{{.}}</pre> </body> </html> ` signTemplate.Execute(w, r.FormValue("content")) ここに埋め込まれる
21.
net/http/httptestパッケージ
22.
httptestパッケージについて ■ 何ができるのか? ● ハンドラのテストのための機能など ●
ResponseRecorder ○ ResponseWriterを実装している ● NewRequestメソッド(1.7以上) ○ 簡単にテスト用のリクエストが作れる
23.
テストの例 ■ このコードをテストする package main import
"fmt" import "net/http" func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, net/http!") }
24.
テストの例 func TestSample(t *testing.T)
{ w := httptest.NewRecorder() r := httptest.NewRequest("GET", "/", nil) handler(w, r) rw := w.Result() defer rw.Body.Close() if rw.StatusCode != http.StatusOK { t.Fatal("unexpected status code") } b, err := ioutil.ReadAll(rw.Body) if err != nil {t.Fatal("unexpected error)} const expected = "Hello, net/http!" if s := string(b); s != expected { t.Fatalf("unexpected response: %s", s) } } テスト用のReponseWriterと Requestを作る
25.
まとめ ● net/httpパッケージで簡単にHTTPサーバ作 れる ● html/templateパッケージでHTML用のテン プレートエンジンが提供されている ●
net/http/httptestパッケージでハンドラ のテストができる
26.
Thank you! twitter: @tenntenn Qiita:
tenntenn connpass: tenntenn
Download