Go言語でWEBアプリつくろう
Daigo Ikeda
Apr 19, 2014
自己紹介
Daigo Ikeda
@hogedigo
生息地:静岡〜渋谷
専門:Java。最近はGAE/Javaがメイン
合同会社ナイツオという会社をやってます
アジェンダ
1.簡単なWEBアプリを作ってみる
Goの標準ライブラリにはWEBアプリを作るために必要な機能が揃っている。
net/httpでHello world
net/httpを使って、ブラウザでHello worldを表示してみよう
課題1
URLのクエリパラメータを受け取って、結果に表示してみよう!
ヒント
Handlerインターフェース
ハンドラを関数ではなくインターフェースで渡すことが出来る。
課題2
課題1のコードをHandlerインターフェースで作り替えてみよう!
HTMLテンプレート
html/templateパッケージを使用して、動的なHTMLを出力する
※上記例ではソースはstringだが、ParseFiles関数でファイルからパースすることも出来る
HTMLテンプレート(2)
HTMLテンプレート(3)
機能例
その他にもたくさん!! → http://golang.org/pkg/text/template/
課題3
課題2のコードを、テンプレートを使って出力してみよう
HTMLテンプレート(4)
html/templateの凄いところはエスケープ処理
下記コンテキストを判断して自動で必要なエスケープ処理を行ってくれる。
課題4
課題3のコードを修正して、エスケープされるか確認してみよう
パラメータ: <b>'Hello' & Gopher!</b>
埋め込む場所
ブラウザで出力してソースを確認してみよう
2.goroutineで平行処理を体験
goroutineとは
作るもの
簡易WEBクローラを作ってみよう。
test1_1.html
test1.html
test1_1_2.html
test1_1_1.html
test1_1_3.html
test1_2_2.html
test1_2_1.html
test1_2_3.html
test1_3_2.html
test1_3_1.html
test1_3_3.html
test1_2.html
test1_3.html
出来上がり用意しました
https://github.com/hogedigo/shizgo/blob/master/webapp/handler/crawl.go
取得方法↓
go get github.com/hogedigo/shizgo/webapp
実行↓
http://localhost:9876/crawl?url=http://www.yahoo.com/&depth=3&mxpp=3
でもこれはまだgoroutine使ってません。
hogedigo/shizgo/blob/master/webapp/handler/crawl.gogithub.com/hogedigo/shizgo/blob/masapp/handler/crawl.go
goroutine使わないと・・・
注:上記レポートはイメージです
非同期実行に変更
効果・・・
最後に・・・
ごめんなさい。Restful間に合いませんでした。
Let it go〜