Go Wiki: LearnServerProgramming
このページは、Goでのサーバープログラミング(ウェブサービスとモバイルバックエンドの両方)に関する学習リソースへのリンク集です。項目はトピック別に分類されています。
はじめに
- Go標準ライブラリを使用したWebアプリケーションの記述を読む
- Goを使ったWebアプリケーションの構築(BeeGoウェブフレームワークの著者による)を読む
- Webapps in Go the anti textbookを読む
- GoによるWebアプリケーションの構築(NegroniとMartiniウェブサーバーツールキットの著者による)を読む。この本を読む前に、まずは絶対的な基礎を学びましょう。
- Goで独自のWebフレームワークを構築する(5部構成シリーズ)を読む
- Go: 優雅に成長するコードを視聴する
- Sourcegraphチームから完全稼働中の3層アプリケーションの例をダウンロードする。
ミドルウェア
頻繁に議論されるトピックに「ミドルウェア」があります。この用語に慣れていない場合は、これらの記事をいくつか読むことをお勧めします。
- Goのミドルウェア:ベストプラクティスと例 2014-11-13
- カスタムハンドラー パート1 - グローバル変数の回避、パート2 - エラー処理 2014-07-16
- HTTPミドルウェアの作成と使用 2014-10-21
- GoでのHTTPミドルウェアの記述 2013-10-09
ツールキットとフレームワーク
サードパーティのWebフレームワークまたはツールキットを採用する前に、Go標準ライブラリには洗練された最新のWebアプリケーションを構築するために必要なすべてのツールが用意されていることを覚えておいてください。Goのシンプルさと構成可能性を重視する点を踏まえ、標準ライブラリがどれほど役立つのかを確認することをお勧めします。
さらにインフラストラクチャが必要になった場合は、利用可能なツールキットやライブラリを調べてみましょう。
ツールキット&ライブラリ&マイクロフレームワーク
- Gorillaツールキット
- Negroniツールキット - Goのための慣習的なHTTPミドルウェア
- Echoフレームワーク - 高速で飾り気のないフレームワーク
- Goji Webマイクロフレームワーク
- Go Craftミドルウェア
- Go RESTful - RESTfulサービスAPIのためのツールキット
- limiter - Goのためのシンプルなレート制限ミドルウェア
- Kiteマイクロサービスフレームワーク
- Alice - Goのための簡単なミドルウェアチェーン
- YAM - Yet Another Mux
- Bone - 高速なHTTPルーター
フレームワーク
- BeeGoフレームワーク
- Frodo - Laravel(php)、Slim(php)、ExpressJS(node.js)にインスパイアされたGoミニWebフレームワーク
- GinGonic
- Macaron - Goの高生産性、モジュール型Webフレームワーク。
- Revel Webフレームワーク
- 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、App Engine、パート1、パート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サービスの利用と管理を容易にするGolangパッケージを提供します。
- Azureのパッケージを検索する
OpenStack / Rackspace
- Gophercloudは、OpenStackクラウドで作業するためのGolang SDKです。
- OpenStackまたはRackspaceのパッケージを検索する
IBM BlueMix
このコンテンツはGo Wikiの一部です。