はじめに
AIに頼めばコードが出てくる時代になりました。でも「出てきたコードが何をしているのか分からない」「エラーが出たらお手上げ」という人も多いはずです。
この記事は、プログラミング未経験の人が 最低限の基礎 をつかむための、初歩の初歩をまとめたものです。もともと友達向けに書いたので、専門用語はなるべく噛み砕いています。
「また同じような入門記事か」「n番煎じでは?」と思われるかもしれませんが、友達のためにまとめたものを、せっかくなので公開しています。ご愛嬌ということで、温かい目で読んでいただけるとうれしいです。
こんな人向け
- AIでコードを書いてみたけど、中身がさっぱり分からない
- プログラミングに興味はあるけど、何から始めればいいか分からない
- エンジニアの会話についていけるようになりたい
この記事で分かること
- プログラムが動く基本的な仕組み
- どんな言語にも共通する考え方(変数・条件分岐・繰り返し・関数)
- エラーとAIとの付き合い方
サンプルコードは Python・C言語・C# の3言語で載せています。見たい言語の名前をクリックすると、そのコードが開きます。
| 言語 | 特徴 | 主な用途 |
|---|---|---|
| Python | シンプルで初心者に人気 | AI・データ分析 |
| C言語 | コンピュータの仕組みに近い | 家電・機械の制御 |
| C# | Microsoft製で大規模開発向き | ゲーム(Unity) |
迷ったら、まずはPythonだけ読めばOKです。
そもそもプログラミングとは
プログラミングとは、コンピュータへの指示書を書くこと です。
コンピュータはとても素直で、とても融通が利きません。基本的には、プログラムに書かれたルールに従って正確に処理を行います。「いい感じにやっておいて」は通じません。
料理のレシピに例えると分かりやすいです。
| レシピ | プログラム |
|---|---|
| 材料 | データ(数字や文字) |
| 手順 | 命令 |
| 料理人 | コンピュータ |
| 完成した料理 | 実行結果 |
たとえば、画面に文字を表示するプログラムはこれだけです。
Python
print("こんにちは、世界!")
C言語
#include <stdio.h>
int main(void) {
printf("こんにちは、世界!\n");
return 0;
}
C#
Console.WriteLine("こんにちは、世界!");
どれも実行すると こんにちは、世界! と表示されます。Pythonの print、C言語の printf、C#の Console.WriteLine は、どれも「画面に表示して」という命令です。
一般的なC言語のプログラムでは、入り口として main 関数が必要です。長くなるので、以降のC言語の例では #include と main の部分を省略し、中身だけを載せます(関数の例だけは全体を載せます)。C#は トップレベルステートメント という機能(C# 9以降)を使えば、このように1行から書けます。
※ この記事のC#コードは、コンソールアプリ(文字だけの画面で動くプログラム)での実行を想定しています。Unityで使う場合は、表示に Debug.Log() を使うなど書き方が一部異なります。
ちなみに、指示書を書くための言葉を プログラミング言語 と呼びます。Python、JavaScript、Javaなどたくさんありますが、この記事で紹介する考え方はほぼすべての言語で共通です。
AIが書いてくれるのに、なぜ基礎を学ぶの?
結論から言うと、基礎を知っている人ほどAIを上手に使えるから です。
AIはとても優秀なアシスタントですが、完璧ではありません。もっともらしい間違いを自信満々に書くこともあります。基礎を知っていると、次のようなことができるようになります。
- AIの答えが正しいか判断できる:「この部分、何かおかしくない?」と気づける
- 的確に指示を出せる:「ここを繰り返し処理にして」など具体的に頼める
- エラーを自分で直せる:毎回AIに丸投げしなくて済む
- 応用が利く:出てきたコードを自分好みに少し変えられる
車の運転に例えるなら、AIは高性能なカーナビです。カーナビがあっても、ハンドルやブレーキの使い方、交通ルールを知らなければ安全に運転できませんよね。基礎知識は、そのハンドルとブレーキにあたります。
プログラムの基本は「3つの流れ」だけ
プログラムの基本的な処理の流れは、順次・分岐・繰り返し の3つに分けられます。複雑なプログラムも、まずはこの3つを理解すると読みやすくなります。
1. 順次:上から順番に実行する
プログラムは基本的に、上から下へ1行ずつ実行されます。
Python
print("起きる")
print("顔を洗う")
print("朝ごはんを食べる")
C言語
printf("起きる\n");
printf("顔を洗う\n");
printf("朝ごはんを食べる\n");
C#
Console.WriteLine("起きる");
Console.WriteLine("顔を洗う");
Console.WriteLine("朝ごはんを食べる");
結果は書いた順番どおり「起きる → 顔を洗う → 朝ごはんを食べる」と表示されます。
C言語とC#では、変数への代入や関数の呼び出しなど、多くの文の終わりに ;(セミコロン)をつけます。日本語の「。」のような役割です。ただし、if や for の { } のまとまりの後ろにはつけません。C言語の \n は「ここで改行して」という記号です。
2. 分岐:条件によって処理を変える
「もし〇〇なら△△する」という処理です。if(もし)と else(そうでなければ)を使います。
Python
temperature = 30
if temperature >= 25:
print("半袖で出かける")
else:
print("長袖で出かける")
C言語
int temperature = 30;
if (temperature >= 25) {
printf("半袖で出かける\n");
} else {
printf("長袖で出かける\n");
}
C#
int temperature = 30;
if (temperature >= 25)
{
Console.WriteLine("半袖で出かける");
}
else
{
Console.WriteLine("長袖で出かける");
}
気温(temperature)が30なので「半袖で出かける」と表示されます。>= は「以上」を表す記号で、比較演算子 と呼ばれます。3言語とも同じ記号を使います。
| 記号 | 意味 | 例 |
|---|---|---|
== |
等しい | a == 10 |
!= |
等しくない | a != 10 |
> |
より大きい | a > 10 |
< |
より小さい | a < 10 |
>= |
以上 | a >= 10 |
<= |
以下 | a <= 10 |
「等しい」は = ではなく == と2つ重ねます。= 1つは後で出てくる「代入」という別の意味なので、混同に注意しましょう。
「ここからここまでが if の中身」という範囲の表し方は、言語によって違います。Pythonは行頭の 字下げ(インデント) で処理のまとまりを表します。インデントが正しくないと、エラーになったり、意図しない動作になったりします。C言語とC#は { }(波カッコ) で囲んで表します。
3. 繰り返し:同じ処理を何度も行う
同じことを何回も書くのは面倒ですよね。そんなときは for を使います。
Python
for i in range(3):
print("腕立て伏せ!")
C言語
for (int i = 0; i < 3; i++) {
printf("腕立て伏せ!\n");
}
C#
for (int i = 0; i < 3; i++)
{
Console.WriteLine("腕立て伏せ!");
}
どれも「腕立て伏せ!」が3回表示されます。Pythonの range(3) は「0、1、2の3つの数字を順番に取り出す」、C言語とC#の int i = 0; i < 3; i++ は「iを0から始めて、3より小さい間、1ずつ増やす」という意味です。100回やりたければ 3 を 100 に変えるだけ。これがプログラムの強みです。
変数:データに名前をつけて入れておく箱
変数 は、データを入れておく「名前つきの箱」です。さっきの temperature も変数でした。
Python
name = "たろう"
age = 20
print(name)
print(age)
C言語
char name[] = "たろう";
int age = 20;
printf("%s\n", name);
printf("%d\n", age);
C#
string name = "たろう";
int age = 20;
Console.WriteLine(name);
Console.WriteLine(age);
C言語とC#では、箱を作るときに int(整数)や string(文字列)のように「何を入れる箱か」を最初に書きます。Pythonにもデータ型はありますが、変数を作るときに型を書く必要はありません。C言語の %s は文字列を、%d は整数を表示するための目印です。
= は「等しい」ではなく 「右のものを左の箱に入れる」 という意味です。ここは数学と違うので、最初につまずきやすいポイントです。
箱の中身はあとから入れ替えられます。
Python
score = 50
score = score + 10
print(score) # 60
C言語
int score = 50;
score = score + 10;
printf("%d\n", score); // 60
C#
int score = 50;
score = score + 10;
Console.WriteLine(score); // 60
Pythonは #、C言語とC#は // から後ろが コメント です。人間向けのメモで、コンピュータは無視します。
データ型:データの種類
箱に入れるデータには種類(型)があります。まずはこの4つを覚えれば十分です。
| 型 | 意味 | Python | C言語 | C# | 例 |
|---|---|---|---|---|---|
| 文字列 | 文字の並び | str |
char[] |
string |
"こんにちは" |
| 整数 | 小数点のない数 | int |
int |
int |
42 |
| 小数 | 小数点のある数 | float |
double |
double |
3.14 |
| 真偽値 | はい/いいえ | bool |
bool(※) |
bool |
True / true
|
※ C言語(C17以前の規格)で bool を使うには #include <stdbool.h> が必要です。真偽値はPythonだと True、C言語とC#だと true と書きます。
型が違うと、同じ + でも動きが変わります。
Python
print(1 + 1) # 2(数字の足し算)
print("1" + "1") # 11(文字をくっつける)
C言語
printf("%d\n", 1 + 1); // 2(数字の足し算)
// "1" + "1" は C言語では文字をくっつけられない
C#
Console.WriteLine(1 + 1); // 2(数字の足し算)
Console.WriteLine("1" + "1"); // 11(文字をくっつける)
"1" のようにダブルクォーテーションで囲むと「文字列」として扱われます。PythonとC#は + で文字列同士をつなげられますが、C言語はできません。この「型の違い」は、初心者がよく出会うエラーの原因になります。
リスト・配列:複数のデータをまとめる
データを1つずつ変数に入れるのが大変なときは、Pythonでは リスト、C言語とC#では 配列 を使います。
Python
fruits = ["りんご", "バナナ", "みかん"]
for fruit in fruits:
print(fruit)
C言語
const char *fruits[] = {"りんご", "バナナ", "みかん"};
for (int i = 0; i < 3; i++) {
printf("%s\n", fruits[i]);
}
C#
string[] fruits = { "りんご", "バナナ", "みかん" };
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
リスト(配列)と繰り返しを組み合わせると、中身を1つずつ順番に取り出せます。C言語の fruits[i] は「0から数えてi番目の中身」という意味です。Python・C言語・C#のどれも、番号は 0から 数えます。
関数:処理をひとまとめにして名前をつける
関数 は、よく使う処理をひとまとめにして名前をつけたものです。自動販売機をイメージしてください。お金とボタン(入力)を渡すと、飲み物(出力)が出てきます。中の仕組みを毎回気にする必要はありません。
2つの数を足して返す関数の例です。
Python
def add(a, b):
return a + b
print(add(3, 5)) # 8
print(add(10, 20)) # 30
C言語
#include <stdio.h>
// 関数を作る(main の外に書く)
int add(int a, int b) {
return a + b;
}
int main(void) {
printf("%d\n", add(3, 5)); // 8
printf("%d\n", add(10, 20)); // 30
return 0;
}
C言語では関数の中に別の関数を作れないので、この例だけは main も含めた全体を載せています。
C#
int Add(int a, int b)
{
return a + b;
}
Console.WriteLine(Add(3, 5)); // 8
Console.WriteLine(Add(10, 20)); // 30
-
関数の作り方:Pythonは
defで始める。C言語とC#は、先頭に返す結果の型(intなど)を書く -
a、b:関数が受け取るデータにつけた名前です。関数に渡すデータのことを 引数 と呼びます -
return:関数から結果を返すための命令です。返された結果を 戻り値 と呼びます
ちなみに、引数がいらない関数や、結果を返さない関数もあります。
一度作っておけば、何度でも呼び出して使えます。実は最初から使っていた print() や printf() も、あらかじめ用意されている関数です。C#の Console.WriteLine() は「メソッド」と呼ばれるものですが、ここでは同じように処理をまとめたものだと考えて問題ありません。
AIが書いたコードを読むときは、まず関数を作っている行(Pythonなら def、C言語やC#なら int add(...) のような行)を探して、「どんな関数があって、それぞれ何を受け取って何を返すのか」を見ると、全体像がつかみやすくなります。
エラーは「怒られている」のではなく「ヒント」
プログラミングでエラーが出るのは当たり前です。プロのエンジニアも毎日エラーを見ています。エラーメッセージは、コンピュータが 「ここがおかしいよ」と教えてくれているヒント です。
わざと間違えたコードと、出てくるエラーの例です。
※ エラーメッセージは、言語のバージョンや実行環境によって多少異なります。
Python
print("年齢は" + 20)
TypeError: can only concatenate str (not "int") to str
意味は「文字列(str)には文字列しかくっつけられないよ、数字(int)はダメ」。str(20) で数字を文字に変換すれば直ります。
C言語
int age = 20
printf("%d\n", age);
error: expected ',' or ';' before 'printf'
意味は「printf の前に ; があるはずだよ」。1行目の最後に ; をつければ直ります。
C#
int age = "20";
error CS0029: Cannot implicitly convert type 'string' to 'int'
意味は「文字列(string)を整数(int)の箱には入れられないよ」。"20" を 20 にすれば直ります。
エラーを読むコツ
- エラーメッセージを確認する:Pythonでは最後の行にエラーの種類が書かれていることが多いです。C言語やC#では、最初に表示されたエラーが手がかりになることもあります
-
行番号を確認する:
line 3のように、どこで起きたかが書いてあります。原因がその少し前の行にあることも多いので、前の行も見てみましょう - 分からなければそのまま検索 or AIに貼る:エラー文をコピペするのが一番早い
初心者がよく出会うエラー
C言語とC#は、実行する前にコードを機械向けに翻訳する コンパイル という作業があり、多くのエラーはこのタイミングで見つかります。
| よくある原因 | Pythonのエラー | C言語・C#のエラー |
|---|---|---|
カッコ、:、; の閉じ忘れや書き間違い |
SyntaxError | コンパイルエラー(expected ';' など) |
| 字下げ(インデント)のずれ | IndentationError | 通常はエラーにならないが、意図しない動作の原因になることがある |
| 変数名のタイプミス、まだ作っていない変数を使った | NameError | コンパイルエラー(undeclared、CS0103 など) |
| 文字と数字を混ぜた | TypeError | 型の組み合わせによってはコンパイルエラー(C#ならCS0029 など) |
筆者も学生時代、if文の後ろにセミコロンをつけてしまい、原因不明のバグを生み出して先生を困らせたことがあります(笑)。
if文の条件の直後に ; をつけると、「条件が正しいときは何もしない」という意味になります。その後の { } の中身は、条件に関係なく実行されてしまいます。
int score = 50;
if (score >= 60); // ← この ; が原因
{
printf("合格\n"); // 50点なのに表示される
}
文法としては成り立つのでエラーにならず(C#では警告が出ることはあります)、だからこそ原因が見つけにくいのです。
AIと一緒にコードを書くコツ
基礎が分かってきたら、AIを「答えを出す機械」ではなく 「質問に何でも答えてくれる先生」 として使うのがおすすめです。
1. 目的と条件を具体的に伝える
- 悪い例:「計算するコード書いて」
- 良い例:「Pythonで、リストに入った点数の平均を計算して表示するコードを書いて。初心者なのでコメントを多めにつけて」
2. 分からないところは解説してもらう
「このコードを1行ずつ解説して」「この for は何をしているの?」と聞けば、何度でも丁寧に教えてくれます。
3. エラーは全文を貼る
「動きません」だけでは伝わりません。コードとエラーメッセージを貼り(APIキーや個人情報などの機密情報は取り除いてから)、「何をしようとしたか」も一緒に書きましょう。
4. 鵜呑みにしない
AIの答えも間違うことがあります。実際に動かして、結果が期待どおりか自分の目で確かめる習慣をつけましょう。
5. パスワードや個人情報は貼らない
APIキーやパスワード、他人の個人情報が含まれたコードは、貼る前に消しておきましょう。
次の一歩
読むだけでなく、実際に手を動かす のが上達への一番の近道です。
- インストール不要で試す:PythonならGoogle Colaboratory、C言語やC#ならpaiza.ioのようなオンライン実行サービスで、ブラウザだけでコードを動かせます
- 小さく作ってみる:おみくじ、BMI計算、じゃんけんゲームなど、身近なテーマが続けやすいです
- AIのコードを改造する:AIに書いてもらったコードの数字や文字を変えて、結果がどう変わるか試してみましょう
- 言語選びに迷ったら:AIやデータ分析ならPython、ゲーム作りならC#(Unity)、機械やコンピュータの仕組みに興味があるならC言語がおすすめです
練習問題
次のコードを「80点以上なら合格」になるように変えてみましょう。
score = 70
if score >= 60:
print("合格")
else:
print("不合格")
変えたら、score を70や85にして、結果が期待どおりになるか確かめてみてください。
まとめ
- プログラミングは、コンピュータへの指示書を書くこと
- プログラムの流れは 順次・分岐・繰り返し の3つが基本
- 変数 はデータを入れる箱、データ型 はデータの種類
- 関数 は処理をまとめて名前をつけたもの
- エラーは敵ではなくヒント。メッセージと行番号から原因を探す
- AIは先生として使い、答えは自分で確かめる
AIがコードを書いてくれる時代だからこそ、基礎を知っている人はAIの力を何倍にも引き出せます。この記事が、最初の一歩のきっかけになればうれしいです。
最後まで読んでいただき、ありがとうございました!