0から始めるWebアプリ第2弾 ソフトウェア開発スキル

前回はWebアプリを開発する上で必要となるスキルをソフトウェア開発(コーディング)以外も含めて調べてみました

今回はWebアプリのメインとなるソフトウェア開発に絞って必要なスキルを詳しく見ていきます

Webアプリを作成するのに適した言語

まずは開発に使用する言語についてです
Webアプリ開発はフロンドエンドとバッグエンドの開発に分けることができます

フロントエンド

主にユーザが目にする画面等のブラウザ上で動作するものです

フロントエンドでよく使用される言語は以下となります

  • HTML
  • CSS
  • JavaScript

バックエンド

Webアプリの核となる処理を行う部分でWebサーバ側で動作するものです

バックエンドでよく使用される言語は以下となります

  • PHP
  • Ruby
  • Python
  • JAVA

これらに共通しているのはWebアプリケーションフレームワークが優秀だという点です
PHPならCakePHP
RubyならRuby on Rails
PythonならDjango
JavaならSpring Framework
CSS/JavaScriptならBootstrap

Webアプリケーションフレームワーク

WebアプリケーションフレームワークとはWebアプリを作成するのに必要な機能を簡単に実装できるようにまとめたものとなります
Webアプリで必須となる、ログイン画面やデータベースとのやりとり等が用意されています

各フレームワークの特徴

次に各フレームワークの特徴を紹介します

プログラムを学ぶ
プログラムを学ぶ

CakePHP

Ruby on Railsの概念の多くを取り入れており、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークと言われています

以下のような特徴があります

  • Model View Controller(MVC)アーキテクチャに基づいて構築されています
  • 設置が簡単かつ外部ライブラリに依存しません
  • MySQL、PostgreSQL、SQLite、Microsoft SQL Serverを標準サポート
  • セキュリティ対策機能(XSS対策・CSRF対策・フォーム改竄検知)

Ruby on Rails

オープンソースのWebアプリケーションフレームワークです
RoRまたは単にRailsと呼ばれています
その名にも示されているようにRubyで書かれています

以下のような特徴があります

  • Model View Controller(MVC)アーキテクチャに基づいて構築されています
  • 「Don’t Repeat Yourself(繰り返しを避けよ)」という思想で
  • 同じソースコードを統一し短くコードを書く事を推奨しています
  • 自動生成などの機能が豊富で、コードをほとんど書かなくてもある程度の機能を実現できます
  • 直感的にDBを操作できます

Django

Pythonで実装されたWebアプリケーションフレームワークです
拡張性、柔軟性が高く、シンプルなWebアプリであれば、数分で作れるといわれています

以下のような特徴があります

  • Djangoで扱う各ファイルは役割が決まっており、別々に切り分けて開発を行うことができます
  • 「Don’t Repeat Yourself(繰り返しを避けよ)」という思想で、同じソースコードを統一し短くコードを書く事を推奨しています
  • 暗示的より明示的にというPythonの思想に沿っており、裏でこっそり行われることが少なくソースが読みやすいです
  • Model View Controller(MVC)アーキテクチャに基づいて構築されています

Spring Framework

オープンソースのWebアプリケーションフレームワークです
システムの仕様変更が容易で拡張性、安定性などが高い

以下のような特徴があります

  • DIコンテナとAOPフレームワークによるハイレベルな開発環境
  • モジュール群が豊富
  • RESTful対応
  • Spring 用の IDE (STS)が無料で公開されている
  • 大規模データベースNoSQL対応

Bootstrap

レスポンシブデザインのcss,javascript,font, iconなどを提供するフレームワークです
これだけはフロントエンドのフレームワークのため、上であげているようなバックエンドのフレームワークと組み合わせて使用します

以下のような特徴があります

  • レスポンシブWebデザインに対応しています
  • 通常、スマートフォンやタブレットなど個別に対応するスタイルを作っていると大変手間がかかります
  • BootstrapはCSS3のメディアクエリを使用しているので、ブラウザの横幅サイズを判断基準として、レイアウトデザインを柔軟に調整することが可能です

私はPythonで開発を行いたかったので、Djangoを勉強中です
以下のサイトが詳しく解説されているのでおすすめです

https://django.kurodigi.com/

デザインパターン

次にプログラムを組む際に必要となる考え方についてです
デザインパターンとはプログラミングにおいて汎用的に使用できる設計方法のことです
今までの優秀なエンジニアたちがプログラムを組む際に簡単にできるように生み出した設計のノウハウをまとめたものです
有名なものにGoF(Gnag of Four)の23のパターンがあります

Webアプリケーションでは以下のデザインパターンがよく使用されます

  • MVC
  • MVP
  • MVVM

最近ではMVCモデルはもう古いと言われているようです
私が調べた中で気になったのはSAMパターンです
SAMはState-Action-Modelの略で、State,Action,Modelの3層に分離して設計する手法です
以下のサイトにて詳しく説明されているので気になった方は見てみてください

まとめ

今回はWebアプリのソフトウェア開発の際に必要なスキルについてでした
まとめると以下の3つを学習していけばWebアプリが開発できるようです

  • デザインパターンの学習
  • 使用するフレームワークの学習(フロントエンド)
  • 使用するフレームワークの学習(バックエンド)

次回は私が開発しているソースを紹介しながらもう少し深く掘り下げていきます