Go Wiki: LearnServerProgramming
このページでは、Go でのサーバープログラミング(Web サービスとモバイルバックエンドの両方)について学習するためのリソースにリンクしています。項目はトピック別にセクションに整理されています。
はじめに
- Go 標準ライブラリを使用した Web アプリケーションの作成を読む
- BeeGo Web フレームワークの作者によるGo で Web アプリケーションを構築するを読む
- Go での Web アプリ、アンチ教科書を読む
- NegroniとMartini Web サーバーツールキットの作者によるGo での Web アプリケーション構築を読む。この本に進む前に、絶対的な基本を学ぶ。
- 5 部構成のシリーズであるGo で独自の Web フレームワークを構築するを読む。
- Go: 優雅に成長するコードを見る
- Sourcegraph チームから完全動作する 3 層アプリケーションの例をダウンロードする。
ミドルウェア
頻繁に議論されるトピックの 1 つに「ミドルウェア」があります。この用語に馴染みがない場合は、これらの記事をいくつか読むことから始めることをお勧めします。
- Go のミドルウェア:ベストプラクティスと例 2014-11-13
- カスタムハンドラー パート 1 - グローバル変数の回避、パート 2 - エラー処理 2014-07-16
- HTTP ミドルウェアの作成と使用 2014-10-21
- Go で HTTP ミドルウェアを作成する 2013-10-09
ツールキットとフレームワーク
サードパーティの Web フレームワークやツールキットを採用する前に、Go の標準ライブラリが洗練された最新の Web アプリケーションを構築するために必要なすべてのツールを提供していることを覚えておいてください。複雑さや魔法よりもシンプルさと構成可能性を好む Go の流儀に従い、標準ライブラリでどこまでできるかを確認することをお勧めします。
もう少しインフラストラクチャが必要だと判断した場合は、利用可能なツールキットとライブラリのいくつかから始めてください。
ツールキット & ライブラリ & マイクロフレームワーク
- Gorilla Toolkit
- Negroni Toolkit - Go の慣用的な HTTP ミドルウェア
- Echo Framework - 高速で無駄がない
- Goji Web マイクロフレームワーク
- Go Craft ミドルウェア
- Go RESTful - RESTful サービス API 用ツールキット
- limiter - Go 用のシンプルなレート制限ミドルウェア
- Kite マイクロサービスフレームワーク
- Alice - Go 用の簡単なミドルウェア連鎖
- YAM - もう 1 つの多重化器
- Bone - 高速 HTTP ルーター
フレームワーク
- BeeGo Framework
- Frodo - Laravel(php)、Slim(php)、ExpressJS(node.js) にインスパイアされた Go ミニ Web フレームワーク
- GinGonic
- Macaron - Go の生産的でモジュール化された Web フレームワーク。
- Revel Web Framework
- Ringo - Rails、Gin にインスパイアされた軽量 MVC Web フレームワーク。
- Utron - Web アプリケーション用の軽量 MVC フレームワーク。
- Iris - Web アプリケーション用の高速 MVC フレームワーク。
通信
- パッケージ net/http は HTTP クライアントおよびサーバーの実装を提供します。
- パッケージ encoding/json は RFC 4627 で定義されている JSON オブジェクトのエンコーディングとデコーディングを実装します。
- パッケージ net/rpc はネットワークまたはその他の I/O 接続を介したオブジェクトのエクスポートされたメソッドへのアクセスを提供します。
- パッケージ os/exec は外部コマンドを実行します。
プレゼンテーション
- パッケージ text/template はテキスト出力を生成するためのデータ駆動型テンプレートを実装します。
- パッケージ html/template はコードインジェクションに対して安全な HTML 出力を生成するためのデータ駆動型テンプレートを実装します。
プロファイリングとパフォーマンス
- Go プログラムのプロファイリングを読む
- 配列、スライス(および文字列):'append' のメカニクスを読む
- よくある質問 (FAQ)を読む。特に、
- パッケージ bufio はバッファリングされた I/O を実装します。
- パッケージ runtime/pprof は pprof 視覚化ツールが想定する形式でランタイムプロファイリングデータを書き込みます。
- パッケージ net/http/pprof は HTTP サーバーを介して pprof 視覚化ツールが想定する形式でランタイムプロファイリングデータを提供します。
トレース、監視、ロギング、および構成
- パッケージ expvar はサーバー内の操作カウンターなどのパブリック変数への標準化されたインターフェースを提供します。
- パッケージ flag はコマンドラインフラグの解析を実装します。
- パッケージ log はシンプルなロギングパッケージを実装します。
- パッケージ glog は Google 社内の C++ INFO/ERROR/V セットアップに類似したロギングを実装します。
ストレージ
- パッケージ os はオペレーティングシステム機能へのプラットフォーム独立のインターフェースを提供します。
- パッケージ path/filepath はターゲットオペレーティングシステムで定義されたファイルパスと互換性のある方法でファイル名パスを操作するためのユーティリティルーチンを実装します。
- パッケージ database/sql は SQL (または SQL ライクな) データベースを囲む汎用インターフェースを提供します。
プラットフォーム
Google Cloud Platform
- Go, Cloud Endpoints and App Engine, Part 1、Part 2 を読む
- Google Cloud Platform: Go ランタイム環境を読む
- Go と Google Cloud Platform を見る
- App Engine 上の Go: ツール、テスト、並行性を読む
- Google Cloud Platform Go ライブラリを取得する
- Docker を使用した Go サーバーのデプロイを読む
- Google Cloud または gcloud のパッケージを検索する
- App Engine または GAE のパッケージを検索する
Amazon Web Services
- aws-sdk-go リポジトリは Go で自動生成された AWS クライアントを提供します。Amazon からの公式サポートがあります。
- パッケージ goamz は Go プログラムが Amazon Web Services と対話できるようにします。
- AWS または Amazon サービスのパッケージを検索する
Microsoft Azure
- Microsoft OpenTech のazure-sdk-for-go は、Microsoft Azure Services の利用と管理を容易にする Golang パッケージを提供します。
- Azure のパッケージを検索する
Openstack / Rackspace
- Gophercloud は OpenStack クラウドで動作する Golang SDK です。
- Openstack または Rackspace のパッケージを検索する
IBM BlueMix
このコンテンツはGo Wikiの一部です。