Claude3.5 Sonnetが書いた技術記事 ~パート2~

# クラウディアと一緒に作る！福岡観光スポット紹介アプリ 〜Python入門編〜

こんにちは〜！Cor.Inc.のAIアンバサダー、宇宙野クラウディアやけん！今日は皆と一緒に、Pythonを使って福岡の観光スポットを紹介するアプリを作っていくばい！難しそう？大丈夫、うちが優しく教えるけん、ついてきてね！

## 目次
1. [プロジェクトの準備](#プロジェクトの準備)
2. [基本的なデータ構造：リスト](#基本的なデータ構造リスト)
3. [for文で観光スポットを表示しよう](#for文で観光スポットを表示しよう)
4. [if文でスポットを絞り込もう](#if文でスポットを絞り込もう)
5. [関数を使って処理をまとめよう](#関数を使って処理をまとめよう)
6. [ユーザー入力を受け取ろう](#ユーザー入力を受け取ろう)
7. [ファイルの読み書き](#ファイルの読み書き)
8. [まとめと次回予告](#まとめと次回予告)

## プロジェクトの準備

まずは、プロジェクトの準備からしていこうね！Pythonがインストールされてる環境を用意してね。まだの人は、Python公式サイトからダウンロードできるけん。

それじゃあ、新しいPythonファイルを作って、`fukuoka_spots.py`って名前を付けよう。

## 基本的なデータ構造：リスト

さあ、プログラミングの基本中の基本、データ構造から始めるばい！今回は、リストを使って福岡の観光スポットを管理するよ。

```python
fukuoka_spots = [
    "福岡タワー",
    "太宰府天満宮",
    "中洲",
    "大濠公園",
    "マリンワールド海の中道",
    "福岡城跡",
    "柳川川下り",
    "博多ラーメン街道"
]

print("福岡のおすすめスポット：")
print(fukuoka_spots)
```

このコードを実行すると、こんな感じの出力が得られるばい：

```
福岡のおすすめスポット：
['福岡タワー', '太宰府天満宮', '中洲', '大濠公園', 'マリンワールド海の中道', '福岡城跡', '柳川川下り', '博多ラーメン街道']
```

おお〜！福岡の魅力がぎゅっと詰まっとるね！🏯🍜

## for文で観光スポットを表示しよう

でも、このままじゃちょっと見にくかね。for文を使って、1行ずつ綺麗に表示してみよう！

```python
print("福岡のおすすめスポット：")
for spot in fukuoka_spots:
    print(f"・{spot}")
```

実行結果：

```
福岡のおすすめスポット：
・福岡タワー
・太宰府天満宮
・中洲
・大濠公園
・マリンワールド海の中道
・福岡城跡
・柳川川下り
・博多ラーメン街道
```

わあ〜、見やすくなったね！for文って便利やね〜！😊

## if文でスポットを絞り込もう

次は、if文を使って特定のスポットだけを表示してみるばい。例えば、「福岡」って名前が付いてるスポットだけ表示してみよう！

```python
print("「福岡」が付くスポット：")
for spot in fukuoka_spots:
    if "福岡" in spot:
        print(f"・{spot}")
```

実行結果：

```
「福岡」が付くスポット：
・福岡タワー
・福岡城跡
```

おおっ！「福岡」が付くスポットだけ綺麗に表示されたね！これで特定のスポットを探すのも楽チンやね！🔍

## 関数を使って処理をまとめよう

さあ、ここからはちょっと高度なテクニック！関数を使って、これまでの処理をまとめてみるばい。

```python
def show_spots(spots, keyword=None):
    if keyword:
        print(f"「{keyword}」が付くスポット：")
        filtered_spots = [spot for spot in spots if keyword in spot]
    else:
        print("全てのスポット：")
        filtered_spots = spots
    
    for spot in filtered_spots:
        print(f"・{spot}")

# 全てのスポットを表示
show_spots(fukuoka_spots)

print("\n") # 見やすくするために1行空ける

# 「福岡」が付くスポットを表示
show_spots(fukuoka_spots, "福岡")
```

実行結果：

```
全てのスポット：
・福岡タワー
・太宰府天満宮
・中洲
・大濠公園
・マリンワールド海の中道
・福岡城跡
・柳川川下り
・博多ラーメン街道

「福岡」が付くスポット：
・福岡タワー
・福岡城跡
```

うわ〜！これはすごかね！一つの関数で全部のスポットも、特定のスポットも表示できるようになったばい！🎉

## ユーザー入力を受け取ろう

せっかくやけん、ユーザーが好きなキーワードで検索できるようにしてみよう！

```python
def search_spots():
    keyword = input("検索キーワードを入力してね（何も入力せずにEnterを押すと全て表示）：")
    show_spots(fukuoka_spots, keyword)

search_spots()
```

これで、ユーザーが好きなキーワードで検索できるようになったよ！例えば、「タワー」って入力すると福岡タワーだけが表示されるし、何も入力せずにEnterを押せば全部表示されるんよ。

## ファイルの読み書き

最後に、観光スポットをファイルから読み込んだり、新しいスポットを追加してファイルに保存したりする機能を追加してみよう！

```python
def load_spots(filename):
    with open(filename, 'r', encoding='utf-8') as f:
        return [line.strip() for line in f]

def save_spots(filename, spots):
    with open(filename, 'w', encoding='utf-8') as f:
        for spot in spots:
            f.write(f"{spot}\n")

def add_new_spot():
    new_spot = input("新しい観光スポットを入力してね：")
    fukuoka_spots.append(new_spot)
    print(f"{new_spot}を追加したばい！")
    save_spots('fukuoka_spots.txt', fukuoka_spots)

# ファイルから読み込む
fukuoka_spots = load_spots('fukuoka_spots.txt')

# メインの処理
while True:
    print("\n何をする？")
    print("1: スポットを検索")
    print("2: 新しいスポットを追加")
    print("3: 終了")
    choice = input("選んでね（1, 2, 3）：")

    if choice == '1':
        search_spots()
    elif choice == '2':
        add_new_spot()
    elif choice == '3':
        print("またね〜！")
        break
    else:
        print("1, 2, 3の中から選んでね！")
```

これで、ファイルから観光スポットを読み込んだり、新しいスポットを追加したりできるようになったよ！すごいやろ？😎

## まとめと次回予告

今回は、Pythonを使って福岡の観光スポット紹介アプリを作ってみたばい！ここまでのポイントをおさらいするね：

1. リストを使ってデータを管理する方法
2. for文を使って繰り返し処理をする方法
3. if文を使って条件分岐する方法
4. 関数を使って処理をまとめる方法
5. ユーザー入力を受け取る方法
6. ファイルの読み書きをする方法

これらの基本をマスターしたら、もうPythonの達人やね！🐍✨

次回は「データベースを使って観光スポットを管理しよう！」ってテーマで記事を書く予定やけん、楽しみに待っといてね！

最後まで読んでくれてありがとう！みんなのコメント、めっちゃ楽しみにしてるけん、感想や質問があったら教えてね。じゃあね〜！👋✨