プログラミングにはたくさんの言語があります。必須と言われるHTMLやCSS、JavaScript。そしてC言語やPHP、Ruby、Python。これからはRubyが良いらしいなどと聞くと、何を学んだらいいのか、迷ってしまいますよね。
私もとても迷いました。しかし、何をしたいか・今後プログラミングにどう関わっていくかで学ぶべきものは変わってきます。
私は、場所を選ばず働きたかったこともあり、フリーランスとして案件の多いものはなんだろうと相談した結果、PHPがいいのではないか?とアドバイスをいただきました。
なんで、PHPかって? 在宅フリーランスで一番案件の多いWordPressがPHPを使用しているからです。
そこで、今回は前回の「いちばんやさしいWordPressの教本」に引き続き、「いちばんやさしいPHPの教本」(以下、教本)を使用して学習した感想をシェアできたらと思います。
いちばんやさしい教本シリーズを使ってみよう
この教本のコンセプトは、
これから新しいことを始める人に向けた「絶対に挫折しない」入門書
引用:いちばんやさしいPHPの教本
ということです。
PHPをはじめ、Web業界はどんどん新しくなっています。スマホやパソコンも、気づけばいつも”アップデート”です。
PHPは開発から20年以上がたち、常に新しいフレームワークも登場しているようです。どんどん、新しいことは吸収していかなければなりませんが、基礎を疎かにしたら、新しいことも吸収することができません(・・;)
基礎をしっかり身に付ければ、今後新しい技術が出てきても、容易に習得できるでしょう。
引用:いちばんやさしいPHPの教本
ということで、「いちばんやさしいPHPの教本」を使って学習してみましょう!
PHPを記述するための準備
まずは簡単に、PHPとHTMLの大きな違いについてみてみましょう。
HTMLは各ページが必要でPHPは情報をもとに呼び出しをしてくれて、HTMLのようなページを自動的に作成してくれるということ。
例えば50個の商品登録をしたい時にHTMLだと商品数分の50ページ作成する必要があります。しかし、PHPであればベースを作ってしまえばあとはそこに登録する50個の商品データを登録するだけで良いということです。
PHPを記述するためには、テキストエディタが必要です。教本では、「Brackets」のインストールの仕方が掲載されています。
私は「Atom」というテキストエディタを使用しています。
「Atom」のインストール方法は、こちらの記事をご覧ください。
PHPを記述するためには、もう一つ大事なものがあります。
それは、データベースを持つためのサーバーです。
HTMLはエディタがあれば記述できますが、PHPはサーバーがなければ動きません。そこで、パソコン上にサーバーを設置する必要があります。
教本には、無料で使える「MAMP」の設置方法も登録画面付きで掲載されているので、やり方がわからない人でも書いてある通りに進めていけばサーバーのインストールがあっという間にできます!
プログラムの作成の前に、エラー表示の設定やPHPのバージョンの設定も忘れずにしておきましょう!
この辺りもしっかりと教本に記載されていますので、その通りにやれば大丈夫です!
教本を参考にプログラムを作ってみよう!
Chapter2では、プログラム作成を通して学習していきます。
PHPでプログラムを作る時に必要なこと。それは、どんな機能を持ったプログラムを作成するのかということ。
この教本では、”料理レシピアプリ” を題材に学習を進めていきます。
”料理レシピアプリ” を作成する時に、必要な機能といえば・・・
・レシピの入力(Create)
・レシピの一覧表示(Read)
・レシピの詳細情報の表示(Read)
・レシピの変更(Update)
・レシピの削除(Delete)
そして、このレシピの情報を保存しておくのがデータベースです。
それでは、教本に従い作成を進めていきましょう!そして、PHPを少しずつ習得していきましょう!!
まずは、入力するためのフォームの作成です。HTMLを使用し、見た目の部分を作っていきます。
そして、入力フォームに入れた内容をPHPを使用して「命令文」を作り出力します。
PHPは書き始めと書き終わりに、ここからここまでがPHPだよ〜とお知らせする記述 <?php ~ ?> が必ず必要です。
PHPの基本的な書き方は
<?php →開始タグ
print_r($_POST); →命令文 区切りのセミコロン(忘れやすいので注意!)
?> →終了タグ
そして、PHPに大切なものは、「関数」「引数」「変数」です。
関数:定められた処理を実行するもの
引数:何を処理するのか?どんな風に処理するのか?を記述する
変数:数字や文字をいれる箱のようなもの ($名前)で表す
Lessonではひとつずつ丁寧に書き方が明記されているので、まずはLesson通りに進めていきましょう!
入力フォーム(HTML)に入力した値をPHPが受け取って表示用のHTMLに生成されます。
入力フォームの項目によって、HTMLやPHPの書き方は様々です。
セレクトメニューやラジオボタン、数字専用のフォーム、テキスト用のフォームなど、いろんな書き方がしっかり学べます。ここで使用するのは、” if ~ else ” の条件分岐です。
初めは、PHPの仕組みを理解するところからのスタートです。この辺りでは、まだまだわからなくて当たり前です。
出来上がった入力フォームからテキストデータを受け取って出力するPHPを通して、PHPの基本的な書き方をみていきます。
HTMLに直接自分で記述している時と違って、PHPを通して入力した値を表示するためには、リスクを理解していくことも大切です。
ここで、役立つ関数が「htmlspecialchars関数」、そして文字コード指定。
これを利用することで、悪意のあるJavaScriptの実行などを防げます。これは、Lesson20に詳しく書いてあります。
chapter2 を進めていくとこのようなレシピの入力フォームが完成します。
Chapter2では、このフォームに入力した内容を、PHPの “echo” や “print” を使って表示していきます。
データベースを使おう!
Chapter3では、情報を保存するためのデータベースを作成していきます。
データベースがあることによって、そこにデータを保管して複数の人がアクセスしたり、追加・修正したりすることができます。
教本では、「MySQL」という無料で公開されているシステムを利用していきます。
そして、その「MySQL」の管理ツールが「phpMyAdmin」です。
「MAMP」のコントロールパネルから「phpMyAdmin」を簡単に起動できます。
このあたりの「MAMP」や「phpMyAdmin」の設定の仕方も教本に写真付きでしっかり掲載されているので、ご安心ください。
最初の設定が終わったら、早速データベースを作っていきます。
最初に、「名前」と「照合順序」を決めます。名前は難しく考えず、とにかくわかりやすく。アプリの名前が一番わかりやすいです。
データベースの箱を作ったら、次はテーブルの設計です。
テーブルって?て思いますよね。テーブルは、表のようなイメージです。テーブルには、「カラム」という列と「レコード」という行からなっています。
レシピをもとにテーブルを考えてみると・・・
「カラム」に入るのは、料理名。カレーライスやハンバーグなど。
「レコード」に入るのは、項目。作り方や、予算、材料など。
テーブルの作成は、最初が肝心です。後からの追加や変更もできますが、最初に把握して作成しておくことで、開発工程がスムーズにいきます。
テーブル名やカラム名は英数字での入力になります。わかりやすくつけることが鉄則です!
カラムごとに型を決めていきます。数字(長さも関係あり)、文字列、日時など選択していきます。
“オートインクリメント” を設定すると、自動で1から順番に数字が割り振られるので、会員IDやレシピIDなど番号を付与しておくことで後々の管理が楽になるので、ぜひ利用しましょう!
“プライマリーキー(主キー)” の設定も忘れずに。これを設定することによって重複した値を持つことを避けることができます。安全管理に必須です。
「phpMyAdmin」の中でデータを操作する方法や、SQL文を使用してデータベースに命令を出す方法も学んでいきましょう。
データベースの作成の仕方・操作方法は、Chapter3に写真付きで載っているので参考にしながら、どんどん進めていきましょう。
データベースとプログラムを組み合わせよう
Chapter2では、入力した内容を確認画面に直接表示していました。Chapter3では、情報を保存するためのデータベースを作成しました。
Chapter4では、PHPからデータベースに接続して、情報を保存したり表示したりできるようにしていきます。
教本では、データベースへの接続方法に「PDO」(PHP Data Object) という方法を利用しています。
「PDO」を使用するためには、データベース名、ホスト名、ユーザー名、パスワードが必要です。Chapter3で作成したデータベースの情報を利用しましょう。
プログラムの間違いを探すために必要なのが、エラーチェックの “try ~ catch”。”try” で通常動作をしてもらって、”catch” で例外が発生した場合の処理を記述します。
SQL文をPDOライブラリを使って実行していきます。
1)SQL文の準備 → $sql = “SELECT * FROM テーブル名”;
2)SQL文の実行 → $stmt = $dbh->query($sql);
3)SQL文の結果の取り出し → $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
この流れが、お作法です。
まずは、レシピを登録しなければ始まらないですよね!登録に使えるのは「INSERT」です。
データベースにレシピを登録する時は、値が毎回違うので”?”を使ったプレースホルダを利用します。
レシピをたくさん登録したら一覧表示を見たいですよね。一覧表示に使う処理が “foreach” です。
レシピの詳細ページを作成するには、データベースで作成したIDを利用してURLでPHPファイルに受け渡します。
“http://localhost/フォルダ名/ファイル名.php?id=レシピID“
このようにIDで詳細ページを表示します。
IDは必ずしも自分でURLに挿入できるわけではありません。そこで、プレースホルダの設定が必要となります。”?”があることで、知りたいレシピに辿り着けます。
詳細ページを見ることができるようになったら、次は内容の削除と編集です。一度登録した内容を削除したり、変更したりしたいこともありますよね?
削除を簡単にできるコマンドが
[ “DELET FORM テーブル名 WHERE id = IDナンバー” ]
です。
変更するために必要なコマンドが
[ “UPDATE テーブル名 set カラム名 = ?, カラム名 = ?, カラム名 = ?, WHERE id = ?” ]
です。値は毎回変わるので、プレースホルダで指定します。
トップページから各機能にリンクをつけたり、トップページに戻るボタンをつけたりして、各ページを移動できるようにしておきます。
ここまでの一連の流れも、教本には全て画像付き、コード付きで掲載されています。一通り流れ通りに作成してみましょう。
作成が完了したら、いろいろ試してエラーが出るように入力したりして、どんな風にアプリが動作しているのかいじってみましょう!
HTMLとPHPとセキュリティー
プログラムを作成する時に、必ず必要なのがセキュリティーです。
どこからでも使用できるインターネットの世界、何が潜んでいるかわかりません・・・
誰も不安要素がたくさんあるプログラムを使いたいとは思いませんよね!?
リスクを理解して安全なプログラムを作成しましょう。
教本では、セキュリティーについても詳しく説明されています。
1)入力フォームの値を指定する
HTMLの < input_type = “text / number / radio /etc” >で違うものを入力させないようにします。
2)empty命令
empty命令を使うことで値を確認します。
3)” htmlspecialchars ” 関数
これを表示する全ての文字列に指定することで「<」が変換され悪意のある入力を防ぐことができます。
4)” ENT_QUOTES “
悪意のあるJavaScriptなどが実行されるのを防ぎます。
5)” UTF-8 “
文字コードを指定します。
6)SQLインジェクション 対策
SQLを実行する時に、プレースホルダを指定する。
※3)~5)は基本的にセットで使われます。
他にもたくさんのセキュリティー対策があります。教本を参考にしながらセキュリティーもしっかり学んでいきましょう!
まとめ
最後までお読みいただき、ありがとうございます。
「いちばんやさしいPHPの教本」のオススメ度は?というと、初心者の方には100%オススメします。
なぜなら、PHP初心者の私でも教本を見ながらレシピのプログラムが作れたからです。
初心者はどこがわからないかがわからない。という事が多くあります。
そのため、調べ方もわからないので、順を追って説明してくれる教本はとても便利です。
画像やソースコードなどもしっかりと記載されていますし、ポイントごとに著者のイラストがインストラクターの役割をして問いかけてくれたり、説明してくれたりするので、レッスンを受けているように学習を進めていけます。
この教本で学習した後に作成した私のオリジナルWebアプリケーションの「旅フィルム~Travel Film~」を作成した際にも、かなりこの教本から引用してPHPを組み込みました。
実践にもちゃんと使えます!
ちなみに私の教本は付箋だらけです(゚∀゚)
用語集もついているので、逆引き辞典のように使えるので便利です。なんか、いい教本ないかな~とお探しの方はぜひご利用ください。