【漫画でIT入門】とあるIT企業の社員活動日誌 第25話「プログラミング学習のすゝめ⑪ Go言語とは?特徴と出来る事」
パソコンを使う人のありそうでなさそうなお話や、ガジェットのお話を漫画で紹介させていただくコーナーです。
とあるIT企業に務める彼女たちは日々楽しく真面目に業務に励んでいます。その中で、起こったハプニングや困った事などを活動日誌を通して覗き見していきましょう。
※当ブログは、アフィリエイトプログラムに参加して商品を紹介しております。当ページのリンクを介して商品を購入すると著者に収益が発生することがあります。
【漫画で入門】「とあるIT企業の社員活動日誌」各話一覧はこちら
目次
Go言語とは?
Go言語は2009年にgoogleのエンジニアであるロバート・グリースマ、ロブ・パイク、ケン・トンプソンによって設計・開発されたプログラミング言語です。
主な特徴としては、静的型付け、C言語の伝統に則ったコンパイラ言語、メモリ安全性、ガベージコレクション、構造的型付け、CSPスタイルの並行性などが挙げられます。
Go言語のコンパイラ、ツール、及ぶソースコードは全てフリーかつオープンソースの言語であり、開発環境の構築は容易に出来ます。
※ちなみにGo言語のマスコットキャラクターは「ホリネズミ」。由来は英語でGopherの表記であり、頭のGoから来ています。2018年4月に旧ロゴ(Gopherマスコット)からテキストと3本の直線からなるデザインに変更されました。
Go言語設計当初の構想
・JavaやC++のように静的型付けであり巨大なシステムでもスケールする
・RubyやPythonなどの動的な言語のように生産性が高く、リータブルであり、過度なボイラープレートが必要ない
・IDE(統合開発環境)が必須ではないが、十分にサポートする
・ネットワーク及びマルチプロセッシングをサポートする
これらの設計構想からも分かるように「シンプルなコードによって大規模開発でも問題が起きにくく、生産効率を高める」為に開発された言語であることが分かります。
後のインタビューなどでは3人の開発・設計者全員が新たな言語を開発するモチベーションとしてC++が好きではない事を共有していました。
Go言語の特徴とは?
Go言語の主な特徴については前述でも触れた通りになります。
静的型付け、コンパイル言語、メモリ安全性、ガベージコレクション、構造的型付け、CSPスタイルの並行性などを挙げました。
しかし、これらの特徴は専門的であり難しいので簡単な言葉で説明していきたいと思います。
Go言語の特徴①「シンプルなコード記述」
Go言語はシンプルな記述が可能であり、その為可読性も高いプログラミング言語です。
その理由としてはGo言語はコードの記述量が少なく、コードの記述が厳密に決まった言語だからと言えます。
その為、初心者でも勉強しやすく、簡単なアプリケーションであればすぐに開発することが可能な言語だと言えます。
Go言語の特徴②「並行処理と並列処理が可能」
Go言語は、並行処理と並列処理の両方ができるという特徴があります。
並行処理は、複数のコアで一定期間内に複数の処理を順不同に行うことです。
対して、並列処理は、同時に処理を行います。
この並行処理と並列処理をうまく使い分けることで、複数のCPUを持つコンピューターのパフォーマンスを引き出すことができます。
Go言語の特徴③「複雑なシステムの構築に最適」
Go言語はコードの書き方が厳密に決まっているため、プログラマーごとの記述の癖が出にくいという特徴があります。
そのため、大規模で複雑なシステム構築でも他のエンジニアが理解しやすく、チームでの開発や保守・運用がしやすいプログラミング言語です。
また、オープンソースプロジェクトのため、バグや脆弱性があれば柔軟に修正することができます。
Go言語の特徴④「マルチプラットフォームに対応」
Go言語は複数のプラットフォームをサポートしています。
発表当初はLinux、macOSXにのみ対応でしたが2012年リリースのバージョン1.0からはWindowsにも対応しました。そして、2014年のバージョン1.4でandroid、2015年のバージョン1.5からiOSに対応を開始しています。
つまりは、Go言語のみで様々な端末に対して開発を行う事が可能であるという事です。
これはアプリ開発の際にiOS用とandroid用、macOS用とWindows用、Linux用で開発言語を統一することが出来るという事です。
Go言語で出来る事とは?
Go言語では様々な事をマルチプラットフォーム向けに行うことが可能です。
その中でも特に向いている事をご紹介します。
Go言語で出来る事①「webサーバーの開発」
Go言語では、Net/httpパッケージを用意すれば、他言語では必要なApacheなどのWebサーバーソフトを用意せずに、簡単にWebサーバーの構築ができます。
サービスの開発からサーバーの構築まで全てをGo言語でできるため、開発の効率化を図ることが可能です。
Go言語で出来る事②「スマートフォンアプリの開発」
Go言語には、「Go mobile」や「Go Cloud」などのスマートフォンアプリ開発用の制作ツールが標準装備されているため、手軽にスマートフォンアプリ開発を行うことができます。
また、Androidはもちろん、iOSにも対応しているのが魅力の一つです。
Go言語で出来る事③「APIサーバーの開発」
API(Application Programming Interface)とは、ソフトウェアの一部機能を共有し、その機能を外部から利用できるようにするインターフェースです。
Go言語の「例外処理がない」「並列処理が可能」「環境を問わずに開発可能」という特徴が、API開発で生きています。
Go言語で出来る事④「ドローン開発」
Go言語はWeb向けという側面が強い言語ですが、汎用性が高くドローン開発にも適しています。
Go言語には、「GoBot」と呼ばれるフレームワークが公開されており、ドローンを制御するシステム開発を手軽に行うことも可能です。
ただしGo言語は、組み込みの用途としては設計されていないため、家電や産業機器を制御する「組み込みソフトウェアの開発には不向き」ということを留意しておきましょう。
ハッカー的な目線でもGo言語
Go言語はマルチプラットフォームに対応している言語であり、コード記述の容易性や処理速度の高速化といった点で多くのプログラマー、エンジニアに注目されている言語です。
しかし、これらの特徴に注目している人物たちがいます。それがブラックハッカー達です。近年マルウェア開発にGo言語が多く利用されています。
その要因はマルチプラットフォームという点にあります。マルウェアを作成する際には多くの端末上で動く事が重要になります。(感染端末を増やし、攻撃の効率を上昇させるため)。
これまでであればWindows用、mac用、Linux用、android用、iOS用とそれぞれの端末で動く言語を選択し、それぞれに対応する用のチューニングされてきました。
しかし、Go言語用いることで一元開発が可能になり、マルウェア開発の効率が格段にあがりました。これらの要因によりマルウェアの活動が活発になってきている理由でもあるかもしれません。
まとめ
Go言語は現在とても注目されている言語です。
その理由としてはシンプルな記述でマルチなプラットフォームに対して開発が行えるという点でしょう。
Go言語のみで完結することが出来るという事はプログラマーの負担を大幅に軽減してくれ、ストレスフリーに開発行う事が出来るという事です。
また、シンプルさを追求している為初学者の方でも簡単に勉強することが出来る言語でもあるでしょう。
今後、Go言語での開発や求人はさらに増えC言語やJavaに取って代わる可能性を秘めているプログラミング言語と言えるでしょう。
さらに学べるおすすめ書籍
・初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド
・実用 Go言語 ―システム開発の現場で知っておきたいアドバイス