Goを学ぶ - コーディング講座
Goを学ぶ - コーディング講座 — コンパイラ、race detector、毎日のkatasをスマートフォンで利用できるGolangチュートリアル
Goを学ぶ - コーディング講座は、初心者や現役開発者向けの無料のiOSおよびAndroid用 Golang tutorial です。Go compilerとeditorを搭載し、実際のGo toolchain上でコードを実行できます(インターネット接続が必要です)。gofmt、go vet、race detectorでコードをチェックし、最初の fmt.Println からgoroutines、REST APIs、gRPCまで、51のコースで学べます。理解しにくい部分はAI Mentorがサポートします。
- 価格
- 無料、Proへのアップグレード
- プラットフォーム
- iOS、Android
- 言語
- 22
- 年齢レーティング
- 4+
- 必要環境
- iOS 15.1以降


goキーワードを削除すると、同じ処理に3倍の時間がかかります。
これが、アプリがGoで最初に取り組ませる内容です。120 msのジョブを3つ実行し、合計が360 msを大きく下回ることを確認したら、処理を並行実行にしていた1つのキーワードを削除します。言語の魅力はその1語に集約されており、アプリでは仕組みを説明する前に、それを体感できます。
概要
Goを学ぶ - コーディング講座は、現代のクラウドやサーバーソフトウェアの多くを支えるコンパイル言語、Goを学べる無料のiOSおよびAndroidアプリです。初心者から上級者まで段階的に学べる51コース、203レッスン、実際のGo toolchain上でプログラムを実行できるcode editor、daily kata、実際のrace detectorを備えたConcurrency Lab、そして自分でHTTP coreを構築するguided trackを提供します。AI Mentorは、どのレッスンについても質問に答えます。
アプリの内容
画面イメージ





コース
Goコースで学べること
アプリ独自のコース一覧にある51コースと203レッスン。レベルはA1からC1までで、最初のプログラムからプロファイリング、ガベージコレクターまで扱います。
Goと基礎を学ぶ
Goとは何か、なぜGoogleがGoを作ったのかを学び、続いて変数、型とゼロ値、定数、if、for、switchを使った制御フローを学びます。
関数、スライス、マップ
複数の戻り値を持つ関数、defer、可変長パラメーター、配列、スライス、マップに加え、文字列、fmtのフォーマット、timeパッケージを扱います。
構造体、ポインター、インターフェース
構造体とメソッド、値レシーバーとポインターレシーバーの違い、ポインター、暗黙的なインターフェースとダックタイピング、コンポジションのための埋め込みを学びます。
エラー、パッケージ、標準ライブラリ
errors.Isとerrors.Asを使った明示的なエラーハンドリング、パッケージとモジュール、ファイルI/OとJSON、正規表現、ソート、バッファ付きI/Oを扱います。
Goroutine、チャネル、Sync
Goroutineとチャネルの基礎、selectとチャネルパターン、mutexとsyncパッケージ、キャンセルに使うcontext、ワーカープールとパイプラインを学びます。
HTTP、REST、データベース
net/httpを使ったHTTPサーバーとクライアント、Ginを使ったREST API、ミドルウェアパターン、sqlxとpgxを使ったdatabase/sql、GORM、WebSocketsを扱います。
テスト、ツール、デプロイ
テーブル駆動テストとサブテスト、Cobraを使ったコマンドラインアプリ、Viperを使った設定、slogを使った構造化ロギング、マルチステージDockerビルドを学びます。
高度なGo
型パラメーターと制約を使ったGenerics、ベンチマークとpprofプロファイリング、Protocol Buffersを使ったgRPC、リフレクション、メモリモデルを扱います。
使い方
セッションの進め方
各レッスンは短い読み物の後にコードを実行する構成なので、考え方の理解と実践を同じ時間に行えます。
短いレッスンを1つ読む
courseを開き、数分で終わる1つのlessonに取り組みます。理論はわかりやすい言葉で説明され、最初のlessonに登場するpackage mainとfmt.Printlnのprogramのような小さなexampleも用意されています。
実際のGo toolchainで実行する
editorからGo runnerにprogramを送り、outputを表示します。gofmt、go vet、race detectorも同じように実行されるため、runを押すときは接続が必要です。programがcrashすると、errorの内容をわかりやすい言葉で説明します。
別の角度から練習する
topicを学んだ後は、quizに挑戦したり、daily kataを解いたり、concurrency puzzleに取り組んだり、AI Mentorに出題してもらったりできます。それぞれが同じ考え方を異なる方法で確認するため、知識として定着します。
内容
アプリに含まれるもの
51
コース、A1からC1まで
51コースにわたる203レッスンで、Go basics、slices、mapsから、interfaces、error handling、goroutines、net/http、Gin、database access、Docker deployment、gRPC、garbage collectorまで学べます。
-race
race detectorを備えたConcurrency Lab
6つの実行可能なpuzzlesで、1つのchannel上の2つのgoroutines、unbuffered handshake、WaitGroup fan-out、更新が失われるcounter、2つのwritersが使うmap、deadlockを扱います。自分のcodeをrace detectorで実行することもでき、無料で、1日の回数制限もありません。
毎日
毎日新しいkata
hidden casesを含むcase tableに対してチェックされるGo exerciseで、最後にreference explanationが表示されます。daily kataは誰でも無料で利用でき、Proではfull library、reference solutions、explanationsが利用可能になります。
Doctor
Go Doctor
gofmtでfileが書き換えられるかを確認して適用し、go vetを実行して指摘を確認できます。さらにProでは、valueがallocateされる理由をcompilerのescape analysisに尋ねられます。formattingは無制限で、無料プランではgo vetを1日3回まで実行できます。
7ステップ
自分のHTTP coreを構築する
request、response、functionsとしてのhandlers、routing、path parameters、middleware、wrapped errors付きのJSONを自分で記述し、1ステップずつチェックしながら進めるguided trackです。
AI
AI Mentorと模擬面接
AI Mentorにconceptの説明や学習roadmapの作成、quizの出題を依頼できます。mock interviewでは、junior、mid、senior levelのいずれかでGoに関する5つの質問が出され、回答が採点されます。採点付きのinterviewは週1回まで無料です。
復習
Go RecallとGo by Example
defer order、nil maps、appendによるmemory共有など、Goでよくあるgotchasを扱う「これを実行すると何がprintされる?」形式の短いcardsに加え、実行や編集ができるstandard-library snippetsも用意されています。
背景
バックエンド開発でGoを学ぶ理由と、Goならではの特徴とは?
GoはGoogleで作られた静的型付けのコンパイル言語で、web services、command-line tools、cloud infrastructureに広く使われています。バックエンド開発で支持される理由は、多くの機能が組み込まれていることです。concurrencyは言語の一部であり、standard libraryには小規模なサービスに必要な機能の大半が含まれ、プログラムは隣に何もインストールせず単一のbinaryへコンパイルできます。言語自体は意図的に小さく設計されているため、すぐに読み取れる一方で、初心者は早い段階でいくつかの馴染みのない習慣を身につける必要があります。
Goroutinesとchannels管理するthreadsなしでconcurrencyを実現
goroutineはgoキーワードで起動するfunctionで、channelはgoroutinesが値を受け渡すためのパイプです。これらを組み合わせることで、手作業でのthread処理の大半を置き換えられるため、concurrencyは高度なトピックとして後回しにせず、早い段階で学びます。
Errorsはvaluesexceptionsなし
失敗する可能性のあるGo functionは、通常の2つ目のvalueとしてerrorを返し、callerはその場で確認します。try blockよりも記述量は増えますが、読んでいるコード内ですべてのfailure pathが見えるようになります。
Implicit interfacescompile timeでチェックされるduck typing
typeは、適切なmethodsを持っているだけでinterfaceを満たします。宣言は必要ありません。これによりpackagesの結合が疎になり、Goでよくある意外な挙動も生まれます。nil pointerを保持するinterface自体はnilではありません。
1つのbinaryと充実したstandard librarydeploymentが簡単な理由
コンパイルされたGoは単一のexecutableを生成し、net/http、encoding/json、database/sqlなどのpackagesは言語に同梱されています。小規模なserviceではthird-party frameworkが不要なことも多く、Goプログラム用のDocker imagesを小さくできる理由の1つです。
適しています
向いている方・向いていない方
次のような方におすすめです
- スマートフォンで短時間ずつ取り組めるGolangコースを探している方
- 別の言語をすでに書けて、goroutineやチャネルが実際に動く様子を見たい方
- バックエンドまたはクラウド関連の職種を目指していて、採点付きのフィードバックが得られるGoの面接問題を解きたい方
- 長い動画よりも、小さな演習や落とし穴カードで学ぶほうが効果的な方
- 自分で書いたコードのフォーマット、vetの指摘、データ競合を確認したい方
次のような方には適していません
- Go 1.13のサンドボックスであるアプリ内ランナーで、net/httpをインポートするプログラムやGenericsを使うプログラムを実行したい方
- ランナーがオンラインのため、接続なしでコードを実行したい方
- すべて無料だと思っている方。最初のコース、毎日のkata、毎日のAI Mentor利用枠は無料で、残りはProで利用できます。
- 大規模な複数パッケージのサービスを構築して出荷する必要がある方。その場合は、今でもノートパソコンと完全なツールチェーンが必要です。
ご質問
よくある質問
スマートフォンでGolangを学ぶ最適な方法は何ですか?
実際に実行するコード付きの短いレッスンは、読むだけの学習よりも効果的です。Goでは、goroutineやレース検出器などの主要機能が動作によって理解できるため、実際に実行することが特に役立ちます。Goを学ぶ - コーディング講座では、数分で学べるレッスンにエディター、毎日のkata、Concurrency Labを組み合わせています。iOSとAndroidで無料で始められ、初心者から上級者まで順番に学べる51コースが用意されています。
スマートフォンでGoコードをコンパイルして実行できますか?
はい、接続があれば可能です。Goを学ぶ - コーディング講座はプログラムをGoランナーに送信し、出力を表示します。同じランナーでgofmt、go vet、レース検出器も利用できます。コードはスマートフォン自体で実行されないため、実行ボタンを押すときはオンラインである必要があります。また、ランナーには少ないメモリ割り当てや最大バイナリサイズなどの制限があります。
アプリ内ランナーはGenericsに対応していますか?
現在は対応していません。Goを学ぶ - コーディング講座のランナーはGo 1.13で、GenericsはGo 1.18で追加されたため、型パラメーターやanyキーワードを使うプログラムはそこでコンパイルできません。そうした場合、アプリは平易な言葉でそのことを知らせ、古い形式を提案します。Genericsのコース自体は、レッスンとして引き続き読むことができます。
Goのレース検出器とは何ですか?アプリではどのように使いますか?
レース検出器は、2つのgoroutineがロックなしで同じメモリにアクセスしたときに報告します。これは、時々しか発生しないバグです。Goを学ぶ - コーディング講座では、Concurrency Labで、レース検出器を使い、200個のgoroutineが更新するカウンターなどのパズルに取り組めます。mutexを追加してもう一度実行することもできます。自分のgoroutineコードを貼り付け、レース検出器で実行することも可能です。
Goのkataとは何ですか?
kataとは、コードで解く小さく焦点を絞った演習です。たとえば、非ASCIIテキストを正しく処理して文字列を逆順にしたり、errors.Isが引き続きエラーを見つけられるようにエラーをラップしたりします。Goを学ぶ - コーディング講座では、毎日新しいkataに取り組み、隠しケースを含むケースのテーブルで関数を検証し、その後にイディオムを解説します。毎日のkataは全員無料で利用できます。
始めるのにプログラミング経験は必要ですか?
いいえ。Goを学ぶ - コーディング講座では、Goとは何か、なぜ存在するのかから始め、変数、型、制御フローへと進みます。すべての概念は、実践する前に平易な言葉で説明されます。別の言語の経験があれば初期コースをより速く進められますが、最初のコースはまったくの初心者向けに書かれています。
Learn Goは無料ですか?
アプリは無料でダウンロードできます。最初のコース、毎日のkata、毎日のAI Mentor利用枠、無制限のgofmtチェック、レース検出器を使った無制限の実行、1日数回のgo vet実行が無料で利用できます。Proでは、すべてのコースが利用可能になり、広告が削除され、AI Mentorが無制限になり、kataライブラリとエスケープ解析が開放されます。
最後に証明書はもらえますか?
はい。最終試験に合格すると、コース修了証が発行されます。取り組んだ内容が示され、面接で説明できる小さなプロジェクトと一緒に提示するとよい実績になりますが、認定された学術資格ではありません。
Learn GoはGolangの面接対策に役立ちますか?
はい、役立ちます。模擬面接では、スライスと配列の違いから、実行時にインターフェース値が保持するものまで、ジュニア、ミッド、シニアの各レベルから5問が出題され、回答が採点されてフィードバックが提供されます。Go Recallカードでよくある落とし穴を反復練習でき、面接で弱かったテーマはRecallデッキに追加されます。採点付きの面接は週1回無料です。
対応しているプラットフォームと言語は何ですか?
Goを学ぶ - コーディング講座は、App Storeを通じてiOSで、Google Playを通じてAndroidで利用でき、インターフェースは22言語に対応しています。レーティングは4+で、教材には年齢制限のある内容は含まれていません。
CoddyKitのその他のアプリ
iOS および Androidで利用できます。