2022年5月20日金曜日

プログラムのバグを簡単に見つける方法がないものか

 田中賢一郎氏の

Webアプリ開発入門: 3.Firebase編 Future Coders テキスト Kindle版

を読んでいます。



今回はStorageです。

「4.3.1 特定のBlobの取得」

ということで、storage内にあるファイルを取得すること、これは楽勝。

get-blog.py で作成するコードをそのまま書き写して実行!

 

ValueError: Storage bucket name not specified. Specify the bucket name via the "storageBucket" option when initializing the App, or specify the bucket name explicitly when calling the storage.bucket() function.


ぐ、、、


ソースはこちら(xxxは個人で使っている情報なのでマスクしてます)


import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage

cred = credentials.Certificate("./serviceAccountKey.json")
firebase_admin.initialize_app(cred,{
    'strogeBucket':'xxxx.appspot.com'
})

bucket = storage.bucket()
blob = bucket.blob("xxx.png")
blob.download_to_filename("xxx.png")

特に悪そうなところはない、、、はず、、

このエラーを調べても、原因がわからなかったので、

Future Coders サンのサイトからとってきた解答ソースとdiffとってみました。

左が解答 右が私です。



strogeBucket

綴りミス!


storageBucket に直したら通りました。


これはさすがに同じ間違いする人はいないか、、、、な?


でも、今回、解答のソースがあったからdiffで気づけたものの

もしなかったらとするとぞっとします。

軽く数時間は悩むところだった。


エラーが出たときに、どうやって調査するか、解決策にどのような手段をとるのか、はとても重要ですね。


プログラムがエラーだった時、体系だった調査方法があればよいのですが、、、


と思ったら、こんなものが。


コメントを見ると、だいぶ前の内容で、
「バグ」の捉え方が読者と合っていないものもあるようですが、
「バグ」自体、どこまでの範囲とするかもいろいろ考え方があるので
仕方がないところかと。

「バグ」、、、見つけるのは大変ですが、見つけたらうれしい。
もしかすると「バグ」について、もっと掘り下げて考えてみると面白いかも、そう思いました。