お前らがPHPからはじめるべき3つの理由


いつもお世話になっております。(Qiita利用民並の感想)

先日、[PHPConference](https://phpcon.php.gr.jp/2019/)に行ってきました。
いやーPHPから離れて久しかったのですが、やっぱり楽しかったです。一種のお祭りですね。一種というか普通にお祭りですね。
その時ふと思ったのですが、やっぱりPHPは初心者にはおすすめの言語だなって思いました。
その理由をいくつか挙げてみたいと思います。
これからWebサービスを作る人とかはみるといいと思います。作らない人もみるといいと思います。

# 前提

自分語り失礼します。
なんでかと言うと、PHPの敷居の低さを理解して欲しいからです。

学生時代はとりあえずインフラエンジニアでした。
いやエンジニアじゃないですね、インフラ学生でした。（法学部所属）
サーバ立てたり、安いVPNルータ買ってコンフィグしたり。
そんな自分でもバイト先で先人の置いて行ったPHPのソースコードを見て「これは簡単だなぁ」と思い、
自分でも書いてみると結構素直に書いた通りに動いて感動した覚えがあります。
そんな感じです。

何が言いたかったかというと文系の学生でもできたんです。
この記事を興味を持って開いた皆さんにできないわけないです。
> 諸君は一騎当千の古強者だと私は信仰している（HELLSINGより）

# 目次

目次と書いてますがこれが全部です。忙しい人は目次だけ読んどいてください。
何か引っかかったらその部分だけ自分で調べてみるなりやってみるなりして下さい。
だらだら書くとよくわかんなくなるんで、3つにまとめました。これでわかりやすいでしょう。
※個人差があります。「ふざけんな！もっといいとこあるわ！！」って人はコメント書いてください。~~コメント稼ぎ乙~~

 - サーバサイド、クライアントサイドの両方できる。
 - 実行環境整えやすい、どこでも動く。
 - ピュアでも戦える、フレームワークもある。

なんかすごいいい感じになりましたね。覚えやすいです。ここはテストに出ることでしょう。解説をはじめます。席について。

# サーバサイド、クライアントサイドの両方できる。

めっちゃ下手な絵をかきました。~~これだけひどいとなくても支障なし。むしろS3の無駄~~

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216765/6f8d26ca-7f5a-f6cb-5825-b2e13115964f.png)

左側が見ての通りウェブサービスの見えている画面の側。
右側が見ての通りウェブサービスのサーバ、つまり処理をする側ですね。
誰が見てもわかりやすい。（Windowsのペイントじゃ限界ですね・・・）~~なんだこの四角は・・・~~
サーバーサイド、クライアントサイドと言っている理由はですね、PHPはそもそもサーバサイドで実行される言語です。
なんですが、HTMLの中にそのまま書くことができるので、そのまま画面も作っているような感じデコーディングできます。
つまり、両方できてお得。といった感じです。

## HTML/CSSとの親和性が高い

先ほどの左側の画面は、HTMLやCSSといったルールを利用して作っていくことが多いです。

``` html:sample.html
 <H1>Hello, World!</H1> 
```
みたいなやつですね。画面を作る人は最初にこれ勉強すると思います。H1とかタグで囲っていくというやつですね。
このHTMLの中に自然にPHPのコードを書くことができます。例えば、

``` php:sample.php
<H1><?php echo "Hello, World!" ?></H1>
```
とかくと、先ほどの例と同じ意味になります。
つまり、HTMLの中にそのままPHPのコードを埋め込むことができるので、大変直感的です。(拡張子もphpとなるのでわかりやすい)
ごくごく自然にHTMLソースの中に紛れ込ませることができます。
これはHTMLの知識の上にそのままPHPを勉強すればよくなるので、導入ハードルが低くなります。

## MySQL等のデータベースとの親和性が高い

「データを保存したいなぁ、、、せや！DBや！」と思いますよね。
そうすると、データソースが、とかアダプターだとか接続のためのごちゃごちゃを理解しなくてはいけません。
僕はデータを保存したいだけなのに・・・そんなあなたに朗報です。

``` php:sqlConnectExample.php
mysqli_connect(DBホスト名,接続ユーザ名,パスワード,DB名)
```
これだけです。非常にわかりやすいですね。これを使って、こうするだけです。めちゃくちゃわかりやすいです。

``` php:sqlConnectSample.php
$link = mysqli_connect('localhost', 'user', 'pass', 'shop'); //接続準備
$query = "INSERT INTO user (id, name) VALUES (1, 'yamada');"; // SQL準備
mysqli_query($link, $query) //実行 
```
引用：https://blog.codecamp.jp/php-mysql


# 実行環境整えやすい、どこでも動く。

簡単に実行できるというのは開発にとって本当に大切です。
どこぞのJavaなんかは実行環境を整えるだけで心が折れますからね。
また、閉鎖的な環境においては、実行環境を整えやすいというのは結構重要だったりします。

## 実行環境
ウェブサーバという意味ではApacheが有名ですよね。でも世の中にはNginxとかいうものもある。
世の中の一般的なウェブサーバはApache / Nginx。
で、その二つはPHPをサポートしている。もうこれはどこでも動くといっても過言ではないですね。
まさにWrite once, Run anywhere.違うか。

## インタプリタ型言語

世の中の言語は二つある。コンパイラ言語とインタプリタ言語だ。
と言われるように、コードを実行できる状態にするタイミングについて2つに分かれています。
Java, Cといったように、”事前に実行できる状態にしておく”ものをコンパイラ言語、
PHP, Javascriptといったように、”実行する都度実行する”ものをインタプリタ言語といいます。

この説明でわかるように、コンパイラ言語は事前に準備しておくので、実行するまでに時間がかかります。（実行してしまえば早いのですが。）
逆にコンパイラ言語は都度都度で実行されるので、書いたらすぐに動かせてすぐに反応ももらえる。
これが手軽さにつながって魅力のうちの一つかなと思います。

# ピュアでも戦える、フレームワークもある。

私は一番最初に見たPHPのソースコードがピュアなPHPでした。
つまりピュアなPHPだったということです。

## ピュアPHP
PHPはテンプレートエンジンと呼ばれているぐらい、部品化することに長けています。
画面構成という意味では、ヘッダーとかフッターとかサイドバーとか部品化して呼び出してーといったことが簡単にできます。
機能単位という意味では、ログイン処理、だとかDB接続処理だとかをまとめてユーティリティみたいにできます。
（ほかの言語でも勿論できるんですが、それがよりやりやすい、といった印象です。）
なので、フレームワークを使わなくてもある程度自分の力だけで一通り作ることができると思います。

## フレームワークPHP
そうはいっても規模が大きくなってきたり、一種の正解を知りたくなることがあるかなと思います。
そんな時にもPHPにはいろいろな選択肢を与えてくれます。CakePHP, FuelPHPとかとかあります。
その中でも最近はLaravelがよかったです。ちょっと触ってみましたが、結構しっかりしています。DBとの連携もいい感じ。

# 最後に、という名の統括

なんか煮てよし、焼いてよしみたいな感じになりましたが、本当にお得な言語なんです。
始めやすいし、書いてて素直で心地良いし、いろんなことを教えてくれる。
だから、みんなやろう。PHPはいいぞ。