「Go」は Google によって開発された「軽量・高速・シンプル」なプログラミング言語

GO Go
GO

きょうはシンプルなプログラミング言語、Go 言語を学びます。

Go 言語はどこで使われているかというと YouTube といいますから、実践的で強力なプログラミング言語であるといえますね。

しかも完全にフリーで、かつオープンソースときてますから主要な OS に対応しています。

そうなると Python ではできないことができますね。つまり、他のプログラミング言語の弱点を検討して、現代の言語として作成されているってことでしょうか。

きょうはあなたと、 Go 言語の基本的な操作や動作、作成と保存などについて学びます。

1.GO

はじめてのGO
はじめてのGO
taka
taka

翻訳プログラム?

Go 言語はコンパイラーといって、人間が理解しやすい言語や数式で記述されたプログラムを、コンピューターが直接解読して実行できる機械語に変換する翻訳プログラムが備わっています。さらに、並列処理といって、CPUやパソコンを並べて完全に同時に実行できる処理が備わっています。

1.Google が開発「軽量・高速・シンプル」なプログラミング言語

直接ネイティブコード(機械語)に変換することで高速でコンパイルできます。コンパイルとはプログラミング言語で書かれたソースコードを、コンピュータ上で実行可能な形式(オブジェクトコード)に変換することです。

コードの種類が限られているので内部処理も簡単で易しく、複数の処理を同時にこなせるようになっています。PHP が苦手とする並列処理やエラーチェックが得意なことなどから、PHP に代わる言語として使用されるケースも増えています。

並列処理とは特定の処理を細分化し、複数の処理装置(プロセッサ)上でそれぞれの処理を同時に実行させることです。

大量のデータ処理には並列処理が必要となりますが、goroutine(ゴローチン)やチャネルなどの機能を使うことで CPU への負荷などを気にせずに処理を進められます。

2.書き方が限定されているため、記述の表現に迷わずに開発が進められる

Go 言語は実行が高速で記述とプログラムの確認がすぐに行えるので、なじみやすいのではないでしょうか。

小さな機能を必要に応じて複数組み合わせることで高い機能性を実現していくため、拡張性に富んでいます。開発している OS とは異なる環境向けに実行可能なコードを生成することが可能であるため、ソフトウェアが異なるシステム上でも実行できます。

Go言語は、コードの記述スタイルや構文においていくつかの制約があります。これにより、開発者間でのコードの一貫性や読みやすさが向上し、開発プロセスがスムーズに進むとされています。

  1. 統一されたスタイル: Go言語には公式なコーディングスタイルガイドがあり、コードの書き方やフォーマットが統一されています。これにより、開発者は一貫性のあるスタイルでコードを書くことが求められます。また、コードフォーマッタツール(gofmt)を使用することで、自動的にスタイルガイドに準拠したフォーマットが適用されます。
  2. 明示的な構文: Go言語の構文は意図的にシンプルで明示的に設計されています。これにより、コードの意図が明確に表現され、開発者がコードを読み書きする際に迷うことが少なくなります。
  3. 依存関係管理: Go言語には組み込みの依存関係管理ツールであるGo Modulesがあります。Go Modulesを使用することで、依存関係の管理が容易になり、外部ライブラリのバージョン管理やパッケージの取り込みがスムーズに行えます。
  4. エラーハンドリング: Go言語では、エラーハンドリングが明示的に行われます。エラー処理はコード内に直接組み込まれ、開発者はエラーチェックやエラーハンドリングを忘れることがありません。これにより、プログラムの信頼性が向上し、バグの発見やデバッグがしやすくなります。

これらの要素により、Go言語は明快で一貫性のあるコーディングスタイルを促し、開発者が迷わずにコードを書くことができる環境を提供しています。その結果、開発プロセスがスムーズに進み、他の開発者が理解しやすいメンテナブルなコードを作成することができます。

mika
mika

ただし、この制約は一部の開発者にとっては制約に感じられる場合もありますので、ご了承ください。

3.リソースのコストパフォーマンスも良い

taka
taka

処理は高速,それでいてメモリは1/30。

Java と同様に処理は高速ですが、同じ処理を実行しても使用するメモリは Java の30分の1ですみます。コーディング規約に沿って、ソースコードを自動的に整形してくれる go fmt があり、ソースコードの見た目が整いすごく見やすくなります。また、書き方のルールが厳格なので、記述に迷うことなく開発が進められます。

「リソースのコストパフォーマンスが良い」とは、あるリソース(製品、サービス、システムなど)が提供する機能や性能に対して、その価格や費用が妥当であり、経済的に効果的であることを指します。

具体的には、

  1. 効率性: リソースが効率的に動作し、最小限のリソースで最大の成果を上げる能力があることを意味します。例えば、少ないハードウェアリソースやエネルギーで高いパフォーマンスを発揮するコンピュータシステムは、効率的でコストパフォーマンスが良いと言えます。
  2. 価格: リソースの価格が提供される機能や性能と比較して適正であることを意味します。リソースの価格が同等の機能を提供する他の競合製品と比較して安価である場合、コストパフォーマンスが良いと言えます。
  3. 持続可能性: リソースの使用や維持にかかる総コストを考慮に入れます。例えば、エネルギー効率の高い家電製品は、使用中の電力消費量が少なく、長期的なランニングコストが低いため、コストパフォーマンスが良いとされます。
  4. 品質: リソースが高品質で信頼性があり、長寿命であることも重要です。品質の高い製品やサービスは、故障やトラブルが少なく、メンテナンスや修理の費用が削減されます。
  5. 需要とのマッチング: リソースが必要な要件や目標に適合しているかどうかも重要な要素です。リソースが要件を満たしており、目的に対して適切な機能やパフォーマンスを提供できる場合、コストパフォーマンスが良いとされます。

これらの要素を総合的に考慮し、リソースが提供する価値とその費用とのバランスを評価することで、リソースのコストパフォーマンスが良いかどうかを判断することができます。

mika
mika

価値と費用とのバランスで判断するのね。

次の Web サイトは Go を使っています

メルカリ Freee Java などのプログラミング言語と構文が似ているため、これらの言語の経験があるなら、比較的楽に習得できます。コンパイル時に構文のエラーを指摘してくれるので、何度もトライ&エラーを繰り返せます。

Go のプログラムを動かすためには、Go ディストリビューションのダウンロード&インストール及び、Go ツールを導入する必要があります。

詳しくは公式サイトを参考にしてください。

The Go Programming Language
Go is an open source programming language that makes it simple to build secure, scalable systems.

golang.org Go 言語は Java のようにワークスペースで作成したパッケージを最初に宣言します。最初の package 文は必須です。import 文は、パッケージを文字列で指定します。関数は func で定義し、このサンプルでは関数名を「main」で宣言しています。

文法が理解しやすく機能がシンプルである Go 言語は、Java や C++ などと比べると比較的学びやすいです。

mika
mika

Java や C++ に比べて学びやすいのがいいわ。

2.Go のインストール

GOのインストール
GOのインストール
taka
taka

自分のパソコンにあわせてダウンロードします。

マイクロソフト、Apple、Linux、ソースなどがあるので自分のパソコンに合わせてダウンロードします。 

1.環境変数の設定

Go言語では、環境変数を使ってパッケージのインストール先やプロキシ設定、デバッグモードなどの設定を行うことができます。環境変数の設定方法は、以下のようになります。

  1. シェルの設定ファイルに環境変数を記述する Go言語で使われる主な環境変数には、以下のものがあります。
  • GOPATH: Go言語のパッケージをインストールする場所を指定する。
  • GOROOT: Go言語の実行ファイル(コマンド)がインストールされている場所を指定する。
  • GOBIN: Go言語のコマンドの出力先を指定する。
  • GOOS: コンパイルする対象のOSを指定する。
  • GOARCH: コンパイルする対象のアーキテクチャを指定する。

これらの環境変数は、シェルの設定ファイル(例えば、/.bashrcや/.zshrc)に以下のように記述することで設定できます。

export GOPATH=/path/to/go/workspace
export GOROOT=/path/to/go/root
export GOBIN=/path/to/go/bin
export GOOS=linux
export GOARCH=amd64
  1. コマンド実行時に環境変数を設定する コマンド実行時に一時的に環境変数を設定することもできます。以下のように、コマンド実行前に環境変数を設定してからコマンドを実行します。
$ export GOPATH=/path/to/go/workspace
$ go build mypackage
  1. direnvを使ってプロジェクトごとに環境変数を設定する direnvは、ディレクトリごとに環境変数を設定できるツールです。プロジェクトごとに異なる環境変数を設定する必要がある場合に便利です。direnvを使うには、以下の手順を実行します。
  • direnvをインストールする。
  • プロジェクトのルートディレクトリに、.envrcファイルを作成する。
  • .envrcファイルに、環境変数を設定する。

例えば、以下のように設定します。

# .envrc
export GOPATH=/path/to/project/workspace
export GOBIN=/path/to/project/bin

direnvを有効にすると、プロジェクトディレクトリに移動したときに自動的に.envrcが読み込まれます。

direnvは、ディレクトリごとに環境変数を設定するためのツールです。プロジェクトごとに異なる環境変数を設定する必要がある場合や、プロジェクトごとに異なる開発環境を構築する場合に便利です。

.envrcファイルには、環境変数の設定やスクリプトが記述されます。direnvが有効になっている場合、プロジェクトディレクトリに移動すると、direnvは自動的に.envrcファイルを探し、その内容を読み込みます。読み込まれた環境変数は、現在のシェルセッションで有効になります。

.envrcファイルはプロジェクトディレクトリに存在する限り、direnvが有効な状態であれば自動的に読み込まれます。プロジェクトディレクトリから移動すると、そのディレクトリの環境変数は無効になります。

direnvを使用することで、プロジェクトごとに異なる環境設定を簡単に管理できます。

mika
mika

GO はオープンソースなのね。

あとがき

GOは、Googleによって開発されたオープンソースのプログラミング言語で、以下のような特徴があります。

  1. 簡潔な文法: GOは、C言語をベースにした文法を持ち、シンプルで簡潔な文法を備えています。そのため、学習が容易で、コードの読みやすさと保守性が高くなります。
  2. 高速なコンパイル: GOはコンパイル言語であり、コンパイル時間が非常に短いため、素早くコードを実行できます。また、メモリ使用量が少なく、コードの実行速度も非常に高速です。
  3. 並行処理に強い: GOは、ゴルーチンと呼ばれる軽量なスレッドを使用して並行処理を実現しています。これにより、高速な並行処理が可能で、マルチコアCPUの効率的な活用が可能になります。
  4. ガベージコレクション: GOは、自動的にメモリを解放するガベージコレクションをサポートしています。これにより、開発者は手動でメモリ管理を行う必要がなく、プログラムの品質と安定性が向上します。
  5. オープンソース: GOは、オープンソースの言語であり、世界中の開発者が自由に利用できます。また、開発者コミュニティが活発であり、多くのライブラリやフレームワークが利用できるため、開発効率が高くなります。

以上のような特徴から、GOは高速で並行処理に強く、安定性が高い言語として、Webアプリケーションやサーバーサイドプログラム、ネットワークプログラムなどの領域で広く利用されています。

GO について悩みや疑問がありましたらご自由にコメント欄に投稿してください。(コメント欄はこの記事の最下部です)。いただいたコメントはすべて拝見し、真剣に回答させていただきます。

コメント

何なりとお申し付けください。