『プロになるためのWeb技術入門』の重要な点をまとめる--Lesson6

皆様こんにちは、もしくははじめまして。IDEです。
今日の記事はLesson6についてです。
この章では、アプリケーションを開発する上で何気なく行っていた処理の部分とデザインをなぜ分けるのかについてや、フレームワークについて学びました。
この「なぜ」の部分の理解を深めることが、アプリケーション開発への理解を深めることにつながるはず…!
動作の流れについて特に細かく記述されている章だったので、この記事は重要そうな用語や簡単な流れについての記述にとどめています。
あくまで重要な点をまとめることを念頭に置いているためです。
この記事だけではわからないよ!と思った方はぜひこちらからチェックしてください。

目次

  1. フォワードについて
  2. リクエストスコープについて
  3. ロジックとデザインの分離
  4. O/Rマッピングフレームワークとインピダンス・ミスマッチについて
  5. まとめ
  6. 参考記事

フォワードについて

まずはWebアプリケーションを効率よく開発するための仕組みを学んでいきます。
フォワードとは、ブラウザを通さずアプリケーションサーバ内だけで行われる遷移のことです。その対として挙げられるのがリダイレクトです。
フォワードとリダイレクトについてはこちらの記事が大変参考になります。
フォワードは自身のサーバ内のみで遷移されるため、リダイレクトに比べ応答が速くなるのがメリットの1つです。


リクエストスコープについて

リクエストスコープとは、フォワード元と先の間で情報を共有するための仕組みのことを言います。
比較対象として挙げられるのがリクエストパラメータです。
リクエストパラメータとリクエストスコープの違いは、前者がWebブラウザから入力された情報の読み込みのみ可能ですが、後者は読み書くが可能です。(例えば、フォームで入力されたID="yamada"のname="山田"という情報について、前者は取り出せないが、後者は取り出せます。)
では、なぜリクエストスコープが必要なのでしょうか?
その対となるものがセッションスコープで、これは多くのメモリを消費するものでした
細かな情報のやり取りまでセッションを使用しているとメモリ不足に陥る可能性がありました。
そのことから、細かい情報のやり取りに適したリクエストスコープが誕生したのです。

セッションスコープ ←→ リクエストスコープ
セッション・タイムアウトするまで 有効範囲 リクエストを受けてからレスポンスを返すまで
Webアプリケーションが制御 開始と終了 アプリケーションサーバが制御
ユーザ情報の保持 主な使い方 ページ遷移前後での情報保持

ロジックとデザインの分離

ロジックとデザインの分離というのは、アプリケーションを効率よく開発するためにロジック(処理)とデザインを分離させる必要があるという考え方のことです。
この考え方をもとにアプリケーションを開発していくうちに、設計にスタイルが生まれてきました。
徐々に生まれてきた設計スタイルとその設計に基づく全体構造のことをアーキテクチャと呼びます。
代表的なWebアプリケーションのアーキテクチャの1つにMVCモデルがあります。これはIPO(入力、処理、出力)の流れを踏まえたアーキテクチャで、モデル、ビュー、コントローラーの3つの役割に分けてアプリケーションを制作します。
ロジックとデザインの分離の考え方に当てはめると、モデル:ロジック、ビュー:デザイン、コントローラー:両者を繋ぐ接着剤となります。
このアーキテクチャは、あくまでも設計の考え方です。
その共通部分を半完成品のソフトウェアとして実現し、異なる部分だけを作り込めるようにしたものをフレームワークと呼びます。
フレームワークを利用する上でのメリット・デメリットは以下の通り。

メリット デメリット
設計・開発工数の制限 学習コストの増大
品質の向上 設計における自由度の低下
テスト工数の削減 長期的な技術力の低下

O/Rマッピングフレームワークとインピダンス・ミスマッチについて

データベースへのアクセス処理をいかに簡単に実現するかは、Webアプリケーションシステム開発における問題の1つでした。
これを解決するのが、O/Rマッピングフレームワークです。
O/Rマッピングとは、プログラミング言語のオブジェクト(O)とリレーショナル・データベース(R)の対応を取るという意味です。
両者の違い(インピダンス・ミスマッチ)を解決することがこのフレームワークの最大の役割で、これにより開発作業自体を効率化することができました。


まとめ

Webアプリケーションを効率よく開発するためのシステムなどについて学びました。
この章を学んだことで、普段お世話になっているRailsがどのような段取りで動いているかについての知識を得られました。(もしくは再認識)
今後も開発を進めていく中で土台部分で動いている仕組みの部分を認識しながらさらに理解を深める必要があると感じています。
最後までお付き合いいただいた方、ありがとうございました。


参考記事

今回、下記の記事を参考にいたしました。
リダイレクトとフォワードの仕組みと違い | Web基礎