PHP

PHPでできることを現役フリーランスエンジニアが解説します

PHP できること
これからPHPを学ぶ人
これからPHPを学ぶ人
PHPって具体的にどんなことができるんだろう? 例えばPythonならAI分野に強いことは知ってるんだけど、PHPとかRubyってどうやって使われているんだろう?
僕
今回は現役でフリーランスのPHPエンジニアをとして働いている僕が、PHPでできることをまだプログラミング学習を始めていない方にもわかりやすいように説明していきます

例えばなんですが、Pythonとかって「AI・機械学習分野」で使われているのが簡単に想像できますよね。

ただ、PHPとかRubyというプログラミング言語が実際にどこで使われているのかって、なかなか分からないですよね。

今回は、なるべくプログラミングの詳しい話はおいておいて、「PHPというプログラミング言語がどう言った使われ方をしているのか」をざっくりイメージできるように、色々な例を上げながら説明していきます。

✔︎ 関連記事

あわせて読みたい
【最短】PHP学習のロードマップを現役フリーランスエンジニアが解説してみます ✔︎ 対象の読者の方 HTML・CSSがある程度書けるようになってきた方 今回は、「PHP学習のロードマップ」ということでお...
あわせて読みたい
PHP フレームワーク
【2020年版】laravelがダントツ?PHPフレームワーク5選を現役エンジニアが比較してみる 結論 ✔︎ PHPのWEBフレームワークですが、2020年だとまだまだLaravel一択 2020年度は、日本国内ではさらにL...

スポンサードサーチ

PHPのそもそもなポイントを少しだけ解説します

少し、簡単な概要だけ先にお伝えしておくと、PHPは「なんらかのリクエストを受け取って、なんらかのレスポンスを返す仕事をしてくれます。

そして、PHPの強みとしてはWEB開発で要求される大抵のリクエストを捌くための方法(PHPの組み込み関数と言われるもの)を持ち合わせており、だからこそ広くWEB開発で使われています。

例えばですが、FaceBookをiPhoneから新規で投稿を作成する際には、実は次のような処理が走っているんですね。

✔︎ FaceBookで投稿を作成する例

「プログラミング言語・PHP」と言われると全くよく分からないのですが、上記の処理に解説をしてみると、次のようにまとめられます。

  1. スマホからFaceBookで投稿を作成し、「保存する」ボタンを押した
  2. PHPにその投稿データが渡される
  3. 今回は問題がなかったので、保存OK!
    (エラーがあれば、この段階でエラーをレスポンスとして返す)
  4. PHPが受け取ったリクエストから、データベースに保存
  5. タイムラインに表示するために、保存したリクエストをレスポンスにして返却
  6. スマホから投稿したデータが反映される

少しプロセスはわかりづらいかもしれないのですが、要するにこういうことです。

✔︎ プログラミング言語・PHPさんがやってくれること

スマホ・PC・タブレットなどから送ったあらゆるリクエストを「予めプログラミングされた手続きに従って、適切に捌いてくれている

✔︎ リクエストって?

例えばYouTubeでサムネイルを押した時に、「この動画のデータちょうだい!」と実は裏側でリクエストを送信しています。

例えば、Twitterで一番上を押してタイムラインを更新するとき、「最新のツイートのデータちょうだい!」と実は裏側でリクエストを送信しています

実は、見えないところでインターネット上全てが、「リクエストを送信して、(サーバーから)レスポンスを受け取る」という処理から成り立っています。面白くないですか?

少し脱線したのですが、さらにまとめてみると、PHPがやっていることは3つのポイントだけになります。

✔︎ PHPがやること

  1. リクエストをどうするかの判断をする
  2. データベースを使って、データの作成/読み込み/更新/削除をする
  3. 結果やデータベースにあるデータをレスポンスとして返却する

PHPがやってくれるのは、抽象度を設計レベルに高くすると、上記の3つだけしかありません。ここまで抽象化すると、とても簡単ですよね。

僕
ここまで解説をみると、おそらく勘の良い方ならわかったと思います。PHPやRubyのやっていることがわかりづらいのは、そもそも「見えないところでリクエストとレスポンスを捌いてくれていたから」だったんですね!

ここまでが基礎編になります。ここまで理解することで、ようやくPHPが実際にやっていることを解説できるようになりました!(ここまで読んでいただいて感謝です)

実例から実際にPHPができることを解説します

✔︎ PHPで開発された世界で最も有名なWEBサービスは「FaceBook」ですね。

開発された当初はPHPだったのですが、現在はコア部分のソースコードがPHPから独自で派生した言語・FWで作られているとQuoraで回答している人を見かけました。

実際には少しなんとも言えないのですが、初期のFaceBookがPHPで開発されていたのは間違い無いです。

映画「ソーシャルネットワーク」をみた方ならわかるかと思います。マークザッカーバーグ自身が、PHPで大枠を開発しています。

 

これがとても良い例なので、初期のFaceBook(thefacebook)を観察してみて、PHPを使ってできることを考察してみましょう。

PHPでできること1: ウェブサイト作成

海外サイト「First Versions – Everyhing had a first version」より画像を引用させていただきました

初期に作られたFaceBookは「thefacebook」と言って、ハーバード大学内だけで実際に運用されていました。

実際には、C++というプログラミング言語とPHPで開発されていたのですが、下記の画像で目に見えている部分のほとんどはPHPでできていると思うので、少し解説してみます。

▲登録・ログイン画面

▲About画面(よくみると、ページの一部で表示されていることがわかります)

▲プロフィール表示画面  

ここからわかる機能を分解していくと、次のようなことがPHPを利用して実現できることがわかります。

✔︎ thefacebookを見てわかるPHPでできること

  1. ユーザーログイン・登録機能
  2. 画面レイアウトの分割
  3. データベースからユーザーに紐づくデータの表示
    (ユーザーの友達、趣味、基本情報)
  4. ユーザーの友達登録機能
  5. ユーザー同士のメッセージ送信機能
  6. ユーザーの基本情報設定機能
  7. ユーザーの検索機能
  8. ユーザーの招待機能
僕
画面を僕がエンジニア目線で見ると、ざっとこの辺りの機能がありますね。非常に一般的なSNSサービスの機能が実装されています。PHPで一通りのことができることが理解できますね。

さっきの図▼を見て思い出していただきたいのですが、これらほとんどの機能は、実は「PHPとデータベースの連携」で作成されていることがわかります。

データベースのことを詳しく説明しないのですが、データベースから関連するデータを取得するためには、「データベースに対しても適切なリクエストを送信する」必要があって、これを「データベース上でクエリを発行する」と言います。

PHPから、データベース上で必要なリクエストである、「クエリ」を発行することによって、FaceBookのようなウェブページにおいて、「あるユーザに関連する友達の情報や基本ステータスを確認する」と言った高度な情報処理が可能になっています。

少し複雑度を上げて解説しましたが、結局は「リクエストとレスポンス」であることに変わりがなく、「リクエストの中身が複雑になったり、レスポンスの中身が複雑になったりする」ということで理解しておくとOKです。

ここまでが「ウェブページ上でPHPを活用する」というポイントでした。

thefacebookや今見ているこのブログも「WordPress」というPHPのプログラムで実際に動作しています。

ここまでが実は「10年以上前までのWEBのスタンダード」という話になってきます。現代だと、少しデメリットの方が目立つ開発手法になってしまっています。

✔︎ なぜここまでの方法がデメリットになりつつあるか

少し難しいのですが、上記のような初期のfacebookだと、PC・スマホブラウザ向けのアプリケーションしか作成できません。スマホアプリはまた1から作成する必要が出てきます。

理由としては、この方法で開発すると「データを表示させる部分と、PHPのロジックが表裏一体になってしまう」からです。

そのため、クロスデバイス開発が主流の最近ではサーバーをREST APIと言って、単純にリクエストとレスポンスのみを返す機能に絞って開発をするのが主流です。

PHPだと、このREST API開発も可能です。

これについても、少しだけ簡単におさらいしておきます。

PHPでできること2: REST API開発

最近のWEBにおいて、クロスプラットフォーム開発が主流だと説明しました。

どういうことか端的にまとめると下記の通りです。

✔︎ 現在のFaceBookのアプリケーション

  1. スマホ・PCなどのWEBブラウザから閲覧するFaceBook
  2. スマホのネイティブアプリケーション(Android/iOS向けFaceBookアプリ)
  3. FaceBookアカウントによる外部ログイン/アカウント情報共有

10年以上前のWEBにおいては、PCもしくはスマートフォン向けに作るだけで良かったのですが、最近だとネイティブアプリケーションを作りたい!という需要や、外部のWEBサービスからでもFaceBookのアカウント情報でログインしたい!と言った需要があります。

これらに応えるためには、FaceBook上に存在する情報を引っ張ってきてPCからウェブサイトに表示するだけでは足りなくなってしまいますね。

そのため、あらゆるデバイスからFaceBook共通のデータ情報を引っ張ってこれるように、PHPでデータベースのデータだけを返却するバックエンドサーバーを作成する現在主流のWEB開発の方法ができました。

この方法を使うことによって、あらゆるところからFaceBook上の純粋なデータだけを取得することができるようになります。

これによって、スマートフォンではそのデータを取得するだけでネイティブアプリケーションも作れるようになりました。

✔︎ PHPでREST APIを作ると何ができるの?

  1. クロスプラットフォームでの開発ができるようになる
  2. メンテナンスが簡単になる
    (バックエンドとフロントエンドで作業を分担できるようになる)
  3. 外部サービスとの連携ができるようになる

上記の通りです。

このようなREST API開発をするのは少し後になるかもしれませんが、ぜひ一度は開発にチャレンジしておきたい領域です。

基本的には、PHPオンリーではなくPHPのWEBフレームワークを利用して開発していくことになり、PHPフレームワークについてはこちらでも紹介しています。

あわせて読みたい
PHP フレームワーク
【2020年版】laravelがダントツ?PHPフレームワーク5選を現役エンジニアが比較してみる 結論 ✔︎ PHPのWEBフレームワークですが、2020年だとまだまだLaravel一択 2020年度は、日本国内ではさらにL...

スポンサードサーチ

まとめ:PHPでウェブサイト作成とAPI開発ができる

僕
少し解説が難しい部分もあり、飛び飛びになっているのですが、大きく分けると「WEBサイト」「API開発」の2つがあって、PHPだと両方できるよ。ということをお話しました。

ここまでみていただけると既にわかった方も多いかと思うのですが、PHPはバックエンドと言われるアプリケーションの裏側でリクエストを捌いてレスポンスを返す役割を果たしています。

この特徴を利用して、ウェブサイトを作成したり、バックエンドのAPIを開発するのが大きな用途になってきます。

さらに細かく実装レベルでみていくと、RubyやPHP、Javaを比較することで見えてくる違いはあるにはあるのですが、バックエンドは所詮リクエストを捌いてレスポンスを返すだけなので、ぶっちゃけ「できること」で見るとそこまで大きな差はないと思います。

これからPHPを学ぶ人
これからPHPを学ぶ人
うーん、とりあえずPHPがバックエンドとして、リクエストを捌いてレスポンスを返すことはわかった!んだけど、まだまだPHPがどう言ったことをしてくれるのか、実感が湧かないかも…
僕
それは無理もないです。おそらく、PHPでファイルの画像のアップロードができます!csvファイルを読み込むことができます!などと列挙したところで、それは結局、PHPでできることというよりも、PHPの使い方の一部を切り取っているだけなので、今回は「PHP、つまりバックエンドとは何か」ということについて多く説明させていただきました。

個別にPHPが何ができるかを列挙しても良いのですが、ただそれって、WEB系言語であれば絶対にできないといけないことを列挙することと変わりがなく…

今回は初心者の方向けにPHPとバックエンドの仕組みを噛み砕いて解説させていただいた形です。

実際のPHPの学習を進めていくうちに、「PHPが得意なこと・不得意なこと」が見えてくるようになります。この辺りは実際に手を動かさないと見えてこないので、まずはどんなプログラミング言語でもOKなので!

手を動かしつつ、どう言ったことができるのかをみていくと良いと思います。

✔︎ 関連記事

あわせて読みたい
【最短】PHP学習のロードマップを現役フリーランスエンジニアが解説してみます ✔︎ 対象の読者の方 HTML・CSSがある程度書けるようになってきた方 今回は、「PHP学習のロードマップ」ということでお...
あわせて読みたい
PHP フレームワーク
【2020年版】laravelがダントツ?PHPフレームワーク5選を現役エンジニアが比較してみる 結論 ✔︎ PHPのWEBフレームワークですが、2020年だとまだまだLaravel一択 2020年度は、日本国内ではさらにL...

 

 

ABOUT ME
クスハラ
立命館大卒('18)後、ニート。 その後、webエンジニアとして独立・開業。 留学経験あり。TOEIC960点(大学3年時) 複数のwebサービスのグロースから開発までを担当。楽しく仕事して自由に生きているので、ブロガーとしては世の中の当たり前を疑う視点を提供する記事を書きたい。 ■連絡先 shogo.kusuhara[あっと]gmail.com
同じジャンルの関連記事はこちら

コメントはこちら

メールアドレスが公開されることはありません。