「Goの特徴やできることを具体的に知りたい」
「Goで開発された国内外のWebサービスを知りたい」
一度は耳にしたことがあるプログラミング言語のGoですが、具体的に何ができて何を得意としているのかを説明できる人は多くはないでしょう。
そこで今回は、下記の内容を解説していきます。
- Goについての基礎知識
- Goでできることや学ぶメリット
- Goが開発に使われたWebサービス5選
今回の記事では、Web系の開発会社を運営しつつもWeb系エンジニアへの転職を目指す人に向けてのプログラミングスクールを運営している弊社が、Goの基礎知識からWebサービスでの活用例まで解説していきます。
この記事を通してGoの知識をより深められるので、ぜひ最後まで読んでくださいね!
Goとは何か?
プログラミングを学んでいる方であれば、Goのことを知っている方もいるでしょう。
しかし、具体的にGoの特徴やできることが何かと言われて、すぐに答えられる人は多くないのではないでしょうか。ここでは、Goの基礎を丁寧に解説していきます。
Goの歴史
GoとはOSの1つであるUNIXの開発に携わったり、LIMBOという言語を開発したロブ・パイク氏と、UNIXの開発に加えてC言語を開発したケン・トンプソン氏の2人によって設計されたプログラミング言語です。
この2人はITエンジニア業界の中でも有名な人物として知られており、効率的かつ生産性のある作業を行うことを強みに、設計・開発された言語になっています。
開発されたキッカケとしては、2009年に主流だったMicrosoft社のプログラミング言語であるC#と比べて、より開発しやすい言語の需要が高まったからです。
というのも、2009年当時ではIT業界では以下のような流れがありました。
- コンピュータによる処理速度の向上
- プログラミングの複雑化
- マルチコアCPUの登場
ITに対する環境が大きく変わったからこそ、違う言語の必要性も高まりました。その結果、C#よりも実行速度や安全性の高いGoが開発されたのです。
Goの特徴
C#が主流の時代はコードが複雑化していたことや、チームで開発したときの共有が難しい課題を解決したのがGoです。Goの特徴は以下の通りです。
- シンプルで記述しやすい
- 大人数で開発しても共有しやすい
- C言語と同じくらいの処理の速さ
- 平行処理に対応している
シンプルで読みやすいことに特化しているため、他の言語では必要な処理を書かなくても実行できる魅力もあります。
またGoは、コンパイル言語のため処理速度はとても速くなります。コンパイル言語とは、簡単にいうとコンピューターが理解できる言葉を直接伝えられる言語のこと。中間言語を挟む必要があるスクリプト言語と比べて、工程が1つ少ないため処理が速くなるのです。
Go公式サイトでも「シンプルで信頼性の高い効率的なソフトウェアを構築できる言語」と紹介されています。
Goを学ぶメリット
強言語を学ぶメリットとしては以下の3つがあります。
- シンプルな言語で学習のハードルが低い
- 他の言語より年収が高い
- 将来性が高い
1つずつ順番に解説していきます。
1.シンプルな言語で学習のハードルが低い
Goは複雑化したプログラミングをシンプルにするために開発されたので、構文がわかりやすく学習コストが低くなっています。
プログラミング言語を学ぶときに、難しい言語であれば習得する時間やハードルも上がります。
その点、シンプルで学習するためのハードルが低いGoであれば習得も早くなるでしょう。
もちろん、習得しやすいと言っても、C言語やJavaの構文と似ているため、ある程度のプログラミング学習経験がないと難しいです。
とはいえ、ある程度プログラミングの開発経験を積んでいる人であれば、習得のハードルは下がります。
2.他の言語より年収が高い
Goを扱えるエンジニアは、他の言語よりも年収が高い傾向にあります。
実際に、フリーランスの求人情報をまとめたサイトによると、Goの月額単価の中央値は80万円ほどで、最高月額単価で200万円と非常に高い金額での募集もあります。
そのため、大きな給料アップを狙っている方であれば、Goを扱えるようになることで一歩近づくのではないでしょうか。
しかし案件を見てみると、最低月額単価は16万円ほどです。最高で200万円なので、Goを扱えると言っても案件の金額幅はかなり広くなっています。
参考:フリーランススタート
- 勤務日数が多い
- Go開発経験が3年〜5年以上と長い
- マネジメントやリーダー経験がある
シンプルに月額単価が大きい案件であればあるほど、エンジニアとしての経験が必要とされています。
とはいえ、会社員エンジニアの平均年収である438万円を超えられる可能性が高い言語のため、高年収を目指したい方にはうってつけの言語かもしれません。
3.将来性が高い
Goの需要は今後ますます高まっていくと予想されています。理由としては、Goは汎用性が高くさまざまなニーズに対応できるからです。
- Webアプリ開発
- Webシステム開発
- ビッグデータ開発
- スマホアプリ開発
- AI(人工知能)開発
Web業界の市場規模は今後も増えていく予想もあり、テクノロジーの発展によりAIやビックデータ、ブロックチェーンなど先端技術に対応できるIT人材の需要も高まります。
フリーランス向けIT求人サイトでも、Goの案件数は1,200件ほどあり、ニーズが高まっていることもわかります。(参考:レバテックフリーランス)
参考:IT人材需給に関する調査
Goでできること
Goでできることは以下の3つになります。
- WebサーバーやWebサービスの構築
- スマホアプリ開発
- ドローン開発
順番に1つずつ解説していきます。
1.Webサービスの設計開発
Goはアプリケーション開発で重宝されます。
その理由としては以下の2つになります。
- さまざまなOS(Windows/Android/Mac/Linux)に対応
- 処理速度が早い
- 並行処理が可能
OSの環境に左右されずに言語が使えるため、場所を選ばずに開発することができます。
また、処理速度が速いという部分では、ネットショッピングの決済処理が早くなったりと、多数のアクセスに対しても素早く正確にこなせたりとユーザー側へのメリットもあります。
以上の点からGoはWebサービスの開発などに活かすことができます。
2.スマホアプリ開発
スマホアプリ開発をするときには、OSごとにプラットフォームが分かれてしまいます。
- iOSならSwift
- AndroidならKotlin
その場合はOSに合わせた言語の習得など少し大変だと感じるでしょう。しかしGoであれば「Go mobile」 といったモバイルアプリを作るためのパッケージを使うことで、Webとスマホを分けてプログラミングする必要がなくなります。
- Go mobile
- Go cloud
- WAF(Web application service)
このようにGoにはスマホアプリ開発が手軽にできるパッケージなども準備されています。
3.ドローン開発
Goは汎用性が高くドローンの開発や操作でも使うことができます。操作方法としては、GoのなかのIoTフレームワークである「Gobot」を使えば可能です。
- ドローン遠隔操作
- ドローンでの自動追跡
- 顔認識プログラミング
トイドローンという簡単なドローンのおもちゃみたいなものにプログラミングすれば、ドローンを細かく動かすこともできます。
tello takeoff pic.twitter.com/vnKgA4U2Pl
— 56 (@awakot_56) December 12, 2019
Goが開発に使われた国内サービス5選
Goを使って開発された国内サービスを5つ紹介します。
- AWA
- メルカリ
- Gunosy
- ぐるなび
- Wantedly
国内で有名なサービスもいくつかありますので、順番に見ていきましょう。
1.AWA
AWAは定額制で1億曲もの音楽が聴き放題になる音楽配信サービスです。開発の場面ではGoとDockerの相性がよく、開発環境から本番環境までフル活用しているとのこと。
音楽市場はサブスクリプション型モデルのライバルも多く、日々市場が成長していきます。つねに新しい技術を採用しながら、過去のシステムの影響を受けないように刷新していくことを目標にしています。
2.メルカリ
誰しもがご存知の通りフリマアプリのメルカリも、Goで開発されています。GoはAndroid/iOS両方に対応していることや、エラーの修正がしやすい点で使われています。
たとえばGoの並行処理能力の高さは、メルカリなど大規模なシステムに活かされるでしょう。具体的な場面で言えば、メルカリが全ユーザーのスマホに定期的にプッシュ通知を送るときにGoが活躍します。
プッシュ通知を送るたびに外部との通信が必要になるため、短時間で大量の発信をすることができるのはGoならではの魅力です。並行処理能力の高さを活かして、ユーザーに適切なタイミングで情報を定期的に届けることができます。
そのほかにもメルカリでは、Webアプリケーション開発や、ユーザの行動ログの分析とサービス改善などをGoで行なっています。
3.Gunosy
Gunosyは、ネット上にある国内外の情報を収集して、各ユーザーが求めているものを届けてくれる情報キュレーションサービスです。サービス開始から2年4ヶ月ほどで、900万以上のダウンロード数を誇ります。
たくさんのユーザーが使用するサービスのため、通信回線の中で転送されるデータ(トラフィック)は膨大なものとなっています。しかし、大量のトラフィックを処理する部分をGoが担っています。
4.ぐるなび
ぐるなびは、飲食店の情報を集めたWebサイトで月間6,000万UU以上のアクセスがある有名なサービスです。Goを使用した例としては、ビックデータの分析を通してユーザの嗜好に合わせたバナー表示をする「属性バナー」に使われています。
処理速度が速いため、バナー表示でページの表示速度が遅くなるユーザーの負担を下げられるのもGoが採用された理由の1つでしょう。
アクセスやデータが膨大になるほどGoの処理速度の速さなどは強みになります。
5.Wantedly
Wantedlyは、ビジネスの情報収集や求人を見つけることができるビジネスSNSです。もともとはRuby on Railsですべての開発を行なっていましたが、今ではGoを採用しています。
WantedlyがGoでの開発に魅力を感じている理由は、静的型付言語だからこその実行スピードの速さや、エラー検出により修正がしやすい点でしょう。
Goで開発された海外サービス5選
Goを使って開発された海外サービスを5つ紹介していきます。
- YouTube
- American Express
- RIOTGAMES
- Dropbox
- Bitly
海外でもあらゆる業界でGoは使われています。1つずつ紹介していきます。
1.Youtube
YouTubeはアメリカ合衆国に本社を置くオンライン動画共有プラットフォームサービスです。Goが使われている部分はYouTubeのサーバー部分になります。
Goには複雑な処理を書かずにWebサーバー構築できる標準ライブラリが搭載されているため、サーバー部分の構築にも役立ちます。
2.American Express
American Expressは「アメックス」の愛称でよく知られているハイステータスカードが特徴のクレジットカード会社です。
American Expressの支払処理システムの中では、大量のトランザクションの処理をする必要があるため、Goを使用して支払いのネットワークを円滑に回しています。
3.RIOTGAMES
大人気FPSゲーム「VARORANT」などコンピューターゲームの開発・販売に携わっているRIOTGAMESでは、JavaとGoをメインの言語として使っています。
Goについては以下のような点で開発に使っています。
- 言語が比較的シンプルなため新たなエンジニアも対応しやすい
- 処理速度が高速でエラーも早くチェックできる
- 大規模で強力な標準ライブラリがある
新たなエンジニアが来ても同じようにコーディングができて共有しやすくなるのは、大規模サービスの開発でとても役立ちます。
4.Dropbox
Dropboxは使いやすさやプライバシーの保護に力を入れているオンラインストレージサービスです。
開発者ブログには、反復と開発を迅速に行えるPythonを使用することにより、成功を収めることができたと書いてあります。
しかし、ユーザーも増えてシステムを拡張する必要があるときにPythonからGoへ切り替えることが決まり、1年間かけてPythonからGoへ移行したそうです。やはり魅力としては、実行速度の速さと並列作業ができることでしょう。
5.Bitly
Bitlyはアメリカで短縮URLサービスを提供している事業者で、Twitterなどの流行りとともに世界中にユーザーを増やしていきました。BitlyがGoを採用しているのは以下の理由です。
- C言語レベルの高いパフォーマンスがある
- シンプルでわかりやすい
- Goを知らないエンジニアでも数週間で慣れる
昔はPythonで記述していたそうですが、いまは全面的にGoを採用しています。
おわりに
今回の記事では、Goの歴史や特徴などの基礎知識から、Goを使用して開発された国内外のWebサービスについて解説させていただきました。
- Goは2009年にGoogle社により開発されたシンプルかつ処理速度の速い言語
- Goは汎用性が高くアプリ開発からAIやドローン開発まで可能
- 使い勝手の良さから多くの企業が導入してエンジニアの給料も高い
Goは比較的新しいプログラミング言語ですが、今後もシンプルかつ使い勝手の良い言語のため需要も高くなっていくでしょう。
弊社では、開発現場が求めるエンジニアになるためのプログラミングスクール「RUNTEQ」を運営しております。この記事を読んで少しでもWebエンジニアに興味を持った方は、ぜひ無料のキャリア相談会へ足を運んでくださいね。