プログラミング

【おすすめ】具体的なGolang勉強手順

こんにちはマクロロです。前回は、RailsからGoを勉強する際の困難なポイントを書きました。それに引き続き今回は具体的なGoのおすすめ勉強手順をご紹介したいと思います。

Goを勉強したいけど、Railsチュートリアルみたいな王道教材がないな。。どうやって勉強していけばいいだろう?

具体的なGoの勉強法に入る前に一点、

Go言語はプログラミング未経験の方が勉強するのはあまりおすすめしないです。個人的にRailsやPythonなどのスクリプト言語を一通り勉強した後に学習するのが良いと思います

未経験の方がGoを一番最初に選択するのをおすすめしない理由としては、私自身一通りRailsなどを勉強した後でもGoを使ったサービスを作成するのは難しいと感じたからです。

こちらの記事で詳しく書いているので是非読んでみてください⇩

RailsからGolangを習得する際の壁

目次

Golangおすすめ勉強順序

それでは具体的なGoの勉強順序を見ていきましょう。

大まかに【基礎学習】と【アプトプット】の2ステップがあります。

まずは基礎学習から!

基礎学習

  • プロゲイト・ドットインストール
  • Udemy動画
      1. ⚪︎ Go: The Complete Developer’s Guide

        ⚪︎ 現役シリコンバレーエンジニアが教えるGoで始めるスクラッチからのブロックチェーン開発入門

    プロゲイト・ドットインストール

    まずは、みんな大好きプロゲイト・ドットインストールです。どんな言語を習得するにもさらっと基礎文法を最初にインプットするのは大切です。

    おすすめとしては、さくっと基礎を習得して1ヶ月以内に解約するのがおすすめです。

    正直文法に時間をかけすぎるのは良くないし、今後その言語でサービスを作る過程の中で自然と覚えていけます。このステップはさくっと終わらせましょう。

    紹介しといてなんですが、以下で紹介するUdemyの動画がかなり良質なので、プロゲイト・ドットインストールはスキップしても良いと思います。

    Udemy動画

    続いてはUdemyです。こちらも有名な動画学習サイトですね。

    残念ですが、日本語でのGolang学習動画はまだ少ないのが現状です。(2020年/06月/11日現在)しかし、その中でもダントツで良い教材が二つあるのでそちらを紹介します。

    現役シリコンバレーエンジニアが教えるGoで始めるスクラッチからのブロックチェーン開発入門

    こちらの教材は、現在シリコンバレーでエンジニアをされている酒井潤さんが作成されたものです。

    簡単な基礎文法から実際にGoを使ったブロックチェーン開発を一通り学習することができます。

    かなり丁寧に解説されてるので、基礎文法を復習しつつ実際に手を動かすことでかなりGo言語に慣れることができる教材です。

    続いては、こちらです。

    Go: The Complete Developer’s Guide

    こちらは英語での教材になりますが、かなり丁寧にGo言語の基礎文法を学習することができます。

    さらに各章ごとにもいくつか問題も用意されており、インプットしながらアウトプットもしっかりできるような教材です。

    英語も簡単な文法のみを使用していますし、画面のコードを見ながら一緒に進めていけるので英語が苦手な方でもついていけると思います。

    Udemyのおすすめ動画を紹介しました。正直、この二つを受講すれば基礎はほぼ確実に習得できると思います。

    なので、最初に紹介したプロゲイト・ドットインストールは飛ばしてこちらの教材から勉強しても良いと思います。

    あんまり色々な教材に手を出しすぎるのは良くないので、優良教材を繰り返して勉強するのがベターですね。

    アウトプット

    続いては、アウトプットです。上記のインプットでかなり基礎力がつくと思うのであとはひたすらアウトプットするのみです。

    以下がおすすめアウトプット教材です。

  • Go言語によるwebアプリケーション開発
  • 自分でアプリケーション作成
  • Go言語によるwebアプリケーション開発

    こちらはGoogleのエンジニアの方が作成した書籍です。この本一冊で5つの簡単なアプリケーションを作成します。

    簡単なwebアプリから、様々なサービスを連携させたマイクロサービス、便利なコマンドラインツールなど実際に作成します。

    難易度は正直結構高めです。隅から隅まで全て理解するのはなかなかハードだと思います。

    しかし、かなり実践的なのでGoを使ったサービス設計の基礎が学べるので勉強する価値は大いにあると思います。

    また、実際に手を動かしながらアプリケーションを作っていく過程でGo言語の仕様が理解できるようになるので、必ず自分で作ることが大事です。

    私のお勧めとしては、1周目はざっと概要把握、2周目で手を動かしながら作成していくのが良いと思います。

    自分でアプリケーション作成

    続いては、自分でアプリケーションを作成することです。これは説明する必要がないと思いますが、最後はしっかり自分でスクラッチからサービスを試行錯誤しながら作成するのが一番です。

    今までの教材で、かなり基礎力はついていると思うのであとはひたすらドキュメントを参考にしながら、アプリケーションを作るだけです。

    こちらはどの言語でも同じですね。

    おまけ教材

    こちらは、Golangを勉強する上で知っておいた方がいい知識として、一冊おすすめ書籍を紹介します。

    Golangは、RailsやPythonなどに存在しなかったポインタやメモリなどのコンピュータのテイレイヤ層の知識が求められます。最初の内はあまり意識する必要はないですが、「業務レベルの質」を考慮したアプリケーションでは、しっかりとコンピュターシステムがどのように設計されているか理解することが大事です。

    Goを学ぶ機会に一緒にコンピュータの内部構造までしっかり学習することをお勧めします。

    Goを学ぶ上で学習で意識すること

    Goを学ぶ上で意識することは、主に2点です。

  • どのパッケージ・どのファイルでどんな処理をするのか
  • 多様なサービスがどのように接続され、どのような機能を果たしているのか
  • どのパッケージ・どのファイルでどんな処理をするのか

    GoはRailsみたいに、大きなフレームワークがありません。「$ rails new」でアプリケーションの大まかな雛形を作成してくれるほど優しくありません。

    どんなサービスでも一つのファイルから地道に作成していく必要があります。

    そのため、どのパッケージ・どのファイルでどんな処理をするのかを意識することが非常に大切です。

    上記で紹介した、教材でファンクションを記述する際もそれぞれの機能がどのような場面でどう作成されているのかを注意深く意識してください。

    Railsの時のように、雛形が決まっていないのでなんとなく手だけ動かしていても何も頭に入ってきません。

    多様なサービスがどのように接続されどのような機能を果たしているのか

    GO言語はマイクロサービスで作成されます。そのため上記のファンクションやパッケージ単位だけでなく、一つのサービスレベルで様々なソフトウェアが結合してできています。

    そのため、それぞれのサービスで使用されているソフトウェアがどのように接続されどのような機能を果たしているのかを意識することが大切です。

    上記の二つのポイントとしては、とにかく小さい単位で機能が結合しているので、それぞれのレベルで対応関係をしっかり理解することがポイントです。

    お勧めは、サービス単位でしっかり図式化する。またパッケージに関しても各パッケージの対応関係を紙などに描いて図式化し視覚的に考えることです。

    そうすれば、複雑な結合をしたサービスでも全体像を理解しながら開発することができます。

    良く分からないままコードをボヤっと眺めていても良くないです。最初は全体像を理解するために紙にサービス構成を書き出してみましょう。

    まとめ

    今回はGO言語を勉強する上でお勧めの勉強順序・教材、勉強する上で意識することを紹介しました。

    他にもたくさん優良教材はあると思いますが、一番はやはり自分が勉強しやすいものを使うのがベターです。

    今回はGoを勉強するにあたって、「こんなお勧め教材もあるよ」ということを頭の片隅にでもおいてもらえれば嬉しいです。

    プログラミングは自分で書くことが一番の上達法です。インプットはさらっと終わらせて、どんどんアウトプットしていきましょう!

    RailsからGolangを習得する際の壁前のページ

    【エンジニア】サービス開発とアルゴリズムは別物?次のページ

    関連記事

    1. プログラミング

      dockerを使ってGolangの環境構築

      こんにちは、まくロロです。最近はサーバーをGo、フロントにR…

    2. プログラミング

      Gitとは?Gitの概念を理解しよう

      こんにちは、まくロロです。今回は、Gitの概念を説明していき…

    3. プログラミング

      GCPの基本概要

      今回はGCP(Google cloud platform)について基…

    4. プログラミング

      Saas, Paas, Iaasとは

      今回はクラウドの技術レイヤーで分けられるSaas, Paas, Ia…

    5. プログラミング

      Goでのクロージャ

      久しぶりの更新です。最近は就活関係で色々と忙しくブログの更新ができて…

    6. プログラミング

      RailsからGolangを習得する際の壁

      こんにちはまくロロです。今回はRailsからGolangを習得する際…

    コメント

    1. この記事へのコメントはありません。

    1. この記事へのトラックバックはありません。

    最近の記事

    PAGE TOP