PHP/Elixirエンジニアのブログ

有益なアウトプットを心がけます。

【Webシステム】クッキー(Cookie)?なにそれおいしいの?

いつもご覧いただきありがとうございます。
 本日は「Cookieとは何か」について書いていきます。

 

Cookieとは

極論、WebアプリケーションとWebブラウザの間で

情報を交換できるようにしたものです。

 

Cookieの語源

諸説ありますが、アメリカ合衆国やカナダの中華料理店で食後に出される

「fortune cookie(フォーチューン・クッキー)」に由来してるという説が有力です。

フォーチューン・クッキーには日本のおみくじのように1つずつ違う言葉が書かれた

紙片が入っています。

UNIXシステムなどのサーバーにログインしたとき、格言や運勢など毎回異なるメッセージを表示する機能がありますが、このようにサーバからクライアントへ送られる短いメッセージ(データ)がフォーチューン・クッキーにちなんで「Cookie」と呼ばれるようになりました。

 

Cookieの具体例

アクセスしたWebサーバーからCookieが発行されブラウザに渡される。 ブラウザはCookieをローカルストレージに保存。 次回以降、ブラウザはCookieとともにWebサーバーへアクセス。 WebサーバーはCookieの内容にあわせて、カスタマイズしたページを表示。 Webサーバーは識別子をアップデートしてCookieをブラウザへ返す。

Cookieの構成

Cookieの構成は、サーバー側で設定することができます。nameとvalueは必ず設定しなければならず、それ以外の値に関しては設定しなくても大丈夫です。必要に応じて設定します。

  • name
  • value Cookieがもつ値です。
    • ここにCookie IDを持たせて、ブラウザを認識させたり、訪問回数を記録するように設定したりすることができます。
  • expires
    • Cookieの有効期限を設定します。
  • domai
  • path
    • Cookieが発行されるパスを設定します。特定のパス下のみでCookieを発行したいときに設定します。
  • secure
    • アクセス先がSSLを実装しているような安全なサイトの場合のみ、Cookieを発行するように設定ができます。この項目は省略せずにきちんと設定するようにしましょう。

Cookieの危険性

Cookieを利用したやり取りはHTTPのリクエスト・ヘッダやレスポンス・ヘッダを利用して行われます。知識のある人ならば専用のツールを利用することで簡単に覗けてしまいます。またPC上に保存されたCookieも簡単に覗くことができます。

そこでセッションと呼ばれる仕組みを利用したりしてセキュリティの問題をカバーすることが求められます。

Cookieとは何か」についてかんたんにまとめさせていただきました。
 
 最後までご覧いただきありがとうございました。




【CSS】CSSってなに?

いつもご覧いただきありがとうございます。

本日は「CSSとは何か」について書いていきます。


 

# CSSとは

極論、HTMLファイルで作られた骨組みを装飾するものです。

 

# CSSの歴史

CSSCascading Style Sheets、カスケーディング・スタイル・シート)とは、ウェブページのスタイルを指定するための言語です。 

1996年にCSS1が発表されてから2年後の1998年、「CSS2」が勧告されました。しかし、この時点でもまだ、当時のトレンドだったブラウザにはCSSに関するサポートがほとんどなく、CSSは再びマイナーな位置づけで、マニアックな存在となりました。

 

CSSに転機が訪れたのは、上記のCSS2発表から3年後の、2001年からになります。Firefox(当時はMozilla)やOperaといったブラウザが、徐々にCSSをサポートするようになったのです。この流れは、CSSの歴史の中でも、大きな分岐点と言えるでしょう。この頃からようやく、CSSが注目されるようになり、CSSを使ったwebサイトが作成されるようになりました。

 

その後、InternetExplorerでもCSSへのサポートが開始され、CSSは一気にメジャーな存在へと、成長を遂げます。しかし、この時点での各ブラウザのサポートは、完璧と言い難く、webサイト開発者はまだ、CSSの機能や性能を完全に使いこなせない状態でした。

 

上記のような状態が改善されたのは、2006年でした。InternetExplorerバージョン7から、CSSのより完璧に近いサポートが開始されるようになったのです。尚、日本語版は2008年だった為、世界に対して2年遅れの対応でした。

 

2006年にCSSへの完全なサポートがスタートしてからは、開発者はCSSの性能をフルに使いこなした、ハイクオリティなwebサイトを次々に開発していきました。そして、CSSIT業界でメジャーな技術として、勢力を広めていったのです。

 

CSSとは何か」についてかんたんにまとめさせていただきました。


 最後までご覧いただきありがとうございました。




【JavaScript】JavaScriptってなに

いつもご覧いただきありがとうございます。

本日は「JavaScriptとは何か」について書いていきます。


v

JavaScriptとは

極論、Webのデザインを動的なものにできる言語です。


JavaScriptの歴史

インターネットは1990年代から盛んになり始めた技術ですが、JavaScriptの登場も同時期です。

黎明期にはJavaScriptのせいでブラウザ動作が重くなることもありましたが、

環境が整ってリッチコンテンツ(視覚的に華やかな広告など)の提供が可能になってからは、

JavaScriptが大いに活躍してきました。


ECMAとは

JavaScriptの黎明期においては、異なるブラウザで互換性が無いことが問題となっていました。

そこでECMAインターナショナルという機関のもとで標準化がなされます。

すなわち、ECMAインターナショナルによって「JavaScriptの書き方」が決められました。

これをECMAScriptと呼びます。現在はJavaScriptというとECMAScriptで書かれることが一般的です。


Javaとは全く異なる言語

Javaという有名なプログラミング言語があります。

JavaJavaScriptは兄弟のようなものかと考えてしまう人がいますが、

全くの別言語です。 メロンとメロンパンくらい違うものと考えておきましょう。


JavaJavaScriptではメインで使用される分野が異なります。

Javaは業務システムなどのサーバーサイド側で使用されます。

つまり、データの保管や複雑な処理を行う「裏側」がメインです。

JavaScriptは前述の通り、主にフロントエンド、

つまり「見た目」の部分で活躍することが多いプログラミング言語です。


JavaScriptとは何か」についてかんたんにまとめさせていただきました。


 最後までご覧いただきありがとうございました。





【SQL】SQLってなに?

いつもご覧いただきありがとうございます。

本日は「SQLとは何か」について書いていきます。

SQLとは

極論、データベースに対して欲しい情報を伝えるための言語です。

どんな言語?

SQL(Structured Query Language)
読み方はエスキューエル、シークエル。
直訳すると「問い合わせのための構造化言語」。
1976年にIBM社SanJose研究所で開発された宣言型の言語。
RDBMSに対してデータの操作や定義を行う。
データを1件ずつ処理するというよりも
データの集合体に対して演算を行うイメージ処理で行う。

SQLの特徴

一方的に命令する

SQLは、対話のように文をやりとりして命令を行います。
プログラミング言語ソースコードに命令を順番に記述して実行しますが、
SQLはシンプルな命令文を一方的にデータベースに送るだけです。
基本的に1文で完結し、複雑な処理を行う場合は、
返ってきた処理の結果に応じてまた命令を送るというように
データベースと対話するように命令文をやりとりします。

SQLのみではアプリを作成できない

SQLはデータベースを操作するための言語であり、
アプリケーションを作成したり操作したりする機能はありません。
アプリケーションやシステムを開発するときには、
ほかのプログラムやプログラミング言語と組み合わせて使用します。
アプリケーションからデータベースを利用したい場合は、
アプリケーションにSQLの命令文を記述します。
RDBMSを操作して返ってきた値をアプリケーションで利用し、
さらに処理を繰り返し行います。


SQLとは何か」についてかんたんにまとめさせていただきました。

 最後までご覧いただきありがとうございました。



【Webシステム】Webの3層構成ってなに?

いつもご覧いただきありがとうございます。

Webシステム基礎シリーズ、


「Webの三層構成とは何か」について書いていきます。



Webの三層構成とは何か

 極論、Webシステムを構成するソフトウェアを大きく3つの構成に分けて
連携させる構成を指します。
主役となる構成要素は以下の3つです。
・Webサーバ
アプリケーションサーバ
・データベースサーバ

Webサーバとは

Webサーバはフロントエンドにあり、ユーザーと直接やり取りを行うサーバです。
ユーザーがWebブラウザからリクエストした内容を受け付けて処理します。

アプリケーションサーバとは

Webアプリケーションサーバでは、Webサーバからのリクエストを
JavaRubyPHPなどを実行して処理します。
場合によっては、データベースにアクセスしてデータを要求します。

データベースサーバとは

データベースは、主にデータの管理を行っているバックエンドで、
Webサイトに必要なユーザーデータや商品データなどを保存しています。
Webアプリケーションはデータベースにアクセスし、
必要なデータの抽出や加工処理を実行します。


本日は「Webの三層構成とは何か」についてかんたんにまとめさせていただきました。 
 最後までご覧いただきありがとうございました。



【Webシステム】RDBMSってなに?

いつもご覧いただきありがとうございます。

Webシステム基礎シリーズ、


RDBMSとは何か」について書いていきます。



# RDBMSとは

極論、データを表形式で扱うデータベースのことです。

RDBMSとはRelational Database Management Systemの略で

関係データベースという意味です。

# RDBMSの歴史

データベースが提唱された1960年代、コンピュータで情報を

管理するためのいくつかの方式が研究されていました。

(データベースの種類は前回のブログに記載しています)

【WEBシステム】DB? DBMS? データベースってなに? - プロになるためのWeb技術を学び始めた実務未経験者がアウトプットするために開設した毎晩0:00ギリギリに焦って更新するブログ

 1960 年代後半にネットワーク型データモデルと、IBM 社 の階層型データベース管理システム IMS が発表され、一気にデータベースの関心が高まってきました。
この二つのデータモデルは、発表された当初は注目されていましたが、1980 年代にリレーショナルデータベース管理システム (RDBMS) が実用化されてからは、RDBMS に関心を奪われてしまいます。

 この RDBMS は万能で、ユーザからのデータアクセスやトランザクションを捌くフロントエンドの役割からビジネスデータの解析等を行うバックエンドの役割までこなすことができ、データ管理の定番として長年使われ続けています。

# クラウド型データベースの登場
 しかし、Web が社会の情報基盤として使われるようになると、データ量やアクセス数が凄まじい勢いで増加し、これによって RDBMS ボトルネックになることが多くなりました。これは、RDBMS が多くのサーバに分散してデータを保管したり、処理することが困難である、つまり、スケールアウト面に問題があるためです。

 この問題を解決すべく、二つのデータベースが登場しました。
一つは、2006年に登場した GoogleBigtable で、もう一つは、AmazonDynamo です。後者の方は、2007 年に登場しました。
 これらは、RDBMS が備えている一貫性 (Consistency) と可用性 (Availability) のうち、どちらか一つを犠牲にする代わりに、RDBMS には無い分割耐性 (Partition Tolerance) を備えていて、データの保管や処理を多くのサーバに分散できるスケールアウト可能なデータベースでした。
 これらのデータベースは、上記の問題に悩ませていた多くの人々に影響を与え、これらをもとにしたスケールアウト可能なデータベースの開発が活発化し、2009 年 6 月にそれらの内容を取り上げた「NoSQL meetup」というイベントが開催されました。
 そこから「NoSQL (Not Only SQL) 」という言葉が広まり、主に分割耐性を持つスケールアウト可能なデータベースをそう呼ぶようになりました。

そして現在は、超大規模なデータを扱うシステムの定番になりつつあります。

本日は簡単にRDBMSとは何かについてかんたんにまとめさせていただきました。 

最後までご覧いただきありがとうございました。



【WEBシステム】DB? DBMS? データベースってなに?

いつもご覧いただきありがとうございます。

Webシステム基礎シリーズ、

「データベースとは何か」について書いていきます。


データベース(Database=DB)とは

極論、コンピューター上で扱う情報の集合体です。

データベースに対して大量の情報を記憶して

様々な条件で検索したり計算したりするシステムを

データベース管理システムと呼びます。


データベース管理システム(Database Manegement System=DBMS)とは

データベースのファイル構造の設計から管理・運用を含めたシステムを指します。

また、データの共有化やデータ保護、データ検索、更新などの処理を実現するための手段を提供します。


DBMSの役割と機能には、次のようなものがあります。

・データベースを操作するための言語を提供する

・データの整合性を保障した管理手段を提供する

・データ利用の標準化を行い、各種プログラムへのインターフェイスを提供する

・データへのアクセス制限を管理する

・複数ユーザの同時処理に対応する


DBMSの種類

・リレーショナル型データベース

  現在最も利用されているデータベースです。


  テーブルという概念でデータの集合を格納し、各テーブルをリレーションによって関係付けます。

・ツリー型データベース


  古いデータベースモデルで、データをディレクトリ構造のように構築したデータベースです。


  一つの親データに複数の子データがツリー構造的に結合されたデータベースです。

・ネットワーク型データベース


  古いデータベースモデルで、各レコード間の関係付けが網目状になっている構造のデータベースです。


  親データと子データが多対多に結びつく複雑なデータ構造に適しています。

・分散型データベース


  データベースを複数のコンピュータで管理し、全体としてひとつのデータベースを構成します。

オブジェクト指向型データベース



   オブジェクト指向のデータ構造を持つデータベースです。


  複雑なデータ構造に向いている為、写真や画像や音声などの異なるデータを統合して扱えます。
XMLデータベース


  XMLを扱うための機能を持つデータベースです。


  拡張性が非常に高く、データ構造を運用中に変更することが容易です。



本日は簡単にデータベースとは何かについてかんたんにまとめさせていただきました。 

最後までご覧いただきありがとうございました。