今までのプログラミングで苦労した点 [プログラミング研究室]

 こんにちは!
 ナビゲータのEVEです。

 昨日は、中小企業経営政策を勉強する日だったのですが、記憶すること盛りだくさんです。しかも、その記憶する内容が、企業数とか従業員数とかになると頭がクリアになっていないとなかなか入っていきません。そこで、昨日は朝一でプログラミングを始めました。当然プログラミングも頭は使うのですが、覚える作業と違い、プログラミングは眠くても可能です。しかも、プログラミングは製造していくうちにだんだんと思考がはっきりとしてきます。そこで、朝起きたのは5:30分でしたでしょうか?そのぐらいからプログラミングを開始して、はまってしまいました。。中小企業経営政策の勉強をしなくてはいけないと分かっているのですが、ついつい昨日は一日中プログラミングをしていました。そんな状況で昨日はブログの更新ができませんでした。
 ただ、一日中無制限にプログラミングをすると進捗が違います。Coming Soonと動画を作ってからそれなりに時間が経ちますが、実は、昨日まで苦戦をしていました。ただ、昨日1日集中したおかげで、ユーザー管理システムの完成のめどがつきました。本日は、朝一に起きて、デバックをして、ユーザー修正画面はもう少しで完成というイメージです。そんな経験からちょっと、開発と勉強の仕方を変えようと思います。今までは、時間で区切っていろいろなことをしていましたが、本日から1つのことに集中することにしました。  そんな第一日目は、昨日できなかった中小企業経営政策の勉強です。っとはいうものの、頭が働かない朝はプログラミングをしたのですが(笑)。
 では、なかなか頭に入っていかない中小企業経営政策の勉強の合間になりますが、本日のブログを更新します。

 今日は、システム開発で苦労した点について整理をしたいと思います。

[キャッシュがききすぎ]

 オブジェクト指向JavaScriptを作ったのですが、かなり苦戦をしました。Chrome Dev Toolを使用して生産性が上がるはずだったのですが、分けがわからない動きをするJavaScriptに悪戦苦闘です。その原因が、つい最近分かりました。それは、ブラウザのキャッシュです。どうもキャッシュに残っている修正する前のプログラムが、想定と違う動きをさせているようでした。それは以前から想定はしていたのですが、[ctrl]+[F5]、[ctrl]+[R]で画面をリロードすれば、キャッシュがきれいになるといった、ChatGPTやインターネットの記事にだまされました。それを信じ切った数日後に、Chrome Dev Toolを[F11]で1ステップずつ動かしている最中に気づきました。少しでも疑う気持があれば、もっと早く気づけたのでしょうが、疑っていなかったからでしょう?気づいたのはつい最近です。
 それに気づいてからは、右上の[︙(メニュー)]→[設定]→[プライバシーとセキュリティ]→[閲覧履歴データの削除]を操作し、完全にキャッシュをきれいにしてからデバックしています。それから、開発スピードが上がっています。ただ、少しずつ徐々に修正し開発する私のスタイルと設定からキャッシュをクリアする操作は相容れません。めんどくさくてしょうがありません。なんかよい方法ありませんかね?

[イベントがきかない]

 キャッシュによる障害で一番困ったのが、イベントです。HTML内に、JavaScriptを内在させ、イベントからHTMLに内在させたJavaScriptを起動させると普通に動作するのですが、JavaScriptをファイルとして外に出すとキャッシュされやすくなるようです。今回のシステムは、作ったプログラムはすべて外に出すようにしているので、作ったイベントから関数やクラスを呼び出せないのが一番困りました。それは、イベントより動かす関数にバグがあると関数自体を認識できなくなり、その認識できない関数は、かなり長い間キャッシュに居座るためだと思われます。その現象は、前日動いていたシステムが翌日動かなくなるといった事態を引き起こします。まっ、そのおかげで[ctrl]+[F5]、[ctrl]+[R]という操作後もキャッシュにプログラムが残っていることに気づけたのですが・・・。
 以前、時刻同期の仕組みを知るために、Ajaxの本を借りてきたという話をしましたが、それも、今から振り返ってみると、キャッシュが影響していた可能性があります。

[フォーム内にonClickイベントがあると画面がリロードする]

 どうもForm内にonClickイベントがあると、FormをSubmitしなくても画面をリロードするようになったようです。ただ、最新のブラウザを使用し、古いシステムPrototype EVEを現在も使用していますが、そのような印象はないので、多分、作りによると思うのですが・・・。どうなのでしょうか?
 今回のHTMLは、AIの力を借りているとは言え、それは当初の話で現在はかなり複雑なものになっています。その複雑なHTMLの修正を今からする勇気はなく、現在は、event.preventDefault();という記述を追加し、リロードしないようにしています。こうすることにより、リロードを防ぐことができます。

[あとがき]

 当初は、午前はプログラミング、午後に勉強しようとしていたのですが、開始からしばらくして逆転してしまいました。それは、やらなければならない、期日があるものが先にしないと予定に間に合わないと思ったからです。ただ、これからは、進捗を気にすることなく、やったことをしっかりと覚え、忘れることがないようにすることのみに注力したいと思います。
 今後は当初の予定に戻してプロジェクトを進めていきたいと思います。

 では、また!

コメント