アプリ開発に必要なサーバーサイドとは?

 2021.10.18  ストレージチャンネル

アプリ開発に取り組み始めて「サーバーサイドって何?」と、つまずいている方が多いのではないでしょうか?サーバーサイドの理解はアプリ開発において必須なので、本稿で解説している内容をもとに、サーバーサイドに関する知識を深めていただければと思います。

アプリケーションの仕組み

スマートフォン向けに開発されたアプリケーションは、インターネット上で利用できるWebアプリケーションは「サーバー」と「クライアント」という関係で成り立っています。クライアントとはアプリケーションを利用するスマートフォンやパソコンのことです。これらの端末から、アプリケーションを通じて操作した内容はサーバーに送信され、サーバーからデータやサービスが提供されます。

たとえばスマートフォン向けのゲームアプリで操作した内容は、サーバーに送信され、操作に応じて適切なデータが返されたり、サービスが提供されたりします。これはWebアプリケーションにおいても同じです。オンラインストレージサービスを利用しているパソコンで、特定のファイルを開く際にそのファイルが正しく開かれるのは、クライアントから送信された要求をサーバーが受け取り、データベースの中から適切なファイルをデータとして返しているからです。

このように、数々のアプリケーションは「サーバー」と「クライアント」という関係で成り立ち、その仕組みを構築しています。

Azure NetApp Files(ANF)
Azure NetApp Files:パワフルなエンタープライズファイル共有

サーバーサイドとは?

アプリケーションの仕組みについて理解ができたら、サーバーサイドを理解するのは簡単です。サーバーサイドとは「サーバー上で動作するプログラム」を指します。反対に、クライアント上で動作するプログラムをアプリケーションサイドと呼びます。

スマートフォン向けアプリケーションも、Webアプリケーションも、基本はサーバーサイドとクライアントサイド、2つのプログラムによって動作しているのです。もっと噛み砕いて説明すると、サーバーサイドはアプリケーションを利用しているユーザーからは見えない部分のプログラムを動かしており、クライアントサイドはUI(User Interface)など、アプリケーションと利用しているユーザーの目に見えるプログラムを動かしています。

オンラインストレージサービスを利用する場合、パソコンのブラウザ上でファイルが整理されて並べられている画面はクライアントサイドで構築されています。主に使用されるプログラミング言語はJavaScriptと呼ばれる、Web画面に動きを持たせるためのプログラミング言語です。

一方、サーバーサイドはオンラインストレージサービス上でユーザーが何らかの操作をした際に、その操作に応じた画面を表示したり、ファイルをダウンロードしたりといった、ユーザーの目に見えない部分で動いているプログラムとなります。主に使用されるプログラミング言語はRuby、PHP、Javaなどアプリケーション開発が行え、汎用性の高いプログラミング言語です。

サーバーサイドとクライアントサイドの繋がり

サーバーサイド(目に見えないプログラム)とクライアントサイド(目に見えるプログラム)は通常、連携するための繋がりを持っていません。そのため、サーバーサイドとクライアントサイドが連携するためには「HTTP通信」という繋がりが必要になります(Webアプリケーションの場合)。

HTTP通信とは「Hypertext Transfer Protocol」の略称であり、クライアントサイドがサーバーサイドに要求する内容は、HTTP通信を通じてサイバーサイドに送信され、またHTTPS通信によってクライアントサイドにデータが返答されます。この点についても理解しておくと、サーバーサイドへの知識がぐっと深まります。

サーバーサイドを構築する方法

では、サーバーサイドを構築するにはどんな方法があるのでしょうか?一般的には「フルスクラッチ開発」と「BaaS(Backend as a Service)」という2つの選択肢があります。

フルスクラッチ開発

フルスクラッチ開発とは、サーバーサイドを構築するための環境をゼロから立ち上げて、その環境の上でプログラムを開発していくという方法です。サーバーサイドを構築するためにはOS環境とプログラミング言語環境が必要になります。OSとはWindowsやLinuxといった、サーバーの核になるソフトウェアです。OSが無ければサーバーは単なる箱でしかありません。

皆さんが現在使用しているパソコンの中にもOSが搭載されていますが、コンピューターというものはOSがあるからこそ機能します。さらにその上に、プログラミング言語環境を構築します。

RubyならRubyの、JavaならJavaのプログラミング言語環境が必要で、環境が整っていない状態でプログラムを開発しても、そのプログラムは動作しません。フルスクラッチ開発はサーバーサイド構築において最も基本的な方法であり、多くのアプリケーションのサーバーサイドはこの方法で構築されています。

もっとも、最近ではフルスクラッチ開発のための環境をクラウドサービスで調達するなどサーバーサイド構築のための手間は大幅に短縮しており、多くのサーバーサイドエンジニアはそうしたサービスを利用して時短に取り組んでいます。

BaaS(Backend as a Service)

BaaSとはクラウドサービスの一種であり、「バックエンドシステム」とインターネット経由でサービスとして提供するものです。このバックエンドシステムはサーバーサイドと同義だと考えてください。BaaSは今やサーバーサイドを構築するにあたり、高い生産性を手にするための選択肢の1つであり、徐々に利用ケースが増えています。

BaaSを利用することでプッシュ通知、ユーザー管理、写真などのファイル管理、SNSとの連携GPSサービスとの連携、ユーザー分析、ユーザーグループ作成などのサーバーサイドをゼロから開発する必要がなく、API(Application Program Interface)と呼ばれるアプリケーションの機能を外部から呼び出す通信規格を利用することで、上記の機能をアプリケーションに追加することができます。

サーバーサイドを構築するための方法を細かく分類すると、もっと多くの方法があります。ただし上記2つの方法が大分類になりますので、ひとまつはフルスクラッチ開発とBaaSを理解しておくとよいかと思います。

サーバーサイドの構築・運用

サーバーサイドはユーザーの目に見えない部分なので、性能を向上してもアプリケーションの評価には繋がりにくいものの、性能が低下するとユーザーはそれを敏感に察知して評価が下がります。そのため、慎重な構築・運用が必要であり、組織的にサーバーサイドの性能を保つ取り組みが必要です。

 

CTA

RECENT POST「トレンド」の最新記事


トレンド

いまさら聞けないファイルサーバーとは?【初心者向け】

トレンド

Azure ストレージが提供するサービスとAzure NetApp Files (ANF)について解説

トレンド

プログラミングに必要な環境とは?

トレンド

アプリ開発にはどんな工程があるのか?

アプリ開発に必要なサーバーサイドとは?