プログラミングに挫折した全ての人へ
大丈夫です。
私も今まさに挫折している最中です。
「じゃあなんでお前がこの記事を書いてるんだよ」と思われるかもしれません。
でも、ここ最近のチャットAIの進化のおかげで、これまで何度読んでもわからなかったものが、ようやく理解できるようになってきたんです。
だからこそ、プログラミングが苦手な私にしか書けない、
“誰一人取りこぼさない超わかりやすい解説” を作れるのではないかと思いました。
めちゃくちゃ分かりやすい説明にするためにとんでもない文字数になってしまいましたが、この記事を読むだけでプログラミングの基礎が一通り身に付くので、最後まで読む価値は十分にあります。
また、この記事ではサンプルコードは代表的なプログラミング言語のPHPで説明しますが、どの言語でも考え方は同じです。
最後の方でAIを使ってプログラミングを効率よく学ぶ方法も、初心者がすぐ使える形で紹介します。
そもそもプログラムとは何か?(コンピュータの動く仕組み)
まず、「プログラムってそもそも何?」という話からいきましょう。
プログラムとは、
コンピュータにやってほしい事を“順番にメモしたもの” です。
たとえば、あなたが友達にこう頼むとします。
- 冷蔵庫を開けて
- 牛乳を取り出して
- もし牛乳がなければ、代わりに麦茶を取り出して
- コップに注いで
- 僕に渡して
実際に人間に頼むときは「牛乳なかったら麦茶でいいよ」の一言で済みますが、ここまで細かく書けば、立派な“手順書”ですよね。
プログラムもこれと同じで、コンピュータには
「これをして → 次はこれをして → もしダメならこうして」
というように、人間よりずっと細かい指示を順番に書いてあげる必要があります。
コンピュータは自分で判断してくれるわけではなく、
“言われたとおりにしか動けない” とても正直な生き物です。
だからプログラミングとは、コンピュータが間違わずに動けるように、
細かい手順書(プログラム)を作ってあげること
なんだと考えると、とても分かりやすくなります。
プログラムの制御構造(流れ)
ではさっそく、プログラムが実際にどんな流れでどんな動きをするのかを勉強していきましょう。
プログラムは大きく分けて、以下の3パターンの流れで動きます。
- どんな順番で動く?(順次実行)
- どっちを選ぶ?(条件分岐)
- 何回ループする?(繰り返し)
PHPのコードでこの3パターンの例を見ていきましょう。
順次実行(どんな順番で動くか)
プログラムは基本的に上から下に書いた順に命令を実行していきます。
例えば、テキストを表示するコードをこのように書くと…
<?php // ここから「PHPのプログラムが始まるよ」という合図(タグの始まり)
echo "こんにちは"; // echo は「画面に文字を表示して!」という命令
echo "今日はいい天気ですね"; // これも同じく、指定した文字をそのまま表示する
?> <!-- ここまでで「PHPのプログラムが終わったよ」という合図(タグの終わり)-->
結果はこんなふうになります。
こんにちは今日はいい天気ですね
このように、基本的にプログラムは上から書いた順に命令が実行されます。
コードの中にある// と <!-- --> は、どちらも 「これは説明文だよ!」とプログラマがコメントを書くための仕組みです。
コンピュータはこの部分を読み飛ばします。
PHPのコメント → //
HTMLのコメント → <!-- -->
コードの最後だけ<!-- --> これになっているのは、PHPのタグを閉じてHTMLに切り替わったからです。
プログラムでは、文字列(テキスト)を扱うとき、
必ず「’ ‘」(シングルクォーテーション)または「” “」(ダブルクォーテーション)で囲むルールになっています。
これを忘れると、文字列だと認識されずエラーになります。
条件分岐(どっちを選ぶか)
プログラミングでは、状況によって「Aをする?」「Bをする?」とやることを切り替える場面がよくあります。
これを 条件分岐(じょうけんぶんき) と呼びます。
たとえば、「もし牛乳があったら牛乳を出す。なければ麦茶にする。」
というような “選ぶ動き” をプログラムに書けます。
<?php
$drink = "milk";
// これは、$drinkという名前の箱(変数)に「milk(牛乳)」というデータを入れてね、という処理です※補足2:代入
// "milk" を "tea" など別の文字列に変えると結果が変わります
// もし drink が "milk" と同じなら…
if ($drink === "milk") {
echo "牛乳を注ぎます!";
// 条件に当てはまったので、この行が実行される
} else {
echo "麦茶を注ぎます!";
// 条件に当てはまらなかった場合はこちらが実行される
}
?>
牛乳を注ぎます!
もし $drink = "tea"; にすると、結果はこうなります。
麦茶を注ぎます!
コードの中に出てきた条件分岐で使うifとelseは、多少違いますがPHP以外の他の言語でも同じような書き方をします。
if(もし)
→「もし〜だったら、こっちをやって!」
else(それ以外)
→「もし違ったら、代わりにこっちをやって!」
代入(だいにゅう)とは、「名前のついた箱(変数)に、データを入れること」です。
$drink = "milk"; // $drinkにmilkを代入する
この場合、$drinkの中にmilkというデータが入っている、ということになります。
プログラミングでは、情報を入れておくために変数(へんすう)という“箱” を使います。
※変数については次の章で詳しい説明をします
先ほどのコードに=と===が出てきました。
この2つは全然違う意味になります。
=(代入)
「左の箱に右の値を入れる」ための記号。$drink = "milk"; // $drinkにmilkを代入する
===(同じかどうか調べる)
こちらは代入ではなく、「中身が同じかどうか調べる」ための記号。if ($drink === "milk") // もし$drinkの中身がmilkなら…
繰り返し(何回ループするか)
プログラミングでは、「同じ作業を何度もくり返したい」という場面がとても多くあります。
PHPでは代表的なループとして for文 を使います。
今回は、「こんにちは!」と10回繰り返し言った後に、最後に「うるさい!」とツッこむコードを作ってみましょう。
<?php
// for文は「決められた回数だけくり返す」ためのしくみ
// 今回は「0から9まで、合計10回くり返す」という設定
for ($i = 0; $i < 10; $i++) {
// $i は 0 → 1 → 2 → … → 9 と1ずつ増えていく(カウンター)
// ++は$1が10になるまで$iに繰り返し1を足していくという意味※次の章で詳しく説明します
echo "こんにちは!";
// この echo が10回実行されるので、10回分の「こんにちは!」が表示される
}
// ループが終わったあとに 1回だけ実行される処理
echo "うるさい!";
// 「こんにちは!」を10回言ったあとにツッコミとして最後に1回だけ表示される
?>
こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!こんにちは!うるさい!
ここで紹介したfor文以外でも繰り返しで使う構文があります。
while文
条件が成り立つあいだずっと処理を続ける
foreach文
リストや配列の中身を1つずつ取り出すときに使う
(※配列についてはデータ構造の章でご説明します)
どれをどんなとき使えばいいのか迷ったら、以下の表を参考にしてみてください。
| 繰り返しの構文 | 何に向いている? | 超ざっくり説明 |
|---|---|---|
| for文 | 回数が決まっているとき | 「10回繰り返す」など回数ベース |
| while文 | 条件が成り立つ間ずっと繰り返す | 「HPが0になるまで攻撃」のような条件ベース |
| foreach文 | 配列やリストを順番に処理する | 「果物リストを1個ずつ取り出す」 |

