この記事は ハンズラボ AdventCalendar2021 8日目の記事です。
はじめに
ITエンジニアとして働いている以上、突然出てきた訳のわからないエラーに頭を抱えることからは逃げられません。幸いにして、我々の業界にはアウトプットの文化があるため先人の知恵はインターネット上に存在することが多いです。しかし、昨今のノイズ増加に伴いうまく情報を見つけられなかったり、最悪の場合は誤った情報を掴んでしまうこともあります。
そこで、それなりの期間をITエンジニアとして働いてきて、何となく身についた ググり方のコツ を記述してみようと思います。
新鮮な情報を入手する
ITの世界は進化が早く、3年前の常識が今の非常識になることも多々あります。また、3年前に執筆された記事時点と現在では、各ソフトウェアのバージョンも大きく変わっているため、そのままの手順で動くことは稀です。
そんな時には、Googleの 期間指定機能
を使います。
Google検索結果のツールから期間指定を行うことで、記事の最終更新日時を指定できます。これで新しめの情報だけをチェックできます。体感ですが、概ね1年以内に更新された記事であれば有用に使えることが多いです。
エラーメッセージはよく見てコピペする
「何かよくわからんエラーが出た!!」とエラーメッセージを 全文コピペ して検索しても、思うような結果が出ないことがあります。それは、検索文字列にノイズが含まれているからです。
例えば、Pythonで例外が発生しこんな感じのスタックトレースが出たとします。
Traceback (most recent call last):,
File /var/task/src/handlers/load_data_handler.py, line 53, in main,
logic.load(message),
File /var/task/src/common/logic/load_data.py, line 168, in load,
logger.info(json.dumps(output_result)),
File /var/lang/lib/python3.7/json/__init__.py, line 231, in dumps,
return _default_encoder.encode(obj),
File /var/lang/lib/python3.7/json/encoder.py, line 199, in encode,
chunks = self.iterencode(o, _one_shot=True),
File /var/lang/lib/python3.7/json/encoder.py, line 257, in iterencode,
return _iterencode(o, 0),
File /var/lang/lib/python3.7/json/encoder.py, line 179, in default,
raise TypeError(fObject of type {o.__class__.__name__} ,
TypeError: Object of type Decimal is not JSON serializable
ここでウワーッとなって全文コピペ検索を行っても何の成果も得られません。まずは冷静にエラーメッセージを読み解いてください。このメッセージ、最終行以外は例外が発生したコードの場所をトレースしているのみです。つまり この環境固有の情報が表示されているだけ なのです。あなたの環境でしか発生しない情報なので、それでググっても何もわかりません。
このエラーメッセージで見るべきは例外の内容である最終行の TypeError: Object of type Decimal is not JSON serializable
のみです。
完全一致検索をうまく使う
エラーメッセージの内容があまり一般的なものでない場合、稀に検索してもそれぞれの単語で検索されてしまいエラー解決方法に辿り着けない場合があります。これはGoogleがスペースを区切り文字としてOR検索を行っているためと思われます。スペースを含むメッセージを明示的に検索したい場合は、完全一致検索を行うと良いでしょう。
検索したい文字列の前後を ""
で囲むと、間のスペースも含めて完全一致対象を検索できます。
例: "TypeError: Object of type Decimal is not JSON serializable"
英語から逃げるな
ソフトウェア開発の本場はやはり英語圏のため、突っ込んだ情報は英語で記述されていることが多いです。拒否反応を起こさず、翻訳ツールなどを駆使して情報を入手しましょう。StackOverflowは有用な情報を得られることが多いです。
また、明示的に英語の情報を検索したい場合は、 検索したい対象の後ろに not work
(動かない)を付けると日本語とはまた異なった悲鳴を確認することができます笑。
公式から逃げるな
人間楽をしたいものですので、公式の細かい内容をうまく要約してくれた記事だけを読んで素早く把握したい気持ちはわかりますが、最終的に頼りになるのはやはり公式です。公式ドキュメントや、GitHubリポジトリを参照して情報を探しましょう。また、ドキュメントの内容やGitHub issueの内容は検索エンジンに乗ってこないことが多いので、サイト内部の検索機能を活用しましょう。
どうしても解決できなければ、新たなissueとして質問しても良いでしょう。その場合はissue作成ローカルルールの確認をお忘れなく。
検索エンジンを変える
私は基本的にGoogleを利用していますが、他の検索エンジンの方が良い結果が出るとの情報も聞き及んでいます。BingやDuckDuckGoを試してみてもいいかもしれません。
終わりに
これらのググり方のコツを意識することで、今までより有用な情報を入手しやすくなるかと思います。
ですが、いずれの情報も過信は禁物です。本番プロダクトに乗せる技術については、必ず自らの環境で動作確認を行ってください。
以上