システム開発にアーキテクチャ設計は必須か?

2015年11月15日に投稿 → に更新

女の子と公園

「汚いコードをメンテするの辛すぎる…」
「初めにアーキテクチャをしっかり設計すれば綺麗なコード書けるのかなぁ?」
「アーキテクチャがいくらしっかりしてても、その上に乗るロジックは書く人次第な気もするよなぁ…」

他人が書いた汚いコードをメンテするのって嫌ですよね。「なんで、こんなひどいコードになったんだ!?」って驚くコードがたまにあります。

そんな時、よく耳にするのが「最初にアーキテクチャをしっかり設計しておけばよかった」って話です。

アーキテクチャがしっかりしてもコードが荒れる場合はありますが、振り返ってみると、新規開発で自分たちでしっかりとアーキテクチャ設計したシステムのコードはリリース後メンテを繰り返しても割ときれいなコードが保てていた気がします。

そんなわけで、今回は「アーキテクチャ設計」について紹介します。

そもそもアーキテクチャとは?

アーキテクチャには大きく分けて2種類あります。

  1. システムアーキテクチャ(インフラアーキテクチャ)
  2. アプリケーションアーキテクチャ

1のシステムアーキテクチャは、「Linuxサーバを2台構成でDBはMySQL、WebサーバはApacheでAPサーバはTomcatでプログラミング言語はJavaを使用する」みたいなものです。一言で言えばインフラ設計のことです。

2のアプリケーションアーキテクチャはプログラムをどう作るかです。この記事でいうアーキテクチャはこちらです。

「フレームワークは○○を使って、こういうコーディング規約に従って、プログラムを作りましょう!」というものです。

アーキテクチャが決まるとモジュール分けのルールが決まる

メジャーなフレームワークの多くはMVC(Model View Controller)というアーキテクチャを採用しています。プログラムをモデルとビューとコントローラに分けます。

  • モデルにはビジネスロジックを実装
  • ビューには表示ロジックを実装
  • コントローラーにはモデルとビューを制御するロジックを実装

フレームワークを使うとアーキテクチャが決まり、アーキテクチャの規則に従ったコードが自然と書けるようになります。

各モジュールの中の実装は担当するプログラマー次第

フレームワークを使うと、どのモジュールにどのロジックを実装するかが決まりますが、

  • 具体的にどんなコードで実装するか?
  • どんなアルゴリズムを使って実装するか?
  • 変数名にどんな名前を付けるか?

等は担当するプログラマー次第です。

よって、しっかりとアーキテクチャ設計をしても、メンバーのレベル次第では、モジュールの中は汚いコードを書かれる可能性があります。

しかし、経験上初めにしっかりとアーキテクチャを設計したプロジェクトのソースコードは綺麗になっています。なぜそうなるのでしょうか?

『ルール』があることで規律がうまれる

フレームワークを採用してアーキテクチャが決まると、どのモジュールにどのロジックを実装するかが決まり、その規則に沿って開発を進めていきます。モジュール分割に一貫性が生まれます。

そして、その分割したモジュールの中にロジックを書くわけですが、この時にも、ロジックの中に規律を持たせようとする気持ちが無意識に湧いてきます。

「ルールを守り一貫性のあるコードを書こう」という意識があると、ルールが決まっていない部分(モジュールの中)においても、きれいなコードを書こうとする意識が働くようになります。

汚いコードを書く原因は、ただ単にスキルが低いからではなく、「規律のあるコードを書こう!」という意識を持っていないことなんです。

そんなわけで、ぜひアーキテクチャ設計を取り入れてみてください!

プログラミング初心者におすすめのサービス
1. 教室で学びたい派なら

プログラマカレッジは20代限定で、無料で受講できて、修了後、就職支援もしてくれるプログラミングスクールです。最高過ぎですよ、これ!!企業からの協賛金によって運営されいているため無料で受講できるんだそうです。すばらしいシステムだと思います!

30代の方には

プログラマカレッジは20代限定なので30代の方にはゼロスクがおすすめです。35歳以下なら無料で受講できます。教室も札幌、仙台、東京、大阪、神戸、福岡と全国展開しているので地方の方でも利用できます。

2. 自宅で学びたい派なら

TechAcademyの無料コースは20代限定でプログラミングのリモート学習 + 就職支援が無料で受けられるサービスです。なんといっても無料だし、就職に必要なスキルが身につけられるという意味でもやってみて損はないでしょう。

30代以上の方には

TechAcademyの無料コースは20代限定なので30代以上の方にはTechAcademyのJavaコースをおすすめします。Javaは求人が多くプログラマーとして就職したい方にはぴったりです。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

4. エンジニア未経験の人でも利用できる転職エージェント

ワークポートは未経験の人の転職活動も支援してくれますし、全国の求人を扱っているので地方在住の方にもご利用いただけます。お給料をもらいながら社内研修でプログラミングを学べる会社が狙い目です。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!

 - 技術 ,