Goを学ぶ - コーディング講座アプリのアイコン

Goを学ぶ - コーディング講座

教育 · 無料 · iOS & Android · CoddyKit

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がサポートします。

App Store — 無料でダウンロードGoogle Play — 無料でダウンロード
価格
無料、Proへのアップグレード
プラットフォーム
iOS、Android
言語
22
年齢レーティング
4+
必要環境
iOS 15.1以降
「最初のレッスンを始める」ボタン、毎日の目標リング、機能リクエストカードが表示されたGo学習パスのホーム画面進捗バー、無料の最初のレッスングループ、「コースを変更」ボタンが表示されたGo Kickoff Concepts and Setupコースの概要
51コース、A1からC1まで
-racerace detectorを備えたConcurrency Lab
毎日毎日新しいkata
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学習パスのホーム画面
学習パスホーム画面を開くと、開始ボタン、毎日の目標、Skill Hubへのリンクがある学習パスが表示されます。
進捗バー、無料の最初のレッスングループ、「コースを変更」ボタンが表示されたGo Kickoff Concepts and Setupコースの概要
コース概要最初のコース「Go Kickoff: Concepts & Setup」は無料として表示され、3つの短いレッスンに分かれています。
package main、import fmt、fmt.Printlnの呼び出しを含むGoプログラムを表示するコードエディターと、最初のプログラムについてのレッスン
コードエディターpackage mainのファイルを開いたコードエディターと実行ボタンが表示された「最初のプログラム」というレッスン
主要な概念の説明、ヒント、クイズ、学習ロードマップの作成を提案するプロンプトが表示されたAIチャット画面
AI Mentor4つの提案プロンプトからチャットを開始できます。主要な概念の説明、ヒント、クイズ、またはロードマップの作成を依頼できます。
学習パス、毎日の目標、Skill Hubが表示されたライトテーマのホーム画面
ホーム画面アクティブなコースの下に毎日の目標とSkill Hubが表示された、同じホーム画面のライトテーマ版

コース

Goコースで学べること

アプリ独自のコース一覧にある51コースと203レッスン。レベルはA1からC1までで、最初のプログラムからプロファイリング、ガベージコレクターまで扱います。

  1. Goと基礎を学ぶ

    Goとは何か、なぜGoogleがGoを作ったのかを学び、続いて変数、型とゼロ値、定数、if、for、switchを使った制御フローを学びます。

  2. 関数、スライス、マップ

    複数の戻り値を持つ関数、defer、可変長パラメーター、配列、スライス、マップに加え、文字列、fmtのフォーマット、timeパッケージを扱います。

  3. 構造体、ポインター、インターフェース

    構造体とメソッド、値レシーバーとポインターレシーバーの違い、ポインター、暗黙的なインターフェースとダックタイピング、コンポジションのための埋め込みを学びます。

  4. エラー、パッケージ、標準ライブラリ

    errors.Isとerrors.Asを使った明示的なエラーハンドリング、パッケージとモジュール、ファイルI/OとJSON、正規表現、ソート、バッファ付きI/Oを扱います。

  5. Goroutine、チャネル、Sync

    Goroutineとチャネルの基礎、selectとチャネルパターン、mutexとsyncパッケージ、キャンセルに使うcontext、ワーカープールとパイプラインを学びます。

  6. HTTP、REST、データベース

    net/httpを使ったHTTPサーバーとクライアント、Ginを使ったREST API、ミドルウェアパターン、sqlxとpgxを使ったdatabase/sql、GORM、WebSocketsを扱います。

  7. テスト、ツール、デプロイ

    テーブル駆動テストとサブテスト、Cobraを使ったコマンドラインアプリ、Viperを使った設定、slogを使った構造化ロギング、マルチステージDockerビルドを学びます。

  8. 高度なGo

    型パラメーターと制約を使ったGenerics、ベンチマークとpprofプロファイリング、Protocol Buffersを使ったgRPC、リフレクション、メモリモデルを扱います。

使い方

セッションの進め方

各レッスンは短い読み物の後にコードを実行する構成なので、考え方の理解と実践を同じ時間に行えます。

  1. 短いレッスンを1つ読む

    courseを開き、数分で終わる1つのlessonに取り組みます。理論はわかりやすい言葉で説明され、最初のlessonに登場するpackage mainとfmt.Printlnのprogramのような小さなexampleも用意されています。

  2. 実際のGo toolchainで実行する

    editorからGo runnerにprogramを送り、outputを表示します。gofmt、go vet、race detectorも同じように実行されるため、runを押すときは接続が必要です。programがcrashすると、errorの内容をわかりやすい言葉で説明します。

  3. 別の角度から練習する

    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+で、教材には年齢制限のある内容は含まれていません。

始める

今日、初めてのgoroutineを書きましょう

iOSとAndroidで無料で始められ、22言語に対応しています。

App Store — 無料でダウンロードGoogle Play — 無料でダウンロード
最終確認日 · CoddyKitが公開 · プライバシーポリシー
iOS および Androidで利用できます。