TechReach エントリー

Go言語のフレームワークはこの5つを押さえよう【2022年版】

Go言語の学習を進めていくなかで、フレームワークの知識は備えておきたいところです。そこで今回は、Go言語の特徴や各種フレームワークの説明に始まり、弊社TechReachの案件例などもご紹介しています。この記事がみなさまのお役立てになれば幸いです。

出典:The Go Programming Language

Go言語の特徴

2009年にGoogleが発表、2012年にリリースされたオープンソースのプログラミング言語です。構文がシンプルで理解しやすく、高速処理ができるようになっています。

また、学習コストが低いため初学者でも習得しやすく、C言語やJavaに構文が似ているため、それらの言語を使ったことがあるエンジニアであれば、それほど苦労せずに使いこなせるようになるでしょう。

Go言語は公式サイトにあるように、高速で信頼性が高く、大規模なソフトウェアを効率的に構築することができます。また、Linux、Windows、MacOS、Android、iOSに対応するクロスプラットフォームになっているため、Webサーバー、Webアプリケーション、スマートフォンアプリの開発に利用でき、ドローンなどの開発もできるようになっています。

具体的なGo言語の特徴としては、コンパイル型言語かつ直接機械語に翻訳をすることができるため、インタプリタ型言語に比べて高速処理ができ、メモリの消費を抑えることも可能です。加えて、逐次処理(順列処理)ではなく並列処理になっているので、この点も高速処理に寄与しています。

その一方で、Go言語はオブジェクト指向のプログラミング言語ではないため、クラスの継承機能がなく拡張性は低くなっています。また、シンプルな作りになっているため、JavaやJavaScriptにあるような例外処理もできなくなっています。

Go言語は比較的新しいプログラミング言語ながら、たくさんの企業に採用されています。既出の画像にあるように、GoogleやDropbox、Metaなどの世界的な企業から、メルカリやぐるなびなどの国内企業までさまざまです。

弊社TechReachの案件では、Javaなどの昔からあるプログラミング言語よりGo言語の案件数は多くありません。しかし、需要が増えつつあるプログラミング言語であるSwiftの案件数が108件、Kotlinの案件数が110件に対し、Go言語は91件の募集と

なっており、新しいプログラミング言語としての需要はある状態です。(2022年6月現在)

また、利用する企業や弊社のGo言語案件数も増加傾向にあるため、今後も必要とされる、将来性の高い言語と判断できます。

知っておきたいGoフレームワーク5選

JavaのSpring FrameworkやRubyのRuby on Rails、PHPのLaravelといったようなプログラム言語別のデファクトスタンダード(業界標準)といえるフレームワークはまだ存在していないようです。しかし、人気のあるフレームワークもありますので、ご紹介していきます。

Gin

出典:Gin Web Framework

2014年にリリースされたWebアプリケーション開発に特化したフレームワークです。同じGo言語の古参フレームワークであるMartiniをモデルにし、作成されました。公式ページでは、Martiniとよく似たAPIを持ちながら最大で40倍高速に作動することが特徴であると公言しています。

その他の特徴としては、ミドルウェアのサポートが豊富で新規作成も簡単にできる、HTTPリクエスト中に発生したエラーの回復や管理をする機能が備わっている、などがあります。Go言語のなかでは次に説明をするEchoと同じく人気のあるフレームワークになります。

Ehco

出典:Echo – High performance, minimalist Go web framework

2015年にリリースされたマイクロフレームワークでGinをモデルに作成されました。公式サイトでは高性能で拡張性が高いフレームワークであると公言しています。

マイクロフレームワークになっているので小・中規模の開発で主に用いられます。また、RESTful APIを用いているため堅牢で安全な情報の交換ができ、HTTP / 2をサポートすることでレスポンススピードも速いといった特徴があります。シンプルで拡張性も高くなっているので、Ginと同じくGo言語では人気のあるフレームワークとなっています。

Revel

出典:Revel – Go Web Framework

2013年にリリースされたフルスタックフレームワークです。JavaとScalaで開発ができるPlay Frameworkに影響を受けて作成されました。RevelはMVC(Model、View、Controller)モデルを採用しているので、データ処理や画面表示、各機能ごとの管理、といった役割を分担して開発することが可能です。加えて、フルスタックフレームワークでもあるので大規模開発に向いています。

その他の大きな特徴としては、ソースコードを記述すると処理をしなくても機械語に翻訳をしてくれる、自動コンパイルを挙げることができます。

Iris

出典:Iris Web Framework

オープンソースのフレームワークでMVCモデルを採用しています。IrisはGinを含む他のGo言語のHTTP/2を用いたフレームワークよりも高速処理ができると公式サイトでは宣言しています。また、クロスプラットフォームになっているため、WebサーバーやWebアプリケーション、スマートフォンアプリと、環境を問わず開発をすることができます。公式ドキュメントが300ページもあるため、Irisでの開発はしやすいといえるでしょう。しかし、日本での開発実績はあまり見受けられなくなっています。

Fiber

出典:Go Fiber

JavaScriptの実行環境であるnode.jsのフレームワークExpress.jsに着想を得たWebフレームワークです。そのため、Express.jsで開発をしたことがある人は比較的容易に習得できるでしょう。メモリの使用量が少なく、簡単に迅速な開発をするために設計されています。また、Express.jsのようなルート定義や静的ファイルの提供などもおこなうことができます。

その他のGoフレームワーク

Go言語は他にもフレームワークがあります。確認していきましょう。

  • Aero

HTTP / 2を用いた高速なWebフレームワークで、モバイルネットワーク向けに最適化されています。インターネット上の情報が英語も含め少なくなっているため、Aeroを用いた開発は学習コストが高いといえます。

  • Beego

MVCモデルを採用しているフルスタックフレームワークで、RubyのSinatraをモデルに作成されています。RESTful APIやO /Mマッピング、logger、自動テスト機能などを備え、大規模開発に特化したフレームワークです。

  • Goa

マイクロサービスの開発のために設計されたフレームワークでRESTful APIに特化しています。また、HTTP リクエストとgRPCリクエストに対応しているため、どちらの通信でも利用できるサービスを実装することができます。 日本語のドキュメントも用意されているため、学習しやすいフレームワークといえるでしょう。

  • Gobot

出典:Gobot is a framework for robotics, drones, and the Internet of Things

ロボットやドローン、IoT(Internet of Things)開発に特化したフレームワークです。公式ページにあるように、Gobotにはハードウェアデバイスに接続するための35個のプラットフォーム、19個のGPIOドライバーなどの拡張可能なシステムがあり、ロボット工学や物理コンピューティングプラットフォームでの利用ができるようになっています。

  • Gocraft

高速かつ効率的に動作をするWebフレームワークです。アプリケーションやプログラムがクラッシュ(異常終了)してもコンピューターの処理が失われない機能があります。

  • Martini

Ginのモデルになった、モジュール形式のWebアプリケーションを素早く作成するためのフレームワークです。Go言語の初期によく利用されていました。しかし、現在ではサポートを終了しています。

Go言語のフレームワーク案件例

弊社TechReachでのGo言語案件数は91件で、これまでに紹介したフレームワークのスキルを求めるものは4件あり、Gin、Ehco、Revel、Goaとなっています。業務内容はフロントエンド開発が1件、バックエンド開発が3件で、いずれも自社システムのプラットフォーム開発事業となっています。報酬は60万円〜80万円で、平均単価は73万円です。

弊社のGo言語案件はシステムエンジニア、あるいはバックエンドエンジニアの業務内容のものが多いので、上記4つの案件では、Go言語に追加してGo言語のフレームワークのスキルを求めるかたちになっています。

まとめ

Go言語ではデファクトスタンダードと呼べるフレームワークはまだ登場していません。そのため、Go言語の案件でフレームワークのスキルを求めるものは少なくなっています。そのような点から、まずはプレーンなGo言語のスキルを身に付け、今後有力なフレームワークが出てきた際に注力をするほうが効率よくスキルアップができると考えられます。

しかしながら、弊社案件でも少なからず既存フレームワークの募集はありますので、差別化を図るために何かしらのフレームワークを覚えるといった戦略を取ることも可能です。

この記事を参考にし、ご自身の状況に合わせた学習プランを組んでいただければ幸いです。

関連記事

サービスにご興味のある方は「エントリー」へお進みください。