- TechTrain流 学習ロードマップ - Goの学び方
TechTrain流 学習ロードマップ - Goの学び方
この記事に登場するメンター
TechTrainにはさまざまな技術領域に長けた ITエンジニアのメンターが約140名所属しています。そんなメンターの方々から、「その技術、いま学ぶならどう学ぶ?」をテーマにインタビューした結果から、分野別の学習ロードマップにまとめてご紹介します!
メンター紹介
Goとは?
GoはGoogle社内で開発されたオープンソース言語で、Google内のプロダクトにおける課題解決のために誕生した言語です。KubernetesやDockerなどコンテナツールの実装言語としても使用されています。幅広く使用されており今後のアップデートも楽しみなGo、ぜひチャレンジしてみてください。
ではさっそく、Go愛あふれるsivchariさん直伝の学習ロードマップを紹介します。
オススメは以下の5つ!
sivchariさんおすすめの学習コンテンツとして以下の5つをご紹介いただきました!
- プログラミング言語Go完全入門
- CA 1Day Youth Boot Camp Go Rookie Gym
- Go言語による並行処理
- The Go Programming Language Specification
- GopherCon 2023: Russ Cox - Go Changes
学習の進め方
紹介していただいた学習コンテンツを利用してGoの学習を進める上で、前提として、対象を以下のようにグループ分けしてくださいました。
- もっとGoに詳しくなりたい方
- Goの経験がありブラッシュアップしたい方
- 初めてGoという言語にふれる方
- プログラミング自体に初めてふれる方
すべてのグループの方が、このロードマップを参考にGoについて学習を進めていただけるとのことです。
ただし、3、4に該当する方は、ロードマップを始める前に「Goをはじめる」のチャプターから進めてください。
Goをはじめる
①プログラミング言語Go完全入門
紹介している資料は、GDEとしても活動しているtenntennさんが公開している資料です。はじめてGoを書く人のために非常に丁寧に解説されている資料となります。この記事でGoについて学んでから②CA 1Day Youth Boot Camp Go Rookie Gymをみるといい学習になるかと思います。
Goを学び始めるにあたっては、まずはGoの特徴的な以下の2つの概念について調べるところから始めてください。
- 型
- ポインタ
調べ方は特に指定はないので、自分の調べやすい方法で調べて見てください。これらの概念をざっくりと把握した上で、上記の資料を読み進めながらとにかく書いて慣れていきましょう。
調べてみて、この2つ以外の技術用語が出てきてもこの時点では気にしなくても構いません。まずは、型とポインタの2つの概念を「わかった”つもり”」の状態でもいいからGoを書き始めることが大事です。
Goを書き始めるにあたって、特に書く環境がない方はTechTrainのRailway Go編を活用してください。初級編を進める中で、詰まった時にこの資料を読むことで理解度がぐんとアップします!
by sivchariさん
Railway Go 初級編:https://techtrain.dev/mypage/railway/5
注:資料内に質問についての案内がありますが、TechTrainの教材に関する質問はサービス内のGitHub Discussionsをご利用ください。
初心者
②CA 1Day Youth Boot Camp Go Rookie Gym
*sivchariさんが公開している資料です。
他の言語の経験はあるが初めてGoを書くという初心者の方から、Goは書いてきたけど概念についてはふんわりしか理解できてない、もっとGoを書けるようになりたいという中級者はこの資料を読みながら詰まったポイントを書き進めてください。
この資料では、Goとはどのような技術かといった概要からはじまり、sivchariさん自身が感じたGoを理解する上で重要なポイントを絞りまとめた資料。技術的な背景やGo特有の概念をぎゅっと凝縮した内容となっており、実際に「もっとGoを書けるようになりたいんですけど..」と相談を受けた相手にも渡している資料です。
とにかく実際にコードを書きながら、詰まったポイントに対して、こうかな?エラーが出たら次はこうかな?と読んで出てきた概念を実際に使うことを繰り返しながら感覚を掴んでいくことを大事にしてください。
Railway Go編の基礎編を学習する方はこの資料をポイントで辞書的に活用したり、基礎編を修了したタイミングで読むとよりGoへの理解が深まるとアドバイスをいただきました。
Railway Go 基礎編:https://techtrain.dev/mypage/railway/30
ここまでできると「Go書けます」と言ってもOKなレベルといえると思います。
by sivchariさん
中級者
③Go言語による並行処理
個人開発でGoを使ってプログラムを書く、業務でGoを利用するレベルの方は絶対に読んだ方が良い本で、発売から時間が経っている今でも必読書としておすすめしています。
Goの特徴である並行処理”goroutine”や”context”。書いているうちに必ずぶつかる壁のひとつです。この本では、goroutineを例に並行処理自体についても学べる内容となっており、並行処理をただ使用するだけではなく原理原則を知り正しく理解するために必ず読んでほしい1冊です。
書いている内容全てを実際に使うことはなくても、おおよそ書いてる内容がなんとなくわかるようになってくると業務で並行処理出てきた時にもこの本参考にしながらコードを書いたり、書いてあるコードを理解することができるようになるはずです。
また、この概念がわかっていると、カンファレンスなどで登壇者がgoroutineやcontext関連の内容を発表していても、聞いて理解ができるレベルになるとのことでした!
この本を読みながらわからないことが出てきたら②の資料も併用しつつ、「わかった”つもり”」から、「わかった」にアップデートしながらコードを書き進めていきましょう。
この③まできたら、実際にオリジナルのプロダクトを作ってみたり、他の人が書いてる記事やコードを読みどんどん吸収することが重要になってきます。
ここまでくると、自信を持って「Go書けます!」と言えるレベルとだと思います。
by sivchariさん
ここまでくると、sivchariさん的「Goを理解してきたと言えるレベル」
Goを学び始めると、障壁となる”goroutine”、”context”。この2つが理解できるようになるとGoを理解してきたと言ってよいレベル。
どちらもTechTrainのRailway Go 基礎編Station6にも出現する概念です。
Railwayを進める中では「なんとなく理解した」に留まるとは思いますが、この2つを理解するとぐんとGoの習得レベルがUPします。
Railway Go 基礎編 Station6:https://techtrain.dev/mypage/railway/30/station/715
より深く理解を進めるために『Go言語による並行処理』を読みながら実際に並行処理を使ってコードを書いてみましょう!
④以降のコンテンツに関しては、「Go自体に詳しくなりたい」、「Goをもっと極めたい」というタイミングの上級者の方向けのコンテンツです。
上級者
④The Go Programming Language Specification
Goの開発者チームが公開している公式の仕様書で、最新バージョンの言語仕様が全て集約されています。Goを深く学びたいとか、細かい仕様を知りたいというときに必ず見るコンテンツです。
このページに書かれている内容を全て暗記する必要はありませんが、どのようにGoが値の比較をしているといった言語自体の仕組みや内部の実行方法について記述されているため、「意図した挙動にならない」だとか、「内部的にどのように動いているかを知りたい」というときに確認するための重要なコンテンツです。
実際の実務でGoに触れており、業務の範囲だけではなくGo自体の理解を深めていきたい方はぜひ読んでみてください。
⑤GopherCon 2023: Russ Cox - Go Changes
GopherConという海外のGoのイベントでGoチームのテックリードであったRuss Cox(ラス・コックス氏)がキーノートとして発表したセッションの動画です。
開発初期からどのようにGoが変化したか、何を大事にしてGoをより良くしてきたかについて実際の例をもとに語られており、Goの背景を知ることができる貴重なコンテンツとなっています。
当初の感覚的なものから、だんだんデータドリブンになってきているなど面白い話が詰まっています。
マニアックな内容で、この動画を見ている人は周囲でもそう多くないですが、セッションの内容を知っている人との議論はとても楽しいもになるので、そのフェーズまでぜひGoにのめり込んでこちらの世界に来てほしいなと思っています!
こちらのコンテンツは全編英語のため、もしGoのイベント自体に興味を持った人は、まずは国内のGo Conferenceに参加してみるところからスタートしてみてください。
まとめ
Goは年2回のペースでアップデートを繰り返しており難しい言語ではありますが、「これ作りたいな」「あ!Goでつくれるな」という手に取った時の万能感を味わいたい方には、ぴったりな言語なので、ロードマップを見て手を動かしながらGoの魅力にハマってほしいなと思います。
たくさん手を動かして、Goの書き心地や感覚を掴んで楽しいと感じるまでやりこんでみてください。
困ったら気軽に、面談も活用してみてくださいね!
by shivchariさん