2013年10月21日月曜日

Webアプリケーション: 第3回

実施日時: 2013年10月21日(月) 3限
講義内容: URI

Webを構成する主要技術の1つ目、URI(Uniform Resource Identifier)についてお話ししました。以下、今日の講義の概要を箇条書きでまとめてみます。

  • URI(Uniform Resource Identifier)
    • リソースの統一的な識別子=リソースの「名前」
    • 現在のWeb技術の観点からは、URIは「自動的に決まるもの」ではなく「設計するもの」←これは重要
  • URIの例
    • http://example.jp/2013/10/21.html
    • ftp://ftp.example.jp/sample.txt
    • file:c:/sample.txt
    • tel:09099999999
    • これらの例から分かる通り、URIはWeb(HTTP通信)だけでなく様々な通信プロトコルにも使えるし、ローカルコンピュータ上のファイル、他のアプリケーションの起動指定などにも使われている
  • URI = URL + URN
    • URL(Uniform Resource Locator): 上に挙げた例はすべてURL
    • URN(Uniform Resource Name):ホスト名やプロトコルに依存しないリソースの「名前」
      • 例: urn:isbn:9784774142043 … ISBN番号9784774142043の書籍を表すURN
      • ほとんど使われていないため、事実上、URI ≒ URL
  • URIの構成
    • http://example.jp/2013/10/21.html
      • http … URIスキーム(リソースを取得するためのプロトコルなど)
      • example.jp … ホスト名(リソースを取得するために通信するべき相手)
      • /2013/10/21.html … パス(通信相手上でのリソースの識別子)
    • 複雑な例
      • http://kunishi:pass@example.jp:8000/search?q=data&debug=true#n10
        • kunishi … ユーザ名
        • pass … パスワード
        • 8000 … TCP/IPのポート番号
        • q=data&debug=true … クエリパラメータ(GETパラメータ)。この例では、q(値data)とdebug(値true)という2つのパラメータを指定している。
        • #n10 … URIフラグメント(リソース中のある部分を指す)
  • URIの役割
    • Web上(インターネット上)でリソースを一意に識別するための識別子(名前)
    • リソースを取得するための手順の記述
      • 手順がコンピュータ処理可能で記述されているため、URIでリソースを指定すると、自動的にリソースを取得することが可能になる
  • いいURIとは
    • 変更されないURI(変更されるとリンク切れが発生する=ユーザがリソースにたどり着けなくなる)
    • Webサイトを公開したり、Webアプリケーションを実装する場合、なるべく将来にわたってURIを変更する必要がないように、URIを設計する必要がある
    • URIが変更される要因
      • パスの構成の変更(静的Webサイトでのディレクトリ構成の変更など)
      • Webアプリケーションのプログラムの変更
      • Webアプリケーションのプログラミング言語の変更
      • Webサーバの設定変更
      • Webサーバのリプレース
      • etc.
    • どのようにすれば変更されにくくなるか
      • 最初から熟慮してURIを設計(適切な階層構造にする)
      • 実装に依存しないURI(プログラミング言語を表す拡張子をつけない、cgi-binなど特定の実装方法に依存する文字列をURIに含めない、など)
      • Webサーバに用いるコンピュータ名とURIのホスト名とを独立させる(独自ドメインなど)
      • どうしても変更しなければならない場合は→HTTPリダイレクト

2013年10月18日金曜日

情報システム論: 第4回

実施日時: 2013年10月18日(金) 2限
講義内容: IPアドレス、IP

講義メモを公開しています。参考にしてください。

2013年10月15日火曜日

情報通信工学実験IB: B班第3週

実験日時: 2013年10月15日(火) 3限〜5限
実験内容: Rubyプログラミング(3): 配列、ハッシュ、イテレータ

配布資料「第3週」に相当します。

2013年10月11日金曜日

情報システム論: 第3回

実施日時: 2013年10月11日(金) 2限
講義内容: TCP

講義メモを公開しています。参考にしてください。

2013年10月8日火曜日

情報通信工学実験IB: B班第2週

実施日時: 2013年10月8日(火) 3限〜5限
実験内容: Rubyプログラミング(2): 文字列と正規表現

配布資料のうち「第2週」に相当します。

2013年10月7日月曜日

Webアプリケーション: 第2回

実施日時: 2013-10-07(月) 3限
講義内容: Webのシステムアーキテクチャ

今日の講義では、Webのシステムアーキテクチャについてお話しました。ポイントを以下にまとめてみます。

  • アーキテクチャ(architecture)=「構造」
    • どのような部品から構成されているか?
    • それぞれの部品はどのような役割か?
    • 部品は互いにどのようにやりとりを行うか?
  • 分散システムアーキテクチャの例
    • クライアント・サーバシステム(→Wikipedia
    • ピア・ツー・ピアシステム(→Wikipedia
    • いずれも、古くから様々なシステムで利用されているアーキテクチャであり、利点・欠点もかなり明らかになっている。いわば「先人の知恵」
  • Webとは
    • インターネット上に実現された分散ハイパーメディアシステム
  • ハイパーメディア(hypermedia)
    • 様々な「情報」をリンクで互いに結びつけたメディア(情報の集まり)
    • Webでは
      • 「情報」=リソース(resource)
        • インターネット上に分散して置かれており
        • 様々な種類のものがあり(テキスト、画像、etc.)
        • 同じ情報でも複数の表現(representation)を持つ場合があり
        • 互いに区別できる仕組みを持つ
          • URI(Uniform Resource Identifier)
  • Webのアーキテクチャ
    • クライアント・サーバシステム
      • リソースを供給するWebサーバ、Webサーバとユーザとの橋渡しをするWebクライアント(Webブラウザなど)
    • ステートレスサーバ
      • Webクライアントの状態をWebサーバでは管理しない
    • キャッシュ
      • Webクライアントが一度取得したリソースを使いまわす
    • 統一インタフェース
      • すべてのリソースに対する操作が統一されている
    • 階層化
      • システムをいくつかの階層に分離する
      • 目的:Webサーバの負荷分散など
    • コードオンデマンド
      • プログラムをサーバからダウンロードし、それをクライアント上で実行する
  • Webのアーキテクチャ=REST(Representation State Transfer)

2013年10月4日金曜日

情報システム論: 第2回

実施日時: 2013-10-04(金) 2限
講義内容: 通信、ネットワーク、インターネット

本講義の元になったメモを公開しています。