1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めてのGo言語(golang)

Posted at

はじめに

Go(Golang)は、Googleによって開発されたオープンソースのプログラミング言語です。
シンプルな構文、高速な実行速度、強力な並行処理機能を備えており、Webアプリケーション、クラウドサービス、システムプログラミングなど幅広い分野で活用されています。
特に、シンプルでありながらパフォーマンスが高いため、初学者からプロフェッショナルまで幅広く支持されています。

この言語の特徴やメリット、実際の開発事例などを交えながら、Goの魅力について紹介していきたいと思います。

Go言語の特徴

  • シンプルで直感的な構文
    GoはC言語の影響を受けつつ、不要な複雑さを排除したシンプルな構文になっています。

(例)「Hello,World!」の出力

// Javaの場合

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
// Goの場合

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

  • 静的型付けと型推論の両立
    Goは静的型付け言語でありながら、型推論をサポートしているため、型安全性を維持しながらも、煩雑な型指定を減らせます。(コード量を減らし可読性をあげることができる)
    ※型推論=ソースコードから変数や式の型を自動的に推論する機能

  • ガベージコレクション(GC)を搭載
    メモリ管理を自動化するガベージコレクション(GC)が組み込まれており、開発者が明示的にメモリ管理をする必要がありません。

  • 並行処理(Concurrency)が強力
    Goは並行処理を簡単に実装できる 「goroutine」 「channel」 を提供しており、マルチスレッドを意識せずに高パフォーマンスな並行処理を実現できます。

【goroutine】
・他のコードに対して並行に実行している関数
・Go言語の並行処理において、非同期処理を可能にする機能

【channel】
・goroutine間でデータの送受信を行うために使用されるデータ構造
・Go言語に組み込まれた変数の種類のひとつ
・goroutine同士の値をやり取りする通路の役割と実行フローを制御する役割を担う

  • コンパイルが高速
    Goはコンパイル速度が非常に速く、大規模なプロジェクトでもスムーズにビルドできます。

  • 標準ライブラリが充実
    Goの標準ライブラリには、ネットワーク、暗号化、ファイル操作、JSONパースなど、Web開発やシステム開発に必要な機能が豊富に用意されています。

  • クロスプラットフォーム対応
    GoはWindows、Mac、Linuxといった異なるOS向けに簡単にコンパイルできるため、環境に依存しない開発が可能です。

  • オープンソースで活発なコミュニティ
    Goはオープンソースであり、多くの開発者が支援・改善を行っているため、ドキュメントやライブラリが充実しています。

Go言語のメリット

  • ①シンプルな文法で学習コストが低い
    Goは記述量が少なく、初心者でも比較的短期間で習得できます。特に、PythonやJavaScriptのようなインタプリタ言語から移行する際に学習しやすいです。

  • ②高速な処理性能
    CやC++ほどではありませんが、インタプリタ言語(PythonやRuby)と比べて圧倒的に高速です。Web APIやデータ処理を行うバックエンド開発で強みを発揮します。

  • ③並行処理の書きやすさ
    Goroutineを使えば、go func() {} という簡単な記述で並行処理を実装できます。
    これにより、パフォーマンスを意識したスケーラブルな開発が可能です。

  • ④コンパイルが速く、デプロイしやすい
    コンパイルが速いため、開発のフィードバックループが短縮されます。
    また、Goのバイナリはスタンドアロンで動作するため、Dockerやサーバーレス環境との相性が良いです。

  • ⑤信頼性と安全性が高い
    ・型安全性があるため、ランタイムエラーを未然に防げる
    ・メモリ管理を自動化しつつ、高パフォーマンスを維持
    ・並行処理によるデータ競合を防ぐ仕組みが整備されている

  • ⑥ 幅広い用途で利用可能
    ・Webアプリケーション(Go + Gin / Echo フレームワーク)
    ・マイクロサービス(コンパクトなバイナリでデプロイしやすい)
    ・クラウドネイティブ開発(DockerやKubernetesとの相性が抜群)
    ・システムツール・CLI(Goはシングルバイナリのため配布しやすい)
    ・ネットワーク・ブロックチェーン開発(高速な処理と並行処理が活きる)

Go言語の基本構文

Javaと比較しながら紹介していきます。

①変数の宣言

// Javaの場合

int x = 10;
String name = "Alice";
// Goの場合

x := 10          // 型推論でint型と認識
name := "Alice"  // 型推論でstring型と認識

Goは := を使うことで型を省略可能

②関数の定義

// Javaの場合

public class Main {
    public static int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        System.out.println(add(3, 5)); // 8
    }
}
// Goの場合

package main

import "fmt"

func add(a int, b int) int {
    return a + b
}

func main() {
    fmt.Println(add(3, 5)) // 8
}

Goはmain関数の外に自由に定義できる。

③条件分岐(if文)

// Javaの場合

int num = 10;
if (num > 5) {
    System.out.println("num is greater than 5");
}
// Goの場合

if num := 10; num > 5 {
    fmt.Println("num is greater than 5")
}

Goは if num := 10; でスコープ限定の変数を作れる。

④繰り返し(for文)

// Javaの場合

for (int i = 0; i < 5; i++) {
    System.out.println(i);
}
// Goの場合

for i := 0; i < 5; i++ {
    fmt.Println(i)
}

// Goの場合(whileの代わり)
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

Goには while や do-while がなく、for だけで代用します。

まとめ

Goはシンプルでありながら、高速な処理性能と強力な並行処理機能を持つ言語です。
Web開発やクラウド環境での開発、マイクロサービスの構築に適しており、学習コストも低いため、初心者でも取り組みやすく、パフォーマンスの高いシステムを開発できます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?