Contents
スポンサードリンク
学習方針と期待できる成果
| 項目 | 内容 |
|---|---|
| 対象 | プログラミング未経験または C 言語に触れたことが浅い初心者 |
| 期間 | 7 日間(1 日あたり約2〜3 時間)で基礎概念とハンズオン演習を完了 |
| 到達レベル |
|
| 実務へのブリッジ | 完了後は「応用教材」や「アルゴリズム演習」に移行し、実務で要求されるコード品質(エラーハンドリング、テスト、Git 管理)を身につけます。 |
注意:本プランは「基礎の土台」を作ることが目的です。実務レベルの開発には、業務ドメイン知識やコードレビュー経験など、別途学習・実践が必要です。
開発環境のセットアップ
1. VS Code の導入と必須拡張機能
| 手順 | 操作内容 |
|---|---|
| ① ダウンロード | https://code.visualstudio.com/ から OS に合ったインストーラを取得し、指示に従ってインストール。 |
| ② 拡張機能のインストール | VS Code 左側メニューの「拡張機能」(⇧⌘X) を開き、以下 2 つを検索してインストール
|
| ③ 推奨設定 | settings.json に以下を追記し、保存します。"C_Cpp.intelliSenseEngine": "Default" "editor.formatOnSave": true |
2. コンパイラ(GCC / Clang)の導入と PATH 設定
| OS | 手順 |
|---|---|
| Windows | 1. https://www.msys2.org/ をインストール 2. MSYS2 ターミナルで pacman -Syu → 再起動後 pacman -S mingw-w64-x86_64-gcc3. 環境変数に C:\msys64\mingw64\bin を追加(※システムプロパティ > 環境変数) |
| macOS | 1. Homebrew がインストールされていない場合は /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2. brew install gcc(Clang は Xcode Command Line Tools (xcode-select --install) で自動インストール) |
| Linux (Ubuntu 系) | sudo apt update && sudo apt install build-essential (gcc, g++, make が一括で入ります) |
確認:ターミナルで
gcc --versionまたはclang --versionが表示されれば成功です。
3. VS Code 用デバッグ構成(launch.json)
- 任意のフォルダーを「ワークスペース」として開く。
srcディレクトリにmain.cを作成し、簡単なコードを書いて保存する(例は後述)。- メニュー Run → Add Configuration… を選択し、表示されるテンプレートから C++ (GDB/LLDB) → g++.exe build and debug active file(Windows)または clang++ - Build and Debug Active File(macOS/Linux)を選ぶ。
- 生成された
.vscode/launch.jsonを以下のように調整する。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/out/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", // macOS/Linux は "lldb" "preLaunchTask": "build", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] } |
- 同時に tasks.json でビルドタスクを定義(
Ctrl+Shift+P→Tasks: Configure Default Build Task→C/C++: gcc build active file)し、出力先ディレクトリout/を作成しておく。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
{ "label": "build", "type": "shell", "command": "gcc", "args": [ "-g", // デバッグ情報を付加 "${file}", "-o", "${workspaceFolder}/out/${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } |
デバッグ手順まとめ
| 手順 | 操作 |
|---|---|
| ① ビルド | Ctrl+Shift+B(タスク実行) |
| ② デバッグ開始 | 左側の「Run」アイコン → 「Launch」設定を選択して ▶︎ |
| ③ ブレークポイント設定 | 行番号左クリックで赤丸を表示。コードが停止したら変数ホバーや Debug Console で評価可能。 |
7 日間の学習スケジュールと各日の目標
各日は「理論(≈30%)」「実装演習(≈70%)」を意識し、必ず手を動かすことがポイントです。
| Day | 学習テーマ | 主なトピック | 演習課題例 |
|---|---|---|---|
| Day 1 | 変数・基本入出力 | 整数・浮動小数点・文字型、printf / scanf の書式指定子 |
|
| Day 2 | 制御構文 | if‑else, switch, for / while / do‑while |
|
| Day 3 | 関数とスコープ | 関数宣言・定義、引数渡し(値渡し/参照渡し)、ローカル/グローバル変数 |
|
| Day 4 | 配列・文字列基礎 | 1 次元・2 次元配列、標準文字列関数(strlen, strcpy, strcmp) |
|
| Day 5 | ポインタと動的メモリ | アドレス演算子、ポインタ演算、malloc / free の基本パターン |
|
| Day 6 | 構造体・enum・typedef | struct, メンバ初期化、enum の使い方、型エイリアス |
|
| Day 7 | ミニプロジェクト(総復習) | ファイル I/O、エラーハンドリング、Git 管理、VS Code デバッグ実践 |
|
時間配分例(1日 2.5 h)
| フェーズ | 時間 |
|---|---|
| 理論解説 & デモ | 45 min |
| コーディング演習 | 90 min |
| デバッグ・リファクタリング | 30 min |
| 振り返り(学んだこと・疑問点) | 15 min |
実務に近いミニプロジェクト:成績管理アプリ
目的と要件
| 項目 | 内容 |
|---|---|
| 機能 |
|
| 品質要件 |
|
| 開発環境 | VS Code + GCC(Windows は MSYS2、macOS/Linux はシステム標準コンパイラ) |
コード構成
1. 基本的なヘッダーと型定義 (student.h)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#ifndef STUDENT_H #define STUDENT_H #include <stdio.h> #include <stdlib.h> #define MAX_NAME 32 // 名前バッファサイズ #define INIT_CAP 4 // 初期確保件数 typedef struct { char name[MAX_NAME]; int score; } Student; #endif /* STUDENT_H */ |
2. ファイル入出力ユーティリティ (io.c)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#include "student.h" /* ---------- データ保存 ---------- */ void save_student(const Student *s, const char *filename) { FILE *fp = fopen(filename, "a"); // 追記モード if (!fp) { perror("fopen (save)"); exit(EXIT_FAILURE); } fprintf(fp, "%s,%d\n", s->name, s->score); fclose(fp); } /* ---------- データ読込(動的確保) ---------- */ Student *load_students(const char *filename, size_t *out_cnt) { FILE *fp = fopen(filename, "r"); if (!fp) { // ファイルが無い=データなし *out_cnt = 0; return NULL; } size_t cap = INIT_CAP; Student *list = malloc(cap * sizeof(Student)); if (!list) { perror("malloc (load)"); exit(EXIT_FAILURE); } *out_cnt = 0; while (fscanf(fp, "%31[^,],%d\n", list[*out_cnt].name, &list[*out_cnt].score) == 2) { (*out_cnt)++; if (*out_cnt == cap) { // 必要に応じて拡張 cap *= 2; Student *tmp = realloc(list, cap * sizeof(Student)); if (!tmp) { perror("realloc (load)"); free(list); exit(EXIT_FAILURE); } list = tmp; } } fclose(fp); return list; } |
3. メインロジック (main.c)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#include "student.h" #include <stdbool.h> #define DATA_FILE "students.txt" /* メニュー表示 */ static void print_menu(void) { puts("\n=== 成績管理アプリ ==="); puts("1) 追加 2) 表示 3) 終了"); printf("選択 > "); } /* 入力バリデーション(整数) */ static bool read_int(int *out) { char buf[16]; if (!fgets(buf, sizeof(buf), stdin)) return false; return sscanf(buf, "%d", out) == 1; } int main(void) { int choice; while (true) { print_menu(); if (!read_int(&choice)) break; // 入力エラーで終了 if (choice == 1) { // ★ 追加 Student s = {{0}}; printf("名前 (最大 %d 文字): ", MAX_NAME - 1); scanf("%31s", s.name); // バッファオーバーフロー防止 printf("スコア: "); if (!read_int(&s.score)) { puts("数値が不正です。"); continue; } save_student(&s, DATA_FILE); puts("保存しました。"); } else if (choice == 2) { // ★ 表示 size_t cnt = 0; Student *list = load_students(DATA_FILE, &cnt); if (!list) { puts("[データなし]"); continue; } puts("\n--- 登録済み学生 ---"); for (size_t i = 0; i < cnt; ++i) printf("%2zu: %s\t%d\n", i + 1, list[i].name, list[i].score); free(list); } else if (choice == 3) { // ★ 終了 puts("プログラムを終了します。"); break; } else { puts("1〜3 の数字で選んでください。"); } } return 0; } |
ビルド手順(VS Code)
|
1 2 3 4 |
# ターミナル (VS Code 内) で実行 gcc -g main.c io.c -o out/app # デバッグ情報付きでビルド ./out/app # 実行確認 |
デバッグポイント
| シーン | 確認すべきこと |
|---|---|
fopen が失敗したとき |
perror の出力が正しいか、ファイルパスに誤りがないか |
| メモリ確保が失敗したとき | malloc/realloc 後のポインタが NULL でないか |
| 入力バッファオーバーフロー | scanf("%31s", …) の幅指定が機能しているか |
進捗管理と次のステップへのロードマップ
1. 学習プラットフォームの活用例(app‑tatsujin.com)
| 機能 | 使い方 |
|---|---|
| タスクボード | 各 Day のチェックリストをカード化し、未着手 → 実装中 → 完了 にドラッグするだけで進捗が一目瞭然。 |
| デイリーログ | 学習時間・疑問点・解決策を毎日記録。後から検索できるので、復習時に「どこでつまずいたか」がすぐ分かります。 |
| コメント機能 | カードごとに質問やヒントを書き込めるため、仲間と情報共有しながら学習できます(※無料プランでも利用可)。 |
公式リンク:https://app-tatsujin.com/c-language-1-week-learning-plan-2026/
2. 初心者向け教材・参考書(実績のあるもの)
| 書籍・教材 | 出版社/提供元 | 推奨ポイント |
|---|---|---|
| 『C言語入門 (第3版)』 | 技術評論社 | 図解が豊富で、VS Code との連携例が付録に掲載。 |
| Udemy コース「C Programming for Beginners」 | Udemy | ビデオと実践環境(オンライン IDE)を同時に提供。 |
| 「Learn C The Hard Way」 (Zed A. Shaw) | オンライン(英語) | 手を動かすことに重点を置いた演習が多数。 |
選び方のチェックリスト
- 章構成が 7 日間またはそれに近い → 学習スケジュールと合わせやすい。
- コード例が VS Code(または同等のエディタ)で動作確認できる → 環境差異による挫折を防止。
- 演習問題に解答・解説が付いている → 自己評価が容易になる。
3. 1 週間後に挑戦すべき中級教材とアウトプット
| 項目 | 内容 |
|---|---|
| 中級書籍 | 『Cプログラミング実践入門』(技術評論社) – ポインタの高度利用、マルチスレッド、Makefile の使い方。 |
| アルゴリズム演習 | LeetCode(Easy タグ)を C 言語で解く → Two Sum, Reverse Linked List など。 |
| ポートフォリオ作成 | GitHub リポジトリに Day 7 のプロジェクトを公開し、README に ・概要 ・ビルド手順(VS Code 用 launch.json) ・使用したアルゴリズムと学んだこと を記載。採用担当者がすぐにクローンできる形にする。 |
参考文献・教材一覧
- Microsoft – C/C++ Extension for VS Code
https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools - MSYS2 – pacman パッケージマネージャ
https://www.msys2.org/ - GNU Compiler Collection (GCC) Documentation
https://gcc.gnu.org/onlinedocs/ - Clang – Official Documentation
https://clang.llvm.org/docs/ - app‑tatsujin.com 1週間学習プラン(2026年版)
https://app-tatsujin.com/c-language-1-week-learning-plan-2026/ - 『C言語入門 (第3版)』 – 技術評論社
ISBN: 978-429710xxxx - Udemy – C Programming for Beginners(英日字幕対応)
https://www.udemy.com/course/c-programming-for-beginners/ - LeetCode – Easy Problems (C language)
https://leetcode.com/problemset/all/?difficulty=Easy&language=C
まとめ
- 現実的なゴール:7 日間で「基礎概念とハンズオン演習」を完了し、VS Code 上で自力デバッグできるレベルに到達する。
- 環境構築は VS Code + Microsoft の C/C++ 拡張+GCC/Clang を組み合わせ、
launch.jsonとtasks.jsonでビルド・デバッグを自動化すれば初心者でも安心です。 - 学習スケジュールは理論と実装比率を意識し、毎日必ずコードを書かせることで記憶定着を促します。
- ミニプロジェクト(成績管理アプリ)はファイル I/O・ポインタ・動的メモリ確保という実務で頻出する要素を網羅し、完成後は GitHub に公開してアウトプットの形に仕上げます。
- 継続学習として中級教材やアルゴリズム問題に挑戦し、ポートフォリオ化すれば転職・社内プロジェクトで「実務即戦力」になる土台が整います。
このロードマップを参考に、焦らず 「手を動かす」 ことを最優先に学習を進めてください。継続的な実装経験が、C 言語の本当の力量へとつながります。
スポンサードリンク