内容紹介
Go言語の実践テクニックを身につけたいGoプログラミング経験者は必読!
Goプログラミングについて一歩踏み込んだプロユースの解説書。読者はシンプルなコードを書きながら、実運用アプリケーションの開発で使うスキルとテクニックを学ぶことができます。本書のサンプルプログラムはどれもシンプルですがとても実践的です。拡張性、並行処理、高可用性といったエンタープライズアプリケーションの開発で直面する現実的な問題に対するソリューションが含まれています。本書を読めば、実際の業務に必要な技能――Goによる開発手法および関連技術の使い方――をマスターし、ツールやプログラムの開発スキルを迅速かつ簡単に向上できます。日本語版では、監訳者の鵜飼文敏氏による巻末付録「Goらしいコードの書き方」を収録しました。
このような方におすすめ
Goプログラマー、Webアプリ開発者、Webサイト制作者、スマートフォンアプリ開発者、ゲーム開発者
目次
詳細目次
監訳者まえがき
まえがき
1章 WebSocketを使ったチャットアプリケーション
1.1 シンプルなWebサーバー
1.1.1 テンプレート
1.1.2 Goプログラムのビルドと実行の正しい方法
1.2 チャットルームとクライアントをサーバー側でモデル化する
1.2.1 クライアントのモデル化
1.2.2 チャットルームのモデル化
1.2.3 並行プログラミングで使われるGoのイディオム
1.2.4 チャットルームをHTTPハンドラにする
1.2.5 ヘルパー関数を使って複雑さを下げる
1.2.6 チャットルームの生成と利用
1.3 チャットクライアントのHTMLとJavaScript
1.3.1 テンプレートの活用
1.4 ログ情報を出力して内部状態を知る
1.4.1 TDDに基づいたパッケージの作成
1.4.2 traceパッケージの利用方法
1.4.3 記録を無効化できるようにする
1.4.4 パッケージのクリーンなAPI
1.5 まとめ
2章 認証機能の追加
2.1 HTTPハンドラの活用
2.2 そこそこソーシャルなサインインのページ
2.3 エンドポイントと動的なパス
2.4 OAuth2
2.4.1 オープンソースのOAuth2パッケージ
2.5 アプリケーションを認証プロバイダーに登録する
2.6 外部アカウントでのログインの実装
2.6.1 ログイン
2.6.2 認証プロバイダーからのレスポンスの解釈
2.6.3 自分のユーザー名の表示
2.6.4 メッセージの表示の拡張
2.7 まとめ
3章 プロフィール画像を追加する3つの方法
3.1 認証サーバーからのアバターの取得
3.1.1 アバターのURLの取得
3.1.2 アバターのURLの送信
3.1.3 UI上にアバターを表示する
3.1.4 ログアウト
3.1.5 アプリケーションの見た目を改善する
3.2 Gravatarの利用
3.2.1 アバターのURLを取得するプロセスの抽象化
3.3 アバターの画像をアップロードする
3.3.1 ユーザーの識別
3.3.2 アップロードのフォーム
3.3.3 アップロードされたファイルの処理
3.3.4 画像の提供
3.3.5 ローカルファイル向けのAvatarの実装
3.3.6 リファクタリングと最適化
3.4 3つの実装の統合
3.5 まとめ
4章 ドメイン名を検索するコマンドラインツール
4.1 パイプに基づくコマンドラインツールの設計
4.2 5つのシンプルなプログラム
4.2.1 sprinkle
4.2.2 domainify
4.2.3 coolify
4.2.4 synonyms
4.2.5 available
4.3 5つのプログラムをすべて組み合わせる
4.3.1 すべてを実行するためのプログラム
4.4 まとめ
5章 分散システムと柔軟なデータの処理
5.1 システムの設計
5.1.1 データベースの設計
5.2 実行環境のインストール
5.2.1 NSQ
5.2.2 MongoDB
5.2.3 実行環境の起動
5.3 Twitterからの投票
5.3.1 Twitterを使った認証
5.3.2 MongoDBからの読み込み
5.3.3 Twitterからの読み込み
5.3.4 NSQへのパブリッシュ
5.3.5 穏やかな起動と終了
5.3.6 テスト
5.4 得票数のカウント
5.4.1 データベースへの接続
5.4.2 NSQ上のメッセージの受信
5.4.3 データベースを最新の状態に保つ
5.4.4 Ctrl+Cへの応答
5.5 プログラムの実行
5.6 まとめ
6章 REST形式でデータや機能を公開する
6.1 RESTに基づくAPIの設計
6.2 ハンドラ間でのデータの共有
6.3 ラップされたハンドラ関数
6.3.1 APIキー
6.3.2 データベースのセッション
6.3.3 リクエストごとの変数
6.3.4 ドメイン間のリソース共有
6.4 レスポンスの生成
6.5 リクエストを理解する
6.6 APIを提供するシンプルなmain関数
6.6.1 ハンドラをラップした関数の利用
6.7 エンドポイントの管理
6.7.1 タグを使って構造体にメタデータを追加する
6.7.2 1つのハンドラで多くの処理を行う
6.7.3 curlを使ってAPIをテストする
6.8 APIを利用するWebクライアント
6.8.1 調査項目のリストのページ
6.8.2 調査項目を作成するページ
6.8.3 調査項目の詳細を表示するページ
6.9 システムの実行
6.10 まとめ
7章 ランダムなおすすめを提示する
Webサービス
7.1 プロジェクトの概要
7.1.1 設計の詳細
7.2 コードの中でデータを表現する
7.2.1 Goの構造体を公開したビュー
7.3 ランダムなおすすめの生成
7.3.1 Google Places APIのキー
7.3.2 Goでの列挙子
7.3.3 Google Places APIへの問い合わせ
7.3.4 おすすめの生成
7.3.5 URLパラメーターを解釈するハンドラ
7.3.6 CORS
7.3.7 APIのテスト
7.4 まとめ
8章 ファイルシステムのバックアップ
8.1 システムの設計
8.1.1 プロジェクトの構造
8.2 backupパッケージ
8.2.1 インタフェースは明白か
8.2.2 ZIP圧縮の実装
8.2.3 ファイルシステムへの変更を検出する
8.2.4 変更の検出とバックアップの開始
8.3 ユーザー向けのコマンドラインツール
8.3.1 少量のデータの永続化
8.3.2 コマンドライン引数の解析
8.3.3 ツールの実行
8.4 バックアップを行うデーモン
8.4.1 データ構造の重複
8.4.2 データのキャッシュ
8.4.3 無限ループ
8.4.4 filedbのレコードの更新
8.5 システムのテスト
8.6 まとめ
付録A 安定した開発環境のためのベストプラクティス
A.1 Goのインストール
A.1.1 バイナリリリースのインストール
A.1.2 ダウンロードとビルド
A.2 Goの設定
A.2.1 GOPATHの正しい設定
A.3 Goのツール
A.4 クリーンアップとビルドそしてテストを保存時に自動実行する
A.4.1 Sublime Text 3
A.5 まとめ
付録B Goらしいコードの書き方
B.1 traceパッケージ
B.2 FileSystemAvatar
B.3 twittervotes
B.4 counter
B.5 backupd
索引
コラム目次
独自型の文字列表現
続きを見る