[Go言語]Go Conferenceに行って将来性を確信してきた話

こんにちは!好奇心おばけのかわそん (@KKohey4)です!

Goに興味がある人
「Go言語に興味があります。でも、ざっくりとは知っているけど、今どうやって使われているのかとか、言語自体の将来性はどうなのかわかりません。本当に時間をかけて勉強する価値があるのか。。。できれば、いろんな企業さんのGo言語に対する、リアルな現状を知りたいです。」
このような意見に、答えます。

本記事を読むメリット

  • Go言語の現状と将来性がわかります。
  • 初心者向けにGo言語の豆知識を紹介します。
  • Go Conferenceを通して気づいたことをまとめます。

この記事を書いている僕は、先日wantedlyさんから全国3人のスカラーシップ枠を頂いてGo Gonferenceに参加してきました。

メルカリやリクルート、Google New York, Google Cloudなどからトップエンジニアが来ていまして、400人という大規模。

そこで今回は、このカンファレンスで学んだことや気づいたことを共有しようと思います。

Go言語に少しでも興味があるという方に少しでもお役に役立てれば嬉しいです。(^_^)a

[Go言語]Go Conferenceに行って将来性を確信してきた話

まず、ざっくりと要点をまとめます。

  • Go言語はまだ若い言語
  • でも各企業がどんどん取り入れているなど、影響力が大きくなっている
  • 始めるなら今がいい

ですね。説明します。

Go言語はまだ若い言語


Go言語は2009年11月10日に生まれたばかりの、かなり新しい言語です。

Rubyとかが1993年に生まれていることを考えても、その新しさは目立ちますね。

新しいからこそ情報もそんなに多くないし、今から勉強する意味ってあるのかなあ。。って思う方もいるかもしれません。
そこで次に将来性についてお話しします。

でもGoogleが開発しており、各企業がどんどん取り入れているなど、影響力が大きくなっている


現代の巨人、Googleが直接開発している言語でして、最近スタートアップをはじめとする各企業がどんどん取り入れています。

「取り入れる」と言ったのは、今回のカンファレンス全体からの印象としては、Go言語だけで開発しているという感じではなかったからです。

具体的には、Railsで開発しているシステムの一部をGoで置き換えたりといった使い方が多かったですね。

ユニコーンになるようなスタートアップが注目しているのは間違いないですし、現代の巨人Googleが開発していることもあるので、将来的にますます重要な言語になっていくと確信しました。

始めるなら今がいい

Goに興味を持ったならいますぐに勉強し始めるのがベストです。

というのは、まだまだGoのコミュニティは小さく、「書ける」というだけで希少価値が出るからなんですよね。

例えば、

Railsでこんなサービスを自分で作りました。

という人と、

Railsでこんなサービスを自分で作ってみまして、ここは部分的にGoで実装しました。

という人の差は思った以上に大きいです。

特にベンチャーなどで自分の力をガンガン使って結果を出していきたいと考えている人は、絶対にやった方がアドバンテージになるかなと。

初心者向けにGo言語の豆知識を紹介します。

初心者向けのGo言語の豆知識の概要はこんな感じです。

  • Go言語の大きな特徴
  • Go言語の思想って?[メインのみ紹介]
  • エラーへの向き合い方

説明しますね。

Go言語の大きな特徴は?

公式サイトにも書いてあるのは

シンプル、コンパイル・処理速度が早い、安全性が高い、並列処理が可能、オープンソース、楽しい

が大きい特徴です。

今回のカンファレンスを踏まえると、「楽しい」と感じるのは、かなり個人差があるそうだなと思います。

というのは、GoってC言語に近いところがあるんですよね。

だから、完全初心者がいきなりやるのはオススメしません。このあたりの話はC言語で挫折した大学生へ←全く問題ないですよという話で詳しく説明しています。

ただ、ある程度のコードが書ける状態であれば、そのシンプルさに感動できるかなと。

Go言語の思想って?[メインのみ紹介]

Go言語の思想を紹介します。

1.Avoid nesting by handling errors first
2.Avoid repetition when possible
3.Important code goes first
4.Document your code
5.Shorter is better
6.Packages with multiple files
7.Make your packages "go get"-able
8.Ask for what you need
9.Keep independent packages independent

の9こがメインです。

ざっくり日本語にすると、

1.ネスト(入れ子)を避けて、エラーハンドリングは最初に
2.可能なら繰り返し避けて
3.大事なコードは最初に
4.ドキュメントしよう
5.短いほどいいよ
6.長いファイルは避けよう
7.go get可能な単位でpackageを作ろう
8.必要なことを見直そう
9.依存性ないものは依存なく

ですね。

LINEのエンジニアさんによると、この9こを意識すれば、初心者→中級者レベルへの到達が可能らしいです。

コードを読むときに、こんな視点を持つと、切り口はっきりと分析できるかなと。

エラーへの向き合い方


Go言語のエラーへの向き合い方を紹介します。

まず、そもそもエラーでは何が求められるのか。

それは層によって違ってきまして、

・アプリケーション→エラーをハンドリングできる1
・エンドユーザ→問題解決のメッセが含まれる
・運用者→根本的な問題解決となる情報が含まれる

らしいです。

そこでGoではこれにどのようにして対処するのか説明しますね。

結論は、

1.アプリ固有のエラーコードを定義する
2.未知のエラーが見つかったら、1に変換する
3.そうすることで未知→既知へハンドリング

です。

具体的にはfailureという道具を作ってくださっているので、触ってみると感覚がつかめますよ。

Go Conferenceを通して気づいたことをまとめます。

僕がGo Conferenceに参加させて頂いて気づいたのは、主に

  1. いますぐに深く勉強しはじめた方がいい
  2. Goを使う動機付けをはっきりさせるために、インフラ周りも理解
  3. 「知ってるか知ってないか」がかなり大きい世界

ということですね。

いますぐ始める話は上でしたので、②と③を補足しますね。

Go言語は処理速度が早いです。だから、その速度を生かすべきなのはどこなのかが重要なんですよね。

それはコンテナです。コンテナの起動速度ははやい事が求められます。

しかも、コンテナベースでAPI開発をするとき、イメージ作成やアプリの監視方法など、色々考慮するべきことが出てくるんですよね。

本当にGoを使うメリットを理解したいなら、アプリよりも少し下のレイヤー、インフラ層も触っておくべきだなと思いました。

最後に、技術は「知ってるか・知ってないか」がかなり大きい世界です。

共同開発に興味がある人
「そんな技術あったんだ!知らなかった。全部手で実装してたわ。。。orz」

っていうリソースのムダ遣いを起こさないように、積極的にエンジニアさんと関わったり、情報を浴びに行く姿勢、大事だなと思いました。

まとめ: 自分から動いて身につけるのが吉です。

記事のポイントをまとめておきます。

  • Go言語の未来は明るいです。
  • 特徴や思想を紹介しました。
  • 完全初心者というよりは、ある程度の経験値を積んだ人が楽しめます。
  • インフラ周りの知識も大事
  • 自分から動いて情報をキャッチアップ

こんな感じですね。

今回は以上です。
この記事が少しでもGoに触れるきっかけになったなら幸いです。

最後に、僕にGoという武器を増やすきっかけを下さったwantedlyさんに深く感謝します。

東京までの交通費や宿泊費、食費までスカラーシップ枠という形でサポートしていただき、本当にありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です