翔泳社では4月14日にGo言語を基礎から学べる『スターティングGo言語』を刊行しました。マルチプラットフォームで動作するGoは、近年サービス開発に採用されることが増えてきたため、興味がある方も多いのでは? ぜひこの機会に学んでみてください。
『スターティングGo言語』は、すでにほかのプログラミング言語で経験を積んだ方が、新たにGoを学ぶことを前提とした1冊です。2009年にGoogleがリリースしてから7年、オープンソースの言語としてさまざまな改良がなされてきたGoですが、近年は開発言語としてトレンドになるなど、その簡潔性や生産性の高さが注目を浴びています。
Goの大きな特徴は、「ネイティブコードへコンパイルされること」と、「マルチプラットフォームで動作すること」でしょう。Goプログラムを動かすうえでランタイムのような実行環境は不要であり、実行ファイルは特に何の準備も必要なく、そのまま実行環境上で動作します。
また、OSやCPUによる実行環境の差異をほぼ完全に隠蔽しているので、Goの標準実装のみでプログラムを作成するのであれば、実行するプラットフォームの差異に気を配る必要はありません。さらに、OS環境へも非依存で、最も標準的な共有ライブラリにすら依存しない実行ファイルを生成します。このため、共有ライブラリのバージョン変動に伴う動作不良のような問題をあらかじめ回避しているといえます。
本書を読み進めるうえで、すでに習得しているプログラミング言語の知識が役に立つのは間違いありません。主要な言語での開発を経験している方は、ぜひ著者による指針を参考にしてみてください(「はじめに」より抜粋)。
C/C++
GoはCの得意領域を完全に代替するものではありませんが、多くの面で「改良されたC」と見なすことができます。厳密に定義された多数の基本型、パッケージによる名前空間の導入、ガベージコレクターによるメモリ管理といった、Cのみでは実現が難しい多くの機能が備わっています。
C経験者はぜひ、Goのデータ型や文法にある程度習熟したところで、豊富なパッケージを活かした実用的なGoプログラムを書いてみてください。ひとたびGoによる開発効率を味わえば、さまざまな領域に応用できる可能性を感じることができるはずです。
Java/C#
Java/C#開発者がGoを学ぶ意義は、ずばりプログラミングについての「パラダイムの転換」です。
Goはオブジェクト指向言語では「ありません」。オブジェクト指向プログラミングの恩恵を当たり前のものとして享受している開発者には、ときには手足を縛られたような不自由さを感じることもあるでしょう。
しかし、オブジェクト指向機能がなくとも実用的なプログラミングは可能なのです。近年、「関数型プログラミング言語」 が脚光を浴びる機会が増えてきましたが、こういった状況が出てきたのも、「オブジェクト指向は必ずしもプログラミングの本質ではない」という認識が広まり始めているからでしょう。
「オブジェクト指向」が間違っていたという話ではありません。「オブジェクト指向以外」のパラダイムで構成されたプログラミング言語を選択してもプログラミングは可能であり、場合によっては効率的であり得ると認識することが、今後より重要になっていくと考えられるのです。
PHP/JavaScript/Ruby/Python
Goは「Cで得られる実行速度」と「Pythonで得られる開発速度」の両方のメリットを目指したプログラミング言語です。データに厳密な型があるとはいっても、たいていの場合は型の記述を省略することができ、スクリプト言語 に近い軽快なコーディングが可能です。
一般にプログラムのコンパイルという作業にはさまざまな設定や準備が必要になりますが、Goであれば、書いたプログラムを気軽に実行したり、複雑な設定が無用なビルド環境を構築することができます。プログラムの低レベルな領域への知識は、プログラムを書き進めるうちに自然と身についていくでしょう。
スクリプト言語は手軽な反面、ランタイムのバージョンやライブラリのバージョンの差異、Linuxであれば動作するがWindowsではそもそも動かないなど、環境の問題に左右されることが多く、ポータビリティに悩まされることがあります。このような問題もGoであればほとんど解決できます。
スクリプト言語とは少し異なる「実用性の高い手軽さ」を身につけて、より多くの課題を解決できる開発者を目指しましょう!
この記事は参考になりましたか?
- この記事の著者
-
渡部 拓也(ワタナベ タクヤ)
翔泳社マーケティング課。MarkeZine、CodeZine、EnterpriseZine、Biz/Zine、ほかにて翔泳社の本の紹介記事や著者インタビュー、たまにそれ以外も執筆しています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です