5. エラーへの対処法 - Claude Codeと一緒にエラーを解決する
プログラミング初心者が最も恐れるエラーメッセージとの向き合い方を学びます。Claude Codeとの協働によりエラーを学習機会に変える方法と、Streamlit特有のエラーパターンとその解決法を実践的に習得します。
マインドセット: エラーは学びのチャンス
赤字のエラーメッセージは「ここに問題があります」と知らせてくれる貴重なヒントです。プロのエンジニアも毎日エラーに遭遇し、そのたびにコードを磨き上げています。だから発生して当然であり、あなたのスキル不足を示すものではありません。まずは落ち着いてメッセージを読み、原因を切り分けましょう。
頼れる相棒 Claude Code が内容を解析し、修正例や追加の調査ポイントを提示してくれるので安心です。恐れずに一つひとつ解決し、エラーを学びに変えてスキルを高めていきましょう。
Streamlitエラーの表示場所と読み方
Streamlitアプリケーションを開発する際、エラーは3つの場所に表示されます。
ターミナル(コマンドライン)でのエラーは、streamlit run Home.py
を実行した時に表示されます。Python の構文エラーやライブラリのインポートエラーなど、アプリケーションの起動自体に関わる問題がここに表示されます。
ブラウザ画面でのエラー表示は、アプリケーションが起動した後に発生する実行時エラーが表示されます。Streamlitは親切にも、エラーを赤い背景で分かりやすく表示してくれます。
VS Codeエディター内でのエラー表示は、コードを書いている最中に表示される警告や構文エラーです。赤い波線や黄色い波線で問題箇所がハイライトされます。
エラーメッセージの構成要素を理解しましょう。
エラーの種類(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に正確な情報を送れば、解決はぐっと速くなります。
-
エラーメッセージは丸ごと貼り付ける
一部だけでは正確な診断ができません。ターミナルに出た赤字をすべてコピーして送信してください。
-
状況を具体的に書く
-
何をしようとしていたか:例「Streamlitアプリを起動」
-
どの操作で出たか:例「streamlit run Home.py を実行したとき」
-
期待した動作と結果:例「起動するはずがエラーが表示」
-
-
関連ファイルを @記法で共有
エラーが起きたファイルを @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 が発生します。
エラーメッセージを 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 が発生します。
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が発生します。
さらに、ファイルは存在するが内容に問題があるケースも試してみましょう。
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 のエラーが出るはずです。
Claude Code に以下のように報告してください:
データファイル読み込み時に以下のエラーが発生しました:
データ処理エラー: Unable to parse string "abc" at position 1
@Debug.py ファイルのコードを確認してください。
Claude Code が適切なエラーハンドリング方法とファイル存在確認の手法を教えてくれます。
振り返り
この章を通じて、あなたはエラーとの向き合い方を根本的に変えることができました。
あなたは今、エラーメッセージを見ても動じることなく、むしろ学習と成長の機会として捉えられるプログラマーへと成長しました。Claude Codeとの協働により、どんなエラーも克服できる確信を持てるようになったはずです。
次章では、発展的なダッシュボードを作成し、これまで学んだスキルを実践に活用していきます。エラーが発生しても、あなたはもう慌てる必要はありません。Claude Code という強力なパートナーと一緒に、どんな課題も乗り越えていけるでしょう。