第1章:はじめの一歩
この章で学ぶこと
- プログラミングとは何か
- コンピュータが「理解できるもの」の正体
- なぜC言語を学ぶのか
- 42とPiscineについて
- 学習を始める前の心構え
---
1.1 プログラミングとは何か
コンピュータへの「お願い」
プログラミングとは、コンピュータに仕事をさせるための指示書を書くことです。
日常生活で例えてみましょう。あなたが友人に「コンビニでおにぎりを買ってきて」とお願いするとします。友人は人間なので、この曖昧な指示でも理解して行動できます。
しかし、コンピュータは違います。コンピュータにおにぎりを買ってきてもらうには、こんな指示が必要です:
1. 玄関のドアを開ける
2. 外に出る
3. ドアを閉める
4. 右を向く
5. 100メートル直進する
6. 「コンビニ」という看板を探す
7. 看板が見つかったら入口に向かう
8. 入口のドアを押して開ける
9. 店内に入る
10. 「おにぎり」と書かれた棚を探す
11. 棚からおにぎりを1つ取る
12. レジに向かう
13. 店員に商品を渡す
14. 財布から必要な金額を出す
15. お釣りを受け取る
16. 商品を受け取る
17. 店を出る
18. 来た道を戻る
19. 玄関のドアを開ける
20. 中に入る
21. おにぎりを渡す
これがプログラミングの本質です。人間にとって当たり前のことを、一つ一つ明確に指示する必要があります。
なぜこんなに細かいのか
コンピュータは非常に賢いようで、実は何も「考える」ことができません。与えられた指示を超高速で、正確に、忠実に実行するだけです。
この違いを理解することが、プログラミングの第一歩です。
プログラムとプログラミング言語
コンピュータへの指示書をプログラムと呼びます。そしてプログラムを書くための言葉がプログラミング言語です。
プログラミング言語は数百種類存在しますが、それぞれに特徴があります:
| 言語 | 特徴 | 主な用途 | |------|------|----------| | C | 高速、ハードウェアに近い | OS、組み込みシステム | | Python | 読みやすい、学びやすい | AI、データ分析 | | JavaScript | ブラウザで動く | Webサイト | | Java | どこでも動く | 企業システム | | Swift | Apple製品向け | iPhoneアプリ |
この教材ではC言語を学びます。
---
1.2 コンピュータが理解できるもの
0と1の世界
コンピュータは究極的に0と1しか理解できません。
これは電気のON/OFFに対応しています:
- 電気が流れている = 1
- 電気が流れていない = 0
この0と1の組み合わせを2進数(バイナリ)と呼びます。
人間の言葉: 「A」という文字
コンピュータ: 01000001
すべての文字、数字、画像、音声、動画は、最終的に0と1の羅列として保存・処理されています。
機械語とプログラミング言語
コンピュータのCPU(頭脳)が直接理解できる0と1の命令を機械語と呼びます。
機械語の例(足し算):
10110000 00000101
00000100 00000011
人間がこれを直接書くのは非常に困難です。そこで、人間が読み書きしやすいプログラミング言語が生まれました。
// C言語で足し算
int result = 5 + 3;
プログラミング言語で書いたプログラムは、コンパイラまたはインタプリタというソフトウェアによって機械語に変換されます。
C言語とコンパイラ
C言語はコンパイル型言語です。
[C言語のコード] → [コンパイラ] → [機械語(実行ファイル)] → [実行]
コンパイルは「翻訳」に似ています。日本語の本を英語に翻訳するように、C言語を機械語に翻訳するのです。
---
1.3 なぜC言語を学ぶのか
C言語の歴史
C言語は1972年にデニス・リッチーによって開発されました。ベル研究所でUNIXオペレーティングシステムを開発するために生まれた言語です。
50年以上の歴史がありながら、今でも世界中で使われている理由があります。
C言語が重要な理由
1. コンピュータの仕組みを理解できる
C言語はハードウェア(コンピュータの物理的な部品)に近いレベルで動作します。メモリの管理やCPUの動作を直接制御できるため、「コンピュータがどう動いているか」を深く理解できます。
// メモリのアドレスを直接扱う例
int number = 42;
int *pointer = &number; // numberのメモリアドレスを取得
2. 多くの言語の基礎
現代の多くのプログラミング言語はC言語の影響を受けています:
C言語を学ぶことで、他の言語の習得が容易になります。
3. 高速なプログラムが書ける
C言語は機械語に近いため、非常に高速なプログラムを作成できます。
これらのパフォーマンスが重要なソフトウェアの多くはC言語で書かれています。
4. 42のカリキュラムで必須
42のカリキュラムでは、C言語が基盤となっています。Piscine(入学試験)からCommon Core(本科)まで、C言語の深い理解が求められます。
C言語の難しさ
正直に言うと、C言語は初心者にとって難しい言語です。
しかし、これらの「難しさ」は「深い理解」につながります。最初は大変でも、乗り越えれば大きな力になります。
---
1.4 42とPiscineについて
42とは
42は、フランス発祥の革新的なプログラミングスクールです。
特徴:
- 学費無料
- 先生がいない(ピアラーニング)
- 自分のペースで学習
- プロジェクトベースの学習
- 世界中にキャンパス
日本では42 Tokyoがあります。
Piscineとは
Piscineはフランス語で「プール」を意味します。42の入学試験として、約1ヶ月間の集中的なプログラミング体験を行います。
Piscineの特徴:
- 4週間の集中学習
- 毎日課題が出される
- C言語の基礎を学ぶ
- 協力と競争
- 睡眠時間との戦い
- ターミナル(コマンドライン)を操作できる
- vimエディタでコードを書ける
- C言語の基本文法を理解している
- 簡単なプログラムを自分で書ける
- エラーメッセージを読んで対処できる
Piscineでは、C言語の基礎的な知識が前提となっています。この教材は、Piscineで苦労しないための準備として作成されました。
この教材の目標
この教材を終えると、以下のことができるようになります:
これらはPiscineの前提知識です。Piscineは「C言語を学ぶ場所」ではなく「C言語で問題を解く場所」です。基礎は事前に身につけておきましょう。
---
1.5 学習を始める前の心構え
プログラミング学習の現実
プログラミング学習について、重要なことをお伝えします。
エラーは当たり前
プログラムは最初は動きません。エラーが出るのが普通です。
プロのプログラマーでも、コードを書いて一発で動くことは稀です。エラーを見て、原因を考え、修正する。この繰り返しがプログラミングです。
書く → エラー → 調べる → 修正 → 書く → エラー → ...
エラーを「失敗」と捉えないでください。エラーは「学習の機会」です。
写経から始める
最初は、教材のコードをそのまま書き写すことをお勧めします。
「写経」と呼ばれるこの方法は、以下の効果があります:
- 文法を手で覚える
- タイプミスに気づく練習
- コードのパターンを体得する
- パソコン(Windows、Mac、またはLinux)
- インターネット接続
- 時間(1日1-2時間を4-8週間)
- エラーメッセージを読む - 答えが書いてあることが多い
- Google検索 - 同じ問題で困った人がいるはず
- 休憩する - 疲れていると解決策が見えない
- 誰かに聞く - 説明することで整理される
- プログラミングとは
理解は後からついてきます。まずは「動くコード」を体験することが大切です。
毎日少しずつ
プログラミングは、週末に10時間より毎日1時間の方が効果的です。
脳は睡眠中に学習内容を整理します。毎日少しずつ触れることで、知識が定着しやすくなります。
手を動かす
本を読むだけでは上達しません。実際にコードを書いて、実行して、エラーと格闘することで初めて身につきます。
この教材のコードは、必ず自分で入力して実行してください。
学習環境の準備
次の章からは、実際にコンピュータを操作します。以下のものを準備してください:
パソコンのスペックは、10年前の古いものでも大丈夫です。C言語の学習には高性能なマシンは必要ありません。
困ったときは
学習中に詰まったときの対処法:
プログラミングは「調べる力」も重要なスキルです。分からないことを調べる習慣をつけましょう。
---
1.6 この章のまとめ
学んだこと
- コンピュータの理解できるもの
- C言語を学ぶ理由
- 42とPiscine
- 心構え
次の章の予告
次章では、ターミナル(コマンドライン)の操作を学びます。
プログラミングでは、マウスでアイコンをクリックする操作ではなく、キーボードで文字を入力してコンピュータを操作します。最初は慣れないかもしれませんが、これがプログラマーの基本スキルです。
---
Column: プログラミングで得られるもの
プログラミングを学ぶと、技術的なスキル以外にも得られるものがあります。
論理的思考力
プログラムは論理的に動きます。曖昧さは許されません。「もし〇〇なら△△する」という明確な条件分岐を常に考えることで、物事を論理的に整理する力が身につきます。
問題解決能力
大きな問題を小さな問題に分解し、一つずつ解決していく。プログラミングで最も重要なのは、この問題分解の能力です。日常生活や仕事でも役立つスキルです。
忍耐力
エラーと格闘し、原因を突き止め、修正する。この繰り返しは、簡単ではありません。しかし、粘り強く取り組むことで、諦めない力が育ちます。
創造力
プログラミングは創作活動です。自分のアイデアを形にできます。世界中の人が使うサービスも、たった一人のプログラマーのアイデアから始まることがあります。
仲間
プログラミングを学ぶことで、同じ道を歩む仲間と出会えます。42のコミュニティは特にこれを重視しています。一緒に学び、助け合う仲間は、かけがえのない財産になります。
---
確認問題
以下の問題で、この章の理解度を確認しましょう。
問題1
プログラミングとは何か、自分の言葉で説明してください。解答例
プログラミングとは、コンピュータに仕事をさせるための指示書(プログラム)を書くことです。コンピュータは曖昧な指示を理解できないため、人間が明確で詳細な指示を書く必要があります。
問題2
コンピュータが最終的に理解できるものは何ですか?解答例
0と1の組み合わせ(バイナリ/2進数)です。すべてのデータや命令は、最終的に0と1で表現されます。
問題3
C言語を学ぶメリットを3つ挙げてください。解答例
- コンピュータの仕組み(メモリ管理など)を深く理解できる
- 多くのプログラミング言語の基礎となっているため、他の言語も習得しやすくなる
- 高速なプログラムを作成でき、OSやデータベースなど重要なソフトウェアの開発に使われている
問題4
コンパイラの役割は何ですか?解答例
コンパイラは、プログラミング言語(例:C言語)で書かれたプログラムを、コンピュータが直接実行できる機械語に翻訳するソフトウェアです。
問題5
プログラミング学習で大切な心構えを2つ挙げてください。解答例
- エラーは失敗ではなく学習の機会と捉える
- 毎日少しずつでも手を動かして実際にコードを書く
---
次の章では、ターミナルの使い方を学びます。プログラミングの第一歩を踏み出しましょう!