PHPとウェブ開発フレームワーク

ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術  セマンティックウェブ技術 ICT技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 プログラミング 本ブログのナビ 

PHP概要とウェブ開発フレームワークについて

PHPは、サーバーサイドで動作するスクリプト言語であり、主にWebアプリケーションの開発に使用されるものとなる。PHPは、1995年にRasmus Lerdorfによって開発され、現在はオープンソースのコミュニティによって開発、保守されている。

PHPは、動的なWebページの生成やデータベースの操作、ファイルのアップロードやダウンロードなどの機能を実現するために広く使用されており、HTMLに埋め込むことができるので、Webページ内でPHPスクリプトを直接実行するという使い方もできる。また、WordPress、Joomla、Drupalなどのような人気のあるWebアプリケーションのフレームワークとしても広く使用されており、多くのオペレーティングシステムで動作することができ、かつ多くのデータベースやWebサーバーとの統合が容易であるため、Webアプリケーション開発に適している言語として認織されている。

PHPは、オープンソースの言語であり、広く使われているため、学習資料やチュートリアルが豊富にあり、また比較的簡単な文法で構成されている為、初心者でも扱いやすいとされている。ただし、Webアプリケーションの開発に必要な知識や技術、データベースの操作などについて学習する必要があるため、初めてプログラミングを学ぶ人にとっては、学習コストが高く感じる場合もある。

さらに近年では「初心者向け」というイメージはやや薄れてきて、オブジェクト指向構文、型宣言、標準ライブラリ、アプリケーションフレームワークなどの環境が強化されたことで、いわゆる大規模な開発にも十分に対応可能な地盤が整ってきている。またクラウド環境であるMicrosoft Azureを中心にPHPのサポートが強められており、以前は主にLinux環境の技術という印象のあったPHPも、マルチプラットフォームな環境の下で利用できる様になっている。

PHPでは、さらにWebアプリケーション開発を効率化するために、アプリケーションフレームワークと呼ばれるWebアプリケーション用のツールや機能を提供するソフトウェアを持つ。以下にそれらそれらの中で代表的なモノを示す。

  • Laravel: Laravelは、PHPの中でも人気の高いアプリケーションフレームワークの1つで、シンプルな構文と多彩な機能を備え、MVCアーキテクチャに基づいていたものとなる。
  • Symfony: Symfonyは、PHPのWebアプリケーションフレームワークの中でも最も古く、豊富な機能を持つものとなる。Symfonyでは、コンポーネントを組み合わせて使うことで、開発の柔軟性を高めることができる。
  • CodeIgniter: CodeIgniterは、軽量で高速、MVCアーキテクチャに基づき、シンプルな文法を持った、小規模なWebアプリケーションの開発に向いたフレームワークとなる。
  • CakePHP: CakePHPは、MVCアーキテクチャに基づいて設計されたフレームワークで、ビューとコントローラの自動生成などの機能を持つ。また、データベースの操作を簡単に行うことができるため、Webアプリケーションの開発を効率化することができる。

ここではこのPHPに関して、特にLaravelを中心に様々な実装と応用について述べている。

PHPとLaravelを使った実装

プログラミングを行うためには、それぞれの言語に合わせた開発環境を作る必要がある。ここでは、本ブログに述べているPython、Clojure、C、Java、R、LISP、Prolog、Javascript、PHPそれぞのケースでの具体的な開発環境の立ち上げについて述べている。個々の言語では、開発を容易にするためのプラットフォームが準備されており、それらを用いると容易な環境設定が可能となるが、ここでは最もシンプルなケースでのものを中心に述べている。

PHP(Hypertext Preprocessor)は、Web開発のためのスクリプト言語であり、主にサーバーサイドで動作し、HTMLコードの埋め込みやデータベースへのアクセス、フォームの処理など、動的なWebページの作成やWebアプリケーションの開発に使用されるものとなる。そのフレームワーク野中でLaravelは、PHPの最も人気のあるものとなる。

ここではLaravelを使った具体的な実装(mediawikiとの連携、cahtbot、Elasticsearchとの連携)について述べている。

Laravel(ララベル)は、Taylor Otwell氏が開発を進めているPHPのフレームワークとなる。PHPにはCakePHPやSymfony、Codeigniter、Zend Frameworkなど多くのフレームワークが存在するがLaravelは比較的後発フレームワークながら、他の多くのフレームワークを凌ぐ支持を得ているものとなる。Laravelの特徴としては学習コストの低さがある。

ここでは、Laravel Sailを用いた環境構築について述べる。Laravel SailはLaravelが公式に提供している開発環境となる。Dockerと呼ばれるツールを利用して、Laravelの開発環境を簡易に構築することができる。

今回はDockerのインストールおよび設定を行い、さらにLaravel Sailをダウンロードし動作させるまでを述べる。

前回、Laravelの環境設定まで行ったの行ったで、今回はそれらを使ってのアプリケーションの構築の概略について述べる。

今回はLaravelアプリケーションの起動から終了までの流れを追ってみる。

webアプリケーションでは、HTTPリクエストを起点として処理が実行され、最終的にHTTPレスポンスを返す。Laravelアプリケーションでもこの流れは同様で、Laravelでも、HTTPリクエストを受け取るエントリポイントを持ち、アプリケーションを実行して、HTTPレスポンスを返す構成となっている。

Laravelアプリケーションにおける、HTTPリクエストからHTTPレスポンス返却までの流れとして、(1)エントリポイント、(2)HTTPカーネル、(3)ルータ、(4)ミドルウェア、(5)コントローラーの順にサンプルコードをベースに述べる。

フレームワークはさまざまな機能を持つ数多くのクラスで構成されている。開発するコントローラーやモデルもクラスで、これらのクラスのインスタンスを管理するのがサービスコンテナとなる。

アプリケーション開発フレームワークを導入する利点の一つは、データベースやファイルの操作、セッションやクッキーの管理、ログ出力など、アプリケーションでよく使う機能がすでに用意されているため、必要な機能を簡単に利用できるおかげで開発者がビジネスロジックに専念できるところにある。

通常、クラスの機能を利用する場合、対象となるクラスのインスタンスを生成しメソッドをコールする。

    一般的なWebアプリケーションではMVCパターンを採用するケースが多々あるが、MVCパターンは、開発者によってその捉え方や解釈が異なる。このMCVパターンについての今回は述べる。また、それと同時に、近年のPHPアプリケーションで広く取り入れられているADRと呼ばれるMVCから派生したパターンについても述べ、実際のアプリケーションの例を元に、両者の違いについて述べる。

    プログラミングを行う際にファイルの入出力機能は最も基本的で必須なものとなる。またファイルの入出力機能は、手続き的な命令となるため、各言語ごとに実現の仕方も異なってくる。以下に様々な言語でのファイル入出力の具体的な実装について述べる。

    プログラミング言語の中でも基本機能は、”プログラミング言語の歴史“でも述べた「構造化言語」の3つの機能である(1)順次進行、(2)条件分岐、(3)繰り返しの中の一つの要素となる。ここではこの内繰り返しと分岐に対して様々な言語での実装を示す。

    データベース技術とは、データを効率的に管理・保存・取得・処理するための技術のことを指し、情報システムやアプリケーションにおけるデータの永続化や操作を支援し、データの正確性、一貫性、可用性、安全性を確保することを目的としたものとなる。

    以下にこれらのデータベースを実際に扱うための各種言語による実装について述べる。

    ここでは”サーバー技術“で述べているサーバーを各種プログラミング言語で活用する事例について述べる。ここでのサーバー技術とは、ネットワーク上でクライアントからのリクエストを受け取り、要求された処理を実行してレスポンスを返すサーバーシステムの設計・構築・運用などに関する技術のことを指す。

    サーバー技術は、WebアプリケーションやAPIサーバー、データベースサーバー、メールサーバーなど、さまざまなシステムやサービスで使用されており、プログラミング言語やフレームワークに応じて、サーバー技術の実装方法やベストプラクティスが異なる。

      クロスプラットフォームチャットボット開発用のオープンソースPHPフレームワークであり、PHPライブラリとして利用する。複数のメッセージングプラットフォーム向けのボット開発タスクを簡素化するように設計されており、「単純なコマンドボット」から「高度な会話型インターフェース」まで対応できる。またLaravelに対応したBotManStudioもある。

      Composerは、PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理システムとなる。

      コマンドライン上で動作し、アプリケーションが依存するライブラリなどをインストールする。 また、利用可能なパッケージを含んでいるメインリポジトリ『Packagist』で利用可能なPHPアプリケーションをインストールすることも可能であるほか、ライブラリ向けにサードパーティーのコードを容易に利用出来るオートロード情報を指定できる機能も提供されている。

      また、Laravelを含めた有名なオープンソースのPHPプロジェクトの重要な機能の一部として利用されている

      index.phpではまずリクエストを受け取り、アプリが動くなどのもろもろの設定を行い、ルータに渡すまでを行う。routes/web.phpに従って動き、middleware->controller->viewと流れて、今度は逆流れになるindex.phpでresponseを受け取り、responseを出力詳しく見ていく

      Laravel向けのDocker開発環境を整えたので共有します。本番でもDockerが使えるように色々試しているとこですので、自分が把握できた範囲の構成です。githubに置いときます。

      コメント

      1. […] デジタルトランスフォーメーションサマリー 人工知能技術サマリー ウェブ技術サマリー ICT技術サマリー PHPとウェブアプリ […]

      2. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

      3. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

      4. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

      5. […] <PHPとウェブフレームワーク> […]

      6. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

      7. […] デジタルトランスフォーメーション 人工知能技術 ウェブ技術 ICT技術   PHPとウェブ開発 […]

      8. […] Clojureと関数型プログラミング  Pythonと機械学習、PHPとウェブフレームワーク  Prologと知識情報処理   […]

      9. […] Composerは、PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理システムとなる。 […]

      10. […] 知識情報処理 Clojureと関数型プログラミング Pythonと機械学習 PHPとウェブフレームワーク Prologと知識情報処理 LISPと人工知能技術 R言語と機械学習 […]

      タイトルとURLをコピーしました