プログラマの視点
プログラマの視点
2021年6月29日
プログラマの視点
プログラマ、つまりプログラムを書く人の視点でソフトウエア開発をみる場合には基本的にプログラムをどのように書くかが中心になります。それ以外にも幾つかポイントがあるのでまとめてみました。
プログラマの視点もいろいろ!
前回は、ソフトウエアの開発を色々な視点で見てみるという事を紹介しました。 実は、プログラマの視点でも、色々な視点があります。より多くの視点を持ってプログラムを開発すると、より良いプログラムを開発する事ができます。
このあたりが、優秀なプログラマと、普通のプログラマの差になります。 いろいろありますが、この記事では3つの視点について紹介します。
- 「プログラムを書く」という視点
- 「プログラムをテスト」するという視点
- 「プログラムを管理」するという視点
です。殆どのプログラムは作るだけという事はほとんどありません。 作った後は、必ず動作確認(テスト・検証)を行ってプログラムが思い描いたように動作するか確認する必要があります。よく言われる事ですが、基本的に「バグ」のないプログラムはないと言われています。プログラム学習の例題のようなシンプルな物はバグのないプログラムもあるかと思いますが、ある程度の規模になると、完全に検証するのが難しくなるので、何らかの「想定外」の動きをするケースがある物です。従って、いかに上手く動作確認を行うかは、プログラム開発では重要な要素の一つです。
また、作ったプログラムに機能を追加したり、実際に利用していて見つかった不具合を修正したり、性能の改善をしたり、色々な管理作業が発生します。こうした、管理作業を行う立場で見るとまた違った形でプログラムを見ることになります。
前回は、ソフトウエアの開発を色々な視点で見てみるという事を紹介しました。 実は、プログラマの視点でも、色々な視点があります。より多くの視点を持ってプログラムを開発すると、より良いプログラムを開発する事ができます。
このあたりが、優秀なプログラマと、普通のプログラマの差になります。 いろいろありますが、この記事では3つの視点について紹介します。
- 「プログラムを書く」という視点
- 「プログラムをテスト」するという視点
- 「プログラムを管理」するという視点
です。殆どのプログラムは作るだけという事はほとんどありません。 作った後は、必ず動作確認(テスト・検証)を行ってプログラムが思い描いたように動作するか確認する必要があります。よく言われる事ですが、基本的に「バグ」のないプログラムはないと言われています。プログラム学習の例題のようなシンプルな物はバグのないプログラムもあるかと思いますが、ある程度の規模になると、完全に検証するのが難しくなるので、何らかの「想定外」の動きをするケースがある物です。従って、いかに上手く動作確認を行うかは、プログラム開発では重要な要素の一つです。
また、作ったプログラムに機能を追加したり、実際に利用していて見つかった不具合を修正したり、性能の改善をしたり、色々な管理作業が発生します。こうした、管理作業を行う立場で見るとまた違った形でプログラムを見ることになります。
プログラムを書く場合に気にする事は?
では、最初にプログラムを各立場で考えてみます。「プログラムを書く」場合に考えることは、どのプログラミング言語で書くか、どのように機能を実現するかなどが中心になります。さらに、殆どの場合は、一つのプログラムだけではなく、いくつかのモジュールに分割して開発するのが普通です。従って、他のモジュールとのやりとり(インターフェース)はどうするのかなども気になる部分になります。
小さなプログラムの場合には、プログラムを書きながら考えても余り問題ない場合が多いですが、ある程度以上の規模のプログラムの場合、きちんと処理の流れを考えて書かないと、書き直しが増えてしまい、結果的に時間がかかる事になります。従って、予めどのようにプログラムを書くかの方針をまとめてから作ると、後戻り作業を少なくする事ができます。
特に、他のモジュールとのやり取り(インターフェース)は途中で変更すると、他の部分にも影響が出るので、他の人に迷惑をかける事になります。
では、最初にプログラムを各立場で考えてみます。「プログラムを書く」場合に考えることは、どのプログラミング言語で書くか、どのように機能を実現するかなどが中心になります。さらに、殆どの場合は、一つのプログラムだけではなく、いくつかのモジュールに分割して開発するのが普通です。従って、他のモジュールとのやりとり(インターフェース)はどうするのかなども気になる部分になります。
小さなプログラムの場合には、プログラムを書きながら考えても余り問題ない場合が多いですが、ある程度以上の規模のプログラムの場合、きちんと処理の流れを考えて書かないと、書き直しが増えてしまい、結果的に時間がかかる事になります。従って、予めどのようにプログラムを書くかの方針をまとめてから作ると、後戻り作業を少なくする事ができます。
特に、他のモジュールとのやり取り(インターフェース)は途中で変更すると、他の部分にも影響が出るので、他の人に迷惑をかける事になります。
テストを考えた視点とは?
プログラムのテスト(検証)を考えた場合は、別な観点が必要です。 基本的に大きなプログラムはテストするのが大変なので、小さなモジュールに分割して小さなプログラムをテストして、それを統合していくようにした方が効率的にテストできます。 また、データの処理の流れがわかるように、変数を取り出しやすくしたり、デバッグモードのような物を作って、テストのためのデータを表示できるよにするなど、いろいろ工夫が可能です。
テストを意識して予めコードを書くことでテストの効率は大きく変わります。
さらに、通常のインターフェースに加えてテスト用のインターフェースを準備して、テスト専用のコードと連携することを予め考えておくと、毎回データを入力しないでテストデータをプログラムに入力できるようにすることもできますし、結果を取り出して自動判定する事も可能になります。
実際に、テストは、プログラムに手を加える度に必要になります。1回だけのテストの場合は、多少手間がかかっても大きな問題ではありませんが、開発中に何回も検証することを考えると、最初は多少手間がかかっても、テストの自動化を考慮しておくと開発の効率は飛躍的に向上します。
プログラムのテスト(検証)を考えた場合は、別な観点が必要です。 基本的に大きなプログラムはテストするのが大変なので、小さなモジュールに分割して小さなプログラムをテストして、それを統合していくようにした方が効率的にテストできます。 また、データの処理の流れがわかるように、変数を取り出しやすくしたり、デバッグモードのような物を作って、テストのためのデータを表示できるよにするなど、いろいろ工夫が可能です。
テストを意識して予めコードを書くことでテストの効率は大きく変わります。
さらに、通常のインターフェースに加えてテスト用のインターフェースを準備して、テスト専用のコードと連携することを予め考えておくと、毎回データを入力しないでテストデータをプログラムに入力できるようにすることもできますし、結果を取り出して自動判定する事も可能になります。
実際に、テストは、プログラムに手を加える度に必要になります。1回だけのテストの場合は、多少手間がかかっても大きな問題ではありませんが、開発中に何回も検証することを考えると、最初は多少手間がかかっても、テストの自動化を考慮しておくと開発の効率は飛躍的に向上します。
大切なプログラムの管理
プログラムは、利用するのが目的です。通常は、一度作ったプログラムは長期に渡って利用されるのが普通です。その際、不具合が出れば修正が必要ですし、性能の改善や機能の追加などが発生します。こうした、管理を行う視点で考えると、後から読みやすく、修正しやすいプログラムにすることが重要です。
特に、最初の開発者と管理を行う人が別の人になる場合も多く、その場合は、コードを読みながら必要な変更を行う必要があります。こうした場合、読みにくいコードを書くと後で管理するのが大変になってしまいます。 特に、コードを短くしたり、特殊な処理をして性能の改善などを行うことも可能ですが、こうしたコードは概して読みにくく、他人が管理をする場合には大きな問題になる場合が殆どです。多少は性能を犠牲にしても、読みやすいコードを書くことは管理をする上で重要です。
最近、Typescript が注目されている大きな理由の一つに、型を厳格に定義してコーディングする事で、インターフェースの食い違いや、プログラム内での誤った型の代入などをコンパイル時に見つけることができる事があります。
自分で書いたコードでも時間が経つと忘れてしまいます。そうした場合の対策として、コメントを多く残したり、ドキュメントをしっかり作成しておくことはとても重要です。
プログラムは、利用するのが目的です。通常は、一度作ったプログラムは長期に渡って利用されるのが普通です。その際、不具合が出れば修正が必要ですし、性能の改善や機能の追加などが発生します。こうした、管理を行う視点で考えると、後から読みやすく、修正しやすいプログラムにすることが重要です。
特に、最初の開発者と管理を行う人が別の人になる場合も多く、その場合は、コードを読みながら必要な変更を行う必要があります。こうした場合、読みにくいコードを書くと後で管理するのが大変になってしまいます。 特に、コードを短くしたり、特殊な処理をして性能の改善などを行うことも可能ですが、こうしたコードは概して読みにくく、他人が管理をする場合には大きな問題になる場合が殆どです。多少は性能を犠牲にしても、読みやすいコードを書くことは管理をする上で重要です。
最近、Typescript が注目されている大きな理由の一つに、型を厳格に定義してコーディングする事で、インターフェースの食い違いや、プログラム内での誤った型の代入などをコンパイル時に見つけることができる事があります。
自分で書いたコードでも時間が経つと忘れてしまいます。そうした場合の対策として、コメントを多く残したり、ドキュメントをしっかり作成しておくことはとても重要です。
まとめ
単純にプログラマーの視点でも、開発時、検証時、管理時で、気にする部分が変わってきます。フリーランスのように自分で全て行う場合は当然これらを全て考慮した開発を行う事が重要ですが、会社などで、担当を分けて開発する場合でも、こうした別の立場の視点でプログラムを開発すると、問題の少ないコードにする事ができます。
こうした視点を養うにはそれぞれの役割を経験するのが一番です。フリーランスの場合には、自分でやる必要がある場合が殆どなので、開発を重ねれば違う視点が身につくチャンスが多くなります。会社の場合は、人材養成を兼ねて、色々な役割を割り当てて経験を積むことで、視野の広い優秀なエンジニアへと成長することができます。
最初は、検証から始めてプログラムの書き方や構成を勉強するのはキャリアアップの方法の一つです。実際にプログラムを書く仕事を獲得するのはハードルが高い場合でも、テストの仕事はそれよりは門戸が開かれている場合が多くなっています。
単純にプログラマーの視点でも、開発時、検証時、管理時で、気にする部分が変わってきます。フリーランスのように自分で全て行う場合は当然これらを全て考慮した開発を行う事が重要ですが、会社などで、担当を分けて開発する場合でも、こうした別の立場の視点でプログラムを開発すると、問題の少ないコードにする事ができます。
こうした視点を養うにはそれぞれの役割を経験するのが一番です。フリーランスの場合には、自分でやる必要がある場合が殆どなので、開発を重ねれば違う視点が身につくチャンスが多くなります。会社の場合は、人材養成を兼ねて、色々な役割を割り当てて経験を積むことで、視野の広い優秀なエンジニアへと成長することができます。
最初は、検証から始めてプログラムの書き方や構成を勉強するのはキャリアアップの方法の一つです。実際にプログラムを書く仕事を獲得するのはハードルが高い場合でも、テストの仕事はそれよりは門戸が開かれている場合が多くなっています。
コメント
コメントを投稿