Go言語とは?メリットとデメリットをまとめました!

Go言語とは?メリットとデメリットをまとめました!

    末永雄大 この記事を書いた人

    末永雄大

    新卒でリクルートエージェント(現リクルート)に入社。数百を超える企業の中途採用を支援。2012年アクシス(株)設立、代表取締役兼転職エージェントとして人材紹介サービスを展開しながら、年間数百人以上のキャリア相談に乗る。Youtubeチャンネル「末永雄大 / すべらない転職エージェント」の総再生回数は2,000万回以上。著書「成功する転職面接」「キャリアロジック
    詳細プロフィールamazon
    ...続きを読む

    Go言語(Golang)の特徴とは

    2009年にGoogleが発表したプログラミング言語で、歴史は浅いのですが人気・需要が高まってきています。

    人気と需要が高い理由は、シンプルで使いやすく初学者でも学習がしやすい事と、処理速度が速いことが挙げられます。

    また、C言語の開発者Ken Thompson氏、UTF-8やUNIXの開発者Rob Pike氏、memcachedの開発者Brad Fitzpatrick氏など、伝説級のエンジニアによって開発されたという背景も人気の理由の1つです。

    Go言語(Golang)の代表的な特徴を5つ紹介します。

    1.シンプル

    C言語やJavaと構文が似ているので、これらの言語を書ける人はよりスピーディにGo言語を習得が可能です。Go言語ではさらにシンプルで分かりやすい構文・文法となるように注意が払われています。

    例えば、繰り返し構文はfor文しかなく、while文やdo/while文などはありません。表現方法を制限することで、コンパイルを高速化し、プログラマ毎の表記のばらつきを抑えることができます。

    2.時代の流れに敏感

    Go言語はクロスコンパイルや並列処理をサポートしています。例えばMacで開発しててもコンパイル時にOSとCPUアーキテクチャを指定するだけでLinux、Windows用の実行ファイルを作れます。

    また、軽量スレッドを用いて処理を並行に実施し、同時に実行されているスレッド間でデータをやりとりするしくみが備わっています。

    3.充実した開発環境と豊富なライブラリ

    Go言語は2009年にリリースされた新しい言語ですが、開発を助ける環境が充実しています。

    さまざまなパッケージやツールが最初から用意されていたり,各エディタやツールのためのプラグインなども多く公開され、ライブラリも豊富にあります。このため、すぐに開発を始めることができます。

    4.処理が速い

    Go言語はシンプル構造がゆえに、実行時の処理速度はPythonやJavaと比べても単純に速いです。

    ここで、google app engineのようなPaaS上で動作させる具体的な例を挙げると、一定時間のアクセス・処理がない場合は、余計なCPU等リソースを消費しないようにコンテナが停止します。

    アクセスがあってコンテナを起動する際、例えばJavaの場合はJVMを起動するのに時間を要します。

    Go言語の場合、クロスコンパイルができることからVM環境は不要のため、VM起動時間は0となって高速にレスポンスを返すことができます。

    5.安全性が高い

    Go言語は型宣言が厳格でタイプセーフであることからメモリセーフであり、安全性が高いです。メモリの開放忘れ等も発生しずらく、メモリリーク(開放忘れ)のリスクが低くなります。

    Goエンジニアの年収は?

    2018年のプログラミング言語別の年収ランキングは、1位:Go(平均600万、最大1600万)、2位:Scala(平均600万、最大1300万)、3位:Python(平均575万、1499万)となります。

    需要の高さと習得者が現在少ないことが合わさって、ランキング1位となっています。求人数についても、2017年から1.9倍も増加している傾向があり、今後さらに需要が高まる可能性を持っています。

    Go言語を使うメリット

    開発中におけるメリットと運用が始まってからのメリットに分けることができます。

    開発中のメリットは「コンパイルが速い」「メモリ安全性が確保されている」「妥当で現実的なレベルの型安全性が確保されている」「標準ライブラリが整備されている 」「シンプルでバランスの取れた言語仕様で習得が比較的容易」があり、駆け出しのプログラマでも仕事がしやすいようデザインされている点にあります。

    運用中のメリットは「実行時パフォーマンスが良い」「Dockerなどの素晴らしい大規模プロジェクトでの実績がある」「実行環境としてJVMやインタープリタを必要としないのでデプロイが軽量で済むのと、利用者にランタイムやJavaVMのような追加インストールが不要」があり、システム利用者への負担を減らせるという点にあります。

    Go言語は完成度の高いシンプルな言語ではありますが、そのメリットを最大限に活かしたり、または、誤った設計をしないように工夫が必要です。

    Go言語が業務の中心となっているメルカリでは、毎週金曜日に「Go Friday」という勉強会を開催しています。「Goをどうやって使っていくか」「どう設計すればよいか」といったGo言語を学ぶための勉強会からスタートし、今ではGoogle Cloud Platform全般に関する知見を共有し、知識を深める勉強会となっています。

    Go言語はなぜ批判が多いのか、Go言語のデメリットについて

    Go言語はシンプルさを追求するがゆえのメリットがありますが、そのために削ぎ落した機能や工夫に対する批判やデメリットがあることも事実です。代表的なものを4つ紹介します。

    1.Generics(template)がない

    Go言語にはGenericsがありません。JavaのGeneric TypesやC++のテンプレートで書けるようなことができません。

    ただし、配列、mapはサポートされているのでJavaやC++で総称型を使うパターンの9割は解決できる課題です。これはセキュアなメモリ管理を達成するために切り捨てられた機能の1つです。

    2.継承がない

    Go言語には継承がありません。継承はありませんが、実質的に同じ役割を果たすEmbedという機能があるので、考え方、使い方の違いということになります。

    3.例外処理がない

    例外処理を書かないようにするというのが基本思想です。panic、recoverを使って例外処理と同様なことは実現できますが、気軽に使ってよいものではありません。

    例外処理を書くと、例外やエラーが発生した際にコードが想定外の順序で実行されてしまったり、処理実行自体がスキップされて困ることがあります。

    大規模なプロジェクトの中で例外処理を正しく扱うのは困難なため、例外がないことは必ずしもデメリットではありません。

    4.ベテランプログラマ向けのデザインではない

    Go言語は乱用するとプログラムを無意味に複雑にしてしまう機能が排除されています。経験の浅いエンジニアでも簡単に理解し、大きなシステムを構築するのに使えるようデザインされています。

    ベテランからすると物足りなく感じたり、高度なテクニックが活かせない場合があります。

    Go言語 経験ありの求人一例

    Go言語を使って自社開発をされている企業様より求人募集がきています。

    一例ではありますが、記事中に「Go Friday」でご紹介したメルカリを始め、Gunosyサイバーエージェントといった知名度の高い企業より、Go言語経験者の人の求人があります。経験がある人は是非ご相談ください。

    転職エージェントに頼りましょう

    エンジニア業界の転職は、自分でするよりも転職エージェントを利用したほうが良いです。業界に精通しているキャリアアドバイザーが、あなたの転職活動をサポートしてくれます。

    ただ、キャリアアドバイザーの経験やスキルは人により異なるので、自分と相性の良いキャリアアドバイザーに当たるためには、複数の転職エージェントに登録することをおすすめです。

    定番の大手エージェントの中から2〜3社、特化型のエージェントを1社程度登録し、キャリアアドバイザーに会ってみた上で、サポートを進めてもらうエージェントを選ぶのが良いでしょう。

    すべらないキャリアエージェント

    リクルートをはじめとする人材業界に特化した転職エージェント

    ポイント

    1. キャリアのプロが膨大な求人の中から最適な1社をご提案します。
    2. 内定決定率30以上!(業界平均6%)企業情報や転職活動に必要な情報を提供!
    3. リクルートの面接もう安心!元リクルート社員が徹底分析した対策で内定獲得率UP!

    【無料】転職サポート申し込み

    line

    line

    • すべらないエージェントとは
    • すべらないエージェントの強みとは
    • 転職相談をする
    • 転職ノウハウを受け取る