.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. Go言語とは?シンプルな記述が強みのGo言語の使用方法、特徴について解説

Go言語とは?シンプルな記述が強みのGo言語の使用方法、特徴について解説

  • プログラミング言語
公開日時:   更新日時:
Go言語とは?シンプルな記述が強みのGo言語の使用方法、特徴について解説
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    システム
    エンジニア
    Go言語はどのようなプログラミング言語なのですか。
    プロジェクト
    マネージャー
    Googleによって開発されたオープンソースのプログラム言語です。シンプルで信頼性が高く、効率的なソフトウェア開発を実現することができるという点が特徴です。

    Go言語とは?


    Go言語(Golangとも呼称されます)はGoogleによって開発され、2009年11月に発表されたオープンソースのプログラム言語です。Go言語はシンプルかつ信頼性が高く、効率的なソフトウェア開発を実現することができるという点が特徴です。

    Go言語は汎用的に利用可能な言語ではありますが、特にWebアプリケーションのサーバーサイドの基盤や、エンジニア向けのツールやシステムを構築するのに最適な選択肢です。

    サーバーサイドの言語としては非常にニーズの高まってきている言語で、特にマイクロサービスアーキテクチャに採用されるケースが多いです。

    Go言語はマイクロサービスアーキテクチャに採用されやすい

    前セクションでGo言語はマイクロサービスアーキテクチャに採用されやすいと述べました。そもそもマイクロサービスとはなんでしょうか。

    マイクロサービスとは、1つのアプリケーションを複数のサービスに分割してアプリケーションを構成する手法です。複数のサービスで構築することによって、疎結合かつフェールセーフなアプリケーションを構築できます。

    複数のサービスに分割されていることで、サービス単位での開発・デプロイ・テストを行うことができます。

    特に日本では、Ruby on Railsで実装されたWebアプリケーションをマイクロサービスする際に、Go言語でリプレイスを行うという事例が近年多いです。

    Go言語はコンパイルが必要な言語です

    プログラム言語を大別するとコンパイルが必要な言語(コンパイル言語)と、そうでない言語(スクリプト言語)に分けられます。Go言語は前者のコンパイル言語です。 つまり、ソースコードを実行可能なバイナリ形式に変換する必要があります。

    コンパイルが必要な言語としてはJavaがメジャーなプログラミング言語ですが、Javaと違ってGo言語はOS毎にコンパイルが必要です。(OS毎にコンパイルが必要な点はC言語と一緒です。)

    Go言語は、Mac, Linux, Windowsを問わずに実行させることができますが、それぞれのOS毎にコンパイルを行い実行可能なファイルを用意する必要があるのです。

    上記のコマンドはmain.goというファイルをコンパイルするためのコマンドです。これを実行するとmainという実行可能なバイナリファイルが生成されます。(オプションを指定することでコンパイラが動作しているOS以外で動作するバイナリファイルも生成可能です。)

    Go言語は静的型付け言語です

    Go言語はJavaやC言語、最近流行りのTypeScriptと同様に静的型付け言語です。(RubyやPythonは動的型付け言語です。)

    静的型付け言語は宣言された変数や、関数の引数・返り値の型が予め決まっているプログラミング言語になります。

    上記は簡単な関数の例です。引数と返り値がint型で指定されています。また、変数sumの宣言時にはsumがint型であると指定されています。

    静的型付け言語は、予め型が決まっているため、実行時ではなくコンパイル時に型のチェックが行われます。そのため処理速度が早くなります。また、関数の引数や返り値の型が予め定まっているということで大人数での開発に適している、とも言われています。

    Go言語では型推論が有効になっています

    型推論とは変数の宣言時に明示的に変数の型をしてしなくても、前後の文脈を踏まえて暗黙的に変数の型が決定される仕組みのことを言います。

    前セクションでは、Go言語は静的型付け言語であり、変数の宣言時に型を指定するということをお伝えしましたが、実際の開発では型を指定しての宣言はあまり使いません。なぜかと言うと、Go言語は型推論が有効だからです。

    前セクションではvarを使って変数の宣言をしましたが、以下のように:=を使って宣言と代入を同時に行うことができます。

    nameはstring型と型推論されます。

    また、関数の返り値に対しても型推論は有効です。返り値がint型の関数addNumbersの左辺にsumという関数を用意します。この場合、sumはint型と推論されます。

    動的型付け言語のJavaScriptなどでもこの型推論は有効です。静的型付けのJavaに関しては長らく型推論は利用できませんでしたが、2018年に公開されたJava10からは型推論が利用可能になりました。

    Go言語は静的型付けであり、型推論も有効な言語なのです。

    Go言語はオブジェクト指向ではありません

    Go言語には”オブジェクト”と呼ばれる型はなく、インスタンスを生成して、生成したインスタンスにアクセスして…という方法を採用していません。

    オブジェクト指向に慣れている方はこの点で悩まれる方が多いです。唯一オブジェクト指向に類似した仕組みとして構造体と呼ばれる仕組みが存在します。

    上記はemployeeという構造体を実装した例です。TanakaTaroという構造体を生成し、introduceという関数を実行しています。introduceには引数がないことにお気付きでしょうか。introduceは構造体employeeに付加された関数であり、そのパラメータnameに応じて挙動が変化します。

    このように、構造体に対しては関数を付加できるという仕組みが存在しています。

    Go言語では並行処理が書きやすい

    Go言語は並行処理がシンプルに記載できると評判が良いです。既存のプログラミング言語では並行処理の記述が複雑になりがちですが、Go言語ではそれが解消されています。

    関数を呼び出す際に、先頭にgoを付与するだけで良いのです。

    これを実行すると アプリ起動→取得リクエスト済み…→取得処理完了!!!の順番で表示されます。goを先頭に付与するだけで非常に簡潔に非同期処理を記載できます。この仕組みをgoroutineと呼びます。

    正確に言うとmainもgoroutineの一種です。mainというgoroutineから別のgoroutineを呼ぶことができるのです。

    Go言語にはポインタという概念があります

    Go言語にはポインタという概念が出てきます。ポインタは簡単に言えば、変数が格納されているアドレスのことです。C言語を触ったことのある方なら馴染みがあるのではないでしょうか。

    上記は*を付与するとその変数はポインタ型となり、&によってポインタを取得することができます。上記ではPerson型のポインタを格納するpという関数を宣言し、生成した構造体のアドレスを代入しています。
    システム
    エンジニア
    シンプルで信頼性が高いというのがいいですね。
    プロジェクト
    マネージャー
    年々需要が高まっている言語ですので、この機会にぜひGo言語を勉強してみてください。

    Go言語を取得してエンジニアとしての価値を高めよう

    この記事ではGo言語の特徴について解説しました。Go言語は少し癖のある言語ではありますが、記載の仕方は非常にシンプルです。Webサーバーも数行の記述で実装することができます。

    サーバーサイドの言語として年々需要が高まっている言語ですので、この機会にGo言語を勉強してみるのも良いのではないでしょうか。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Python新着案件New Job