プログラミングの全ての基礎は"たったこれだけ"！ 5つの概念


## この記事について
プログラミングを始めたばかりの方や、基礎を見直したい方向けに、**プログラミングの必須概念**をまとめました。様々な言語やフレームワークがありますが、ここで紹介する概念は普遍的なものです。

## 想定する読者
- プログラミングを始めたばかりの方
- 基礎から見直したい方
- 何から学べばいいか迷っている方

## プログラミングの5つの基本要素

### 1. 変数とデータ型
データを保存して再利用する、プログラミングの最も基本的な要素です。

```python
name = "田中"  # 文字列
age = 25      # 数値
is_student = True  # 真偽値
```
:::note info
**実践ポイント**
- 変数名は具体的で理解しやすい名前をつける
- データ型を意識することで、バグを防ぎやすくなる
- 定数は大文字で定義する慣習を覚えておく
:::

### 2. 制御構造（if文とループ）
プログラムの流れをコントロールする心臓部です。

```python
# if文による分岐
if age >= 20:
    print("成人です")
else:
    print("未成年です")

# forループによる繰り返し
for i in range(3):
    print(f"{i}回目の挨拶: こんにちは！")
```
:::note info
**現場でよく使うパターン**
- early return（早期リターン）で条件分岐をシンプルに
- 無限ループを避けるためのbreak文の活用
- continue文でループの効率化
:::

### 3. 関数
コードを再利用可能な形にまとめる便利な道具です。

```python
def greet(name):
    return f"こんにちは、{name}さん！"

# 関数の使用
message = greet("田中")
```
:::note info
**関数作成のベストプラクティス**
- 一つの関数は一つの責務に
- 引数は3つ以下を目安に
- 関数名は動詞で始める
:::

### 4. データ構造
データを効率的に管理・操作するための仕組みです。

```python
# リスト（配列）の例
fruits = ["りんご", "バナナ", "オレンジ"]

# 辞書の例
user = {
    "name": "田中",
    "age": 25
}

# セットの例
unique_numbers = {1, 2, 3, 3, 2}  # 重複は排除される
print(unique_numbers)  # {1, 2, 3}

# タプルの例
dimensions = (1920, 1080)  # 画面の解像度
print(dimensions[0])  # 1920
```
:::note info
**よく使うデータ構造の使い分け**
- リスト：順序が重要な場合
- 辞書：キーと値のペアが必要な場合
- セット：重複を避けたい場合
- タプル：データの変更を防ぎたい場合
:::

### 5. エラー処理
プログラムの安定性を確保する安全装置です。

```python
try:
    result = 10 / 0
except ZeroDivisionError:
    print("0での除算はできません")
finally:
    print("処理を完了しました")
```

:::note info
**エラー処理のコツ**
- 具体的な例外を指定する
- ログを適切に残す
- finally句を活用する
:::

## 実践例：ショッピングカート
ここまで説明してきた5つの基本要素を組み合わせた実践的な例を見てみましょう。
このショッピングカートの例では、実際のECサイトでよく使われる機能の一部を実装しています。

```python
def calculate_cart_total(items):
    try:
        total = 0
        for item in items:
            if item["price"] > 0:  # 負の価格をチェック
                total += item["price"]
        return total
    except Exception as e:
        return f"エラーが発生しました: {e}"

# 使用例
cart = [
    {"name": "本", "price": 1500},
    {"name": "ペン", "price": 200}
]
total = calculate_cart_total(cart)
print(f"合計金額: {total}円")
```

### このコードで使用している基本要素

1. **変数とデータ型**
   - `total`変数で合計金額を管理
   - 辞書型で商品情報を構造化
   
2. **制御構造**
   - `for`ループで商品を順に処理
   - `if`文で価格の妥当性をチェック

3. **関数**
   - `calculate_cart_total`関数で処理をまとめる
   - 引数と戻り値の受け渡し

4. **データ構造**
   - リストで複数商品を管理
   - 辞書で商品の属性を管理

5. **エラー処理**
   - try-except でエラーを適切に処理
   - エラーメッセージを返却

### 実務での改善ポイント
このコードは基本的な実装ですが、実務では以下のような改善を加えることが多いです。

```python
from typing import List, Dict
from decimal import Decimal

def calculate_cart_total(items: List[Dict[str, any]]) -> Decimal:
    try:
        if not items:
            return Decimal('0')
            
        total = Decimal('0')
        for item in items:
            # 商品の存在チェック
            if not all(key in item for key in ["name", "price"]):
                raise ValueError("商品データが不正です")
                
            # 価格のバリデーション
            price = Decimal(str(item["price"]))
            if price < 0:
                raise ValueError(f"商品「{item['name']}」の価格が負数です")
                
            total += price
            
        return total.quantize(Decimal('0'))  # 小数点以下を適切に処理
        
    except Exception as e:
        # 実務ではログ出力などを行う
        raise ValueError(f"計算処理でエラーが発生しました: {e}")
```

### 発展的な機能例
実務では以下のような機能を追加することも多いです。
- 数量（quantity）の考慮
- 消費税の計算
- 割引の適用
- 在庫チェック
- バリデーションの強化

## まとめ
- 5つの基本要素を理解すれば、多くのプログラムが書けるようになります
- 実践を通じて、これらの概念の使い方を身につけていきましょう
- コードレビューを受けたり、他人のコードを読むことで理解が深まります

## 参考リンク
- [Python公式ドキュメント](https://docs.python.org/ja/3/)