固まらないプログラム!

固まらないプログラム!

2022年8月18日


固まらないプログラム!

プログラムを利用していて、操作を受け付けなくなったり、何も反応しなくなったりした経験された方も多いかと思います。プログラムを開発する上で、このようにプログラムが反応(応答)しなくなるような事態を避ける事はとても大切です。この記事では、固まらないプログラムを作るのに大切な事を紹介します。

基本機能は大抵動く!

実は、プログラムの目的の機能(処理)は殆どの場合、「完成」したとされるプログラムの場合動作するのが普通です。これは、プログラムの開発者が基本機能の確認をしないと言うのは通常はないからです。

プログラムのコーディングが終わったら、基本的な機能が動作するかは、まず最初に確認するのが常識です。これに問題があれば、問題の原因を見つけて修正して、動作するようにします。従って、「完成」したプログラムの場合、こうした基本的な機能は通常は動作するのが普通です。

基本動作が動かない理由は?

それでも、予定されたようにプログラムが動作しない場合は存在します。 これには、理由があって、一言で言えば「テストをしていないから」問題が表面化しなかったと言うのがシンプルな理由です。

単純な機能の場合、テストで抜けが出る場合は余りありません。しかし、機能が複雑になると、期待されている通りに動作しない場合が増えてきます。現実的には、「全ての可能な動作」をテストするのは、複雑なプログラムの場合は、テストするのが難しいのでどうしても、テストしていないようなケースが発生した場合には、期待通りの動作をしない場合が出てきます。

基本機能以外のテストはとても難しい!

基本機能でも、テストに抜けが出る場合は現実には結構あります。

従って、基本機能以外のテストはさらに、テストされていないケースが増えます。 テストされていないだけではなく、プログラムを書いた人が想定していないケースが発生すると、プログラムがどう動くかわからないケースが出てきます。

プログラムが「固まったり」「フリーズする」ようなケースは、大抵は、プログラムを書いた人が想定していないケースが圧倒的に多くなります。例えば、条件によって違う処理を行うような場合には、多くのプログラミング言語では「if/else if/else」や「switch 文」などで、条件を指定して、違った処理を記述するスタイルになっています。この場合、全ての条件の処理がプログラムに書かれている場合には、全てのケースで実行する処理が決まっていることになります。しかし、条件が抜けていたり、プログラムを書いた人が「その条件は発生しない」と考えた場合には、その条件に対応する処理が記述されないことになります。この場合、万が一その条件に合致するケースが発生すると、その際の処理は記述されていないので、場合によっては、プログラムの正常動作に支障をきたす可能性が出てきます。

そうすると、プログラムが固まったり、フリーズする原因になる場合があります。

プログラムが固まったり、フリーズした場合には、プログラムを強制的に終了したり、最悪、パソコンやスマホの電源を一旦切って、電源を入れ直したり、リセットをするような操作が必要になる場合が出てきます。これは、利用者にとっては面倒で不便な状況になります。

最悪の場合、プログラムが固まったり、フリーズする前までの処理やデータの準備、入力を再度シナけらばいけないケースが出てきます。

こうした状況を回避するには?

こうした状況を回避するには、基本的には二つのアプローチがあります。

  • テストの抜けをなくす
  • プログラムに全ての組み合わせの条件に対する処理を記述する

テストの抜けを無くす方法は、いくつかあって、一つには、基本機能を一つ一つ細かくドキュメントに書いて、それをもとに機能の実装(プログラミング)とテストの計画を立てます。こうする事で、テストの抜けを最小限にします。また、テストを複数の人で実施することで、見落としを最小限にすると言うこともよく行われます。

一人の目より複数の人の目と言う事です!

プログラムで全ての条件を書くと言うのは、実際に起こらないと思う場合でも、論理上発生しうる条件は全て記述してその処理を行うことで、どんな条件の処理も抜けなく記述すると言う方法です。「起きないはず」と言うメッセージを残すだけでも、問題が起きた場合のデバッグの手がかりになる場合も多くなります。

まとめ

プログラムを開発する場合、基本機能が動作するのは当たり前です。しかし、何か意図しないデータや操作が行われた場合、その旨をログに残したり、メッセージを表示することで利用者に注意を促す(エラーメッセージや警告の表示)と、データの見直しや誤った操作に気づくことが可能になります。

基本動作は、開発者がテストをする場合が多く、比較的問題が起こりにくい部分です。一方で、開発者が想定していないデータや操作は、プログラムが固まったりフリーズしたりする原因になる場合がたくさんあります。これを防ぐには、開発の段階から、プログラムの記述方法やテストの方法をしっかり検討して予め準備をする必要があります。

初心者でも、こうした事を意識してプログラム開発を行う事で、出来上がるプログラムの品質は大きく変わってきます!

Copyright(c) 2017-2021 by Silicon Valley Super Ware, all rights reserved.

コメント

このブログの人気の投稿

ユーザーインターフェースの設計

足し算以外もできるようにする

改良版足し算プログラム