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

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

教育 · 無料 · iOS & Android · CoddyKit

C++を学ぶ - コーディング講座 — スマートフォンでC++コードを書き、コンパイルして実行できます

C++を学ぶ - コーディング講座は、初心者やコンピューターサイエンスの学生、C++を実際に書きながら学びたい開発者向けの無料iOSおよびAndroidアプリです。内蔵エディターからコードを実際のGCCコンパイラーに送り、出力と終了コードを確認できます。また、AI Mentorがコンパイラーエラーをわかりやすい英語に変換します。51 courses and 200+ short lessonsで、最初のcoutからクラス、STL、ムーブセマンティクス、C++20まで学べます。

App Store — 無料でダウンロードGoogle Play — 無料でダウンロード
価格
無料、Proへのアップグレード
プラットフォーム
iOSおよびAndroid
言語
22
年齢レーティング
4+
必要環境
iOS 15.1以降
App Store
4.9 ★ (7)
アラビア語インターフェースのC++アプリのホーム画面。「最初のレッスンを開始」ボタン、毎日の目標、World Coding Challengeのカウントダウン、「Ask Mentor」と「Generate your lesson」のショートカットが表示されていますアラビア語インターフェースのChallengeタブ。World Coding Challenge、受講中のC++コースのチャレンジ、コードで参加するオプションが表示されています
51コースと200+のレッスン
GCCエディターに搭載された実際のコンパイラー
3/day毎日3つの練習習慣
ポインターは、12番目のレッスンまでは怖く感じるかもしれません。

C++は学ぶのが難しいという評判がありますが、その大きな理由は、所有権、ヒープ、テンプレート、STLを初日にすべて一度に見せられてしまうことです。51の短いコースに分けることで、同じ内容を一度に一つのレイヤーずつ学べます。そして、すべての概念の最後には、自分でコンパイルして実行するコードが用意されています。

概要

C++を学ぶ - コーディング講座は、最初のcoutからクラス、STL、ムーブセマンティクス、モダンなC++20までを学べる無料iOSおよびAndroidアプリです。51 courses and 200+ short lessonsを、5つのトラック(基礎、メモリ、オブジェクト、STL、実際のプログラムの構築)に分類しています。実際のGCCコンパイラーでコンパイルできるエディター、20のガイド付きプロジェクト、60のコーディングミッション、エラー翻訳機能付きのAI Mentorも利用できます。

アプリの内容

画面イメージ

アラビア語インターフェースのC++アプリのホーム画面。「最初のレッスンを開始」ボタン、毎日の目標、World Coding Challengeのカウントダウン、「Ask Mentor」と「Generate your lesson」のショートカットが表示されています
ホームホーム画面には、開始ボタン付きのコースカード、毎日の目標、次のWorld Coding Challengeラウンドまでのカウントダウンが表示され、AI Mentorとレッスン生成へのショートカットも用意されています。スクリーンショットではアラビア語インターフェースを使用しています。
アラビア語インターフェースのChallengeタブ。World Coding Challenge、受講中のC++コースのチャレンジ、コードで参加するオプションが表示されています
ChallengeタブChallengeタブでは、World Coding Challengeを開いたり、受講中のC++コースから対戦を始めたり、ほかのチャレンジを見たり、コードでチャレンジに参加したりできます。
アラビア語インターフェースのプロフィール画面。連続学習日数カウンター、90日間のアクティビティヒートマップ、達成バッジのグリッドが表示されています
連続学習日数とバッジプロフィールでは、毎日の連続学習日数、90日間のアクティビティヒートマップ、達成バッジを確認できます。これらが短時間の学習を習慣化してくれます。
AI chat screen asking How can I help you, with suggested prompts to explain the key concepts, give tips, quiz you and create a learning roadmap
AI chatThe AI chat answers questions and starts from suggestions: explain the key concepts, share tips, quiz you or build a learning roadmap.
Learn C++ home screen with the C++ Academy course card, Start First Lesson, a daily goal ring, a Feature Request row and the Skill Hub
HomeThe home screen up close: the C++ Academy course card with Start First Lesson, a daily goal ring, a Feature Request row and the Skill Hub.

コース

C++コースで学べること

アプリ独自のカリキュラムによる51コース。初めてコンパイルするプログラムから、ロックフリー並行処理やコルーチンまで学べます。

  1. 構文、文字列、制御フロー

    コンパイラのセットアップと最初のプログラムの実行から始め、変数と型推論、std::stringとCスタイルのchar配列の違い、入力・出力ストリーム、そして後続のすべてのコースで前提となる制御フローのパターンを学びます。

  2. 構造体、ベクター、ミニプロジェクト

    構造体とクラスの基礎、数値と数学の扱い、ベクターと動的配列、参照渡しを学び、それらを組み合わせた小さな実践プロジェクトに取り組みます。

  3. メモリ、RAII、rawポインタに代わる安全な方法

    スタックとヒープのメモリモデル、RAIIとリソース管理、例外処理とnoexcept、const correctness、安全なポインタの使い方、そして手動でのnewとdeleteに代わる現代的な方法としてのスマートポインタを学びます。

  4. 現代的な型、コンテナ、オブジェクト指向設計

    enum、union、std::variant、std::optionalとstd::expected、std::string_viewとstd::span、連想コンテナとunordered_mapのハッシュ、継承とポリモーフィズム、ユーザー定義型のoperator overloadingを学びます。

  5. ビルドツール、ファイルI/O、標準ライブラリ

    CMakeとパッケージ管理によるビルド、fstreamを使ったファイルI/O、時間を扱うchronoライブラリ、regexヘッダーによるパターンマッチングを学びます。C++のコードをファイルシステムや時計とつなぐ要素を扱います。

  6. STLと現代的なC++11からC++20

    C++11からC++20までで変わった点を概観し、ムーブセマンティクスと右辺値参照、ラムダとstd::function、STLアルゴリズム、イテレーターとranges、サニタイザーを使ったデバッグを学びます。

  7. テンプレート、パフォーマンス、システムプログラミング

    並行処理プリミティブ、テンプレート特殊化とSFINAE、高度なテンプレートとメタプログラミング、C++20 concepts、パフォーマンスプロファイリング、ライブラリの公開API設計を学びます。

  8. 高度な並行処理とコルーチン

    mutexでは遅すぎる場面に向けたロックフリープログラミングとアトミック操作、そして言語に追加された最も新しい機能であるC++20コルーチンを学びます。前提となる内容がすべて先に登場するため、最後に扱います。

使い方

C++のセッションの進め方

各セッションでは、短いレッスンと実行できるコードを組み合わせ、さらに毎日の短いドリルで構文を新鮮に保ちます。

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

    コースを開き、struct、参照、スマートポインターなど、1つの概念を扱うレッスンを1つ受けます。最初のコースは無料なので、何かを決める前にレッスンの進め方を確認できます。

  2. 書いて、コンパイルして、実行する

    モバイルエディターでコードを入力して実行します。実際のGCCコンパイラーがコードをビルドし、出力と終了コードを返します。cinから読み込むプログラムには、入力を入力する場所も用意されます。コンパイラーはリモートで動作するため、コードの実行には接続が必要です。

  3. 毎日のドリルとAI Mentorで腕を磨く

    5つの短いプログラムの出力を予測したり、毎日のバグハントで壊れたプログラムを1つ修正したり、60秒のSyntax Sprintに挑戦したりできます。エラーが読みにくいときは、AI Mentorに貼り付けてください。1文で説明してくれるほか、修正すべき行も示します。

内容

アプリに含まれるもの

51

コースと200+のレッスン

コースマップでは、コースを5つのトラック(基礎、メモリ、オブジェクト、STL、実際のプログラムの構築)に分類しています。変数やストリームから、ポインター、RAII、テンプレート、さらにCMake、並行性、コルーチンまで学べます。

GCC

エディターに搭載された実際のコンパイラー

コードはシミュレーターではなく、実際のGCCコンパイラーでビルドされます。出力と終了コードを確認でき、cinから読み込むプログラムに入力を渡し、ワンタップで再実行できます。実行したプログラムはすべて保存されます。

3/day

毎日3つの練習習慣

出力予測(毎日5つの短いプログラムに取り組み、コンパイラーが答えを出す前に回答します)、無料のヒント付きの毎日のバグハント、ワンタップで答える問題に挑戦する60秒のSyntax Sprintです。

20

ガイド付きプロジェクト

在庫管理、銀行口座、ポリモーフィズムを使った図形、テンプレートスタック、RPN計算機、リンクリスト、ステートマシンなど、実際のプログラムをステップごとに構築します。

AI

AI Mentorとエラー翻訳機能

ポインターで行き詰まったり、テンプレートエラーが大量に表示されたりしていませんか?エラーを貼り付ければ1文で説明してくれます。または、AI Mentorに自然な言葉で何でも質問できます。

60

ミッションとワールドチャレンジ

簡単なものから難しいものまで60のコーディングミッション、毎日新しいコーディング問題、そしてWorld Coding Challengeを利用できます。1日3回のライブ形式のグローバルラウンド、リーダーボード、連続記録、XP、リマインダーも用意されています。

背景

なぜC++は、遅さが許されないソフトウェアを今も動かしているのでしょうか?

C++はマシンコードに直接コンパイルされ、プログラマーがメモリを直接制御できるため、コードとハードウェアの間に何も介在しません。そのため、高水準言語が登場してから何十年も経った今でも、Unrealのようなゲームエンジン、高頻度取引システム、ロボットのファームウェア、多くのオペレーティングシステムのコンポーネントはC++で書かれています。この直接的な制御こそが、C++を最初は難しく感じさせる理由でもあります。C++プログラムでは、値がどこに存在し、誰が解放する責任を負うのかを明示しなければなりません。一方、PythonやJavaScriptでは、その処理が見えないところで行われます。

スタックとヒープメモリモデル

スタックメモリは関数が戻った瞬間に自動的に解放されますが、ヒープメモリは何かが明示的に解放するまで残ります。ダングリングポインター、メモリリーク、解放済みメモリに触れたことによるクラッシュなど、初心者が遭遇する多くのバグは、この2つを混同することに起因します。

RAIIC++独自の安全策

Resource Acquisition Is Initializationは、リソースのライフタイムをオブジェクトのコンストラクターとデストラクターに結び付けます。そのため、オブジェクトがスコープを外れると、リソースは自動的に解放されます。スマートポインターはメモリにRAIIを適用したものであり、このイディオムによって、現代のC++はそれ以前の生ポインターによるコードよりはるかに安全になっています。

STL言語を支えるツールキット

Standard Template Libraryには、vector、map、unordered_mapなどのコンテナに加え、ソート、検索、変換をすでに実装しているイテレーターやアルゴリズムが含まれています。自分でリンクリストを一から作るのではなくSTLを使うようになったとき、C++は手作業ばかりの言語ではなくなったと感じられます。

テンプレートどの型でも動作するコード

テンプレートを使うと、コンパイル時にコンパイラーが解決できるあらゆる型に対して、1つの関数またはクラスを動作させられます。実行時のコストはかかりません。これはSTL自体の基盤となる仕組みであり、C++のライブラリが汎用的でありながら高速でいられる理由でもあります。

適しています

向いている方・向いていない方

次のような方におすすめです

  • C++の難所であるポインタ、ヒープ、テンプレートを、分厚いマニュアルで一度に学ぶのではなく、一つずつ身につけたい方
  • STLと基本的なデータ構造を前提とする授業に取り組んでいるコンピューターサイエンス専攻の学生の方
  • ゲーム、組み込み、システム分野を目指していて、メモリモデルをきちんと理解したい方
  • PythonやJavaから来て、メモリ上で何が起きているのか理解したい方
  • テンプレートの定型的な説明をフォーラムで探すより、実際のコンパイラーエラーをAI Mentorに貼り付けて質問したい方

次のような方には適していません

  • 接続なしでコードを実行したい方。ただし、プログラムはリモートのGCCコンパイラでコンパイルされます
  • 複数ファイルのCMakeプロジェクト、大規模な外部ライブラリ、デバッガーなど、コンピューターで使うべき本格的なデスクトップツールチェーンが今すぐ必要な方
  • 51コースすべてを無料で使いたい方。最初のコースと毎日のドリルセットは無料で、残りはProで利用できます
  • すでにC++を仕事で使っていて、順序立てたコースではなくリファレンスを求めている方

ご質問

よくある質問

C++を学ぶ - コーディング講座とは?

C++を学ぶ - コーディング講座は、短いレッスンと、実際のGCCコンパイラでコンパイルできる内蔵コードエディターを通してC++プログラミングを学べる無料のiOSおよびAndroidアプリです。初心者、コンピューターサイエンスの学生、ゲーム・システム開発者、プログラミングの授業に備える方のために作られています。インターフェースは22言語に対応しています。

C++を学ぶ - コーディング講座は無料ですか?

App StoreとGoogle Playから無料でダウンロードでき、無料で始められます。最初のコース、毎日のPredict the outputセット、毎日のbug hunt、1日3回のSyntax Sprint、最初のガイド付きプロジェクト、2つのミッション、毎日のコーディング問題、World Coding Challenge、1日1問のAI Mentorへの質問は無料です。Proでは、すべてのコース、ミッション、プロジェクト、無制限のSyntax Sprint、AIツールの全機能、修了証試験、広告なしの環境を利用できます。

スマートフォンでC++をコンパイルして実行できますか?オフラインでも動作しますか?

はい。アプリのエディターでC++を書き、スマートフォンから実行できます。実際のGCCコンパイラがコードをビルドし、出力と終了コードを返します。cinから読み込むプログラムでは、入力した値を受け取れます。コンパイラはリモートで動作するため、コードの実行にはインターネット接続が必要です。大規模な複数ファイルのCMakeプロジェクトは、コンピューターでビルドする方が適しています。

対象者と学習内容を教えてください

C++を第一言語または第二言語として学ぶ初心者、C++の授業を受けている学生、ゲーム・システム開発者、メモリについて理解したいPythonやJavaの開発者に適しています。51コースで、変数、文字列、ストリーム、制御フロー、構造体とクラス、ベクター、参照、ポインタ、RAII、スマートポインタ、テンプレート、ラムダ、STL、ファイルI/O、CMake、並行処理、コルーチンを扱います。

Predict the output、Bug hunt、Syntax Sprintとは?

3つの毎日のC++練習習慣です。Predict the outputでは、毎日5つの短いプログラムが出題され、コンパイラで結果を確かめる前に答えを予想します。bug huntでは、毎日1つ、壊れたプログラムを修正し、コンパイラで正しいことを証明します。無料のヒントも利用できます。Syntax Sprintは、60秒間でワンタップ式の構文問題に答え、自己ベストの更新を目指すゲームです。

C++では、なぜポインタやスタックとヒープの違いが難しく感じられるのですか?

多くの言語では、値をどこに置き、いつ解放するかを言語側が決めてくれます。一方、C++では自分で決める必要があり、それが難しさの根本的な原因です。ポインタは別の値のアドレスを保持する変数にすぎませんが、スタックとヒープを取り違えると、ダングリングポインタ、メモリリーク、クラッシュが発生します。このアプリでは、メモリモデル、RAII、スマートポインタをそれぞれ独立したコースで学べます。

RAIIとは何ですか?現代的なC++では、なぜ手動のnewとdeleteよりRAIIが好まれるのですか?

RAII(Resource Acquisition Is Initialization)は、リソースのライフタイムをオブジェクトのコンストラクタとデストラクタに結び付けます。そのため、オブジェクトがスコープを抜けると自動的に解放され、deleteの呼び出しを忘れることもありません。スマートポインタはメモリにRAIIを適用したもので、rawのnewとdeleteからスマートポインタへ移行することは、現代的なC++における安全性向上の大きなポイントの一つです。

自分でデータ構造を書く前にSTLを学ぶべきですか?

基本的には、はい。Standard Template Libraryには、テスト済みのベクター、マップ、セット、イテレーター、アルゴリズムがすでに用意されているため、再実装する前にstd::sortを使うという判断を身につけられます。このアプリでは、基礎を固めた後、ガイド付きプロジェクトでリンクリスト、テンプレートスタックなどのデータ構造も実装します。

C++の面接対策にも役立ちますか?

実践面で役立ちます。Predict the outputとbug huntでは、コードを注意深く読む力を鍛えられます。STLコースでは、面接でよく使われるコンテナやアルゴリズムを扱い、リンクリスト、テンプレートスタック、RPN電卓などのガイド付きプロジェクトで一般的なデータ構造を練習できます。ただし、専用の面接問題集ではなく、コースとして構成されています。

App StoreにあるLearn C++: Code & Practiceは同じアプリですか?

はい。App StoreではLearn C++: Code & Practice、Google PlayではC++を学ぶ - コーディング講座というタイトルで掲載されていますが、51コースを備えた同じアプリです。最終試験に合格すると修了証が発行されます。学習成果を記録するものであり、認定資格ではありません。

始める

今日、最初のC++プログラムをコンパイルしましょう

51コース、実際のGCCコンパイラ、AI Mentorを搭載。iOSとAndroidで無料で始められ、22言語に対応しています。

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