昨今、SNSやショッピングサイトなどのインターネットサービスは、私たちの生活に欠かせないものになりました。
そういったWebサービスの開発にはプログラミング言語が深くかかわっており、どの言語を使用して開発を行うかが重要です。
本記事では、Webサービスの開発にあたってのプログラミング言語の種類と、目的別の用途について紹介していきます。
目次
1.Webサービスの基礎
Webサービスとは
Webサービスとは「インターネット上で提供されているサービス全般」を指します。私たち利用者(クライアント)がWebブラウザを介して、サービス提供者(サーバ)の情報へアクセスして利用するシステムです。
以下のようなものが具体例になります。
SNS(X、Instagram、LINEなど)
メールシステム(Gmail、Outlook、Y!mailなど)
ショッピングサイト(Amazon、楽天など)
予約システム(宿泊施設やイベントの予約など)
Web会議システム(Zoom、Google Meetなど)
これらは「インターネットの接続」と「Webブラウザ」があれば、基本的に使用できるのも特徴です。
Web開発言語とは
Web開発言語とは「Webサービス(またはWebシステム)を開発する際に使用されるプログラミング言語」のことです。
プログラミング言語(Web開発言語)とはパソコンに対して動作や処理などを指示する「人工的に構成された言語体系」を指します。
なぜこのようなものが必要になったかというと、Web上のシステムを動かすパソコンなどの機器は「人間の言葉で動作や処理をすることができないから」になります。そのため、パソコンなどの機器も理解できるプログラミング言語が生まれたのです。
プログラミング言語は、Web上のシステム以外にも使われています。たとえば以下のようなものが具体例です。
AI(人工知能)
スマートフォン、タブレット向けアプリケーション
ゲーム
企業内の業務システム
分野や用途によって使用される言語が変わるため、開発の際にはしっかりと調査が必要です。
Webシステム開発で欠かせないフレームワーク
Webシステムの開発における重要な要素に「フレームワーク」があります。
フレームワークとは、英語で枠組みや骨組みをあらわす言葉です。Webシステムにおいては開発のベースとなる基本的な機能を持ったプログラムになります。プログラミング言語とは別物で、すでに構成されたプログラムです。
フレームワークをベースプログラムとして使用することで、ゼロからの開発に比べ、工数やコストの削減につながり、効率よく開発できます。
クライアントサーバシステム
前述の通り、Webサービスは利用者(クライアント)がサービス提供者(サーバ)の情報を利用します。このクライアントとサーバで分かれているシステムが「クライアントサーバシステム」です。
クライアントサーバシステムにおいては、それぞれの役割と使用されるプログラミング言語もクライアントとサーバで異なります。
クライアントサイド(フロントエンド)
クライアントサイドは、利用者が操作するWebブラウザ上(Google ChromeやMicrosoft Edgeなど)で表示される画面を指します。サーバーへリクエストを送り、その結果を表示することが目的です。
具体例をWebブラウザ上での検索で考えてみましょう。
Webブラウザ上での検索の流れを簡単に説明すると以下の通りです。
検索ボックスの入力
検索ボタンをクリック
検索キーワードの情報をサーバに送信
キーワードをもとにサーバ上で検索処理
検索結果をクライアントに返信
返信された検索結果を画面に表示
上記の1、2、3、6がクライアントサイドの役割になります。
クライアントサイドで使用されるプログラミング言語は、画面操作を処理する「JavaScript、TypeScript」などです。また、プログラミング言語ではありませんが、画面の構成では「HTML」、画面の装飾は「CSS」と呼ばれる言語を用います。
PCやスマートフォンを使う人が目にする部分のため、Webサービスにおける正面や入口などの意味を込めて「フロントエンド」とも呼ばれます。
サーバサイド(バックエンド)
サーバサイドは、クライアントからのリクエストに対処する、サービス提供者側にあるシステムを指します。リクエストを受け取り、その情報に沿った処理を行って、結果をクライアントに返信します。
具体的には、先述したWebブラウザ上での検索の流れにおける4と5がサーバサイドの役割です。
使用されるプログラミング言語は以下の通りです。
Java
Ruby
Python
PHP
利用者が操作したり見たりしないため、Webサービスにおける裏方や裏側などの意味を込めて「バックエンド」とも呼ばれます。
2.Web開発:クライアントサイド(フロントエンド)
ここからはWebシステムの開発のクライアントサイドをテーマに解説します。
クライアントサイドの開発は以下のような流れです。
画面の基本設計
ページごとの表示内容や操作内容、それによって発生する画面遷移の設計
共通部品の定義
ヘッダーやフッターなど、複数の画面で使用される要素を定義することによる工数・コスト削減
ユーザー操作へのアクションとレスポンスの定義
ユーザーの操作(アクション)に対する応答(レスポンス)を定義
マークアップ実装
HTMLやCSSといったマークアップ言語を使用して各ページの画面を実装
アクションとレスポンスの実装
JavaScriptやTypeScriptを用いて、画面操作での動きや処理を実装
テスト
実際の環境(Webブラウザ上)で配置や動作の問題がないか確認
上記の4と5で使用される、クライアントサイドで使用される開発言語について紹介します。
HTML・CSS
HTMLとCSSはWebページの構築に必要な言語で、Webページ作成の基本です。
HTMLは「Hyper Text Markup Language」のそれぞれの頭文字を取ったもので「Webページの文章やデータの構造を表すためのマークアップ言語」です。
マークアップ言語とは、文章やデータをタグでマークすることで、文書構造をテキストデータとして定義できます。
見出しや段落、箇条書きなどのタグでテキストを囲ってWebページ上の文書構造を表現する機能、画像やリンクなどをページに埋め込む機能を持ちます。
普段私たちが利用しているほぼすべてのWebページはHTMLが使用されているため、クライアントサイド開発にはHTMLが必須です。マークアップ言語にはXMLやXHTMLなどもありますが、一般的ではありません。
CSSは「Cascading Style Sheets」のそれぞれの頭文字を取ったもので「文書やデータを装飾するためのスタイルシート言語」です。
スタイルシート言語とは、マークアップ言語でマークされた文章やデータの見た目を整える役割があります。具体的には、HTMLで記述した要素のフォントや色、サイズ、配置などを設定するために使われます。HTMLにもフォントや色などを設定する機能はありますが、各ページに記述する必要があるため、基本的には一括で定義可能なCSSを使用します。
スタイルシート言語にはSASSやLESSなどがありますが、HTMLとの組み合わせではCSSを使用するのが一般的です。
HTMLやCSSを使用する際は、Webブラウザの種類とバージョンに注意してください。
Webブラウザ(Google Chrome、Microsoft Edge、Safariなど)の種類や使用しているバージョンによっては、最新のHTMLやCSSでは正しく表示されない場合があります。そのため、実際の業務では、ブラウザの種類やバージョンを指定して開発を行います。
JavaScript
JavaScriptは「Webページに動きを加えるためのプログラミング言語」です。
具体的にはポップアップやモーダルのウィンドウ、フォーカスやクリックの際のハイライトなどがあげられます。
JavaScriptはWebブラウザで実行が可能なため、ほかのプログラミング言語と違い、環境構築の手間が少ないのも特徴です。
JavaScriptについて理解を深めるため、プロのエンジニアが開発において実際に使っているライブラリ(頻繁に使用する機能を使いやすくまとめたもの)やフレームワークなどの一部を紹介します。
・React
ReactはMeta Platforms社(旧Facebook社)が開発した「Webページ上にUIパーツを構築するために便利なライブラリ」です。コンポーネントベースの設計が特徴で、大規模開発や高い保守性を実現しやすい点が魅力です。仮想DOMによる高速レンダリングも強みです。
・Vue
Vueは「Webページ上のUIパーツなどを構築に活用するフレームワーク」です。
軽量かつ柔軟な設計が特徴で、初心者から熟練者まで幅広い層の開発者に支持されています。学習コストが低く、公式ドキュメントも充実しているため、短期間でモダンなWebアプリケーションを開発しやすい点が魅力です。
・Next.js
Next.jsは「サーバ機能を持ち、より高度なUIの構築を行えるフレームワーク」になります。サーバ機能を持っているため、単体でWebシステムを動作させることも可能です。
・Node.js
Node.jsは「サーバサイドでJavaScriptを動作させるための実行環境」です。汎用性が高く、Webシステムのみでなくアプリ開発でも使用されています。
TypeScript
TypeScriptは「JavaScriptの上位互換として開発されたプログラミング言語」です。
JavaScriptに変数の静的型付けやコンパイルの機能を追加して、保守性や再利用性を高めた言語になります。
静的型付けとは、変数データの種類(文字、数字、リストなど)をあらかじめ指定できる機能です。
コンパイルとは、プログラムをあらかじめコンピュータが実行しやすい形式に変換する機能になります。
これらの機能により、ミスやエラーを発見しやすく保守性の向上が期待できるため、規模の大きいシステムにおいて活用されています。
関連記事
JavaScriptとは?初心者にもわかりやすく何ができるかや歴史、基本的な文法を解説
TypeScriptとは?特徴やJavaScriptとの違い入門方法、将来性をわかりやすく解説
3.Web開発:サーバサイド(バックエンド)
次に紹介するのはサーバサイドのWeb開発についてです。
この開発は、一般的な開発の流れと同じく、以下のように進みます。
企画
どのような機能を持ったWebシステムが必要かの情報整理
設計
各画面上の操作でどのような処理を行うかなど機能の設計
開発
プログラミング言語を用いて、プログラムの構築
テスト
機能や画面ごとの動作に問題がないかを確認し、問題が発覚したら修正
リリース
問題がないことを確認したら顧客に納品
Webシステムのサーバサイドでよく利用される言語について紹介していきます。
Java
Javaは「マルチプラットフォーム対応のオブジェクト指向プログラミング言語」です。
Java仮想マシン(JVM)上というOSなどの環境にほぼ依存しない仮想環境で動作するため、実行環境に左右されにくい汎用性の高さと、コンパイルして実行するため、実行速度も速くなりやすいという特徴があります。
Webシステム以外にもゲームやスマホアプリ、工場などの組み込みシステムなどと幅広く活用されている言語です。X(旧Twitter)やGoogle、ビッグデータ処理にも使用され、大規模なシステムの開発にも利用されています。
汎用性や自由度が高い反面、設計や構文が複雑になることも多く学習に時間を要するのが欠点です。
Javaのフレームワークについても少し触れていきましょう。
・Spring
Springは「大規模な開発向けのフレームワーク」です。専用のテストプログラムや処理の分割管理などにより高い保守性や拡張性を持つため、Web開発における問題解決に向いています。
・Play
Playは「軽量で高速なシステム開発向けのフレームワーク」です。CPUやメモリの使用量削減が期待でき、学習もしやすいフレームワークになります。
Ruby
Rubyは、まつもとゆきひろ氏が開発した「日本発のオブジェクト指向プログラミング言語」です。
ソースコードの記述量が少なく、可読性の高いシンプルな文法が特徴です。「Ruby on Rails」というフレームワークを使用することで再利用しやすく、効率的でコストの低い開発ができます。
Shopifyやクラウドワークスといった日本のサービスは、Rubyで開発されました。
ただ、大規模の開発や処理速度の速さが求められる開発にはあまり使用されません。
・Ruby on Rails
Ruby on Railsは「Webシステム開発向けに用意されたフレームワーク」です。他のプログラミング言語との組み合わせにより、API開発にも利用できます。
Python
Pythonは「シンプルな構文のオブジェクト指向プログラミング言語」です。可読性が高く、AIや機械学習などのデータ処理に使用されています。
また、Javaのようにマルチプラットフォーム対応やコンパイルしての実行ができるライブラリやフレームワークがあるのも特徴です。
Pythonは「TensorFlow」ライブラリや「PyTorch」フレームワークなどを活用したAI開発(ChatGPTなど)や「Django」を用いたシンプルなWeb開発(InstagramやPinterestなど)が主です。
可読性が高い分、ソースコードの制約の多さ・自由度の低さがデメリットとして挙げられます。
・TensorFlow
TensorFlowは「計算処理やニューラルネットワーク関数のライブラリ」です。深層学習(ディープラーニング)を用いた開発に使用されます。
・PyTorch
PyTorchは「AI技術やビッグデータ開発向けのフレームワーク」です。機械学習や深層学習を用いた開発に使用されます。
・Django
Djangoは「Web開発向けのフレームワーク」です。これによりPythonのコード量の少なさを生かしたWeb開発が可能になりました。
PHP
PHPは「動的なWebシステム開発向けのプログラミング言語」です。
データベースとの連携が強く、HTMLの中にコードを入れ込めるなどWebに特化した特徴を持ちます。
WordPressやEC-CUBEなどのブログ作成やECサイト、問い合わせフォームで活用されています。
そのかわり、Web開発以外への活用が困難であり、HTMLにも記載可能などの自由度が高すぎるため、書き方次第ではセキュリティリスクが高まりやすい点に注意が必要です。
PHPにはCakePHPやSymfony、CodeIgniterなど数多くのフレームワークがありますが、近年特に注目されているのが「Laravel」です。
・Laravel
Laravelは「扱いやすさを重視したWeb開発向けのフレームワーク」です。他のフレームワークに比べ、使いやすさと汎用性が高いため注目されています。
関連記事
Rubyプログラミング入門|将来性やサンプルコード付きで基本文法を紹介!
Pythonとは?コードの具体例など人気プログラミング言語を初心者にわかりやすく解説
4.まとめ
ここまでWeb開発とプログラミング言語について解説してきました。可読性やセキュリティなども大切ですが、Web開発においてプログラミング言語を選ぶ際の基準は以下の通りです。
システムの規模や性質
「大規模な企業向けシステムの開発ならセキュリティ性が安心なJava」「小規模なシステムやベンチャー向け開発なら開発速度を重視したRuby、PHP」「AIを活用した開発ならPython」などシステムによって、適しているプログラミング言語があります。
スキルと経験
開発はチームで行うのが基本です。そのため、メンバーがすでに使用したことのあるプログラミング言語やフレームワークを使用することで工数や学習のコスト削減が期待できます。
言語やフレームワークの参考資料と用途
言語やフレームワークの学習や開発において参考資料が少ないことはよくあります。また、同じ言語のフレームワークでもWeb開発用とスマホアプリ開発用などと用途が大きく違う場合もあるため、注意が必要です。
上記の要素を考慮して、開発したいシステムに最適なプログラミング言語を選びましょう。
本記事が皆様にとって少しでもお役に立てますと幸いです。