2022年5月13日 | TOE
LAMP環境とは?Webサービス開発のための環境と今後のトレンド

Webアプリケーションを動作させるためには、さまざまなソフトウェアが必要です。これらのソフトウェアをまとめて表現した言葉が「LAMP環境」です。LAMP環境が登場してから、ずいぶん時間が経ち、クラウド環境などの登場により、以前とは異なるLAMP環境も登場しています。この記事ではLAMP環境の概要と、新しいLAMP環境について詳しく解説します。
LAMP環境とは

LAMP環境とは、Webアプリケーションを動作させるために必要となるソフトウェアの組み合わせを表している言葉です。具体的には、OSの「Linux」、Webサーバーの「Apache」、データベースの「MySQL」、プログラミング言語の「PHP・Perl・Python」です。これらの単語の頭文字をつなげて「LAMP」となります。
LAMP環境を構成しているソフトウェアは、オープンソースソフトウェアとして公開されており、無料で使うことができます。オープンソースということで、世界中のエンジニアが開発に携わっており、機能追加やバグ修正、セキュリティ対策が施されております。
LAMP環境の構成要素

それではLAMP環境を構成する各要素について詳しく見ていきましょう。
【L】Linux
LinuxとはオープンソースのOS(オペレーティングシステム)のことです。サーバー用途のOSとしては、世界で最も普及しており、多くのエンジニアによって開発が進められております。
OSとしての歴史も古く、オンプレミス環境からクラウド環境まで、幅広い用途で導入されています。Linuxと一口に言っても、さまざまな企業や団体により独自の開発が行われており、ディストリビューションとしてインターネットで配布されております。例えば、RedHat社が開発した「RedHat Linux」や、RedHat LinuxのクローンOSである「CentOS」、完全にボランティアのエンジニアで開発されている「Debian」など、さまざまなディストリビューションが公開されています。
LinuxはCUI(Command Line Interface)と呼ばれるように、コマンドを使って操作するのが大きな特徴です。使いこなすためには、さまざまなコマンドの知識が必要ですが、Windowsのようなアイコンとウィンドウで操作するGUI(Graphical User Interface)を搭載しているものもあります。
LinuxはWindowsとは異なりオープンソースのOSであるため、透明性の高いOSと言えるでしょう。ソースコードも自由に改変できます。インターネットから無料でダウンロードできるため、コストパフォーマンスも非常に高いのも大きなメリットです。
【A】Apache
ApacheとはオープンソースのWebサーバーソフトウェアです。Webサーバーとは、Webサイトを公開するためのサービスソフトウェアであり、Apacheはその代表格です。
ApacheはWebサーバーとしての歴史も古く、さきほど紹介したOSのLinuxにはデフォルトでインストールされていることもあります。オープンソースであるため、世界中のエンジニアによって開発されており、Linuxだけでなく、WindowsやMacで動作するバージョンも公開されています。
後述するデータベースであるMySQLや、PHPやPerlのようなプログラミング言語をスムーズに動作させることもでき、モジュールと呼ばれる機能拡張プログラムを追加することで、Webサーバーとしての機能拡張にも柔軟に対応できます。
【M】MySQL
MySQLとはデータベースを動作するためのソフトウェアです。データベースとは大量のデータを保存して、効率的に利用できるようにするソフトです。MySQLは中でもRDBMS(リレーショナルデータベースシステム)という種類のデータベースソフトです。
単純にデータの保存と利用ができるだけでなく、ユーザーごとにアクセスできる権限を設定することも可能です。また同じデータを同時に編集しようとしたときに、矛盾が発生しないような排他処理という機能もあります。
データベースを操作するためには、PHPやPerlのようなプログラミング言語のソースコードに、SQLというデータベースを操作するための特殊な言語を記述する必要があります。
現在、MySQLはアメリカのOracle社が開発と提供をしています。オープンソースであるため、無料で利用できます。Apacheと同様に、LinuxだけでなくWindowsやMacでも利用可能です。
【P】PHP
PHPとはWebサーバー上で動作するプログラミング言語です。WordPressやEC-Cubeなどのさまざまなアプリケーションの開発に使用されています。
PHPの大きな特徴は、HTMLに組み込んで動的なWebページを構築できることです。ユーザーがWebページにアクセスしたときに、そのWebページに組み込まれているPHPのプログラムが、MySQLのようなデータベースにアクセスして、取得したデータをWebページに表示できます。
静的な部分のHTMLと動的な部分のPHPが混在することで、高い柔軟性を持ちますが、設計が複雑になりがちな点がデメリットであるという意見もあります。
このようなデメリットを解消するために、PHPで構築されたフレームワークというものがあります。フレームワークとは、プログラミング言語の標準の機能を拡張して、効率的で堅牢なソフトウェアを開発するための土台のようなものです。PHPの場合、LravelやFuelPHPなどがフレームワークの代表格です。
LAMP環境はもう古いって本当?

ここまで紹介してきたLAMP環境は、歴史も長く多くのWebアプリケーションの土台として活用されています。しかし、クラウドの台頭やビッグデータの活用、代替となるソフトウェアの登場などにより「LAMPは古い」という主張もあります。
これまでのLAMP環境が持つ基本的な仕組みはそのままに、新しいソフトウェアを組み込んだり、複数のソフトウェアと並行して動作させたりするなどのカスタマイズも進んでいます。
ここまでに紹介したLAMP環境は現在でも多くのWebアプリケーションで使われていることは事実です。しかし新しいソフトウェアで構成されている、次世代のLAMP環境が登場しているのも事実。ここからは現在、活用が進みつつある「新しいLAMP環境」について見ていきましょう。
新しいLAMP環境

それでは新しいLAMP環境について見ていきましょう。
Linuxはクラウド環境でも使われ続ける
古いLAMP環境の多くはオンプレミスで使われてきました。オンプレミスとは、特定の施設や場所にサーバーを設置して、そこでWebアプリケーションを動作させる運用のことです。
オンプレミスと比べられる環境が、現在の主流となっているクラウドです。AmazonのAWSやMicrosoftのAzure、GoogleのGoogle Cloud Platformなどは、世界中で利用されている代表的なクラウドサービスです。
LAMP環境の最初の頭文字となっているLinuxはクラウド環境でも引き続き利用されているOSです。しかしオンプレミスで動作しているLinuxとは少し異なり、クラウド環境に適応できるように最適化されています。
Linuxの仕組みや操作方法はオンプレミスでもクラウドでもそれほど変わりません。ただLinuxといっても多くの種類があるため、開発するWebアプリケーションの特性や、動作させるサーバーのハードウェアなどの環境に応じて、最適なものを選択することが一般的です。
Nginxの普及が進んでいる
Webサーバーとしては、Apacheに代わりNginx(エンジンエックス)と呼ばれるWeサーバーソフトウェアの導入例が増えています。
Apacheには、大量のアクセスを処理しきれないというデメリットがあり、そのデメリットを解決して大量のアクセスを処理するために開発されたものがNginxです。大量の軽いリクエストを処理することに向いているWebサーバーです。
しかし標準ではPHPなどのサーバーサイドの言語が動作できないというデメリットもあり、完全にApacheの代替として置き換わっているわけではありません。
ビッグデータに対応したBigQueryの台頭
AIやIoTのように非常に多くのデータを取り扱う場合、MySQLでは処理が追い付かずに期待されるパフォーマンスが実現できないことがあります。その場合、数億にも達するような大量のデータを処理できるBigQueryというデータウェアハウスが使われることがあります。
データウェアハウスとは「データの倉庫」とも言われ、BigQueryとは、Google Cloudが提供しているサービスであり、ビッグデータを高速で解析できるものです。数テラバイトから数ペタバイトものデータ量でも、数秒で処理できます。ただしBigQueryは処理したデータ量に応じて課金される有料のサービスです。
MySQLからBigQueryにデータを移行させたり、MySQLとBigQueryとを共存させて利用させたりすることも可能です。
Python・Ruby・Goなど言語の多様化
プログラミング言語もPHPだけでなく、PythonやRuby、Goなどが使われています。
Pythonとは、AIや機械学習の開発によく使われるプログラミング言語です。少ない記述量のコードでプログラムを開発することができ、Webアプリケーションの開発にも使用できます。例えば、YouTubeやInstagram、DropboxなどはPythonで開発されたWebサービスとして有名です。
Rubyとは、日本人のまつもとゆきひろ氏が開発したプログラミング言語です。Webアプリケーションの開発に使われることが多く、Rubyのフレームワークである「Ruby on Rails」は多くの開発者にも愛用されています。
Goとは、Googleの開発者によって生み出されたプログラミング言語です。ほかのプログラミング言語と比べると、非常にシンプルな機能しかありませんが、Webアプリケーションだけでなく、スマートフォンアプリの開発や、ドローンやロボットなどの組み込みシステムの開発にも使用可能です。
まとめ
LAMP環境を構成している技術と、新しいLAMP環境について解説しました。現在、インターネットで公開されているWebアプリケーションの大半はLAMP環境で動作しており、この状況はこれからも続くと思われます。代替となる新しい技術も登場していますが、基本的なLAMP環境と同様の考え方が採用されています。もし興味がありましたら、まずは自分のパソコンにLAMP環境を構築して、触れてみることから始めてみましょう。