Go言語(golang)の現役エンジニアにどうやって学習したかを聞きました。
答えてくれたエンジニアは独学でGo言語(golang) を習得されたので、Go言語(golang)の独学方法が知りたい人はぜひ本記事をご覧ください。
-
Go言語(golang)を学べるプログラミングスクールを紹介【挫折した】
Go言語(golang)を学べるプログラミングスクールを紹介します。 ただし、最初に言っておきますが「Go言語(golang)を教えるよ!」と公式で言ってるプログラミングスクールは私の知る限りはありま ...
無料でプログラミング学習できる
本題に入る前に、プログラミングが無料で学べて、メンターに質問もできるサービスGraspyの紹介です。
残念ながらGo言語はラインナップされていませんが、PythonやRubyといった人気言語も学べます。
サーバーサイドを触るなら必要不可欠なデータベースの知識も学べるので興味がある方はぜひ会員登録してください。
Graspyの会員登録はこちら→Graspy
目次
Go言語(golang)を学ぶ以前に必要な知識
Go言語(golang)を学ぶだけならば前提知識はプログラミングの基礎知識くらいで、特別な知識は必要ないと思います。
まずGo言語(golang)は日本でも大手で採用事例が増えていますので資料も日本語で豊富にそろっています。
もちろん英語がわかることに越したことはありませんが、とりあえず開発を進めるうえで英語は前提ではないでしょう。
またGo言語(golang)は継承がないために、複雑なオブジェクト指向の知識を前提としません。
これも初心者がとっつきやすい理由の一つだと思います。
とはいえ、あったほうが良い知識もあるので、Go言語(golang)に直接は関係ないけど、知っておいた方が良い知識が掲載されている書籍も後ほど紹介しますね。
スポンサーリンク
Go言語(golang)の独学に役立つサイト2選
まずはGo言語(golang)の独学役立つサイトを2つ紹介します。
1つ目はGo本家が提供しているA Tour of Goの日本語訳サイトです。
このサイトは対話的にGo言語(golang)の基本文法を学べます。
第三章以降(Method and InterfacesおよびConcurrency)が少々わかりにくいかもしれませんが、無理に理解しようとせずにインタラクティブ画面でコードをいじる程度でよいです。
また練習問題が少々レベルが高いので飛ばして構いません。
このサイトを取り組む姿勢は、全てを理解するのではなく、とりあえずGo言語(golang)の概要が学べたらOK!という感じでOKです。
次に紹介するサイトは、Gihyo.jpで提供されているJxck様の記事です。
このサイトにはサンプルコードがたくさん載っていますので、説明を読みながらサンプルコードを動かし、Go言語(golang)の文法に慣れましょう。
この第2章まで完了すればGo言語(golang)の基本フローはほぼ理解できます。
Go言語(golang)関連のおすすめ書籍
上記のサイトで理解できなかったり、物足りなくなってはじめて書籍を購入するのが良いと思います。
私がGo言語(golang)の学習に使ったおすすめの書籍を紹介します。
改訂2版 基礎からわかる Go言語
初級者向けです。Go言語(golang)を体系的に理解する場合にまず一読すべき本です。
技術的な詳細には踏み込まずにまず動かすことにフォーカスしています。
サンプルコードがシンプルなのでGo言語の理解がぐんぐん進みます。
またサンプルコードがLinux, MacおよびWindowsすべてに対応しているので環境を選ばずに実行できるのも良いです。
スターティングGo言語
中級者向けです。基礎からわかるGo言語(golang)よりも技術的な言語仕様が細かく説明されています。
この本の素晴らしいところはChapter6 Goのツールおよび、Chapter7 Goのパッケージです。
Chapter 6ではGoツールが簡潔にまとまっていますのでプログラミングする際に必要な操作はしっかり頭に入ってきます。
Chapter7 Goのパッケージではよく使うパッケージについてまとめてあります。
これらのパッケージには計算、文字列操作、ファイル、正規化表現、json、httpが含まれますので、こちらを読めば実際に使えるアプリケーションが作成できます。
みんなのGo言語[現場で使える実践テクニック]
中級者向けです。
体系を学ぶというよりも、実際の開発ノウハウをまとめた書籍です。
個人的には第4章のコマンドラインツールを作るがおすすめです。
それほど難しくない記述でコマンドラインができます。
ツール作成を通しながら自分のGo言語(golang)に対する知識が広がっていくのが実感できました。また全体を通して開発プロジェクトで使えるノウハウ満載です。チーム開発を進める際には必読です。
Go言語(golang)の学習のコツ
Go言語(golang)を学習する際には以下の4つを明確に分けて勉強すべきと考えています。
- 基本文法
- ポインタ・構造体・配列・スライス・マップ
- 関数・メソッド・インタフェース
- 並列処理
基本文法は書きつつ覚えていくしかないので、この記事では詳しくは触れません。
それ以外について触れていきます。
ポインタ・構造体・配列・スライス・マップ
C言語開発が少なくなった現在ではポインタを利用する機会はほとんどありません。
現在人気ある言語であるJavaやPythonなどではポインタを利用することがないかと思います。
ポインタを完全に理解しようとすればそれだけで本が一冊書けます。
そのためポインタはサンプルコードでとりあえず書き方に慣れるだけでよいでしょう。
最初のうちはポインタを利用すると値を簡単に書き換えできるということだけ把握していればよく、必要になった場合のみ勉強をしましょう。
それからでも遅くないです。
構造体・配列・スライス・マップは他のプログラミング言語でも似た概念があります。
使い分けがわかりにくい概念でもあります。
こちらも開発を進めるにつれて、使い分けが徐々に理解できますので、最初に無理にすべて暗記する必要はありません。
しかし、後々重要になってきますのでその覚悟はしておきましょう。
関数・メソッド・インタフェース
これらのことはソースコードをきれいに書くために欠かせません。
初心者のうちは、自分で無理するよりは、良質なサンプルコードをたくさん読み、そのサンプルをまねしながら自分のコードに導入していくのが良いかと思います。
並列処理
他のプログラミングをしている限りは並列処理について気にする必要はあまりありません。
ただGo言語(golang)自体が他のプログラミング言語と比べると並列処理を利用しやすいために、Go言語=並列処理のイメージがあります。
こちらはパフォーマンスの改善やWebアプリの作成などをすれば自然に利用することになるので最初の段階ではあまり気にしなくてよいと思います。
Go言語(golang)に直接関係ないけど読むと良い書籍
Go言語(golang)に慣れてくると、次のステップとしてはデータベース連携です。
Go言語(golang)からデータベースを操作できるようになれば、処理した内容を記録したり、必要に応じて条件を指定して取り出すことができます。
データベース本はちまたにたくさん出ていますが、SQLの初歩から知りたいという人には下記がおすすめです。
スッキリわかるSQL入門 第2版 ドリル222問付き!
この本は問題形式でSQLを勉強できます。
SQLは本を読むだけ(インプット学習)だけではまず身につきません。
アウトプット学習がカギになります。
そうはいってもいきなり複雑なアウトプットができるくらいなら学習本を読むことはないでしょう。
その点この本に記載されているSQL問題は基礎と発展に分かれているうえに問題として適切なレベルです。
さらにデータベース環境もクラウドベースで用意されています(dokoQL)。
わざわざ自分で環境を用意する必要がありません。この本のドリルを終えるころには間違いなくデータベースを使いこなせるようになっているでしょう。
アルゴリズム図鑑 絵で見てわかる26のアルゴリズム
Go言語(golang)の言語仕様に踏み込んでいくには基本となるアルゴリズムの理解が欠かせません。
そうはいってもいきなり難しいアルゴリズムに踏み込んでも難しいので上記のような優しい本をおすすめします。
この本はわかりにくいアルゴリズムをこれでもかというくらいに図解しています。
内容が少々薄いのではないかという話もありますが、この本でアルゴリズムは図解できるということを知っていれば今後どんな難しいアルゴリズムを勉強するときにも図解して学ぶ癖がつくようになります。
コーディングだけではなかなか具体的にアルゴリズムの動きが把握できません。ぜひこの本を読んでアルゴリズムとは難しいものではないということを感じてみてください。
イラスト図解式 この一冊で全部わかるWeb技術の基本
最後にWeb技術系書籍です。
http関連の処理をするならばWeb技術の知識は必須です。ただいきなりRFCなどを読んだとしても間違いなく挫折します。まず一冊ということであれば下記がおすすめです。
もし自分が学び始めたときにこの本があれば、ずいぶん効率よく勉強できたのではないかと思います。
この本を読んだうえで、サンプルコードが乗っているWeb関連の書籍を読めばより理解が深まるのでおすすめです。
Go言語(golang)関連のおすすめサービス、アプリ
Go言語(golang)を書いたり、スキルをあげる上で、便利なソフトやアプリを使うのは重要です。
ここからはそれを紹介します。
Visual Studio Code
Go言語を開発する環境は、効率的に開発を進めるうえでの鍵となります。
Visual Studio Codeはマイクロソフトが提供している開発環境です。
これにGo言語拡張機能(これもマイクロソフトが提供)を導入することでかなりお手軽に開発環境が構築できます。
デバッグやテストも追加の設定をすることで可能です。
gofmt
Go言語(golang)で提供されているソースコード整形ツールです。
自分が開発したソースがGo言語(golang)の標準に沿っていないのではないか、そのような心配はこのツールを利用すれば無用になります。
書いたソースコードをgofmtに通せばインデントや空白・タブ変換などを自動でGo言語(golang)の標準に合わせてくれます。
gorename
Go言語(golang)用リファクタリングツールです。
gofmtと似ていますがよりリファクタリングに特化しています。
サクラエディタ
メモ帳をエディタとして使っているならばすぐに導入すべきテキストエディタです。
各種プログラミング言語に対応していキーワードを色でハイライトしてくれます。
また正規化表現に対応したGrep機能が付いていますので、検索時にも目的となる対象キーワードを柔軟に見つけることができます。
Fiddler
FiddlerはHTTP通信をキャプチャするツールです。
ネットワークキャプチャツールとしてはWiresharkが有名ですが、Fiddlerはhttp通信に特化しており、初心者でもすぐに使えます。
Webアプリケーションを作成しだしたらまず一番に導入すべきツールです。
SQLite3
データベースといえばPostgreSQL, MySQL, Oracle, Microsoft SQL Serverなどがあります。
いずれも環境設定に手間がかかる上に、管理も少々時間がかかります。そのようなときにはSQLite3がおすすめです。
無料だからいまいちではないかという心配は不要でして、ライセンスについて考慮する必要もないのでいい感じです。
標準SQLに対応しているのでSQL操作で問題が起きることはまずありません。
さらに軽量、高速ですので自宅のパソコンで十分に動かせます。
Go言語(golang)を選んだ理由
最後にあまり興味がないかもしれませんが、私がGo言語(golang)を選んだ理由を紹介しつつ、記事を終わりにします。
簡単な文法
Go言語(golang)はC++などに比べると文法が簡単です。
プログラミングに慣れている人ならば1日でもある程度に理解できる言語だと思います。
実行時の環境について考えなくて良い
コンパイルしたときに実行形式ファイルが一つであるために実行時の環境について考えなくてよいです。
少々わかりにくい考え方ですが、他の言語では自分が作ったプログラムはライブラリと呼ばれる共通で利用される環境に依存しています。
そのために開発したプログラムを別の環境で動かそうとするとエラーが出ることがままあり、このトラブルシューティングには時間がかかります。
Go言語(golang)にはその心配がありません。
並列処理が前提となっている
Go言語(golang)は言語として並列処理が前提になっています。
他の言語では並列処理を組み込もうとすれば例えばライブラリを読み込んで、特別な書き方でプログラムを記述してとなります。
しかしGo言語(golang)は最初にデザインされたときに並列処理を想定していますので、「え、これで並列処理できるの?」とびっくりするくらいに簡単に記述できます。
まとめ
以上、Go言語(golang) の独学方法でした。
この記事があなたのGo言語(golang) の独学に参考にされば幸いです。
-
Go言語(golang)を学べるプログラミングスクールを紹介【挫折した】
Go言語(golang)を学べるプログラミングスクールを紹介します。 ただし、最初に言っておきますが「Go言語(golang)を教えるよ!」と公式で言ってるプログラミングスクールは私の知る限りはありま ...