データベースについて
データベースとは
「データベース」とは、ある特定の条件に当てはまる「データ」を複数集めて、後で使いやすい形に整理した情報のかたまりのことを表します。特にコンピュータ上で管理するデータをデータベースと呼ぶことが多いですが、紙の上で管理する「電話帳」や「住所録」なども、立派なデータベースです。
(http://proengineer.internous.co.jp/content/columnfeature/6411より)
図書館の例
データベースを図書館に例えると、
- データベース=資料や書籍
- DBMS=図書館司書、ないし館内管理用PC、館内書籍検索PC
図書館司書、ないし館内管理用PC、館内書籍検索PCの役割
膨大な量の書籍や資料のカテゴライズ化、目録の作成などといった、資料・書籍(=データベース)の管理業務を担う。これにより利用者がお願いすれば(ユーザーがブラウザからデータをリクエストすれば)必要な資料・書籍をすばやく見つけ提供できる。
上記リンク先の「Ajax通信の仕組み」の図がわかりやすかったのでシェア。
この図中でDB=データベースがどのような役割を果たしているか、必要ならば確認しましょう。
ちなみに、この図書館の例を参照した
https://rfs.jp/sb/sql/s01/01-19.htmlでは、DBMS=図書館司書、とされていました。
しかし、IT化された21世紀の現代において、この「資料や書籍の管理・検索・提供」などといった機能を、すべて図書館司書がやっていると考えるのって無理があるなあ・・・と思い、DBMS=図書館司書、ないし館内管理用PC、館内書籍検索PCと理解することにしました。
要は図書館でいう所の書籍管理システム(書籍の管理者)=DBMSってことかな。
データベース管理システム(DBMS)の例
RDB(リレーショナルデータベース)
データベースには様々な形態があり、その一つがRDB
https://rfs.jp/sb/sql/s01/01-19.html
RDB(リレーショナルデータベース)・・・関連あるデータ項目の集合体
https://aws.amazon.com/jp/relational-database/
- 構成:列と行があるテーブルのセット
- テーブルは、データベースに表現されるオブジェクトに関する情報を保持するために使用
リレーショナルデータベースエンジン=RDBのDBMS(RDBMS)
MySQL, MariaDB, Amazon Auroraなど
SQL(構造化クエリ言語)とは
https://aws.amazon.com/jp/relational-database/
によると、RDBの一側面としてSQL (構造化クエリ言語)があり、SQLとは何かというと下記のように定義されている。
SQL (構造化クエリ言語)・・・(リレーショナル)データベースとの通信に使用される主要インターフェイス(インターフェイス=境界面、接点。異なる2つのものを仲介する)。
データの行の追加/更新/削除、トランザクション処理や分析アプリケーションのためのデータのサブセットの取り出し、データベースのさまざまな管理を行うために使用される。
つまり、MySQL, MariaDB, Amazon Auroraなどといった(R)DBMSはSQLという言語で記述・実装されるよっていう、こういうこと?
Amazon Auroraとは
Amazon Aurora・・・MySQL/PostgreSQL 互換のリレーショナルデータベースエンジン
https://aws.amazon.com/jp/rds/aurora/
- MySQLを上回るパフォーマンス
- 耐障害性と自己修復機能を備えた分散型ストレージシステム
- Amazon Relational Database Service (RDS) を使った完全マネージド型サービス
使用開始方法:
Amazon RDS マネジメントコンソールで最初の Aurora データベースインスタンスを作成し、MySQL データベースや PostgreSQL データベースの移行を開始してください。
フロントエンドエンジニアとは?と、今の意気込み
What does it mean to be a “front-end web developer”?より
同サイトのUPL:
https://css-tricks.com/the-great-divide/
概要(間違っているかもだけど)
- フロントエンドディベロッパーって、定義広すぎ
- フロントエンドディベロッパーって大きく分けて2ついる。ReactとかAngularとかゴリゴリ使えるJavaScriptディベロッパー(オールパワフル・フロントエンドディベロッパー)と、HTML, CSSのコーディングでデザイン性の高いサイトを作るディベロッパー
- でも後者は衰退気味?というか、少なくとも彼らは昨今のJavaScriptの飛躍で「自分はフロントエンド開発者としての能力は不十分である」と感じ始めてしまっている。
- 前者のJavaScriptディベロッパーは新しい定義が必要。とりあえずこの分野は今伸び盛り。
- でもこの世界って常に変化が求められるのはいまも昔も変わらずだね。
感想
てことで、オライリーの本を使ってJavaScriptの論理を基礎からしっかり固めることはもちろん大事だけれど、それと同時進行で、Vue.js, React, Angularなど、実践的なフレームワークもゴリゴリ使えるようにキャッチアップしてゆかなくては、とてもじゃないけど間に合わない。
ん?今、間に合わないって言ったな。そう、私も薄々気づいているのは、エンジニアに転身することを考えた時、いまは結構年齢的に際どい。
若いとか歳だとか気にするの阿呆らしいと思っているけど、実際あほらしいし不毛ではあるとは思っている。
でも、それでも年齢とともに何かをガラッと変えるのは難易度が上がるということにも今実はなんとなく気づいてしまってもいて、だから時間は無駄にできないと思ってしまうのだ。
もう余裕はこけないので、本業も頑張りつつちゃんと勉強してゆこう。いずれポートフォリオ作って、「これが私の学習の成果です!集大成です!」というものを作ってゆきたい。
勉強したいフレームワークとしては、まずはVue.jsかな。とっつきやすそうだし。
で、いずれはAngular憧れるよね。フルスタックで勉強大変そうだけど。Google Loverの私としてはね。
↑学習コストがなまら高いらしいので却下
要するに、今JavaScriptエンジニアのニーズはだだ上がり!
とはいえ、デザイン性の高いWebデザインを生み出す、アーティスティックな役割もまずなくなりはしないかなとも思う。
でもその、いわゆる「Webデザイン」という生業が、単にhtmlとcssをコーディングできさえすれば良いというものではなくなって、今後はより「いかにアーティスティックなデザインを生み出せるか」という、芸術領域に特化した意味合いを持つようになるということかと。
そうなってくると、Web「デザイン」に特化するなら自然と美大とかでアートをゴリゴリ学んできた人材になってくる訳で。
そう考えると、ネット広告などで「未経験でも○ヶ月でWebデザイナーに!」とか唄っているのって、本当、ただただ無知な消費者から金巻き上げることしか考えていないか、それとも現状の動向を何もキャッチアップしていないか、もしくはそのいずれもか、なのだよね。
「未経験でも○ヶ月で日本画家に!」とか言っているのと同じ、少なくともそれに近づいてきてるから。
それはそれで、そんな甘い世界じゃねえよって、なってきそうだよね。
だから要は、Webデザイナーが廃れてゆく、というよりは、JavaScript開発者のニーズが非常に高まっている、と理解するべきなのだよ、きっと。
MVCとMVPとMVVM
一般的なWebサイト(ザ・静的サイト)におけるMVCの定義
- Model・・・データ、データにアクセスするための機能、様々なロジックなど。ユーザーインターフェイスのないアプリケーション。内側のシステムっつーことかね。
- View・・・外部にどのようなコンテンツを届けるか定義。ここで言うコンテンツとはHTML, JSONなど。
- Controller・・・Routing後(特定のURLでアクセスされた後)必要に応じてModelと情報のやり取りをしてふさわしいViewをユーザーに返す働きをする。RontingとControllerがModelとユーザー、Viewとユーザーの仲介役になっているイメージ
フロントエンドにおけるMV(Model View)
上で言うところのViewに相当。
もともとWebサイトはHTMLにコンテンツが埋め込まれた状態でユーザーにレスポンスが返されるので、ViewにMVな構成を施す必要がなかった。
しかし、SPA(Single-page application)時代の到来とともにViewの中にもAjaxのデータ通信が必要だったりして、MVな構造が必要となった。
MVP (View, Presenter, Model)
ユーザー⇔View⇔Presenter⇔Model 厳密にはこの矢印違うけど(確認してね)
Presenter
Model, Viewが情報などを入出力するためのインターフェイス。
ユーザーがModelに情報を反映・取得をする時は、必ずViewを通して、Presenterに用意されているインターフェイスを使うことになる。
MVVM (View, ViewModel, Model)
ユーザー⇔View⇔ViewModel⇔Model
ViewModel
ModelとViewの中間に位置し、双方向データバインディングを実現する
双方向データバインディング
Modelの値が変わるとViewModelが変更を検知し、Viewで使われているデータも自動で変更する仕組み。
逆も然りで、ViewでModelの値が変更されれば、それをViewModelが検知し自動でModelの変更に反映する。
MVVMの代表例:Vue.js
JSコード学習とデータベース復習
新たに覚えたJSコード
isFinite()・・・グローバル関数。渡された引数が有限数であるかどうかを調べる。
toFixed(2)・・・小数点以下を引数桁(ここでは2桁)に丸める。
saveメソッド(save();)・・・The save method is used to store a contact inside the device's contact database. If the contact is already in the database (based on its id), it is updated, otherwise it is created.
=コンタクトを、デバイスのコンタクト・データベースに保存するのに使用。すでにコンタクトがデータベースに存在している場合(idベース)は、既存コンタクトはアップデートされるか、コンタクトは新規作成される。
メソッド・・・関数とオブジェクトが組み合わさったもの。末尾に要セミコロン。
try{ } catch(){ }・・・文。任意の文のひとかたまりをtry内にマークし、返答、ないし例外は除去。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
chart();・・・引数をグラフ表示
データベースとは
「データベース」とは、ある特定の条件に当てはまる「データ」を複数集めて、後で使いやすい形に整理した情報のかたまりのことを表します。
特にコンピュータ上で管理するデータをデータベースと呼ぶことが多いですが、紙の上で管理する「電話帳」や「住所録」なども、立派なデータベースです。
また、コンピュータ上でデータベースを管理するシステム(DBMS:Database Management System)のことや、そのシステム上で扱うデータ群のことを、単に「データベース」と呼ぶ場合もあります。
http://proengineer.internous.co.jp/content/columnfeature/6411
データベース管理システム(DBMS)の例
ニルギリの素晴らしさを語る
近頃紅茶にはまっておりまして、中でも一番好きなのが「ニルギリ」という紅茶なのですね。
ニルギリとは?
説明が面倒臭いので、ルピシアさんのリンクでも貼っておきます。
【LUPICIA】THE NILGIRI TEA 南インドの至高の味わい ニルギリ | 世界のお茶専門店 ルピシア ~紅茶・緑茶・烏龍茶・ハーブ~
でも一点だけ特筆するとしたら、クオリティシーズンが1〜2月ごろということですね。
市場に出回るのは3月ごろなので、早くクオリティーシーズンのニルギリ新茶飲みたいなあと、今か今かと楽しみにしている今日この頃です。
評判
実は昨年2018年11月から、西日暮里のcha tea という紅茶教室に通っているのですが、そこでニルギリがたまに話題に出てきても(講義で取り上げられても)、
「特徴がない」、「大衆的」、「ほんのり柑橘系の香り?でもよくわからん」
「飲みやすいけど別に好きでも嫌いでもない。それよりも、ダージリンの良い香りが〜、アッサムがコクがあって大好きで〜」
とまあ、こんな感じなのですよ。
そこで、当教室でもニルギリ好きを自称している私が、この場を借りてニルギリの良さをひたすら列挙します。
ニルギリの良いところ
ECMAScriptとMathオブジェクトなど
最近読み始めた、オライリー社の『JavaScript 第6版』(David Flanagan著、2012年)
に「JavaScriptを使った住宅ローン計算機」というコーディング例がありまして、そちらを、実際に手を動かしてコーディングしつつ、わからない表記方法、および言葉などを適宜調べながら、読み進めて行きます。
ちなみに私はVisual Studio Codeというテキストエディタを使っています。
ECMAScript
“use strict”;・・・ブラウザがサポートしているならば、ECMAScript 5 のstrictモードを使う、という宣言。JavaScriptコードの冒頭に記載する。
ECMAScript・・・JavaScriptの標準であり、Ecma Internationalのもとで標準化手続きなどが行われている。
strictモード・・・もともと曖昧な記載でも動くようになっていた JavaScript に対して、厳格なコード記述を求めるようにすることで、 少しでもましなコードを書けるようにする仕組み
https://garafu.blogspot.com/2016/06/ecmascript5.html
関数、オブジェクトなど
関数
parseFloat()・・・引数として与えられた文字列を解析して浮動小数点数を返します。
浮動小数点表現・・・1以下の数字を仮数部と指数部に分けて表現。1.01×10(-8乗)とか。
S:符号(プラス or マイナス)、E:指数部。M:仮数部
↑この辺の理解が曖昧!でもとりあえず私の独断と偏見で流しちゃいます。
Mathオブジェクト
- Math.PI・・・円周率を示す。cf. Math.random, Math,float
- Math.pow(base, exponent)・・・「base」を「exponent」乗する。