Squadbase

5. エラーへの対処法 - Claude Codeと一緒にエラーを解決する

プログラミング初心者が最も恐れるエラーメッセージとの向き合い方を学びます。Claude Codeとの協働によりエラーを学習機会に変える方法と、Streamlit特有のエラーパターンとその解決法を実践的に習得します。

マインドセット: エラーは学びのチャンス

赤字のエラーメッセージは「ここに問題があります」と知らせてくれる貴重なヒントです。プロのエンジニアも毎日エラーに遭遇し、そのたびにコードを磨き上げています。だから発生して当然であり、あなたのスキル不足を示すものではありません。まずは落ち着いてメッセージを読み、原因を切り分けましょう。

頼れる相棒 Claude Code が内容を解析し、修正例や追加の調査ポイントを提示してくれるので安心です。恐れずに一つひとつ解決し、エラーを学びに変えてスキルを高めていきましょう。

Streamlitエラーの表示場所と読み方

Streamlitアプリケーションを開発する際、エラーは3つの場所に表示されます。

ターミナル(コマンドライン)でのエラーは、streamlit run Home.pyを実行した時に表示されます。Python の構文エラーやライブラリのインポートエラーなど、アプリケーションの起動自体に関わる問題がここに表示されます。 error-terminal ブラウザ画面でのエラー表示は、アプリケーションが起動した後に発生する実行時エラーが表示されます。Streamlitは親切にも、エラーを赤い背景で分かりやすく表示してくれます。 error-browser VS Codeエディター内でのエラー表示は、コードを書いている最中に表示される警告や構文エラーです。赤い波線や黄色い波線で問題箇所がハイライトされます。 error-editor

エラーメッセージの構成要素を理解しましょう。

エラーの種類(SyntaxError、ImportError、FileNotFoundError など)は、問題の大まかな分類を示します。SyntaxError は構文の間違い、ImportError はライブラリの読み込み失敗、FileNotFoundError はファイルが見つからない問題を意味します。

ファイル名と行番号の特定は、エラーメッセージの重要な部分です。Home.py, line 15のように表示され、どのファイルのどの行で問題が発生したかを示します。

エラーメッセージの核心部分は、具体的な問題の内容を説明します。この部分を Claude Code に伝えることで、正確な解決策を得ることができます。

よくあるStreamlitエラーパターンには、以下のようなものがあります:

  • File does not exist: app.py - ファイルが見つからない
  • ModuleNotFoundError: No module named 'streamlit' - ライブラリが正しくインストールされていない
  • IndentationError: expected an indented block - インデントの間違い

これらのパターンを覚えておくと、エラーが発生した時に素早く原因を特定できます。

Claude Codeへの効果的なエラー報告方法

Claude Codeに正確な情報を送れば、解決はぐっと速くなります。

  1. エラーメッセージは丸ごと貼り付ける

    一部だけでは正確な診断ができません。ターミナルに出た赤字をすべてコピーして送信してください。

  2. 状況を具体的に書く

    • 何をしようとしていたか:例「Streamlitアプリを起動」

    • どの操作で出たか:例「streamlit run Home.py を実行したとき」

    • 期待した動作と結果:例「起動するはずがエラーが表示」

  3. 関連ファイルを @記法で共有

    エラーが起きたファイルを @Home.py のように指定し、内容も見てもらいましょう。

エラー報告の良い例:

@Home.pyで、以下のエラーが発生しました:

FileNotFoundError: [Errno 2] No such file or directory: 'data.csv'
    at line 10 in Home.py

CSVファイルを読み込んで、チャート表示をしようと思っています。

このような具体的で詳細な報告により、Claude Code は効果的な解決策を提案してくれます。

実践演習 - 意図的なエラーと解決体験

安全な環境で意図的にエラーを発生させ、解決プロセスを体験しましょう。この演習では、リサーチで発見した実際のStreamlitエラーパターンを含む3つの代表的なエラーを体験します。

演習1: 構文エラーの発生と解決(Syntax Error)

まず、他のコードに影響を及ぼさないように新しいページを作成してみましょう。 pagesを右クリックし、New Fileから新しいファイルを作成し、Debug.pyという名前にしてください。 ファイルができたら、ターミナルでcd pages を実行しpagesディレクトリに移動します。

Debug.pyの中で、以下のように意図的にインデントエラーを作成してください:

import streamlit as st

def main():
st.title("Hello World")  # この行のインデントを削除
    st.write("This is a test app")

if __name__ == "__main__":
    main()

streamlit run Debug.pyを実行すると、IndentationError が発生します。

IndentationError

エラーメッセージを Claude Code に報告してください:

以下のエラーが発生しました:

IndentationError: expected an indented block
File "app.py", line 4

@app.py ファイルのコードも確認してください。構文エラーの修正方法を教えてください。

Claude Code が修正方法を提案してくれます。指示に従って修正し、再度実行してください。この演習では、Pythonの構文規則とインデントの重要性を学習できます。

演習2: インポートエラーの発生と解決(Import Error)

Debug.py ファイルで、存在しないライブラリをインポートしてみてください:

import streamlit as st
import streamlite  # 正しくは streamlit(意図的なタイプミス)

st.title("Hello World")

streamlit run Debug.pyを実行すると、ModuleNotFoundError が発生します。 error-ModuleNotFoundError

Claude Code に以下のように報告してください:

streamlitライブラリをインポートしようとして、以下のエラーが発生しました:

ModuleNotFoundError: No module named 'streamlite'

@app.py ファイルのインポート部分に問題があるようです。正しいライブラリ名を教えてください。

Claude Code が適切な修正方法を提案してくれます。この演習では、ライブラリ名の正確性とタイプミスの影響を学習できます。

演習3: データファイル読み込みエラーの発生と解決

この演習では、実際の開発でよく遭遇するデータファイル読み込み時のエラーを体験します。

Debug.py ファイルで、存在しないCSVファイルを読み込むコードを書いてみてください:

import streamlit as st
import pandas as pd

st.title("データファイル読み込みテスト")

# 存在しないファイルを読み込もうとする
try:
    df = pd.read_csv("missing_data.csv")
    st.dataframe(df)
except Exception as e:
    st.error(f"エラーが発生しました: {e}")

streamlit run Debug.pyを実行すると、No such file or directoryが発生します。 error-No such file or directory

さらに、ファイルは存在するが内容に問題があるケースも試してみましょう。

import streamlit as st
import pandas as pd

st.title("データファイル読み込みテスト")
# 壊れたCSVファイルを作成
with open("broken_data.csv", "w") as f:
    f.write("名前,年齢\n")
    f.write("田中,25\n")
    f.write("佐藤,abc\n")  # 数値でない年齢
    f.write("山田")  # カンマが不足
    st.subheader("壊れたデータの読み込み")
try:
    df2 = pd.read_csv("broken_data.csv")
    # 年齢を数値として処理しようとする
    df2["年齢"] = pd.to_numeric(df2["年齢"])
    st.dataframe(df2)
except Exception as e:
    st.error(f"データ処理エラー: {e}")

Unable to parse string のエラーが出るはずです。 error-Unable to parse string

Claude Code に以下のように報告してください:

データファイル読み込み時に以下のエラーが発生しました:

データ処理エラー: Unable to parse string "abc" at position 1

@Debug.py ファイルのコードを確認してください。

Claude Code が適切なエラーハンドリング方法とファイル存在確認の手法を教えてくれます。

振り返り

この章を通じて、あなたはエラーとの向き合い方を根本的に変えることができました。

あなたは今、エラーメッセージを見ても動じることなく、むしろ学習と成長の機会として捉えられるプログラマーへと成長しました。Claude Codeとの協働により、どんなエラーも克服できる確信を持てるようになったはずです。

次章では、発展的なダッシュボードを作成し、これまで学んだスキルを実践に活用していきます。エラーが発生しても、あなたはもう慌てる必要はありません。Claude Code という強力なパートナーと一緒に、どんな課題も乗り越えていけるでしょう。