改訂2版 みんなのGo言語

目次

第1章 Goによるチーム開発のはじめ方とコードを書く上での心得 迷いなくGoを書き始めるために

1.1 開発環境の構築

インストールから環境設定まで

Goのインストール

GOPATHの設定

go getによるパッケージのインストール

GoのREPLであるgoreを使う

プロジェクト管理のためにghqを導入する

pecoでリポジトリ間の移動を簡単に

Go製ツールのインストールについて

1.2 エディタと開発環境

コードフォーマッター、lintツールからドキュメント閲覧まで

Goとエディタ

開発支援用のツールを見る

コードフォーマッター~gofmt

コードフォーマッター+imports文 補助~goimports

lintツール~go vetとgolint

ドキュメント閲覧ツール~go doc とgodoc

そのほかの便利なツールやパッケージ

1.3 Goをはじめる

start a tour of Go

学習~Tour of Go

プロジェクトを始める

ディレクトリ名とパッケージ名

ディレクトリ構成

依存管理~vendoringとModules

タスクランナーとしてMakefileを使う

1.4 Goらしいコードを書く

Goに入ってはGoに従え

よりGoらしいコードを書くために

panicを使わずに、errorをちゃんと返し、エラーチェックを確実に行う

正規表現を避けてstringsパッケージを使う

mapを避ける

reflectを避ける

巨大なstructを作らず継承させようとしない

並行処理を使い過ぎない

Goのコードを読もう

テストとCI

Buildとデプロイ

モニタリング

まとめ

 

第2章 マルチプラットフォームで動作売る社内ツールのつくり方 Windows、Mac、Linux、どの環境でも同じように動作するコードを書こう

2.1 Goで社内ツールをつくる理由

みんな違っていて当然

さまざまな環境への対応がせまられる

Goを採用する利点

2.2 守るべき暗黙のルール

OS間の移植をあらかじめ想定する

積極的にpath/filepathを使う

積極的にdeferを使う

積極的にUTF-8を使う

2.3 TUIもWindowsで動かしたい

termboxとgo-colorble

簡単にTUIアプリケーションのが作れるtermbox

go-colorableの使い方

2.4 OS固有の処理への対応

runtime.GOOSとBuilds Constraints

runtime.GOOSを使う

Builds Constraintsを使う

pkg-configを使って複雑なコンパイルオプションに対処

2.5 がんばるよりもまわりのツールに頼る

ひとつのアプリケーションに一つの仕事

Goアプリケーションのデーモン化

Linuxの場合

UNIXの場合

Windowsの場合

2.6 シングルバイナリにこだわる

アセットツールの活用

Goはシングルバイナリ

statikを使う

packrを使う

2.7 Windowsアプリケーションの作成

いろいろなユーザを想定する

Windowsアプリケーションの作り方

2.8 設定ファイルの取り扱い

マルチプラットフォームでの注意

設定ファイルを扱うときの注意

どのフォーマットにするか

設定ファイルをどこに置くか

JSONをきれいに吐き出す

2.9 社内ツールのその先に

マルチプラットフォーム対応アプリのメリット

一度作ったらそれで終わりではない

 

第3章 実用的なアプリケーションを作るために 実際の開発から見えてきた実践テクニック

3.1 はじめに

実用的なアプリケーションの条件とは

実用的なアプリケーションとは

本章で紹介するテクニック

3.2 バージョン管理

利用者が管理しやすくなる

バージョン番号をバイナリに埋め込む

go-latestによる最新バージョン検知

3.3 効率的なI/O処理

バッファリング、コンテンツの取得、ファイルの保存

bufioで入力をバッファリングして扱う

bufioで出力をバッファリングする

go-isattyで出力先が端末かどうかを判別する

複数のソースから同じようにコンテンツを取得する

複数の出力先に一度に書き込む

3.4 乱数を扱う

math/rand、crypto/rand

乱数を扱う例

乱数を扱う標準パッケージ

3.5 人間が扱いやすい形式の数値

go-humanize

表記変換とパーサ

3.6 Goから外部コマンドを実行する

os/execパッケージの活用

外部コマンドを実行する利点

os/execパッケージ

os/execパッケージの使用例

外部コマンドをシェル経由で起動する(UNIX系の環境のみ)

go-shellwordsでコマンドライン文字列を解釈する

3.7 タイムアウトする

パッケージの機能とcontextの利用

使用するパッケージにタイムアウト機能が用意されている場合

contextパッケージの利用

3.8 goroutineの停止

平行処理、非同期実行のハンドリング

goroutineを外部から停止する

3.9 シグナルを扱う

適切にハンドリングするために

Goでシグナルを扱う

独自のシグナルを定義する

 

第4章 コマンドラインツールを作る 実用的かつ保守しやすいコマンドラインツールを作ろう

なぜGoでCLIツールを書くのか?

3つの利点

GoでCLIツールを書く利点

メルカリにおける事例

4.2 デザイン

インターフェースとリポジトリ構成

CLIツールのインターフェース

リポジトリ構成

4.3 flagパッケージ

コマンドラインオプションを活用する

flagパッケージとは

基本的な使い方

いくつかのテクニック

内部実装とカスタマイズ

応用的な使い方

サードパーティ製のパッケージの紹介

4.4 サブコマンドを持ったCLIツール

サードパーティ製パッケージの活用

サードパーティ製のパッケージの紹介

mitchellh/cliの使い方

4.5 使いやすく、メンテナンスしやすいツール

長く利用されるパッケージにするために

使いやすいツール

メンテナンスしやすいツール

 

第5章 The Dark Arts Of Reflection 不可能を可能にする黒魔術

5.1 動的な型の判別

実行時まで型の判別を待つには

型の検出と型アサーションの限界

5.2 reflectパッケージ

型情報の所得と操作

reflectパッケージを使って得られる情報

relfect.Value

型により動作を変える

relfect.Type

structをパースする

5.3 relfectの利用例

ハマらないためのレシピ集

値を動的に生成する

見える範囲・見えない範囲

ポインタとinterfaceの値

Setできる値

reflectでinterfaceを満たしているかどうかの確認

動的なselect文の構築

5.4 reflectのパフォーマンスとまとめ

適材適所で利用するために

reflectと型アサーションの比較

reflectによるソート

 

第6章 Goのテストに関するツールセット テストの基礎と実践的なテクニック

6.1 Goにおけるテストの在り方

「明示」と「シンプル」

ソフトウェアにおけるテスト

Goにおけるテスト

6.2 testingパッケージ入門

テストの実行とテストコードの記述

テストの実行方法

Testable Examples

Unordered output

Examplesをgodocに載せる

6.3 ベンチマーク入門

文字列結合の例で学ぶ

ベンチマークの実行方法

サブベンチマークの利用

6.4 テストの実践的なテクニック

制御フロー、モック、テストカバレッジまで

Table Driven Tests

reflect.DeepEqualを使う

Race Detectorを使って競合状態を検出する

TestMainによるテストの制御

Build Constraintsを利用したテストの切り替え

テストにおける変数または手続きの置き換え

インターフェースをつかったモック

net/http/httptestパッケージ

テストカバレッジ

Goにおけるテストのまとめ

 

第7章 データベースの扱い方 データベースを扱う実用的なアプリケーションを作ろう

7.1 Goにおけるデータベースの取り扱い

ドライバとの付き合い方

database/sqlの働き

7.2 database/sqlを使ってデータベースに接続する

postgresを使ってデータベースを開く

データベース接続の基本コード

アプリケーションのビルド

接続の確認

7.3 Exec命令の実行

テーブルを更新する

テーブルの作成

各データベースドライバの実装の違い

7.4 Query命令の実行

テーブルを読み込む

RowsとScan

単一行はQueryRowを使う

7.5 Goにおけるデータベースの型

Goとデータベースの型の違いを知る

database/sqlパッケージによる型変換

driver.Scannnerの実装

不特定個数の値をScan

NULLをScanする

sql.NullString

7.6 ORMを使ったデータベースの扱い方

gorpを使ったテーブルの操作

ORM

gorpを使ったデータベースの処理

7.7 RESTサーバを作る

GETでテーブルの値を返す

フレームワークecho

コメント一覧を作る

コメント登録処理を作る

画面を作る

Accessマクロ&VBA 開発工房 Office365/2019/2016/2013対応

仕事ごっこ ~その“あたりまえ”、いまどき必要ですか?

関連記事

  1. 新わかりやすいJava オブジェクト指向徹底解説…

    目次Chapter1 クラスの作り方…

  2. みんなのDocker/Kubernetes

    目次Part1 Docker/Kubernetesは何を解決…

  3. WEB+DB PRESS Vol.111

    目次特集1 詳解 Rails 6 新機能…

  4. 運用設計の教科書 ~現場で困らないITサービスマ…

    目次1章 運用設計とは1.1 運用と運用設計…

  5. 神メンタル 「心が強い人」の人生は思い通り

    目次序章 人生の9割はメンタルで決まる「心」は私たち…

  6. LINE BOTを作ろう! Messaging …

    目次Chapter1 チャットボット(B…

  7. Javaビルドツール入門 Maven/Gradl…

    目次Chapter1 ビルドツールの基礎知識1‐1 …

  8. コストゼロでも効果が出る! LINE@集客・販促…

    目次Chapter1 〇2〇プロモーションの切り札LINE…

最近の記事

  1. Microsft .NET C#
  2. れいといちかとまほうのトンネル
PAGE TOP