20代で転職を検討されている方へ


go言語って何?そのメリットとデメリットをまとめました!

go言語(golang)の特徴とは

2009年にGoogleが発表したプログラミング言語で、歴史は浅いのですが人気・需要が高まってきています。人気と需要が高い理由は、シンプルで使いやすく初学者でも学習がしやすい事と、処理速度が速いことが挙げられます。また、C言語の開発者Ken Thompson氏、UTF-8やUNIXの開発者Rob Pike氏、memcachedの開発者Brad Fitzpatrick氏など、伝説級のエンジニアによって開発されたという背景も人気の理由の1つです。go言語(golang)の代表的な特徴を4つ紹介します。

①シンプル

C言語やJavaと構文が似ているので、これらの言語を書ける人はよりスピーディにgo言語を習得が可能です。go言語ではさらにシンプルで分かりやすい構文・文法となるように注意が払われています。例えば、繰り返し構文はfor文しかなく、while文やdo/while文などはありません。表現方法を制限することで、コンパイルを高速化し、プログラマ毎の表記のばらつきを抑えることができます。

②時代の流れに敏感

go言語はクロスコンパイルや並列処理をサポートしています。例えばMacで開発しててもコンパイル時にOSとCPUアーキテクチャを指定するだけでLinux、Windows用の実行ファイルを作れます。また、軽量スレッドを用いて処理を並行に実施し、同時に実行されているスレッド間でデータをやりとりするしくみが備わっています。

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

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

④処理が速い

go言語はシンプル構造がゆえに、実行時の処理速度はPythonやJavaと比べても単純に早いです。ここで、google app engineのようなPaaS上で動作させる具体的な例を挙げると、一定時間のアクセス・処理がない場合は、余計なCPU等リソースを消費しないようにコンテナが停止します。アクセスがあってコンテナを起動する際、例えばJavaの場合はJVMを起動するのに時間を要します。go言語の場合、クロスコンパイルができることからVM環境は不要のため、VM起動時間は0となって高速にレスポンスを返すことができます。

⑤安全性が高い

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っ紹介します。

①Generics (template) がない

go言語にはGenericsがありません。JavaのGeneric TypesやC++のテンプレートで書けるようなことができません。ただし、配列、mapはサポートされているのでJavaやC++で総称型を使うパターンの9割は解決できる課題です。これはセキュアなメモリ管理を達成するために切り捨てられた機能の一つです。

②継承がない

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

③例外処理がない

例外処理を書かないようにするというのが基本思想です。panic、recoverを使って例外処理と同様なことは実現できますが、気軽に使ってよいものではありません。例外処理を書くと、例外やエラーが発生した際にコードが想定外の順序で実行されてしまったり、処理実行自体がスキップされて困ることがあります。大規模なプロジェクトの中で例外処理を正しく扱うのは困難なため、例外がないことは必ずしもデメリットではありません。

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

go言語は乱用するとプログラムを無意味に複雑にしてしまう機能が排除されています。経験の浅いエンジニアでも簡単に理解し、大きなシステムを構築するのに使えるようデザインされています。ベテランからすると物足りなく感じたり、高度なテクニックが活かせない場合があります。

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

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

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

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

マイナビIT

<ポイント>

  1. 大手企業からベンチャー企業まで多くの企業との強いリレーション
  2. IT業界の業務経験のあるキャリアアドバイザーが徹底的サポート!
  3. マネージャー・管理職など様々な希望条件に合った求人をご紹介!

<メリット>

  1. 業界大手のマイナビが運営しているので、IT・Web業界の大手・中小・ベンチャー企業の求人が豊富
  2. IT業界・Web業界に精通したキャリアアドバイザーが担当

<デメリット>

  1. 大手でキャリアアドバイザーの人数が多いために、一定、質にバラつきは出る可能性があります

<こんな方にオススメ>

  1. エンジニア・クリエイターとして転職を希望している方
  2. 将来的にどの技術や言語が伸びるか、自分のキャリアについてアドバイザーに相談したいという

レバテックキャリア

<ポイント>

  1. 大手企業からベンチャー企業まで多くの企業との強いリレーション
  2. IT業界の業務経験のあるキャリアアドバイザーが徹底的サポート!
  3. マネージャー・管理職など様々な希望条件に合った求人をご紹介!

<メリット>

  1. レバテックキャリアだけの非公開求人や独自情報によって、転職者に合った企業をマッチング
  2. IT・Web業界トップクラスの求人数!

<デメリット>

  1. IT・Web業界が全くの未経験の転職者は対象になりづらいです

<こんな方にオススメ>

  1. IT・Web業界への転職を希望している方
  2. IT・Web業界に詳しく、知見のあるキャリアアドバイザーからサポートを受けたい方

リクルートエージェント

<メリット>

  1. 国内最多の求人数を保有
  2. 転職者の8割以上が登録
  3. 幅広い業界・職種の求人を網羅的に閲覧・紹介してもらえます

<デメリット>

  1. 求人数が多い一方で、転職者の登録数も多いため、1人1人に手厚いサービスが期待できない可能性があります

<こんな方にオススメ>

  1. 「大量の求人を一旦閲覧したい、紹介してもらいたい」という方
  2. 業界最大手の転職エージェントの標準的・平均値的なサービスレベルを最初に知っておきたい方