【初学者向け】バグやエラーの解決のコツ
目次
この記事はメンターマッチングサービスMENTAにて生徒さん向けにナレッジとして投稿したものです。
自分はシステム開発会社で働いたのは半年間のアルバイトくらいであとはほぼ独学ですが、MENTAにはそういう境遇に近い方が多いと思います。企業で20年のエンジニアキャリアがあるような人からすると間違った部分もあるかもですが、僕が5年間くらいググりながら解決していった経験をもとにコツをまとめました。
前提
そもそもですが、最近はググり力(調べて自分で解決できる力)が求められます。一方で「ググレカス」の時代からまた事情が変わり、ネット上のコンテンツに誤情報や汚いコード、バグを生みそうなやっつけ解決策も増えたので、経験者に聞いたほうがいいかどうか判断が難しくなりました。まぁとは言え基本はググるしかないのですが「なるべくキレイなコード、アーキテクチャ(構造)、命名規則」を意識しつつ知識やセンスを磨いていくしかないと思います(まぁ私もまだまだすぎるんですが)。 で、15分ググっても分からなければ普通は職場の先輩や上司に聞くんですが、ここにいる方はそういう環境ではないはずなので代わりにメンターにチャットしましょう、ということですね。ちなみにもしメンターがいない状況でも、teratailなどで時間をかけて丁寧に質問すると優しい偉い人が教えてくれます(が、詳しい人ほど初学者の気持ちが汲み取りにくくツンケンしてることも多いので、やはり無料ではサービスは期待しちゃダメということなのかもです)。 一方で開発者コミュニティに入ったり、Twitterで「#駆け出しエンジニアと繋がりたい」のハッシュタグで繋がって関係ができると優しく教えてくれる方も多いです(MENTAはある意味その関係構築をショートカットするサービスなのかも‥)。基本的な解決までのフロー
基本は以下のような順に沿って試行錯誤すると解決までが早いかと思います。- エラーメッセージを読む
- ググる
- 公式ドキュメントを見る・チュートリアルを試す・最低限の実装で試すなど
- 周辺知識が付いたので改めてググる
- 質問する or 寝て頭を整理する
頑張ってエラーメッセージを読む
まず多くの場合はエラーメッセージに解決法や原因、ヒントがだいたい書かれています。ただ基本的に英語&専門用語なので初学者には読むのが辛いわけですね。つい「出来ない」「動かない」と原因究明を放棄してググりたくなりますが、ここは地道に頑張って何が起きているのかをザックリでも掴むよう心がけると問題解決力が付いていくと思います。 さて、エラーメッセージの表示場所ですが、WordPressなどのWebサイトのフロント側の不具合は、ブラウザの検証メニュー(Dev Tools。Command+Shift+i)を開いてConsoleタブを見るとエラーメッセージが表示されます。ググる
エラーメッセージでググる 注意点としてはエラーメッセージ全文よりもエラーの内容文でググったり、なるべくダブルクォーテーションや自分の環境依存の部分は含めないで検索すると答えにたどり着きやすいです。 英語でググってみる Webの場合は世界中で同じ問題に誰かがぶつかっていて、Stackoverflowなどで英語で質問回答がなされていることが多いので、日本語より英語でググる方がいい結果がでたりします(doesn't workやnot working, disable xxx, how to ~みたいな言い回しをよく使います)。公式ドキュメントから情報を探す
ググることの問題は古い情報や誤情報がヒットしたりすることで、頻繁にアップデートがある言語やシステムだと一度公式ドキュメントを開いてその中で検索するか、もしくは(サイト内検索は使えるレベルでないことも多いので)各カテゴリーを俯瞰し1つずつ理解しながらほしい情報がどこにあるかを見極めていくしかないですかね。 よく「公式ドキュメントで殴る」と言うように、初学者にとって公式ドキュメントはとっつきづらいです。基本は熟練者や玄人がすぐに仕様ややり方を参照できるように作ってあるので、Webやプログラミングの基礎知識、別言語での実装経験などがないと専門用語だらけでいきなり置いてけぼりにされます。 なので最初はQiitaやググって出てきた個人ブログを頼りに理解していくしかないですが、「公式ドキュメントをちゃんと読めてなくてやり方を間違っていた」というのはよくあるので、解決しないたびに頑張って一度は見に行ってみて全体を理解する癖をつけるようにした方がいいかと思います。 未だに僕も公式ドキュメントは辛いし、あんなの1から順番に読むのはホント強強じゃないと無理なのでは‥。チュートリアルを試す
WordPressだとチュートリアルとかそういったのは無いですが、例えば誰かが上手く言ったブログややり方を書いていたら、一旦自分の仕様は無視してその人と同じ通りやってみる。これで動けば言語やプラットフォームの仕様が変わったり、自分の環境構築に問題があるわけではないことがわかります。最低限の実装で試す
作りたいものや実装したい機能があるとき、なるべくまず最低限の実装を順番にしていくとミスやエラーを防ぎやすいです。ToDoアプリを作っているならこんな感じ。- 入力フォームを1つだけ表示する
- 入力されたデータをデータベースに保存する(セキュリティ設定はまだしない)
- そのデータを画面上で表示する(ユーザーによるフィルターなどはまだかけない)