プログラミングを勉強したくて1ヶ月間プログラミング教室に入塾しました。
プログラミング中、「エラーがどうしても解決できない」場合や「どうしても意図した動作をしない」場合に、必要以上に時間を食いつぶし、解決方法が見いだせずにいる状況のことを「ハマる」っていうそうです。
「MySql と Node.js+ExpressでWebアプリを作る」練習をしています。
ExpressがどうしてもDataBaseを読み込んでくれず、丸2日くらい「ハマって」しまいました。
一般的に「ハマって」しまった状態からはどうやって抜け出すのが近道ですか?
本記事は、こんなプログラミング勉強中の初心者の方に向けて書いています。
「プログラミング中のハマり状態から抜け出す方法」について、プログラミング教室のI先生からいただいたアドバイスを共有しますね。
ハマった例「ExpressがDataBaseを読み込まない」
DataBaseを作成し、テーブルを作成。
Node+Expressの設定も完了済みの状態でapp.jsを実行してみると、次のようなエラーが。
表示用テンプレートindex.ejsはDB読み込みとは関係あることは書いてないのですが、なぜかこのエラーが。
MySql上では次のような「Syntaxにエラーがあります」エラーで、これだけでは真の原因までは分からないのです。
エラーが出つつもDataBase自体は作成できてしまうので、これも解決方法が分からない理由の一つです。
エラーがあるとしか教えてくれない画面
SQL Statement:
CREATE TABLE ‘express-practice1-db‘, ‘new_table’ ( ) ERROR 1064:
You have an error in your SQL syntax; check the manual that corresponds to your MySql server version for the right syntax to use near “)” at line 2.
2行目付近がヤバそうなのでマニュアルをチェックしろと・・
冷たいなー!
盲点!エラーの原因はDB名のハイフンだった
試行錯誤の結果、もしかしてDB名が長過ぎるのか?という考えに至り、「expressdb」と変更したらエラーが消え、ExpressでDataBaseの取り込みと表示ができました。
「express-practice1-db」というDataBase名のハイフンがエラーの原因だったようです。
ハイフンを使っていたためにエラーになったということですね。
express-practice1-db ←NG
expresspractice1db ←OK
どうしてもDataBase名にハイフンを使いたくば、「`express-practice1-db`」とバッククオートで囲んだ名称にしなくてはいけないとのこと。
そんなの気がつくかー!という感じですよね。
プログラミング中のハマった状態から抜け出す方法
上記の例だとエラーを修正するのに丸2日間ハマっていて、右往左往し続けていました。
では、プログラミング中で「ハマった」状態から抜け出すとき、一般的にはどのようにすれば良いのでしょうか?
侍エンジニア塾のI先生からのアドバイスは次のとおりです。
- 調べるのに時間がかかるのは仕方がない。場数をこなして検索と問題解決のセンスを付けていくこと。
- 原因がわからないときは、新規プロジェクトを一から作ってみることも一つの選択肢。目に見えづらい構成ファイルの競合などが原因だったりする場合もあるので、必ずしも原因が特定できるとは限らないため。
- ITのエンジニアリングは、実際のモノのエンジニアリングと違って、人の力で原因が見えない問題がたくさん出てくる。見えないモノを探し続けてもキリがないので、ちゃんと動く新しいもので作り直すというのが一つの定石。
プログラムの一部をこねくり回すよりは、はじめから作り直したほうが早いことも多いということですね。