あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずGo言語について知っていることを書いた。
##パッケージマネージャ
標準でついてるgoツールを使おう。必要なライブラリはリポジトリから、go getで取ってこよう。
go get <リポジトリ>
##アプリケーションサーバ
標準パッケージのnet/httpパッケージを使えばhttpサーバを動かすことができる。apacheやnginxで動かしたかったら、標準パッケージのnet/http/cgiパッケージやnet/http/fcgiパッケージを使えばいい。
- http://golang.org/pkg/net/http
- http://golang.org/pkg/net/http/cgi/
- http://golang.org/pkg/net/http/fcgi
##ルーティングとリクエストパラメータの処理
標準パッケージだとnet/http.Requestやnet/http.ServeMuxあたりを使えばいける。もっと機能が欲しければgowebやgorillaも便利。
- http://golang.org/pkg/net/http/#Request
- http://golang.org/pkg/net/http/#ServeMux
- https://github.com/stretchr/goweb
- http://www.gorillatoolkit.org/
##データベース
標準でRDB用のインタフェースをdatabase/sqlパッケージで定義している。実際は、各RDBMSのドライバ使う。ORMならgorpがいいらしい。
- http://golang.org/pkg/database/sql
- https://code.google.com/p/go-wiki/wiki/SQLDrivers
- https://github.com/coopernurse/gorp
- http://mattn.kaoriya.net/software/lang/go/20120914222828.htm
ビューのレンダリング
HTMLなら標準パッケージのhtml/templateパッケージを使えば、テンプレートエンジンが使える。JSONやXMLなら標準パッケージのencodingパッケージ以下のパッケージを使えばいい。サードパーティ製であればMessagePackもある。
- http://golang.org/pkg/encoding/
- http://golang.org/pkg/html/template
- https://github.com/ugorji/go/tree/master/codec
HTTPクライアント
標準パッケージのnet/http.Clientを使えばいいと思う。
テストフレームワーク
goツールのgo test
を使えばいい。
テストプログラムを書くには、標準パッケージのtestingパッケージを使う。webアプリのテストなら標準パッケージのnet/http/httptestパッケージも使えるだろう。
- http://golang.org/doc/code.html#Testing
- http://golang.org/pkg/net/http/httptest
- http://golang.org/pkg/testing
WAF
私個人はそんなに必要性を感じないが、gowebは便利だと思った。
マスコット
標準パッケージではないが、Gopher君というマスコットがかわいい。
Webアプリには関係ない。
以上。他にもあれば指摘してほしい。