Top▲
マーリンアームズ サポート   翻訳   コンサル   講座   アプリ   コラム

Goプログラミング実践入門
SAU SHEONG CHANG著   武舎広幸+阿部和也+上西昌弘訳

はじめに

1990年代中頃、WWWが登場したのとほぼ同時期にWebアプリケーションも登場しました。当初は静的なページを生成するだけのものでしたが、その後さまざまな機能が実現され、今ではスタンドアロンのものと遜色ないほどのアプリケーションが多数誕生しています。私自身のWebアプリケーションとの関わりも1990年代中頃に始まりました。そして今では、大規模なWebアプリケーションのデザインや開発、管理が主な仕事となっています。その間、数多くのプログラミング言語やフレームワークを利用してきました。Java、Ruby、Node.js、PHP、Perl、Elixir、そしてSmalltalkさえも使ったことがあります。

Go言語に出会ったのは2、3年前のことです。そしてその単純さと直截さが私にとってはとても好ましく感じられたのです。そしてさらに、十分な速度でスケーラブルなWebアプリケーション(やWebサービス)を開発するのに、標準ライブラリだけを使えば済むことに深く感銘を受けました。コードは直感的で理解しやすく、簡単にしかも素早くコンパイルされ、そのままデプロイ可能なひとつのバイナリファイルになります。こうしたすべての要因によって、私はGo言語が大好きになりました。

1990年代中頃から今までにWebアプリケーションの書き方は大きく変わりました。静的なコンテンツから動的なコンテンツへ、サーバから送られてくる単純なHTMLのコンテンツからHTTPを経由して送られてくるJSONデータをもとに生成されるシングルページアプリケーションへと変わってきました。一方で、Webアプリケーションの誕生とほぼ同時にWebアプリケーション用のフレームワークが登場し開発に使われるようになりました。20年後の現在、多くのプログラミング言語が(中には10を超える数の)Webアプリケーションフレームワークをもっています。そして現在開発される多くのアプリケーションが、Webベースのアプリケーションとなっています。

フレームワークはWebアプリケーションの作成を容易にしてはくれましたが、一方でWebアプリケーションの仕組みの詳細を開発者から隠す役目もしました。今日ではWWWの仕組みさえ知らずにWebアプリケーションを書いている開発者さえ多数いるのが現状です。筆者はGo言語はWebアプリケーションのプログラミングの基礎を正しく教える最高のツールだと考えています。Go言語によってWebアプリケーションの開発は再び直接的でシンプルなものになりました。必要なものはすべて用意されています。外部ライブラリを使う必要もなく、ライブラリの依存性に悩む必要もありません。コンテンツやデータはすべてHTTPを介して提供されます。問題になるのはどう行うかだけです。

こうしたことを考えながら、私はこの本の(原著の)出版社であるマニングにアプローチしました。「Go言語のプログラミングの本、Webアプリケーションの書き方をゼロから教えるための本を出版しませんか。標準のライブラリだけを使って」と。マニングの方々は、すぐに私のアイディアを検討し、OKを出してくださいました。実際に本になるまでには少し時間がかかりましたが、この本のベータ版(MEAP: Manning Early Access Program版)に読者の皆さんが寄せてくださったフィードバックも私を勇気づけてくれました。私がこの本を楽しみながら書いたのと同じように、皆さんも楽しみながら読んでくださることを期待しています。

本書について

この本ではプログラミング言語Goとその標準のライブラリだけを使って、ゼロからWebアプリケーションを開発するのに必要な事柄を解説します。ほかのライブラリやその他のトピック(Webアプリケーションのテストやデプロイなど)について解説するページもありますが、Go言語の標準ライブラリのみを用いたWeb開発を解説することがこの本の主目的です。

Go言語に関する基本的な知識を前提としていますので、まだGo言語についてよく知らないという場合は、ほかの書籍やサイトなどで知識を得てからこの本を読むようにしてください。たとえば、GoのWebサイトにある「A tour of Go」(https://go-tour-jp.appspot.com/)など、チュートリアルを提供している無料のWebサイトも数多くあります。

ロードマップ

この本は10の章と付録から構成されています。

第1章ではGo言語を使ったWebアプリケーション開発の概要を紹介し、Webアプリケーション開発のためになぜGo言語を使うのがよいのかを説明します。HTTPの基本を含め、Webアプリケーションについて理解するために重要な概念を解説します。

第2章では典型的なWebアプリケーションをGo言語を使って作成する方法の概略を説明します。単純なインターネットフォーラムのアプリケーションを例に、開発の大まかな流れを説明します。

第3章ではHTTPリクエストの詳細に入ります。net/httpパッケージを使って、Webサーバを構築し、HTTPリクエストをリッスンしてハンドラ関数を使ってリクエストを処理する方法を説明します。

第4章でもHTTPリクエストの処理の詳細を説明します。とくにGo言語がリクエストをどのように処理し、どのように応答するかを説明します。HTMLフォームからデータを取得したり、クッキーを利用したりする方法も解説します。

第5章ではGoのテンプレートエンジン(パッケージtext/templateおよびhtml/template)について詳しく説明します。Go言語が提供するテンプレート関連の各種メカニズムや、Goにおけるレイアウトについても説明します。

第6章のテーマはストレージです。構造体を使ってメモリ内にデータを記憶する方法、CSVやバイナリ形式gobを使ってファイルシステムにデータを記憶する方法、さらにはSQLやSQLマッパーを使ってリレーショナルデータベースにアクセスする方法を紹介します。

第7章ではGo言語を使ったWebサービスの構築法を説明します。XMLおよびJSON形式のデータの生成や解析の方法、Go言語を使って単純なWebサービスを構築する方法を説明します。

第8章ではGoを使ったWebアプリケーションのテスト方法について説明します。ユニットテスト、ベンチマークテスト、HTTPテストなどです。サードパーティのテスト用ライブラリについても簡単に紹介します。

第9章ではGo言語を使った並行プログラミングについて解説します。モザイク写真を生成するWebアプリケーションをGo言語の並行プログラミング機能を使って作成します。

第10章はWebアプリケーションのデプロイについての解説です。スタンドアロンのサーバやクラウド(Heroku、GoogleApp Engine)、さらにはDockerのコンテナにデプロイする方法について説明します。

付録ではGo言語の開発環境を各種プラットフォームにインストールする方法を説明します。