こんにちは!ワイスケ(@waisuke12)です。
世の中には様々なWebサービスが存在します。有名なWebサービスは企業がプロジェクトを立ち上げて、数人~数十人単位で開発を行いますが、なかには一人で全て開発している猛者もいます。
本記事では「個人でWebサービスを作ってみたいけど、どんな知識が必要か分からない」といった人向けに、Webサービス開発に必要となる知識を紹介したいと思います。
フロントエンド
フロントエンドは、ユーザーに見せる部分の技術になります。ページのレイアウトであったり、画面遷移であったり、ユーザーが使いやすいWebサービスを作りこむのが、フロントエンドでの仕事になります。
フロントエンドで必要となる主な知識は以下の3つです。
- HTML
- CSS
- JavaScript
HTML
まず絶対に欠かせないのがHTMLです。HTMLはハイパー・テキスト・マークアップ・ランゲージ(Hyper Text Markup Language)の略で、Webページの構造を定義する言語です。
すべてのWebページはHTMLで構成されています。HTMLの知識がなければ、Webサービスどころか簡単なWebページすら作れません。
CSS
続いてCSSです。CSSはカスケーディング・スタイル・シート(Cascading Style Sheets)の略で、Webページのスタイルを指定するための言語です。
HTMLでWebページの構造を定義し、CSSでWebページのレイアウトを定義したり、文字を装飾したりします。要は、Webページの見た目を良くする技術です。
また、CSSフレームワークというものがあります。今や必須となっているレスポンシブルデザインも、CSSフレームワークを利用すれば、比較的容易に構成することが可能です。
CSSフレームワークの知識はWebサービスを作る上で必須ではないです。しかしフロントエンドが本職でない人が、CSSフレームワークなしで完成度の高いWebページを作成するのは正直厳しいと思います。
JavaScript
JavaScriptはプログラミング言語のひとつで、ブラウザで実行できることから、主にWebサイト上で利用されています。有名なプログラミング言語のJavaと名前は似ていますが、まったくの別物となっています。JavaScriptはよくJSと略されます。
JavaScriptはできることが多いため、サーバーサイドもこなせてしまいます。
フロントエンドの範囲としては、”Topへ戻るボタンを押したらスクロールしながら戻る”といったような、Webブラウザ上で動きを付けたりする部分が主となっています。
サーバーサイド
サーバーサイドはクライアントから要求されたデータを返したり、与えられたデータを処理したりする、ユーザーには見えない処理をする技術になります。
サーバーサイドで必要となる主な知識は以下の3つです。
- プログラミング言語
- Webフレームワーク
- データベース
プログラミング言語
単純なWebページで構成するサイトならサーバーサイドの知識は不要ですが、Webサービスでは様々な処理にプログラミング言語を使います。
プログラミング言語は数多くあるため紹介しきれないですが、以下一例です。
- PHP
- Ruby
- Python
- Java
プログラミング言語ごとに特色があり、同じ処理をするにも文法が大きく異なります。これからプログラミングを始めるのであれば、人気急上昇中で学習コストが低いPythonがオススメです。
Webフレームワーク
フレームワークとは日本語に直訳すると”枠組み”という意味です。Webフレームワークとは、各プログラミング言語でWebサービスを作るために用意された枠組みです。
具体的なWebフレームワークの一例は以下の通りです。
- PHP:CakePHP
- Ruby:Ruby on Rails
- Python:Django
- Java:PlayFramework
Webフレームワークを利用することで、ログイン処理やデータベース処理などの共通処理を、0から作り上げることなく短時間で実装することが可能となります。
データベース
データベースとは様々な情報を格納しているデータの集まりのことです。必要に応じてデータの格納や取り出し、編集などをします。
データベースも数多くあるため紹介しきれないですが、以下一例です。
- MySQL
- PostgreSQL
- MongoDB
MySQL・PostgreSQLはリレーショナルデータベース、MongoDBはNoSQLという概念のデータベースとなります。それぞれ得意な分野があります。
インフラ
インフラは実際にWebサービスを動かす環境のことです。
作成したWebサービスはどこからでもアクセスできるよう、サーバーで公開する必要があります。一口にサーバーで公開するといっても様々な考慮点があります。
- 同時アクセス数は何セッションを想定しているか(サーバーのサイジング)
- サーバー障害時にサービスの停止を許容できるか(冗長化の設計)
- バックアップをどうするか(RTO、RPO、RLOの設計)
などなど、サービスをリリースするには様々な設計が必要となります。(私の本職)
また、どの環境でWebサービスを稼働させるか選択する必要があります。以下一例です。
- 個別サーバー
- さくらVPS
- Heroku、Azure WebAppsなどのPaaS
個別サーバー>さくらVPS>PasSの順に、インフラの知識が必要なくなっていきます。PaaSではインフラ部分すべてをクラウド事業者が構成してくれるため、インフラの知識がなくともWebサービスの提供が可能となっています。
逆に、PaaS>さくらVPS>個別サーバーの順に自由度が高くなります。PaaSでは一部制約があったりしますが、個別サーバーでは何をしても自由なので、様々なカスタマイズが可能です。(その分知識は必要となります。)
まとめ
非常に浅い部分のみの紹介でしたが、それでもWebサービスを作るには多くの知識が必要であることが分かると思います。まったくの未経験であれば、プログラミングスクールなどで体系的に学習するのが効率がいいと思います。
ただし、プログラミングスクールで受講完了したとしても、スタートラインにすら立っていません。プログラミングスクールで知識を習得した上で、どんなWebサービスを作るのか構想し、着手することでWebサービス開発への第一歩となります。
以上、Webサービスを開発する上で必要となる知識でした!
コメント