Web開発(Web Programming)とは、Webで使われるWebアプリケーションやWebサービスの開発(Web開発)を指します。(※プログラミング自体を指す場合もあります)
WebアプリケーションはそのWebサイトにアクセスした人に提供するさまざまな機能のことで、Webサービス、Webシステムなどとも呼ばれます。
Web開発に関わる人はWebプログラマー、Webエンジニア、Web開発者などの名称で呼ばれていますが、会社やプロジェクトによっては複数の業務を兼務している場合もあり、明確な線引きはありません。
ところで皆さんは「Webの開発(Web programming)」と聞いて、どんなものをイメージするでしょうか?皆さんが想像するものを簡単にまとめると、こんな感じでしょうか?
これらはすべて、間違ってはいません。これらは、Web開発の一部分を表しています。ただ、Web開発というのは広い範囲を表す言葉なので、その部分部分だけを見ると、こんな具合に全然違ったイメージになってしまいます。
では、「Web開発(Web programming)」って具体的にどんなことなんでしょうか?
Webというのは、インターネット上で使われる様々な情報の1つなんだ、ということは、まず頭に入れておきましょう。インターネットという巨大なネットワークの上では、様々なサービスが使われています。例えば、電子メール、例えば、ファイルの転送。それらは、Webではありませんよね?
Webというのは、「Webブラウザ」と呼ばれる専用のソフトを使って、様々な情報を見るための仕組みです。テキストやグラフィックなどを利用した情報を公開するのに利用されます。
このWebという仕組みは、一般に「Webサーバ」と呼ばれるものを使って行われます。Webサーバというのは、Webの仕組みを使って各種の情報を配るプログラムです。
それぞれのWebサーバには、「ドメイン」と呼ばれるものがあり割り当てられています。このページの場合は、wot.exp.jp となります。そして、そのサーバに設置されたファイル類は、「URL」と呼ばれるものを使って指定することができます。URLっていうのは、Webサーバで公開されているファイルなどの住所のことです。このページの場合、https://www.yugien.xyz/web/about.html となります。
>>URLとドメイン
Webブラウザで、このURLを使ってアクセス先を指定すると、インターネットの中から指定のWebサーバに向けて、「このファイルを送ってくれ」と要求を送ります。Webサーバはそれを受けて、要求されたファイルの内容を送り返します。こうやって、Webブラウザは、Webサーバにあるファイルなどを表示しているんです。
Webサイトを閲覧するときには、クライアントとサーバーのやり取りが起こっています。
クライアントとは、ユーザーが使うデバイス(パソコン、スマートフォンなど)と、デバイス上で実行しているソフトウェア(主にWebブラウザ)のことです。サービスを受ける側です。
サーバーとは、Webページやデータを保存するコンピュータのことで、サービスを提供する側です。
クライアント側のプログラムがサーバーに対してリクエストを送信し、サーバーのプログラムが処理をしてクライアント側へデータを送信することで、Webサイトの閲覧やサービスの利用が可能になります。
たとえば、ショッピングサイトで商品を購入~決済したときはこのような流れです。
(※他にもさまざまな処理が進行していますが、ここでは省略します。)
この流れには、Webページを表示するHTML/CSS、処理を行うプログラム、データを管理するデータベースなどが関係しています。
よく、「サーバマシン」なんて言葉を耳にしたことがあるでしょう。それで、「Webサーバを動かしているのは、普通のパソコンなんかじゃなくて、サーバマシンっていう特別なマシンなんだ」って思っている人もいるんじゃないかと思います。
が、これは間違い。サーバマシンっていうのは、単に「サーバが動いているマシン」というだけの意味です。普通のパソコンなんです。
「でも、専用の高いサーバマシンとか売ってるよ?」と思った人。それは、耐久性や速度などの点から「サーバに適したように作ってあるパソコン」ということなんです。中で動いているのは、普通のパソコンと同じものです。
といっても、Windowsはあまり多くなくて、たいていはLinuxなどをOSとして使っています。理由は、「Windowsだとお金がかかる」から。
したがって、皆さんが普段使っているパソコンでも、サーバプログラムさえ入れれば、Webサーバとしてちゃんと使えるようになるんですよ。
Webサーバには、「公開ディレクトリ(公開フォルダ)」というものが用意されていて、その中に入っているファイル類は、すべてURLを指定して外部から取り出せるようになっています。Webブラウザがやっているのは、ただWebサーバにあるファイルを要求し、受け取るだけです。
でも、それだけでは複雑にレイアウトされた画面なんて作れそうにありませんね。
実は、Webサーバに置いてあるファイルは、「HTML」という特殊なレイアウト用の専用言語を使って書かれています。Webブラウザは、受け取ったファイルの中身をただ表示するのではなくて、この専用言語に従って表示内容を作成していくようになっているのです。
したがって、Webブラウザが理解できる専用言語を使って実際の表示内容を作っていく、ということがWeb開発(Web programming)の基本だ、と言っていいでしょう。
要するに、「Webサーバで公開する、様々なファイル」を作成することが、Web開発の基本というわけです。
では、この開発にはどんなもの(知識や、ソフトウェアなど)が必要になるのでしょうか?
Webブラウザで表示される画面(Webページ)は、「HTML」と呼ばれる専用言語を使って書かれます。また、それの見た目をデザインするためのものとして「スタイルシート(CSS)」という機能を使います。この2つは、Web画面を作るための基本中の基本として身につけておかないといけません。
HTMLとスタイルシートだけでは、ただ「何かを表示するだけのWebページ」しか作れません。これに、何かの仕掛け、動き(クリックして何かを動かしたり、アニメーションしたりするなど)を組み込むためには、「JavaScript(ジャバスクリプト)」というプログラミング言語を使わないといけません。
JavaScript のライブラリの一つに jQuery があります。jQuery を使用することで JavaScript のコードがシンプルになり、望む機能が比較的簡単に実現できるようになります。
さらに一歩進んで、様々な情報をWebサーバに問い合わせるようなWebサイトを作ろうとしたら、別のプログラミング言語が必要になります。「問い合わせる」というのは、例えば掲示板を作ったり、オンラインショップを作ったりすると、必要な情報をサーバに問い合わせて表示するような処理をしなければなりません。こういうときに、Webサーバでデータの処理をするような言語を使う必要があります。
サーバ側のプログラムのための言語。HTMLに埋め込むことができる仕組みを持ちます。HTMLを勉強済みの初心者なら理解しやすく、さらに関数が豊富なので望む機能を実現しやすい点が特長です。
Python や Perl、Java などのあらゆるWeb系プログラミング言語の特徴を取り入れながらもシンプルなコーディングができる言語です。Ruby on Rails というWebアプリケーションフレームワークが有名です。
文法がシンプルで少ないコード数でプログラムを書くことができ、コードが読みやすいのが特徴。データ分析・解析に役立つライブラリを有しており、機械学習や統計解析の分野でも活用されています。近年さまざまなプログラミング言語ランキングで上位に位置することが多くなっています。
長くIT業界をけん引してきたオブジェクト指向言語。どこででも動作するという特徴があるので、Web業界だけでなく、組み込みシステムやスーパーコンピューター、モバイル用のアプリケーションまで、様々な分野で使用されています。
データベースとは、情報を検索しやすいように整理し収めた、情報の集まりのことです。データベースを管理するソフトウェアのことをデータベース管理システム(DBMS)と呼び、データベースの操作はSQLという言語で行います。
ショッピングサイトでいえば、顧客情報や商品情報はデータベースに保存されており、プログラムがこのデータベースにアクセスして情報を取得したり、情報を登録したりしています。
Oracle社が開発したデータベース。リレーショナルモデル(関係モデル)と呼ばれる概念に基づいてデータを管理・操作する「リレーショナルデータベース」の代表格です。
オープンソースのリレーショナルデータベースです。現在はOracle社が管理しています。
Microsoft社のデータベースです。その規模に応じた複数の種類があり、機能や性能が異なります。
フレームワークとはよく使う機能が集められたアプリケーションの土台のこと。必要な機能が既に存在するので、1から作るよりも短期間でアプリケーションを作ることができます。 JavaやRuby・PHPなどのWebフレームワークも開発によく利用されており、これらを使いこなせればスキルのひとつとなります。
Rubyのフレームワークです。Rubyといえばコレ、という知名度を誇ります。
PHPの歴史あるフレームワーク。「ケーキを焼くみたいに簡単に」が名前の由来です。
Pythonのフレームワークです。
Javaのフレームワークです。多くの機能が搭載されています。
Gitとは、プログラムのバージョン管理を行うツール。Gitをオンライン上で管理するサービスがGitHubです。
プログラムは一度作ったら終わりではありません。自分だけでなく複数の人の手によって改修がなされていくので、プログラムが今どの状態か、万一不具合が起こってプログラムを戻すときにどれを選ぶのか等、バージョン管理は適切に行う必要があります。GitHubはそのバージョン管理に優れたツールです。
実は、HTMLとスタイルシートとJavaScriptだけしか使わないなら、必要なモノは何もありません。Webサーバをインストールしなくてもいいんです。作って、そのままファイルをWebブラウザで開けばちゃんと動きますから。
けれど、サーバの開発言語を使って、サーバと連携するような高度なことをしようとなると、自分のパソコンにWebサーバのプログラムをインストールしておく必要があります。
HTMLやJavaScriptといった言語でプログラムを書くには、専用の開発ツールがいるのか?というと、実は入いりません。これらはすべて、ただのテキストファイルです。ですから、メモ帳やノートパッドなどのテキストエディタだけで作れます。
ただし、世の中にはプログラミングのための、とても便利な機能が組み込まれた開発ツールもたくさんあります。こうしたものを使えば、テキストエディタよりぐっとプログラム作成は楽になります。