Web開発には、役割に合わせた様々な種類の言語があります。
その中でもバックエンド開発によく用いられる代表的な言語をまとめました。

バックエンドエンジニアは、少なからずフロントエンドの知識が必要となります。
さらにバックエンドで用いられる言語や技術は全体的に難易度が高いので、敷居が高く感じられるかもしれません。
サーバサイドまで担当する場合、さらに多くの知識を必要とします。

まずはバックエンド開発ではどのような言語が使われているのかを見てみましょう。

バックエンドとは

そもそもバックエンドとは、WebサイトやWebアプリの中でも実際にユーザの目に見えない裏側のシステム部分のことです。
一方フロントエンドは、ユーザが直接見たり操作したりする表面的な部分です。

Webはクライアントとサーバという異なる役割を持つコンピュータによって成り立つ「クライアントサーバシステム」です。
サーバはWebサイトやWebアプリが設置されており、それらのサービスを提供する役割を持つコンピュータです。
クライアントはサーバが提供するサービスを実際に利用するコンピュータです。

Webサイトを閲覧するユーザは、クライアントとなるコンピュータを通してサーバにアクセスすることでサービスを利用できます。

つまりフロントエンドとはクライアントがユーザに提供する機能であり、バックエンドとはサーバ側の処理を指します。
フロントエンドエンジニアやバックエンドエンジニアはそれぞれ、クライアントサイドエンジニアサーバサイドエンジニアとも呼ばれます(サーバの持つ役割は大きいので、バックエンドエンジニアとサーバサイドエンジニアを分ける場合も多いです)。

ここでは、サーバサイドで処理される言語やデータベースを操作する言語について見ていきます。

今すぐWeb業界で活躍したいなら、エンジニアの無料相談を受けてみませんか?
開発現場が求めるレベルのプログラミングスキルを身につけ、就活に強いポートフォリオを作成しましょう!
エンジニア発オンラインスクール【RUNTEQ】

バックエンド言語の役割と特徴

バックエンド開発を学ぶためには、まずはフロントエンド開発に使われる言語の役割を知っておく必要があります。

  • HTMLでWebコンテンツを構造化し、骨格(Frame)を作る
  • CSSでWebコンテンツを飾り付け、外観(Appearance)を整える
  • JavaScriptでWebコンテンツに動きをつけ、筋肉(Muscle)を与える

バックエンド言語やデータベースの役割は以下のようになっています。

  • バックエンド言語はWebコンテンツをより機能的にする、脳(Brain)の役割をする
  • データベースはWebコンテンツが持つデータを保持し、記憶(Memory)の役割をする

これらバックエンドの技術を身につけることで、より機能的なWebコンテンツをつくることができるようになります。
バックエンド言語はサーバで処理されるため、学習の際にもサーバの用意が必要となります。
実際には、自身のクライアントコンピュータに仮想的にサーバ環境をつくることで動作を確認します。

また、データベースはあらゆるデータを後々使いやすいように整理して管理するものです。
データベースを扱うには、DBMS(Database Management System)という管理システムと、それを操作するデータベース言語(SQL)が必要となります。

Web開発に特化した言語「PHP」

正式名称: HyperText Preprocessor (旧:Personal Home Page)
難易度 : ☆☆★★★

PHPは以前からWeb開発に用いられてきた言語です。
Web開発に特化しており、今でも最も人気のある言語のひとつとなっています。

世界のすべてのWebサイトのうち40%がWordPressというCMSを利用していると言われていますが、このWordPressでもPHPを採用しています。
他にもFacebookやWikipedia、SlackといったサービスもPHPで実装されています。

一方で、PHPが苦手としていることもあります。
Webに特化した言語であるがゆえに、スマートフォンアプリやデスクトップアプリの開発にはあまり向いていません
絶対にできないというわけではありませんが、そういったものに限定して作りたい場合は他に向いている言語があるのでそちらを利用することが多いです。
また、機械学習やAIといった分野も得意とはしていません。

Web開発でよく使われる構成として、LAMP(もしくはLEMP)というものがあります。
これはLinuxApache(LEMPの場合はnginx)、MariaDB(MySQL)、PHPの略です。
このような言葉があるくらいPHPを使った開発が人気であることがわかりますね。
バックエンド開発を学びたい方は、まずLAMPの知識を身につけることをおすすめします。

またPHPはフレームワークも充実しており、CakePHPZendFrameworkSlimなどがあります。
そんな中でも近年急激に人気が上昇しているのはLaravelです。

実際のコード

バックエンドの開発環境を整えるのは、初学者の方にとっては難しいかと思います。

PHPの開発環境を整えるには、XAMPPというパッケージを使うのがオススメです。
XAMPP(cross-platform Apache, MariaDB(MySQL), PHP, Perl)はPHP本体のほかに、データベースやサーバがすべて用意されており、複雑な環境構築をすべて担ってくれます。
また、Macを使っている方はMAMPという選択肢もあります。
PHPのダウンロードはこちら
XAMPPのダウンロードはこちら
MAMPのダウンロードはこちら

また最近はLaragonも開発環境として人気があり、私もこちらを採用しています。
しかし日本語の情報量の多さから、初めてPHPを触ってみたいという方にはXAMPPの方がとっつきやすいのではないかと思います。
Laragonのダウンロードはこちら

PHPはHTMLコード中に混在させることができ、<?php ... ?>で囲まれた部分がPHPのコードとして認識されます。
拡張子は「.php」です。

また、変数には最初にドルマーク($)をつけます。

<?php
    $now = date('Y/m/d');
    $name = $_POST['name'];

    echo('今日の日付は{ $now }です!');

    if( isset($name) )
    {
        echo('ようこそ{ $name }さん');
    }
?>

日本生まれの楽しい言語「Ruby」

難易度: ☆☆☆★★

Ruby日本人のまつもとゆきひろさんが開発したプログラミング言語です。
役割としては、得意不得意といった言語の特性は若干あるもののPHPとほとんど同じです。

記述量を減らすことができ自由度も高く、また初心者の方でも学びやすいのが特徴です。
Web開発だけではなく、スマホアプリやSNSの開発に強いといったメリットもあります。
日本生まれの言語のため日本語のドキュメントが充実しているのも、プログラミング未経験者の方におすすめの言語である理由です。

Rubyでつくられているサービスとして、TwitterやHulu、Wantedlyなどがあります。

しかし、比較的実行速度が遅いというデメリットもあります。
(このデメリットから、TwitterはRubyからJavaにシステムを移行しました。)
機械学習も後程紹介するPythonに比べると得意とは言えません。

またフレームワークのRuby on Railsが非常に強力で、スピード感のある開発に適しています。
他にもRubyのフレームワークはありますが、こだわりがない限りはほぼ一択。
選択肢が絞られているのは、初学者の方にとってはわかりやすくてありがたいですね。

実際のコード

RubyはMac環境であれば最初からインストールされています。
Windowsの場合はダウンロードが必要となります。
Rubyのダウンロードはこちら

Rubyの拡張子は「.rb」です。
またirbコマンドを使うことで、インタプリタ形式(対話形式)でプログラムを実行することも可能です。

print('購入する商品の個数を入力してください。\n')
num = gets.chomp
price = 200 * num
print('合計金額は#{ price }円です')

機械学習・AIの分野で活躍する言語「Python」

難易度: ☆☆☆★★

Pythonは、機械学習やデータ解析の分野で注目されている言語です。
Web開発の分野でも、データサイエンティストやデータアナリストといった、データ解析のスペシャリストが活躍しています。

PythonはWeb上のデータを収集して利用する、クローリングスクレイピングにも用いられています。
またWebアプリの開発にも向いており、YouTubeやDropbox、InstagramはPythonでつくられています。

このように応用範囲が広く様々な場面で活躍するPythonですが、そのデメリットは実行速度の遅さと日本語情報量の少なさです。
しかし、今学んで損のない言語のひとつであることには違いありません。
その活躍や最近の知名度の向上を見ても、もはやPythonは世界一人気のプログラミング言語であるといっても過言ではないでしょう。

PythonでWeb開発をする際によく用いられるフレームワークには、DjangoFlaskBottleなどがあります。
特にDjangoは様々な場面で使うことができる定番のフレームワークとなっています。

実際のコード

Pythonの環境構築にはAnacondaがオススメです。
AnacondaはPython本体とよく使われるライブラリなどをまとめたディストリビューション(パッケージ)です。
Pythonのダウンロードはこちら
Anacondaのダウンロードはこちら

また、環境構築を行わなくともクラウド上のサービスを利用することで気軽にPythonを書き始めることもできます
Google ColaboratoryはGoogleアカウントさえあれば無料でGPUなども利用でき、とりあえずPythonを触ってみたいという場合にはおすすめです。
Google Colabortoryの利用はこちら

Pythonの拡張子は「.py」です。
Ruby同様にインタラクティブシェルを用いて対話形式で実行することも可能です。
また、プログラムとその実行結果をまとめて管理できるツールである、Jupyter Notebookというものもよく使われています。
Jupyter NotebookはAnacondaを入れれば同時にインストールされます。

Pythonは非常に短いコードでの記述が可能で、数学的ライブラリも充実しています。

def calculations(a, b):
    return a+b, a-b, a*b, a/b

ans = calculations(2, 5)
print(ans)

大規模システム開発で人気の言語「Java」

難易度: ☆☆☆☆★

JavaはWebだけでなく、大規模なシステム開発やアプリケーション開発に広く使われている、高信頼性の言語です。
特にAndroidアプリの開発などを得意としています。
フロントエンドの言語であるJavaScriptとは全くの別物なので、注意しましょう。

Javaでつくられたサービスとしては、Evernoteや楽天、MINECRAFTといったものがあります。

ここまでに紹介してきたPHP、Ruby、Pythonの3つと比較しても少し特徴が異なります。
実行時にコンパイルが必要なコンパイラ言語であること、静的型付け言語であることです(コンパイラ言語や静的型付け言語について知りたい方は以下の記事をご覧ください)。
これらの特徴から、コンパイル時にエラーがわかり、型が確定しているので予想外の動作をすることが少なく安定しています。
また、処理速度も高速です。

Javaの動作の安定性には、理由があります。
通常のプログラミング言語は、プログラムのコードをネイティブコード(機械語)に翻訳し、OSにより処理します。
つまり、OSの違いにより動作が変わってしまう、ということがあります。
しかしJavaはJVM(Java仮想マシン)上で動作し、OSに依存せず安定した実行結果が得られます。

一方、習得が難しくコードの記述も冗長になるため、小規模な開発には向いていません

実際のコード

JavaにはJREとJDKがあります。
JREはJavaで作られたアプリケーションを動かすためのソフトです。
JDKはJavaでプログラムを組むためのソフトです。

Javaを使った開発を行いたい場合は、JDKが必要となります。
Java(JDK)のダウンロードはこちら

Javaの拡張子は「.java」で、コンパイル時に「.class」というクラスファイルができます。
プログラムはJavaファイルに記述しますが、実際にはこのクラスファイルを実行します。

class Calc
{
    public static void main(String args[])
    {
        int num1 = 20;
        int num2 = 50;

        System.out.printf("計算結果は%dです。\n", num1 * num2);
    }
}

データベースを操作する言語「SQL」

難易度: ☆★★★★

SQLはプログラミング言語とは少し毛色が違い、データベースを操作するための言語です。

データベースとは、構造化して整理した情報を電子的に格納するシステムのことです。
これらのデータを制御するシステムのことを、DBMS(Database Management System)といいます。
そして、SQL(エスキューエル、シークェル)はDBMSの中でもデータベースのデータを取り扱うための言語を指します。

データベースの中でも、事前に定義された項目ごとにデータを表形式でまとめたものをリレーショナルデータベースといいます。
リレーショナルデータベースを扱うシステムはRDBMSといいます。
これ以外にも、階層型データベースやネットワーク型データベース、NoSQLがあります。

基本的なWebアプリケーションではリレーショナルデータベースを利用することが多いです。

SQLはさらに、以下のような3つの言語に分類することができますが、ほとんどの場合はまとめてSQLとして扱われます。

  • データ操作言語 DML(Data Manipulation Language)
  • データ定義言語 DDL(Data Definition Language)
  • データ制御言語 DCL(Data Control Language)

下記のものは、有名なRDBMSの一例です。
どれもSQLの書き方はほぼ同じなので、ひとつをマスターすれば別のRDBMSにも応用しやすいでしょう。

  • MariaDB(MySQL)
  • PostgreSQL
  • SQLite

MariaDBのダウンロードはこちら
MySQLのダウンロードはこちら
PostgreSQLのダウンロードはこちら
SQLiteのダウンロードはこちら

実際のコード

SQLの実行にはそれぞれのデータベースに応じた導入手順を踏む必要があります。
練習用に、オンラインでSQLを実行して動作を確認できるサービス、DokoQLを紹介します。
DokoQLの利用はこちら

プログラミング言語に比べてSQLの難易度はそこまで高くなく、わかりやすいかと思います。
データベースを使わないシステムというのはほとんどありませんので、システムエンジニアにとってSQLは必須の言語と言えます。

SELECT 費目, 入金額, 出金額
FROM 家計簿
WHERE 出金額 > 1000
ORDER BY 日付

まとめ

今回はバックエンドWeb開発で使われる言語を紹介しました。
バックエンド開発ではフロントエンドの知識も必要となり、言語の難易度も全体的に高くなります。
最初は抵抗があるかもしれませんが、身につければ様々なシステムが作れるようになるので楽しいと思います。
以下今回紹介した言語のまとめです。

  • PHPはWeb開発専用の言語で、世界的にも大きなシェアを誇っている
  • Rubyは日本生まれの言語で、楽しくプログラムが書ける初心者向けの言語
  • PythonはWebシステムに機械学習やデータ解析を組み込みたい場合に強い
  • Javaは大規模開発向けの高信頼性言語で、様々な分野で広く人気がある
  • SQLはシステム開発に欠かせないデータベースを操作するための言語

初学者の方は、Ruby(Ruby on Rails) + SQLiteなどから学習を始めてみるのがオススメです。
また、XAMPPを使ったPHP + MySQLも定番の組み合わせなので、こちらでもいいかと思います。

ひとりではなかなかプログラミングの学習が続かない、未経験だから不安が多い、という方はプログラミングスクールを利用してみるのも有効です。
本物のエンジニアに学ぶことで、時間がない方でも最短でスキルを身につけることができます。
現役エンジニアのパーソナルメンターからマンツーマンで学べる

お悩みの方は、まずは無料キャリアカウンセリングにお申込みください。

関連記事

この記事のタグ