こんにちは、ITプロマガジンです。
Go言語(golang)今時のプログラマーであれば知っておきたいプログラミング言語の1つです。
Googleにて開発が進められていることもあり、今後、C++やJava、Rubyに続く言語として目にする機会が増える可能性は極めて高く、それらの言語がGo言語にリプレイスする可能性すらもあります。
この記事では、Go言語でできることや特徴、将来性について詳しく解説します。これからGo言語を学ぼうと考えている方や、Go言語のスキル習得を考えているプログラマーの方はぜひ参考にしてください。
ドンピシャ案件の探し方
「案件はたくさんあるはずなのに、なかなか自分の望む案件が見つからない…」
エンジニア市場は売り手市場であるものの、いまだに正しいマッチングノウハウが確立されておらず、多くの方が案件探しに苦労されています。
ですが、現在の市場感や企業側に刺さる経験・スキルを理解し正しく案件探しをすれば、誰でも自身のバリューを活かし単価を伸ばすことができる、というのも事実です。
ITプロパートナーズでは、
・9割がエンド直案件のため、高単価
・約6割が週3-4案件のため、柔軟に働ける
・事業会社の自社開発案件が多い
などの魅力的な案件を数多く保有し、マッチング能力の高い即戦力エージェントが完全サポートします。
初めてのフリーランス、情報収集段階でも大丈夫です。あなたの働き方にマッチし、単価も高く、最もバリューを発揮できる案件を探しませんか?
目次
Go言語とはどんなプログラミング言語?
Go言語とは、2009年にGoogleが発表した比較的新しいプログラミング言語です。C言語の開発者ケネス・レイン・トンプソン(Kenneth Lane Thompson)氏とUNIXの開発者ロバート・C・パイク(Robert C Pike)氏が開発に携わっています。
Go言語の特徴は、シンプルなコードで設計ができ、高速処理が可能であること。「YouTube」や「ぐるなび」などさまざまなITサービスに用いられています。
Go言語の歴史
Go言語は「プログラミングは高速かつ生産的であり、何よりも楽しいものであるべきだ」という考えのもと、プログラミング環境の改善を目的として開発された言語です。
当時、コンピューター処理速度の向上やプログラミングの複雑化など、変化する環境に対応する言語が求められていました。そのような状況でGo言語は、UNIXを構成する言語としてC言語を生み出した開発者ケネス・レイン・トンプソンと、UNIX・Plan9・Inferno・Limboを開発したロバート・C・パイクによって2009年に開発を発表。Go言語は、まさにレジェンドITエンジニアたちによって開発された言語です。
2012年にリリースされ、現在もGoogleによって頻繁にアップデートが続けられています。
他言語との違い
Go言語はC言語の構文をベースとしつつも、シンプルな記述が可能です。公開されている仕様書もシンプルで、プログラミング初心者にとって習得しやすい言語といえるでしょう。
コードの実行前に機械語へ変換できるコンパイラ言語は処理速度の速さが特徴ですが、Go言語は中間言語への変換が不要で機械語に直接変換ができます。処理速度の速さだけでなく、メモリの消費を抑えられる点は他の言語にはないメリットです。
さらに「並行処理(一定期間内に複数の処理を順不同に実行)」と「並列処理(同時に処理を実行)」の両方が可能な点も他言語にはあまり実装されていない特徴。一方で「例外処理(エラー処理)」や「Generics(汎用的なクラスやメソッドを作る機能)」、コードの拡張性を高める「継承」は実装されていません。
Go言語の代表的なフレームワーク
Go言語にはさまざまな特徴を持つフレームワークが用意されています。代表的なフレームワークを4つ紹介します。
- Gin
- Echo
- Revel
- iris
Ginは、Go言語が登場した当初からあるフレームワークです。軽量かつ処理スピードの速さ、パフォーマンスの高さからWebアプリケーション開発に向いています。
EchoはGinをモデルに作成されたマイクロフレームワークで、拡張性とパフォーマンスの高さが特徴。小・中規模のWebアプリケーション開発に最適です。
Reveはフルスタックフレームワークで、Model View Controller(MVC)モデルが取り入れられています。
irisもMVCを採用しており、Webサーバーやアプリケーションなどの開発に適したフレームワークです。Go言語のフレームワークについては、以下の記事で詳しく紹介していますのでご覧ください。
Go言語の特徴・メリット
Go言語はWebサーバー・アプリケーションを意識し、ハードウェアリソースも配慮されたプログラム言語です。ここでは、Go言語の特徴やメリットについて解説します。
コードの記述がシンプル
Go言語は、コードの記述量が少なくシンプルに開発されています。さまざまな言語の優れた点を集めて開発されたこともあり、誰が見ても分かりやすいように設計された言語なのです。
プログラマーごとの記述方法にばらつきが少ないため、複雑なシステム開発に適しているといえます。初心者が学びやすく、C言語やJavaの使用経験があるエンジニアであればGo言語の習得も難しくはないでしょう。
高速な処理ができる
コンパイラ言語のため高速処理が可能な点もGo言語の特徴です。コンパイラ言語とは、プログラミングのコードをコンピューターが理解できる言語に翻訳してから処理を実行するための言語を指します。
Javaなどは中間言語を経て処理を実行する二段階方式であるのに対し、Go言語は直接機械語へ翻訳します。そのため他言語より処理速度が速く、メモリリソースの消費量を抑えられるメリットもあるのです。
また、並行処理と並列処理の両方が備わっている点もGo言語の特徴といえるでしょう。並行処理は複数のCPUを効率よく使い、一定期間内にいくつもの処理を行うことで処理速度を向上させる仕組みです。並列処理とは関連する複数の仕事を同時に行う機能です。いずれもWebサーバー・アプリケーション開発において欠かせない機能です。
メモリの安全性が高い
メモリの安全性が高い点もメリットとして挙げられます。理由は、Go言語にはエラーが発生しやすい「ポインタ演算機能」が備わっていないため。ポインタ演算機能とは、整数を足したり引いたりしてポインタ同士で計算する機能です。
ポインタ演算機能は、プログラムがメモリを取り扱う際にはさまざまなエラーを起こす場合があり、サイバーセキュリティ上の課題となっていました。また、メモリを操る悪意あるウィルスも多いためGo言語では「ポインタ演算機能」を排し、セキュアなメモリ管理を実現しています。
Go言語の弱点・デメリット
Go言語の弱点やデメリットについても確認しておきましょう。
Genericsの情報が少ない
1つがGenerics(ジェネリック)の情報が少ない、という点です。
データ型には整数型や文字列型、配列型などさまざまな種類がありますが、Genericsとはこういったさまざまなデータ型を同じコードで処理できる機能です。従来Go言語ではセキュアなメモリ管理を実現するためにこのGenerics機能は切り捨てられていました。つまり、メモリ管理機能として、「変数の中身にどういったデータ型が入るのか明らかにしなさい」というルールがあったのです。
2022年3月のリリース(Go 1.18)でこのGenericsが実装され、コードの書きやすさは向上しましたが、一方でGo言語のなかでは比較的新しい機能ということもあり、現時点(2023年3月)では該当の参考情報は多くありません。
継承機能がない
継承機能がない点もGo言語のデメリットといわれています。継承とは、オブジェクト指向を構成する概念の1つで、基本のクラス(親)を発展させて新たなクラス(子)を作るという考え方です。Go言語にこの考え方はありませんが、実質同じ役割を果たす「埋め込み(Embed)」という機能があります。
そもそもGo言語は、オブジェクト指向的な使い方ができる言語ではありますが、開発元のGoogleから明確にオブジェクト指向型プログラミング言語だと説明されたことは一度もありません。公式ドキュメントには「Is Go an object-oriented language?」という問いに対して「Yes and no」と記載されています。
オブジェクト指向プログラミングと概念や用語が多少異なるため、慣れるまで戸惑う方が少なくないのも確かです。
三項演算子がない
Go言語には、三項演算子もありません。三項演算子とは、3つの被演算子を持った演算子のこと。「条件演算子」とも呼ばれています。
Go言語の公式Q&Aによると、三項演算子がない理由を「言語の設計者によって非常に複雑な式を作成する操作を頻繁に見ていたため」と説明。三項演算子はコード全体をすっきりとさせるには便利ですが、重ねてネスト(入れ子)が可能なため複雑になればなるほど分かりにくく、可読性が低下するという欠点があります。
そのためGo言語では三項演算子の採用が見送られ、記述は長くなりますが明確なif〜else文が採用されています。
例外処理ができない
Go言語では例外処理もできません。例外処理とは、プログラムを妨げるエラーが発生した際に対応する仕組みのこと。Go言語は例外処理を書かないことを前提に設計されているため、例外処理が書けないようになっています。
例外処理が実行されると想定外の動作をするケースもあり、基本的には例外処理を書かないことが理想です。そのため例外処理ができないという点は、一概にデメリットにはならないとも考えられます。
Go言語でできること・作れるもの
Go言語はLinux・macOS・Windows・Android・iOSなど幅広いOSに対応したマルチプラットフォームです。汎用性が高い言語ですが、どのように活用されているのでしょうか。Go言語でできることや作れるものについて説明します。
Webサービス開発
Go言語はOSを選ばないマルチプラットフォーム対応のため、Webサービス開発に適した言語です。前述の通り、処理速度の速さや並行処理が可能であることから、Webメディア・ECサイト・自社プラットフォームなどさまざまなサービスに活用されています。
例えば、海外ではYouTubeやDropbox、国内においてはメルカリやWantedlyなどがGo言語を使用して開発されたサービスです。ITプロパートナーズでもGo言語の副業・フリーランス案件が募集されています。
以下は証券会社のシステム開発業務の案件です。新規サービス構築に伴う設計などが主な業務で、週5日勤務・想定月収90万円となっています。
モバイルアプリケーション開発
Go言語は、モバイルアプリケーション開発にも適しています。スマートフォンもOSごとにプラットフォームが異なりiOSはObjective-C/Swift、AndroidならKotlinが開発言語として推奨されています。
しかし、Go言語には「Go mobile」「Go Cloud」「WAF(Web Application Service)」などアプリケーション開発向けのツールが配布されているため、Webとモバイルを分けることなく手軽にアプリケーション開発が可能です。
また、Go言語はエラーの検出性が高く、改修しやすい点もアプリケーション開発に適している理由の1つ。以下は、ソーシャルゲームアプリの開発案件です。週4日勤務・リモート可で想定月収70万円が見込めます。
ドローン・IoT開発
ドローンやIoT開発にもGo言語が役立ちます。Go言語で公開されている「Gobot」というIoTフレームワークを利用することで、ドローンの遠隔操作・自動追跡、顔認識プログラミングなどロボットやドローンを制御するプログラムの実装が可能です。
また、フレームワークには相互通信機能があるため、遠隔操作やデバイス間で相互情報交換をするIoT開発にも使用できます。
ITプロパートナーズはGo言語によるドローンを活用したソリューションアプリ開発案件も掲載しています。週3日勤務・リモート可で、想定月収は70万円です。
API開発
API開発もGo言語でできることの1つです。APIとは「Application Programming Interface」の頭文字をとったもので、アプリケーションやソフトウェアとプログラムをつなぐインターフェースのこと。
同時アクセスの可能性が高いAPIの環境では、Go言語の処理速度の速さや並行処理が可能であることが役立ちます。開発におけるバグの発生も抑えやすく、コードがシンプルな点もAPI開発に適している理由といえるでしょう。
CLIツールの開発
Go言語はCLIツールの開発でも活躍します。CLIとは「Command Line Interface」の頭文字をとったもので、コマンドを実行するツールのことです。
アプリケーションのなかにはCLIを使用して動作させるものがあり、実行環境に合わせた個別の対応が必要でした。しかし、クロスコンパイル機能があるGo言語はインターフェースによる互換性や依存関係などを考慮する必要がなく、環境に左右されないためCLIツールの開発が行いやすい言語といえます。
Go言語エンジニア年収
ITエンジニア向け転職・就活・学習サービスを提供する企業がITエンジニア・プログラミング学習者を対象に実施した調査によると、転職市場におけるGo言語の年収は約659万円でした。同調査では平均年収が3番目に高い言語ということです。
企業ニーズが高い一方で、比較的新しい言語のため対応できるエンジニアが少ないことから受注するチャンスも大きい言語といえるでしょう。ITプロパートナーズで検索したところ、2023年3月現在のGo言語案件数は500件近くにのぼりました。
週4日〜5日勤務の単価相場は60万〜90万円、副業として稼働できる週2日〜3日では50万〜70万円が多い印象です。副業としても十分な収入が見込めます。
Go言語で開発された具体的なサービス・アプリ・製品例
Go言語はさまざまなサービスで使用されているとお伝えしました。以下は、Go言語で開発されたサービスやアプリの一例です。
- AWA
- Gunosy
- ぐるなび
- Pairs(ペアーズ)
- メルカリ
- Wantedly
- pixiv
- American Express
- YouTube
- Netflix
例えば、国内外の情報を配信するキュレーションメディアのGunosyでは、広告配信システムにGo言語を採用。国内最大級のマッチングサービスであるPairs(ペアーズ)は、Web APIをGo言語で実装しています。
さらにクレジットカードのAmerican Expressは、大量のトランザクション処理を必要とする支払処理システムにGo言語を活用しており、オンライン動画共有プラットフォームとして知られているYouTubeのサーバーもGo言語によるものです。
未経験者向けのGo言語の学習方法
ニーズが高いGo言語ですが、未経験者の習得は可能なのでしょうか。ここからは未経験者向けにGo言語の学習方法について紹介します。
独学する
1つ目の学習方法は独学です。具体的には次の2パターンが考えられます。
- 学習サイト
- 書籍
手軽にGo言語を学びたい方には学習サイトがおすすめです。インターネットで検索すれば無料の初心者向けサイトが見つかり、費用をかけずに学習できます。
書籍を用いた学習方法は、順序立てて学べる点がメリットです。自分の学習レベルに合った書籍を選ぶとよいでしょう。
おすすめの学習サイトや書籍については後述しますが、ただ読んで知識を得るだけではGo言語を習得したとはいえません。Go言語の動作環境を整えたうえで、実際にシステムを開発してみることが大切です。
スクールに通う
プログラミングスクールに通う方法も1つの手です。プログラミングスクールはエンジニアを講師として採用しているため基礎知識を体系的に学べ、実務レベルのスキルが短期間で身につきます。
また、疑問点をすぐに解消できる点もメリット。受講生同士の交流やサポートが充実していれば、独学よりもモチベーションを保ちやすいといえるでしょう。以下はGo言語を学べる主なスクールです。
- ソフトキャンパス
- Progate(プロゲート)
- CODEGYM Monthly(コードジム マンスリー)
通学受講とオンライン受講が選べるなど、ライフスタイルに合わせた学習が可能です。
Go言語入門者におすすめの学習サイト・書籍
「プログラミングスクールに通学する時間がない」あるいは「あまり費用をかけたくない」という方は、独学がおすすめです。Go言語入門者におすすめの学習サイトや書籍を紹介します。
学習サイト
独学におすすめの学習サイトとして3つ紹介します。
- A Tour of Go
- ドットインストール
- gihyo.jp
それぞれの特徴について見ていきましょう。
A Tour of Go
「A Tour of Go」はGo言語公式の日本語訳サイトです。Go言語のインストール方法やコードの記述方法などを学べ、チュートリアルをWebブラウザ上で実行できます。実際に「Hello, 世界」でGo言語を体感してみましょう。
ドットインストール
ドットインストールは、簡単なゲームを作成しながらGo言語の基礎を学べる学習サイトです。ユーザー登録が必要になりますが、初心者向けの動画コンテンツが無料で閲覧できます。プレミアム会員向けの有料コンテンツもあり、1動画あたり再生時間が3分以内と短いため手軽にGo言語を学べる点が魅力です。
gihyo.jp
ITエンジニア向けの情報サービスサイト「gihyo.jp」内に掲載されている、Go言語の入門記事です。Go言語の環境構築から基本文法、並行処理までを分かりやすく解説しています。
書籍
書籍で学習したい方には、次の本がおすすめです。
- 改訂2版 基礎からわかる Go言語
- たった1日で基本が身に付く!Go言語超入門
- スターティングGo言語
以下で順番に紹介します。
改訂2版 基礎からわかる Go言語
「改訂2版 基礎からわかる Go言語」はGo言語の基礎から応用までを解説した1冊。基本的な構文を押さえられるため、初心者の学習本としてぴったりです。
標準ライブラリの逆引きリファレンスも役立ちます。Go言語の全体像を把握する際におすすめの書籍です。
たった1日で基本が身に付く!Go言語超入門
「たった1日で基本が身に付く!Go言語超入門」は、環境構築からGo言語の基礎について網羅的に解説している本です。図形が豊富でカラフルに作成されているなど読みやすい工夫が施されています。
文法の説明に合わせてサンプルプログラムをステップアップ式に拡張していくなど、初心者に優しい構成です。
スターティングGo言語
「スターティングGo言語」は、Go言語をこれから学ぶ方に向けて基本的な構文から特徴的な機能、開発ツール、使用頻度の高いパッケージの使い方まで幅広く解説した本です。コード例を使って詳しく説明されており、実装イメージを確認しながら学べます。巻末に付属されている標準ライブラリのパッケージカタログもおすすめです。
Go言語のインストール方法
Go言語の開発環境を整えるにあたって、ファイルは公式サイトからダウンロードできます。OSごとにファイルが異なりますので、自分のパソコン環境に合ったファイルを選択してください。手順は以下の通りです。
- 公式サイトからファイルをダウンロードする
- ダウンロードしたファイルを開く
- ダイアログに従って「NEXT」をクリック
- ファイルのインストール先を確認し、「NEXT」をクリック
- 「Install」をクリックしてGo言語をインストールする
- 「Finish」でインストール完了
完了後はコマンドプロンプトを使って、正しくインストールされているかを確認します。コマンドプロンプトを起動して「go version」と入力し「go version go1.20.2」などとバージョン名が表示されれば問題なくインストール済みです。
Go言語の将来性は?
GitHubが公開した統計データ「The top programming languages」によると、「The fastest growing languages」(最も急速に成長している言語)のランキング5位にGo言語が挙げられていました。
2023年3月現在のGo言語案件は、ITプロパートナーズで約500件。副業として携われる週2日~3日・リモート可の条件で、バックエンドエンジニアやサーバーサイドエンジニアなどを募集しています。レバテックフリーランスでは1,484件のGo言語案件がヒット。フリーランスエンジニアとしての稼働が見込める週5日の案件が最も多く見られました。
Go言語は、最新テクノロジーと親和性が高く人気が高まっている言語ですが、エンジニアが不足している状況です。今後もシェアは伸びることが期待できるといえるでしょう。
Go言語の仕事・案件の探し方
Go言語の仕事を始めるには、いくつかの方法があります。
- 副業・フリーランスエージェントを利用する
- クラウドソーシングやスキルシェアサービスを利用する
- 求人サイトで探す
- SNSを活用する
Go言語の仕事は副業でも始められますので、週2日~3日稼働の仕事やすきま時間で作業できる案件を探すとよいでしょう。いずれの方法もGo言語の知識はもちろん、他言語のスキルや実務経験が必要です。
特にエージェントサービスは、即戦力を求める傾向にあるため高いスキルや実績が必要になりますが高報酬が見込めます。実務未経験の場合は、クラウドソーシングやスキルシェアサービスの利用がおすすめ。自作ツールなど何らかの実績を示せれば、案件を受注できる可能性があるかもしれません。
まとめ
Go言語は今後利用されるシーンの拡大が期待されており、副業やフリーランス向けの案件も確実に増えてきています。新たな言語を習得しておきたいと考えている方は、コードがシンプルで将来性があるGo言語を学んでおくと役立つのではないでしょうか。
副業やフリーランスとしてGo言語案件を探したい方は、ITプロパートナーズをぜひご利用ください。ITプロパートナーズは、希望や条件に合った案件を専属スタッフが紹介するエージェントサービスです。
週2日~3日・リモートワーク可の働きやすい案件を取りそろえており、直接クライアントと契約するため高単価が見込めます。
- 高額案件を定期的に紹介してもらいたい
- 週2日、リモートワークなど自由な働き方をしてみたい
- 面倒な契約周りはまかせて仕事に集中したい
そのような方はぜひ、ITプロパートナーズをご利用ください!
まずは会員登録をして案件をチェック!