UPTORY リモートワーク×企業のマッチングを推進するメディア

webアプリケーションコーディング業務の流れを説明します!

webアプリケーションコーディング業務の流れを説明します!
  • Python
  • JavaScript
  • PHP
  • Ruby
  • Golang
  • Java
  • HTML/CSS

…世の中には様々な言語がありますが、どんな言語でもコーディング作業の手順に大きな差はありません。

今回はそんなコーディングについての流れやどういったことをしているのか?という部分の記事を書いていきたいと思います。

一番初めはクラスと関数の洗い出しから

一般的なプログラミング言語のコーディング作業をするとき、まずはじめにやることは「必要なクラスと関数の洗い出し」です。

 

制作するものの完成図を思い描きながら、どんなクラス、どんな関数を組み合わせていけば目的の実装が可能かをクライアントの要望をうまく取り入れながら考えます。

洗い出しが完了したら、次にそれらのクラスと関数の枠だけを作ります。空っぽの関数と空っぽのクラスを、適切な命名だけ行って作っていきます。

必要なクラスと関数の枠が出来たら、中身を実装する前に、それらを組み合わせてアプリケーション全体の処理の流れを作っていきます。

クラスや関数の中身は現時点で未実装ですが構いません。この段階で大切なのはスピード感です。品質よりスピードを優先し、全体の処理の流れを構築します。そうすることでクライアントの要望や変更に柔軟に対応することが可能になります。

構築していくうちに、足りないクラスや関数の存在に気付く場合もあります。その場合は適宜クラス・関数を、中身が空っぽの状態の枠だけ作ります。

アプリケーション全体の処理の流れを構築出来たら、先ほど枠だけ作成したクラスと関数の「テスト」を作成します

テストとは、文字通り【製作した「クラス」「関数」の機能が適切に動くかどうか確かめるもの】のことです。

このテストの作成はアプリケーションの品質に大きく関わるのでとても大切です。

必要とする挙動を製作したクラス・関数が正しく動いてくれるかどうかを、この時点で漏れなくテストできるようにするのです。

「テスト」には「プログラミングとして作り・実行できるテスト」と、「何かしらのドキュメントに操作手順を記して実施するようなテスト」がありますが、今回のようなクラスや関数などといった小規模な機能単位のテストの場合、前者の「プログラムとして作り・実行できるテスト」として製作する場合が多いです。

プログラムとして作り・実行できるテストのメリットは、再試験が簡単にできることです。再試験ができることの何が良いのかというと、これは「リファクタリングしやすくなる」ことが一番にあげられます。

リファクタリングとは?

リファクタリングとは、外から見たときのコードの挙動を変えずに、中のコードを改修することです。アプリケーション製作の初期段階で書いたコードは、得てして不完全である場合が多いです。

正しい挙動になってはいるものの、可読性が低く後になって読もうとしても困難を極めそうなものになっていたり、あるいは処理のパフォーマンスの面から見て効率の悪い処理になっていたりするものです。それ自体は別に悪いことではありません。アプリケーションを製作するとき、もっとも大切にすべきは「正しく動くこと」なので、今あげたような「可読性・パフォーマンスの悪さ」は時にはプロジェクトの納期の問題で、ひとまず後回しにされる場合も現実には多いのです。

そして、後回しにされた

「可読性」

「処理のパフォーマンス」はどこかの段階で改修しなければなりません。

機能を変えないまま、今後アプリケーションを拡張する時などのために簡単に新しい仕様を実装できるよう、コードを改修する時に行われるのがリファクタリングなのです。

リファクタリングは「機能を変えずに」行う改修なので、クラスや関数の入出力の結果は変わりません。

例えば「2つの引数を足し合わせる関数」があるとしたら、その「2つの引数を足し合わせる」という機能は変えないまま、「その機能をどのようなコードで実現するか」という中身の部分だけを改修するのです。

ここで、さきほど登場した「プログラムとして作り・実行できるテスト」の有用性が効きます。プログラムとして実行できるので、実行にかかる時間はほぼゼロです。

 

リファクタリングは「機能は変えないまま」行う改修なので、テストで確認すべき内容もまた変わりませんから、リファクタリング後に新しくテストを作らずとも、もともと作ってあったテストを再実行するだけでテストが完了します。

実行のコマンドをうつだけで、コードの改修後も仕様を満たしていることの確認が一瞬でできるのは、アプリケーション開発において、多くの無駄な時間を省いてくれます。

長々と書きましたが、それほどコーディング作業における「テストの作成」は重要な立ち位置にあるのです。

またテストの作成を通して、実装を始める前に改めて「漏れている仕様がないか」を確認することができるのも、まず先にテストを作成する目的です。

テストを作成したら、ついにクラスと関数の中身の実装です。

先にテストを作成しているので、コーディング作業時には「作成したテストが要求する仕様を満たす」ことを意識しておくと、効率よく適切なプログラムを書くことができます。(この時点でテストそのものが間違えていると、間違ったテスト・間違った仕様を正しいと思い込んだままバグが生まれてしまうので、テストを正しく書くことはコーディング作業においてとても重要です)

クラスと関数の中身を実装したら、アプリケーションが機能するのに足りていない場所がないかを確認した上で、早速先ほど作成したテストを実施しましょう。

テストでバグが発見されたら、プログラムに改修を入れ、テストの再実施を行います。全てのテストをクリアしたら、これでコーディング作業は完了です。

 

このようにすべてが上記のように制作を行うわけではありませんが、日々エンジニアたちはこうしたコーディング作業を行っています。

自分で考え、それらをクライアントの要望や本当に求めているもの(本質)を見極ながら当てはめていく作業が求められるので、技術力の差は歴然としてくる業務です。

案件はあるのに人材が足らない…そんな時は

もしも、コーディング案件はあるのに、人材が足らない。そんな時はリモートワークを導入することも視野に入れてみてはいかがでしょうか?

アプトリーでは多くの優秀なエンジニア(フリーランス)の方に登録いただいています。

システム設計/開発。新規事業の立ち上げサポート、コーディングなど様々な分野のエキスパートがいますので、もしも人材が足らないということがありましたらお気軽にお問い合わせください!