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

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

女の子と公園

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

30代以上の方には

プログラマカレッジは20代限定なので30代以上の方にはWebCampをおすすめします。受講料の返金保証がついているし、毎日11時〜23時まで通い放題なのでとてもいいと思います!

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

「就職保証付き」オンライン就職予備校をおすすめします。Javaエンジニアコースでは就職保証がついているのでプログラマーとして就職したい方にはぴったりです。Javaエンジニアの求人ってめっちゃ多いし、求められる技術レベルもそこまで高くないのでちゃんとした教育プログラムなら就職保証できるだろうなとJavaエンジニア経験者の私も思います。

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

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

4. 未経験の人でも登録できる転職エージェント

ワークポートは未経験の人の転職活動も支援してくれますし、全国の求人を扱っているので地方在住の方にもご利用いただけます。

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

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

ホームページを見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはワークポートというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『ワークポート』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、ワークポートは未経験者を支援し転職を成功させています。

未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

『派遣社員』なら正社員とフリーランスの『良いとこ取り』!

  • 「フリーランスになりたいけど、確定申告とかめんどくさいな」
  • 「定時帰りできる職場や、時短勤務がしたい」

という方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員なら

  • 時給が高く、給料も悪くない
  • やりたい仕事を選べる
  • 確定申告不要(派遣会社がやってくれる)
  • 厚生年金、健康保険も派遣会社が入ってくれる

ので、正社員とフリーランスのいいとこ取りな、とてもいい選択なんです。

 - 技術 ,