「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

著者 :
  • 技術評論社
4.12
  • (104)
  • (118)
  • (46)
  • (8)
  • (3)
本棚登録 : 1397
感想 : 112
本ページはアフィリエイトプログラムによる収益を得ています
  • Amazon.co.jp ・本 (288ページ)
  • / ISBN・EAN: 9784774142357

作品紹介・あらすじ

Webアプリケーション開発の「基礎の基礎」をしっかり学べる入門書。通信技術とソフトウェア開発技術の両面から、Webシステムのしくみをひとつひとつ確実に解説。

感想・レビュー・書評

並び替え
表示形式
表示件数
絞り込み
  • HTML=hyper text markup language テキストだけで文章飾り、図表、参考文献などを表現できる仕組み。
    hyper text=文書間の参照をリンクを貼れる。
    FTP=ファイル転送プロトコル、
    SMTP=メール転送プロトコル、
    HTTP=HTMLの転送に適したプロトコル hyper text transfer protocol

    CGI=kommon gatewey interface webサーバー上で動く句プログラムに渡す仕組み。Perl c言語など。
    Java/サーブレット=CGIを改良したもの。JavaVM上でコンパイルすると、異なるプラットフォームで動く。
    webコンテナの設置が難しいので、個人のシステムではCGI/parlが多い。
    サーブレットは修正しにくい。JSPで改良。

  • 2010年刊行(2020年13刷)の、読み継がれてきたことがわかる本。まだ事例にInternet Explorer があった頃だけれども、三種のサーバ(Webサーバ, アプリケーションサーバ, DBサーバ)の役割分担、ネットワークの仕組み、設計のモダンスタイル、セキュリティ対策、など主要な理論が一冊にまとまっており、助かった。IT技術書は細目ごとに話が分かれているため、この本のようにWeb技術というまとまりでしっかり解説している本は、古典として定評のある本以外では相対的に少ない印象がある。

  • WebエンジニアとしてWebの基礎を抑えようと思い本書を選択。
    HTTPやDNSについて理解が深まった。
    またMVCアーキテクチャについても漠然と理解していたのが具体的にイメージできた。
    私の作るものはMVCがごちゃごちゃしてしまっているので、改善しなくては。。。

  • web系の知識は皆無であったがwebの仕組みやアーキテクチャ、セキュリティ関連のあれこれと多くの事を学べた

    ただ内容に対してサブタイトルが合ってなく気になった

  • Webアプリケーションを構築するために必要な知識が、背景から記載されており、体系的に整理されている。
    Webアプリケーションを構築するための全体像が、本書のおかげでようやく見えた。これをベースに各要素技術を学んでいきたい。

    以下、備忘としてキーワードを雑多に残す
    ■HTTP
     →クライアント、サーバ間の規約。
      ※メソッド、URL、ハイパーリンク、ステートレス
    ■Cookieとセッション
    ■三層構成(Webサーバ、APサーバ、DBサーバ)
     ・Apache
      ・httpd.conf
       →URLパスとworker(Tomcatプロセス)を紐付け
      ・workers.properties
       →workerを定義(worker名、ホスト、ポート、プロトコル)
    ■APサーバの機能(Tomcatが例)
     ・セッション管理(セッションID発行など)
     ・トランザクション管理
     ・DB接続(データソース、コネクションプール)
     ※APサーバ(JavaVM)は常駐プロセス
    ■MVCモデルとレイヤパターン
     →これによって、可読性/変更容易性の確保、作業分担が可能。
    ■フレームワーク(Struts、iBATISが例)
     ・コントローラ、ビュー相当
      ・プレゼンテーション層
       → アクション、JSPなど。
        →URLパスによって使用アクション振分
        →アクション結果によって使用JSP振分
     ・モデル相当
      ・ビジネスロジック層
      ・データアクセス層
       →Java Beans
       →DAO
       →ORマッパー(インピーダンス・ミスマッチの対策)
    ■セキュリティ
     ・機密性(暗号化など)
     ・完全性(電子署名による改竄の検知など)
     ・可用性(権限制御など)
    ■各セキュリティ対策
     ・クロスサイトスクリプティング
     ・クロスサイトリクエストフォージェリ
     ・セッションハイジャック
     ・SQLインジェクション
     ・ディレクトリトラバーサル
     ・強制ブラウズ
     など
     →対策として、hiddenパラメータにトークンを持たせるのがよくある手法。トークンにはハッシュ値を利用する。
     →バリデーション、サニタイジングも抑えておく。

  • webアプリケーションについて概念がとてもわかり易くまとめられている

  • 異動後、同僚の技術レベルにまったくついて行けず、苦しい日々を送っていましたが、本書により最初の1歩を踏み出せたと思います。副題の「なぜ、あなたはWebシステムを開発できないのか」が目を引いて手に取った一冊です。本書で紹介されていた参考文献を手掛かりに次の一歩を踏み出してみようと思います。

  • Webサイト:公開されたコンテンツを受動的に閲覧する
    Webアプリ:能動的に利用する

    ■webの誕生
    研究成果を共有したい→HTMLで研究成果を表現しよう:ハイパーテキストという仕組みで共有=www→WebブラウザMosaicが誕生し、文字と画像を混在させて表示可能に

    ■クライアント・サーバモデル
    クライアント→リクエスト→サーバ
    クライアント←レスポンス←サーバ

    Q.なぜ役割を分けるか?
    不特定多数の人に公開するには、コンテンツは一箇所にまとめたほうが管理は楽:サーバ
    →コンテンツを保管しているWebサーバを利用者が直接操作するのは非現実的
    →利用者の手元にあるPCをWebクライアントとして利用可能にし、遠隔地にあるWebサーバWebクライアントの間をインターネット接続する
    →WWWが実現
    →クライアントとサーバに役割を分けることは必然

    多くの人に閲覧してもらうために、新しいコンテンツを常に提供したいという思いから、
    静的なコンテンツ→動的なコンテンツへ

    動的なコンテンツを生成して、Webクライアントに渡すには、Webサーバとコンテンツを生成するプログラムとの連携が必要
    →CGI誕生:Webサーバとプログラムの間でリクエストとレスポンスをやりとりするための規約

    Webブラウザからリクエストが届くたびに、CGIを通してプロセスを起動していたため、アクセスが増えると、画面がなかなか表示されない問題が発生
    →Java誕生:CGIの問題点を補う、サーブレット機能により、Webアプリケーションの開発が可能に。また、オブジェクト指向の機能をフルサポートしているため、大規模システム開発しやすいという、メリットや、特定のOSやハードウェアに依存せずに動作する(JavaVM)というメリットがある。

    サーブレット:Javaコードの中にHTMLを埋め込む
    JSP:HTMLの中にJavaコードを埋めこむ

    ■HTTP
    TCP/IP:ブラウザなどから受け取ったHTTPリクエストなどの情報を、パケットに分割して送信し、受け取った側で元のように組み立ててから、受け手となるWebサーバなどのアプリケーションに渡す

    IPアドレス:世界中で一意の値になる必要があるため、ISPインターネットサービスプロバイダが、まとまった数のIPアドレスを確保し、ユーザに一時的に割り当てている

    IPアドレスは、人間にとって理解しにくいため、ドメイン名に変換されている
    →DNS:ドメインネームシステム、ドメイン名とIPアドレスの対応表を持ったコンピュータである、DNSサーバをインターネット上に配置しておき、DNSサーバに問い合わせれば、ドメイン名に対応するIPアドレスが返ってくる

    TCP/IP上では、HTTP以外にも、SMTPや、POP3など、様々なプロトコルで情報がやり取りされている
    →受信した情報がどのプロトコルのものであり、どのアプリケーションが処理すべきか把握する必要がある
    →ポート番号:どのプロトコルのものかが分かるため、届いた情報をどのアプリケーションが処理すべきかが分かる

    リクエスト処理
    ①GET:クエリ文字列を使用して、パラメータを渡すため、URLの中にパラメータが含まれる
    ②POST:メッセージボディを利用してパラメータを渡すため、URLにはパラメータは含まれないし、パラメータの長さに制限がなくなる
    →副作用がない、同じ要求を何度繰り返しても同じ結果が得られることが期待されている場合は、GETリクエストを利用したほうが良い

    日本語をGETパラメータで渡す方法
    →パーセントエンコード:文字列を文字コードで表し、16進数で表された各値の先頭に%を付けている

    ■Cookie
    ・HTTPの仕様を拡張してWebアプリケーションとWebブラウザの間で情報を交換できるようにしたもの
    ・名前=値の組み合わせで表される
    ・WebサーバからCookieを受け取ったウェブブラウザは、次回同じWebサーバにアクセスする際に、受け取ったCookieをほのままHTTPリクエストヘッダに入れて送る
    ・Cookieを受け取ったサーバとは異なるWebサーバに対しては、Cookieは送らない
    →Cookieにより、ウェブブラウザに状態を持たせることが可能になった

    ただし、Cookieの値は、InetSpyのようなツールで簡単に覗けてしまう
    →セッション

    ■セッション
    目的を達成するために、webアプリケーションに対して何度かのHTTPリクエストを行う、一連の処理の流れをセッションと呼ぶ

    Webサーバとwebクライアント間でのやり取りを、セッションIDのみで行い、Webサーバ側はクライアントから受け取ったCookieに格納されているセッションIDを元に、状態を復元する
    →安全性が高い

  • 【書誌情報】
    著者:小森祐介
    版型:B5変形判/288ページ
    定価:本体2,280円+税
    発売日:2010年4月10日
    ISBN: 978-4-7741-4235-7

    なぜあなたはJavaでオブジェクト指向開発できないのか』の著者である小森祐介氏の新刊です。Webアプリケーションの開発方法を,インターネットの仕組みの根本原理から,じっくり解説します。Webアプリケーションとは何か?――という根本的な問いかけから始まり,基礎の基礎をかためつつ,本物の実力を養成することを目標に内容を構成しています。これにより一貫した流れでWebアプリケーション開発の真髄を学ぶことができます。図解をたくさん用意しましたので,これで直感的に楽しく理解も進むようになっています。
    https://gihyo.jp/book/2010/978-4-7741-4235-7

    【目次】
    LESSON 0 はじめに
      市民権を得た「Webアプリケーション」
      「Webアプリケーション」開発の難しさ
      「Webアプリケーション」の開発技術はどこで学べる?
      なぜ,あなたはWebアプリケーション開発技術を学べないのか
      本書の対象読者
      本書を読む上での想定知識
      最も効率よく「技術」を学ぶ方法 

    LESSON 1 「Webアプリケーション」とは何か
    1.1 デスクトップアプリケーション
    1.2 Webアプリケーション
    1.3 まとめ 

    LESSON 2 Webはどのように発展したか
    2.1 WWWの誕生と普及
      世界中のコンピュータを結ぶインターネット
      インターネット普及の立役者・World-Wide WebとMosaic
      WWWの誕生
      現代Webブラウザの祖先・NCSA Mosaic
    2.2 Webを支える技術の発明
      WebサーバとWebクライアント
      なぜ,クライアントとサーバに分けるのか
      コラム 「クライアント」と「サーバ」偉いのはどっち?
      「そのリソースはどこにある?」- URL
      HTTP
      コラム インターネットに公開された技術仕様・RFC
    2.3 CGIの誕生
      動的なコンテンツへの要求
      CGIの誕生
      Webの爆発的な普及
    2.4 サーブレットの登場
      CGIにまつわる問題点
      Java/サーブレットの誕生
      Javaでアプリケーションを開発することの利点
      コラム 早すぎた技術,Javaアプレット
    2.5 JSPの誕生
      サーブレットの問題点
      発想の逆転!JSPの誕生
    2.6 Webアプリケーションフレームワークの時代
      サーブレットやJSPの問題点
      Webアプリケーションフレームワークの誕生
    2.7 まとめ 

    LESSON 3 HTTPを知る
    3.1 HTTPの知識はなぜ必要か
      コラム ハードウェアさえも信じられない事態!?
    3.2 WebブラウザとWebサーバの通信をのぞいてみよう
      横取り丸とInetSpyのインストール
      HTTP通信をのぞいてみよう
      HTTPリクエストをのぞく
      コラム URL とURI は何が違うのか?
      HTTPレスポンスをのぞく
      HTTPでは1回で1つのリソースを取得
      ファイル名を省略した場合のリクエスト
    3.3 情報はどうやってインターネットの大海原を越えるのか
      インターネット上の住所・IPアドレス
      IPアドレスを頼りに情報を届けるTCP/IP
      IPアドレスは誰が決めるのか
      グローバルIPアドレスとプライベートIPアドレス
      コラム IPアドレスと個人情報
      ホスト名をIPアドレスに変換するDNS
      DNSはどのようにして実現されるのか
      ホスト内の宛先を決定するポート番号
    3.4 Webサーバへの要求をどのように伝えるか
      GETメソッドによるパラメータ渡し
      アプリケーション側でのパラメータの受け取り
      POSTメソッドによるパラメータ渡し
      GETとPOSTどちらを使えばよい?
      日本語はどのようにして渡せばよいか
    3.5 まとめ 

    LESSON 4 CGIからWebアプリケーションへ
    4.1 宅配ピザ注文サイトを作ろう
    4.2 画面構成を考える
      コラム 実際のWebシステム開発の流れ
    4.3 画面モックを作ろう
    4.4 ログイン認証機能を作成する
      PHPで認証機能を作ろう
      認証機能の動作を確認しよう
      リダイレクト動作のHTTP通信を確認しよう
      コラム PHPはどのように実行されるのか――CGIとモジュールの違い
    4.5 ログイン状態をどのようにして記憶するのか
      ステートフルなプロトコルとステートレスなプロトコル
      ステートレスなHTTP上で状態をどのように表現するか
      Cookieを利用して状態を保持する
      Cookie利用の実際を確認する
    4.6 安全に状態を保存するための技術 ?セッション?
      Cookieにまつわる問題点
      コラム Cookieはどこに保存されている?
      銀行の窓口業務でセッションを理解しよう
      口座開設業務の進行状況をどのように管理するか
      セッションで処理の進行状況を管理する
      セッションの状態をどこで保持するか
      HTTPにおけるセッションIDの受け渡し方法
      セッションID利用の実際を確認する
      セッションIDによるユーザの識別
    4.7 ピザ・ペントミノの完成
      コラム Webサーバによる認証機能――Basic認証
    4.8 まとめ 

    LESSON 5 Webアプリケーションの構成要素
    なぜWebアプリケーションの構成を理解しなければならないのか
    コラム コンピュータは「節」?
    5.1 WebサーバとWebクライアントの時代
      WWWの黎明期
      CGIの時代
      コラム ソフトウェア? プログラム? アプリケーション? サーバ?
    5.2 データベースサーバの登場
      大量の情報をどのようにして管理するか
      データベース管理システムの登場
      コラム DB?  DBMS? RDBMS?
      データベースに対する操作
      データベースによる情報の管理
      コラム データベース設計はITシステムの要
      データベースから情報を抽出する
      必要な情報をSQLでデータベースへ伝える
      コラム データベースに対するCRUD操作とSQL文の関係
      データベースとクライアントの関係
      データベースサーバの分離
      Webアプリケーションとデータベースの通信
      コラム 代表的なデータベース製品
    5.3 アプリケーションサーバの登場
      ServletやJSPはどこで動いているのか
      Servlet / JSPを動かすためのアプリケーションサーバ
      Webサーバとアプリケーションサーバの連携
      Webサーバとアプリケーションサーバの分担
      Webサーバとアプリケーションサーバ連携のメリット
      複数のTomcatへの転送
      Webサーバの機能を持ったアプリケーションサーバ
      コラム アプリケーションサーバの提供する機能
    5.4 Webシステムの三層構成
      最小構成のWebシステム
      一般的な構成
      Webシステムの三層構成
      コラム 現代のWebシステムを支えるオープンソース
    5.5 まとめ 

    LESSON 6 Webアプリケーションを効率よく開発するための仕組み
    6.1 サーブレット/JSPだけではいけないのか
      Webアプリケーション開発のスタンダード・Java
      サーブレットとJSPの連携
    6.2 サーブレット/JSPで「ピザ・ペントミノ」のログイン処理を実現する
      JSPによるログイン画面の表示
      サーブレットの呼び出し
      ログインサーブレットの処理
      フォワードとリダイレクトの違い
      リクエストスコープにおける情報の受け渡し
        JSPにおけるリクエストスコープからの情報の取り出し
    なぜリクエストスコープが必要なのか
      セッションスコープとリクエストスコープの違い
      コラム さまざまなセッションの実現方法
    6.3 Webアプリケーションのアーキテクチャ
      ロジックとデザインの分離
      ソフトウェアの建築様式
      コラム カスタムタグとJSTL
      「ピザ・ペントミノ」の構造を俯瞰しよう
      MVCモデルによるWebアプリケーションのアーキテクチャ
    MVCモデルによる処理の流れ
    6.4 フレームワークによるアーキテクチャの実現
      フレームワークとは何か
      StrutsによるMVCモデルの実現
      Strutsによる「ピザ・ペントミノ」のログイン処理
      JSPからのログイン処理アクションの呼び出し
      コラム Javaを部品化するための仕組み - Java Beans -
      ログイン処理アクションでのログインチェック処理
      商品一覧画面への遷移
    6.5 レイヤパターンによるデータアクセス層の分離
      モデルをどのように実現するか
      JDBCによるデータベースからの情報の取得
      レイヤパターンによるデータアクセス層の分離
      DAOパターンによるデータアクセス層の実現
    6.6 O/Rマッピングフレームワークによるデータアクセス層の実現
      O/Rマッピングフレームワークの必要性
      RDBとオブジェクトのインピーダンス・ミスマッチ
      iBATISによるO/Rマッピングの実際
      Data MapperとSQLマップファイルによるO/Rマッピング処理
      Dao Frameworkを利用したDAOの作成
    6.7 フレームワーク利用におけるメリットとデメリット
      フレームワーク利用のメリット
      フレームワーク利用のデメリット
    6.8 まとめ 

    LESSON 7 セキュリティを確保するための仕組み
    7.1 なぜセキュリティを確保しなければならないのか
      Webアプリケーションが守るべきセキュリティ
    7.2 代表的なWebアプリケーションの攻撃手法とその対策
      SQLインジェクション
      クロスサイトスクリプティング(XSS)
      セッションハイジャック
      コラム SSLによる通信路の暗号化
      クロスサイトリクエストフォージェリ
      コラム セキュリティの陰の立役者・ハッシュ関数
      強制ブラウズ
      ディレクトリトラバーサル
      コラム より安全な認証方式?Digest認証?
    7.3 設計・実装ミスに起因する誤動作やセキュリティ問題を防ぐための対策
      「戻る」ボタン対策
      ダブルサブミット対策
      hiddenタグに重要な情報を持たせない
      デバッグ情報を出力させない
      グローバル変数に情報を持たせない
    7.4 まとめ

    謝辞
    LESSON 8 おわりに

    LESSON 9 付録
    9.1  参考書籍・サイト
    Lesson 0
    Lesson 2
    Lesson 3
    Lesson 4
    Lesson 5
    Lesson 6
    Lesson 7

  • 設計から実装担当に作業が
    変わる予定だったので、おさらいのために買おうとしたら、自社の蔵書棚で
    埃をかぶってる!!
    (オイオイオイ!!っと怒りながら涎を垂らしてる不審者)

    ひっそりと持ち帰り、正月
    居間で寝そべり読みました。
    webアプリケーションに必要な技術が生まれ、その穴を埋めるために別の技術が生まれて良い部分を組み合わせて今のスタンダード(ちょっと古くなってますが)が作られてきた経緯の説明がざっくりとはわかりました。
    復習するにはちょうど良かったです。
    技術面も古くなってる部分が、実は現場では現役だったりして、ドンピシャでした。

全112件中 1 - 10件を表示

小森裕介の作品

  • 話題の本に出会えて、蔵書管理を手軽にできる!ブクログのアプリ AppStoreからダウンロード GooglePlayで手に入れよう
ツイートする
×