3. 準備など
• 開発環境準備(10分)
o homebrewでインストール
o 環境変数$GOPATHを設定する
• go getしたライブラリの置き場所
• Goのお勉強(2.5時間)
o A Tour of Go
http://go-tour-jp.appspot.com/#1
• Goの文法が一通り
• Step75くらい、結構きつい
o golangでWeb開発をするには(ヒカルのgo)
http://qiita.com/t-sato/items/988b33aab19fb62ba40f
• 流行りのモジュールなど確認
4. スクレイピング
• スクレイピングプログラム実装(30分くらい)
o goqueryを使用
o jQueryっぽい記法ができる
o goqueryでお手軽スクレイピング!
http://qiita.com/yosuke_furukawa/items/5fd41f5bcf53d0a69ca6
o Go言語で jQuery ライクな操作が出来る goquery を試した。
http://mattn.kaoriya.net/software/lang/go/20120914184828.htm
o データをスクレイピングしてコンソール出力のみ
https://github.com/zakihaya/ippothon/commit/dced4f289c89e49c1445c6de998c9
1148e2f137d
o DBの使い方がわからないので一旦Web側の開発に行くことにする
o ここまでは超順調
6. Web側
• データを垂れ流すアプリ作成(5時間くらい?)
o フレームワークはRevelを使用
o Go言語製のWeb Application Framework - Revel - を触る
http://qiita.com/futoase/items/8134bd96a5c950c497c7
o Revelでgorpを使ってDBを操作する
http://qiita.com/k0kubun/items/538ea0dd57800b8d7ca6
o ソースを$GOPATHの下に配置しないといけない?
• 外部のライブラリと混ざる
• 分かれてるっちゃ分かれてるけど。。。
• 別のところに置いても大丈夫なようになってるのかも。要調査。
7. Web側
• Revelについて
o 標準のORMが無い
• Presently Revel is BYOORM (bring-your-own-ORM). A good ORM
integration would make simple things simple. (e.g. gorp, hood, qbs, jet,
beedb, gosexy, gorm)
引用:公式サイト
• とりあえずgorpを使うことにする
o gorpにはトランザクション未実装
• 自分で実装する
• https://github.com/zakihaya/ippothonapp/blob/master/app/controllers/gorp.go
o controllers/init.goが読み込まれない。。。
• 最後まで謎
• https://github.com/zakihaya/ippothonapp/blob/master/app/controllers/init.go
• 今回は1actionなので、最初にInitDBする。。。
8. Web側
• Revelのテンプレートエンジン
o 標準実装のもの
o ちゃんとは触ってないが、悪くないっぽい
o https://github.com/zakihaya/ippothonapp/blob/master/app/views/App/Index.html
o タグヘルパーとか 調べている時間が無くて不明