Webシステム開発の基本形は、やはり「LAMP環境」です。
もちろん、ベテランエンジニアからすると、いやいや時代の先端は「MEAN環境」だ、とか、次世代言語の登場で「LAMP環境」は消滅、または変容する、という意見もあるかもしれません。しかし、実態として「LAMP環境」で動作しているWebシステムは多くあります。また、今現在、「LAMP環境」で開発進行中の案件もたくさんあります。
さらにいうと、「MEAN環境」を含めて、多くのWebシステム開発環境が「LAMP環境」との比較で語られることが多く、「LAMP環境」が分かっていないと、概念理解にも戸惑うことになりがちです。
という訳で、今回は、Webシステム開発、初心者の方を特に意識して、「LAMP環境」について詳しく解説したいと思います。
テクフリでフリーランス案件を探してみるそもそもWebシステムとは?
LAMP環境とは、簡単に言えば「Webシステムの構成パターン」です。従って、LAMP環境について理解するためには、“Webシステムの仕組み”について知っておかなくてはなりません。
ところで、Webシステムの肝となるWebサーバがWebサーバとして動作するための“構成要素”ってなにがありますか?
真っ先に思い付くのは基本ソフト、いわゆる、“OS”ではないでしょうか? OSが入っていないサーバは、ただの鉄の箱でしかありません。OSがインストールされることで、初めてサーバはサーバとして起動することが可能となります。
次に重要なのは、ミドルウェアといわれるアプリケーション群です。サーバがサーバと言われるのは、「クライアント(パソコンやスマホ)からのサービス要求を処理するための仕組みを持っているから」ですが、OSがインストールされただけでは、サーバとしての役割を果たすことができません。なぜなら、素のOSには「クライアント(パソコンやスマホ)からのサービス要求には、こういう風に処理しなさい」という指示が入っていないのです。
では、「クライアント(パソコンやスマホ)からのサービス要求は、こういう風に処理しなさい」という指示はどうやってサーバに実装されているのか? というと、それがミドルウェアになります。WebサーバであればWebサーバ用のミドルウェアを、DBサーバならばDBサーバ用のミドルウェアをインストールしておく必要があります。
一つ勘違いして欲しくないのは、ミドルウェアは、あくまで仕組みを定義したアプリケーション群であって、Webページやデータ本体は含まれていません。つまり、Webサーバがクライアントに提供する、HTMLなどの“正味のWebページ情報”はミドルウェアに含まれません。ミドルウェアとはまた別に、用意・作成する必要がある、という訳です。
さて、長くなったので、いったんまとめると、Webサーバの構成要素は以下の通りになります。
①OS(基本ソフト):これがないと、サーバはただの箱。
②ミドルウェア: Webサーバの振舞い方を定義しているアプリケーション群。
③正味のデータ:HTMLなどの形式で作られた、ページ本体。
ここまでは大丈夫でしょうか? 大丈夫だと信じて、次のステップに進みます。
実は、上記の三つの構成要素を持ったWebサーバを立てただけでは、Webシステム開発としては不十分です。なぜならば、Webサーバだけでは、静的ページと言われる“決まったWebページをクライアントの要求通り配信すること”しかできないためです。
例えば、「買い物かご」や「ユーザーログイン」など必要に応じて画面への出力結果が異なるページ(いわゆる、動的ページ)を持った、Webシステムを作るためには、Webサーバだけでなく、DBサーバも必要になります。DBサーバがユーザーID“XXX”の人のパスワードは“1234”で、その人の買い物かごには、“ミカンが三個”入っている、という情報を管理し、必要に応じてWebサーバに“協力”することで「ログイン成功です」や「ログインできません」と表示できるWebシステムになるのです。
そして、クライアントから送られたデータ、(例えば、ユーザー名とパスワード)をどういう風に処理するのか、DBサーバからもデータを貰って、突き合わせて確認するのか、それとも、送られたデータを検証して、DBサーバに保存してもらうのか、といったロジックを作成するのにプログラミングが必要になります。
つまり、実際のWebシステムの構成要素としては以下となります。
①OS(基本ソフト):これがないと、サーバはただの箱。
②Webサーバ用のミドルウェア:Webサーバの振舞い方を定義しているアプリケーション群。
③DBサーバ用のミドルウェア:DBサーバの振舞い方を定義しているアプリケーション群。
④プログラム:クライアントの要求(送られた情報)に応じて、WebサーバとDBサーバ間で協力させて、適切なWebページをクライアントに送れるようにする。
ちなみに、WebサーバとDBサーバは別の筐体・OSである必要はありません。別の筐体にするか、一つのOS上に併存させるかは、資源管理(CPUやメモリなどの筐体性能など)の観点で決めることです。ですので、Webサーバと呼ばれている筐体が、実はDBサーバとしても機能している、ということがよくあります。
LAMP環境とは?
さて、前置きが長くなりましたが、Webシステムの構成要素がわかれば、LAMPについて、ほとんど分かったも同然です。
LAMPとは「Linux」、「Apache」、「MySQL(またはMariaDB)」、「PHP(今ではPerl、Pythonを含めた“P系言語”とも)」の頭文字ですが、それぞれ、OS、Webサーバ用のミドルウェア、DBサーバ用のミドルウェア、プログラミング言語です。
つまり、以下の通り、Webシステムの構成要素として、このあたりのソフトやプログラミング言語を使うと、ベターですよ、というモデルがLAMPという概念であり、そのモデルに従って開発されたWebシステムをLAMP環境と言います。
①OS(基本ソフト)⇒「Linux」
②Webサーバ用のミドルウェア⇒「Apache」
③DBサーバ用のミドルウェア⇒「MySQL」or「MariaDB」
④プログラム⇒「PHP、Perl、Python」
LAMP環境の構築 メリットとデメリットは?
なぜ、LAMPの普及率が高いかというと、企業からみると単純にコストが安い、という点が挙げられます。
「Linux」、「Apache」、「MySQL(MariaDB)」、「PHP、Perl、Python」はすべてオープンソースです。つまり、ライセンス料がかかりません。定められたルールの下で使っている限り、無料で使えます。さらに、オープンソースで利用者が多いというところから、扱えるエンジニアも多く、人材の確保もしやすいのです。
エンジニアサイドからみても、LAMPがある種のデファクトスタンダードになっているため、様々な現場に経験者として入っていきやすい、抜本的なスキルセットの作り直しが必要にならないなど、LAMPにはメリットが多いです。
逆にLAMPのデメリットとしては、オープンソースであるが故に、サポート体制は安心とはいえない、という点が挙げられます。もちろん、「Linux」を無料の“Ubuntu”ではなく“Red Hat Enterprise Linux”にするなど、有料でサポートを提供している会社に関与させる、といった方法はありますが、限界があります。
他のデメリットとしては、かつてはクラウドサービス側の(オープンソースではなく、クラウドベンダー製のアプリケーションを強要!?)仕様のせいで、クラウドサーバではLAMPが使えない、ということもありました。しかし、現在では業界最大手のMicrosoft Azuruや二番手のAmazon Web Service以下、多くのクラウドサービスでLAMP環境が構築できるようになっています。
まとめ:LAMP環境はWebシステム開発の基本!
クラウドサービスでもLAMP環境が組めるようになっていることをお伝えしましたが、これは、いかにLAMP環境が広く世の中に普及しているのか、わかりやすい証明だと言えるかと思います。
もちろん、LAMP以外のアプローチで開発されているWebシステムも存在するので、LAMPは絶対の存在ではありません。しかし、Webシステム開発の基本形としてLAMP関連の技術は、広く深く習得しておくべきでしょう。
テクフリでフリーランス案件を探してみる