プログラムが止まる!!! 01/18 土
アプリケーションを作るときに、私は、最初はとりあえず外観とか、入力したときの具体的な動きとかを作って、実際のデータの構造の決定や、「class」(って言われても分かんないですよね)の構造の決定は、少し後回しにします。
自分で、半分、遊びながら試行錯誤で作っているという、とても気楽な作業ですので、「まあ、とりあえず、作ってみよう」、「いろいろ作ったり、壊したり、付け加えたりしているうちに、だんだん形になってくるだろう」と考えています。
現在、現在作っているアプリケーションでも、とりあえず、だいたいの動きを作りました。そのうちに、「これと、これは、ひとまとめにした方がいいなあ」、「これをこうすると、こっちも一緒に動くなあ」ということがだんだん分かってきました。密接に連携しているものは、「class」と呼ばれる機能をつかって、ひとまとめにできますので、あらためて、ひとまとめにしてからプログラムを作り直すということをやっています。
この過程で、だんだん、自分が扱っているデータの構造がハッキリしてきます。そこで、そのデータを上手に保存できるように、データベースのデータ構造を決めています。そして、今度は、データベースを組み込んだ形で、もう一度、プログラムを組んでいきます。
もちろん、同じことを何度もやるのは面倒くさいので、前に作ったものをコピーして、次の段階に進みます。「どのようにしたら、コピーしやすいか」、「どのような作り方をしたら、コピーするだけでちゃんと動くのか」ということも、試行錯誤しながら作っています。
★
さて、データベースを組み込んだ状態で、プログラムを動かしてみると、いろいろな問題が新たに発生します。一番、面倒なことは、「いままでは、メモリ上だけで、さまざまな処理を行っていたことを、今度は、いちいちデータベースから読み取ったり、データベースに記録したりしなければならない」ということです。
コンピュータのプログラムは、突然、止まることがあります。突然、止まったときに、それまでの仕事内容が全部消えてしまったら、とても悲しくなります。そこで、作業のたびにデータベースに結果を記録しておこうと考えます。ただし、すべてを丸ごと記録するのでは効率が悪いので、変更した部分だけを記録します。
私が作っているアプリケーションでは、マウスをクリックしたときと、マウスを移動させたときに、それぞれデータを保存する必要があります(常に、ではないのですが、保存する場合もあります)。このとき、うっかり「クリックした瞬間に動かしてしまう」と、同時に2つの処理が発生します。
同時に2つの処理が発生すると、データベースは、「ちょっと待ったぁぁぁ。データに不整合が起きる可能性があるから、待て!!」となます。そして、10秒とか15秒とか、完全に止まります。
うーむ。どうしたものか。
現在、悩んでいるところです。