これからPHPを始める方へ向けて概要やprintf、sprintf等のプログラミングの基礎を紹介

はじめに

PHPは「Hypertext Preprocessor」の略で、C言語をベースとしたオープンソースのスクリプト言語の一つです。1994年にリリースされてから主にWeb関連のシステムで利用されており、リリースから30年程たった2023年現在も需要や人気の高い言語となっています。

プログラミング言語は一定数ユーザーがいるものだけでも250以上、全て合わせると1,000以上の種類があると言われており、いまだに世界中で新たな言語が開発され続けています。そのため、中にはより優れた新たな言語に切り替えられて仕様頻度が極端に少なくなっているものもありますが、Pythonのようにある特定分野が注目されたことにより、その分野に強みのある言語の需要が戻ってきたりPHPのように長く第一線で残り続けていたりするものもあります。

この記事では、初めにPHPという言語の特徴やライブラリ・フレームワークについて解説したうえで、PHPのプログラミングを始めるにあたってあらかじめ知っておいた方が良いこと、覚えておいた方が良いことを紹介します。なおPHPの初めに出やすい疑問として、printfとsprintfの違いがわからないというものがありますが、意外とPHPの公式マニュアルではこの点について詳しく説明されていません。そのため、今回はこの点に関して初心者でもわかりやすく解説します。

これからPHPを学習しようとしている方、どのような言語か特徴だけ把握しておきたいという方、まさにprintf、sprintfの違いがわからないという方は是非ご覧ください。

PHPにはどんな特徴があるか

PHPは現在もマイナー・メジャーのバージョンアップが続けられており、近年は7系、8系が主流となっています。なおこの記事を執筆している2023年8月時点の最新バージョンは8.2で、開発は継続されているため今後もバージョンアップが繰り返されて進化していくことでしょう。

プログラミング言語には、検索エンジンの情報を取得してトレンドの言語をランキングする「TIOBEプログラミングコミュニティーインデックス」というものがありますが、2023年8月時点のPHPの順位は去年の同時期と変わらず10位という結果でした。1位はAI・機械学習・ディープラーニングといった分野で注目を浴びているPython、2位はPHPよりさらに長きに渡って利用されていてOSの開発も可能なC言語、3位はロボット開発などが可能なC++、その後にJavaやC#、JavaScriptといったWeb開発に利用されることの多い言語が続きます。PHPも含めこれらの言語に共通するのは、去年の同時期と比べてランク外から入ってきたものがないということです。このことから、いずれも近年においては不動の人気を誇る言語ということがわかります。なお、日本の転職サイトの求人やフリーランス案件のランキングにおいてはPHPがベスト5に入る人気となっています。

それではPHPが人気の理由を知るためにメリットを見ていきましょう。一つ目は構成がシンプルであるため初心者でもプログラミングの学習を始めやすいということが挙げられます。特に「型」を意識することなくコーディングできるということがシンプルさの理由の一つです。プログラミング言語の中には、例えばint(-2147483648〜2147483647の数字を表現可能)、char(1文字を文字コードとして扱える)、string(文字列を扱える)といったように、初めにどのような型を格納するか宣言しなくてはいけないものも多くあるためそれぞれの型の仕様を覚える必要がありますが、PHPは指定ができないわけではないものの指定しなくてもエラーになることはなくコーディング可能です。

後ほど詳しく解説しますが、PHPはインタプリタ型の言語であるという点もシンプルさの理由となっています。簡単に言うと、インタプリタ型であることによって作成したプログラムを実行するまでの手間が省け、エラーの修正もしやすいので扱いやすい言語となっています。

また、作成したプログラムのコードが比較的シンプルになるため可読性が高くなります。コードが複雑だとプログラマー間の引継ぎ等があった際に次の担当者が解読して理解するまでに時間がかかりますが、コードが簡潔であればその時間を削減できる他、デバッグにおいてエラーの箇所も見つけやすくなります。

二つ目は日本語の関連情報が容易に手に入り、教材も充実しているということが挙げられます。これは言語を勉強するに当たって重要なことで、まだリリースされてまもないものや利用範囲が狭いものであると情報が見つからない、見つかったとしても英語のドキュメントばかりで翻訳に時間がかかるということも珍しくありません。その点、PHPは長い歴史と人気の両方を兼ね備えているためインターネット上で情報を見つけるのが簡単です。日本語に対応しているPHPのコミュニティも開かれていて活発であるため、プログラミングに行き詰まったりサンプルのコードが欲しかったりという際に活用できます。

さらにPHPは多くのオンライン学習サイトで取り扱われています。オンライン学習サイトは有料のサービスやプランも存在しますが、ある程度無料で学習できるサービスもあるのでコストをかけずに習得したいといった場合におすすめです。もちろんそこまでコストを気にしないということであればプログラミングスクールに通って勉強することも可能です。書籍に関しても種類が豊富なので、自分に見合った一冊が見つけやすいことでしょう。なおPHPの公式サイトにも日本語のマニュアルが用意されているので、必要に応じてそちらも確認してみてください。

三つ目はライブラリやフレームワークが充実していると言う点が挙げられます。このことは情報が入手しやすい、教材が豊富であるということにも繋がりますが、歴史と人気が共存している言語であるためこれまでに様々な開発者によって多くのライブラリ・フレームワークが開発され、現在もその状況は続いています。ライブラリ・フレームワークについても後ほど詳しく解説しますが、これらが充実していることによってPHPでの開発スピード、効率をアップすることが可能で、プログラマーの知識不足や技術不足も補うことができます。

以上はPHPが人気な理由ですが、その他にも多くの特徴があるため次に紹介します。

PHPは開発環境を構築する必要がある言語です。同じくWeb開発で利用されるHTMLやCSS、JavaScript(サーバーサイドで実行されるものも有)に関しては閲覧者のブラウザ上で実行される言語であるため環境構築は特に不要ですが、PHPは開発するに当たって事前にWebサーバーの構築やPHPのインストールといった作業が必要となります。ただしPHPで開発を行うにあたって必要なものが全て揃っているパッケージ「XAMPP(ザンプ)」等があるため、構築もさほど時間をかけずにできるようになっています。なおXAMPPという名称は「クラスプラットフォーム(OSに依存せず同じように実行可能)のX」「Apache(Webサーバーのソフトウェア)のA」「データベース管理システム「Maria DB」のM」「PHPのP」「PerlのP」を表しています。他にもMAMP、LAMP、WAMPというパッケージが有名ですが、いずれも共通してPHPが含まれています。また近年はAWSやGoogle Cloud、Microsoft Azureといったクラウドコンピューティングサービスが人気で、これらを利用することで瞬時に環境構築ができる状況なので、詳しいインフラ知識がなくても簡単にPHPの開発環境を構築できると言えます。

続いての特徴は、データベース接続に適した言語であるという点です。データベースはいまやあらゆるWebサービスで利用されており、ビッグデータの保存などにも欠かせませんが、PHPはMySQLやPostgreSQL、Maria DBといった主なデータベースとの接続・連携が可能です。

またPHPをWeb開発に利用することで動的なコンテンツの作成が可能となります。HTMLやCSSはあくまでホームページやオンラインショップ、業務システム等の見た目に関係する言語であり、一度記述したら自動的に記述内容が更新されることはありません。そのため、例えば閲覧者がオンラインショップでカートに商品を入れて購入したり、お問い合わせフォームからメールを送ったり、ブログにコメントしたりということはできません。PHPやJavaScriptといった別の言語を利用することで初めてこれらの仕組みが構築できます。ただしPHPとJavaScriptに関してはサーバーサイドで実行されるか、クライアント(ユーザー)サイドで実行されるかという違いがあります。サーバーサイド、クライアントサイドが何を表しているかについては別の項目で解説します。

以上の特徴から、PHPはお問い合わせ・申し込みフォーム、ショッピングカート、会員登録、ログインシステム、予約システム、SNS、CMS(Contents Management System)などの機能で幅広く利用されています。

なおCMSとはWebサイトやブログ作成に関する十分な知識を持っていなくても、あらかじめ用意されたテンプレートや機能などを利用することで簡単に構築できるサービスのことです。PHPが利用された代表的なCMSとしてはWordPressやDrupalが挙げられます。特にWordPressは人気が高く、多くのWebサイトで利用されている他、クラウドサービスでも簡単にWordPressが利用できる仕組みが提供されている状況です。WordPressのコアソフトウェア部分がPHPで構築されており、テーマ(サイトデザインのテンプレート)やプラグイン(特定の機能を利用できるようにするプログラム)に関してもPHPで作成されています。WordPressをインストールした際にサーバーに保存されたデータを確認すると、そのほとんどに「.php」という拡張子が付いているということが確認できます。そのため、WordPressで簡単なブログやホームページを作成したいという場合は画面上からの操作だけで完結しますが、テーマやプラグインに独自のカスタマイズを加えながら構築したい、データを直接編集したいという場合はPHPのスキルが必須となります。

この項目の最後にPHPのデメリットについても紹介しておきます。デメリットとしては、自由度が高い言語であること、セキュリティに不安があるということが挙げられます。自由度が高いことはメリットと捉えることもできますが、同じ動作をするプログラミングであってもプログラマーによって十人十色のコーディングがされやすくなります。そうなると各プログラマーの癖が出て可読性を損ない、汎用性が低くなる可能性が出てきます。もう一つのセキュリティ面に関して、PHPはこれまで脆弱性が多く不正アクセスされる可能性が高い言語とされてきました。それでもPHP 8.0と8.1といった8系ではセキュリティ面が大幅に改善されているので、今後さらに改善されていく可能性は期待できるでしょう。ただし開発者がPHPの持つ脆弱性について把握したうえで構築を行い、最新情報についても常にアンテナを張って関連する情報がアナウンスされた場合は適宜改修などを行うことを心得ておく必要があります。

インタプリタ型とコンパイル型について

プログラミング言語は大きく「インタプリタ型」と「コンパイル型」の2種類に分けることができ、それぞれメリット・デメリットを持っています。両者の違いを簡単に表すと、前もってコンパイルするかしないかです。PHPを含めた様々な言語で書かれた言語は学習したプログラマーであれば理解できますが、コンピュータはそのままでは理解することができません。そのためコンピュータが解釈できるように変換する必要がありますが、これをコンパイルと言います。

インタプリタ型は実際にプログラムを実行する際に同時にコンパイルも実施します。この場合、エラーが発生した時点でプログラムが進まなくなります。そのためエラー箇所をすぐに特定し、修正に移ることが可能です。実行と修正の繰り返しがスピーディーに行えるのがインタプリタ型です。インタプリタ型のデメリットとしては、実行速度が遅いということが言えます。コンパイルと実行を同時に行うため、あらかじめコンパイルされているコンパイラ型に比べると処理速度が遅くなります。大規模なシステムであればある程その差が顕著になるでしょう。

対してコンパイル型はあらかじめコンパイルを済ましてシステム稼働時はプログラムの実行のみされるので処理が高速となります。しかしながらコード全体を一度にコンパイルするので慣れていないと誤った箇所を見つけづらく、デバッグを行う際も全体のコンパイルをしてから実行するという操作を繰り返さなければいけないという不便さがあります。以上のような特徴から、インタプリタ型に比べるとコンパイル型は初心者にとってはややハードルが高い言語と言えます。

インタプリタ型の代表的な言語としては、HTML、CSS、Ruby、Python、JavaScript、PHPなどがあります。コンパイラ型には、Java、C、C++、C#、Go、swiftなどがあります。

フロントエンド(クライアントサイド)とバックエンド(サーバーサイド)について

プログラミング言語はフロントエンドとバックエンドに分類することもできます。フロントエンド言語は直接ユーザーの目に触れるWebサイトのデザイン等を構築しているもので、端末側のブラウザ上で実行されます。HTML、CSS、JavaScript、TypeScript、PHPJavaScriptが代表的な言語で、これらの言語を扱うエンジニアはフロントエンドエンジニアと呼ばれます。バックエンド言語はサーバー側(内部)で実行される言語であり、ユーザー側が直接それらを目にすることはありません。代表的な言語としてはPHPやJava、Python、Ruby、C、C#があり、他にも種類が豊富です。なおJavaScriptは「Node.js」というプラットフォームを利用することで、バックエンドの言語として利用することもできます。

フロントエンドとバックエンドの使い分けをショッピングサイトの運用で表すと、サイトのデザインを構成するのがフロントエンド、商品を検索して条件に当てはまるデータをデータベースから取り出すために接続を行い、そのデータをサイトに受け渡すのがバックエンド、さらに検索結果を見やすい状態で画面に表示させているのはフロントエンドです。

PHPの豊富なライブラリとフレームワーク

ライブラリとは、ある特定の機能を満たすあらかじめ用意されたプログラムの集合体のことを指し、PHPのようなオープンソースのプログラムであれば言語の開発者でなくても様々なエンジニアが自由に作成することができます。ライブラリでは数値計算や文字列操作、データベース接続などの一般的なタスクを実行するための関数やクラスが提供され、再利用が可能なコードの集合となっているため、他のプログラマーもそれらを自分のプログラムに組み込むことが可能となります。

すでに開発者によって動作テストなども実施されているため、動作確認をする時間を省いて効率的に開発が行えます。自分の生活を例にすると、ライブラリは生活を豊かにする生活用品や家電などと同じと言えます。洗濯をするために洗濯機、掃除をするために掃除機、涼しくするために扇風機やクーラーを利用すると思いますが、これらは購入して利用している人がほとんどでしょう。自分で作らなくても、また仕組みを知らなくても便利に利用することができ、生活の質や効率を上げられます。ITシステムにおいてはライブラリを利用することで、開発の質や効率を上げられるということです。

一方のフレームワークは、ある機能を満たすプログラムの集合体というよりは、一つのテンプレート(大枠)のことを指します。プログラミング言語には「オブジェクト指向」という考え方があり、その中にインターフェースという概念がありますがフレームワークはこのインターフェースの利用方法と似ています。あるシステムを構築するためにあらかじめ用意されたテンプレートがフレームワークとなりますが、こちらもライブラリと同じく開発者が自由に作成することができ、他のプログラマーもそれらを自由に再利用できます。

例えばデータベースとの接続、URLのルーティング、セキュリティ対策といった基本的な機能などがすでに組み込まれてた状態となっているため、プログラマーは真っ新な状態から開発を進めるのではなく、構築したいシステムに合わせて一部を修正するだけでプログラムを完成させることが可能な場合もあります。フレームワークをイメージしやすいように例えると、それぞれの生活スタイルと捉えることができます。一般会社員、芸能人、スポーツ選手、夜勤の人、早朝勤務の人とそれぞれの職業にはもちろん異なる部分も多くありますが、ある程度共通する部分も見られます。この共通する部分がフレームワークで、モデルと言い換えることもできます。例えば、朝活をして1日を充実させるためのメソッドなどが紹介されていることがあり、充実させたいと思っている人はこのメソッドを自分の生活でできる範囲で参考にすると思いますが、まさにこれがフレームワークを利用している状態です。

なおプログラムにおけるライブラリとフレームワークの分類は非常に曖昧で、ライブラリとして解説されていたものが別の書籍や情報サイトを見たらフレームワークとして紹介されていたということも珍しくありません。そのためプロジェクトにおいてコミュニケーションを取る際に共通認識が持てるのであれば特に厳密な区別をする必要はありません。

PHPにおいてよく使われるライブラリとしては、デバッグに使われる「whoops!」、日付・時間の挿入に使われる「briannesbitt/Carbon」、メール送信プログラム「PHPMailer」、バリデーションチェックに使われる「Respect/Validation」などがあります。フレームワークとしてはWebアプリケーション用の「Laravel」「CakePHP」「Symfony」などが有名です。

PHPでのプログラミング入門編・書き方と「printf」「sprintf」について

まずPHPの基本的なルールについて紹介します。PHPはメモ帳などのテキストエディタにて作成が可能ですが、PHPファイルとして認識させるためには「.php」という拡張子で保存する必要があります。また一つのコードの末尾には「;(セミコロン)」を付けます。言語によって必要有無があって、いくつもの言語を学んでいると混同してしまうこともありますが、PHPでは必要です。同じく言語によって迷ってしまうものにコメントを表現する方法がありますが、PHPでコメントをする際は頭に「//」や「#」を付けます。

さらにPHPでは変数や関数、演算子、配列、if文・while文等を使ってコードを組み立てていきますが、それら全てを「」というタグで囲んで記述する必要があります。変数を使ったプログラムの一例を以下に紹介します。

上記からわかるように、文字列は「'(シングルクオーテーション)」で囲みます。なお文字列の中に変数を含めたい場合は「”(ダブルクオーテーション)」で囲まなければなりません。以下のようにコーディングした場合、「echo “”{$score}点を獲得しました。””;」の出力結果は変数の内容を参照して「100点を獲得しました。」となりますが、「 ‘{$score}点を獲得しました。’;」の方はそのまま「{$score}点を獲得しました」となります。

なおPHPはHTMLと連携して開発を行うことがほとんどですが、PHPのコーディング部分を独立させて分けて記述することも、HTMLの「」「」内に埋め込んで記述することも可能です。以下はHTMLに埋め込んだ一例です。このようにHTMLとPHPを連携させることで動的なコンテンツの作成が可能となります。





PHPをHTMLに埋め込む方法


{$str}

""; ?>

また、あらかじめ知っておくと便利なものに「php.ini」というファイルがあります。これはソフトウェアやプログラムにおいて共通する設定を保存しておく設定ファイルで、一般的に「INIファイル」と呼ばれるものの一つです。PHPには「php.ini」という名称で存在しており、XAMPP等のパッケージでインストールした場合も、OSが異なる場合も多少格納場所が違うこともありますが確認することはできます。このファイルには、タイムゾーン、日本語環境の設定、セッション、データベース、エラーメッセージの表示といった様々な設定内容が含まれており、アクセス権限のある開発者であればカスタマイズ可能となっています。なお以下記述をしたファイルを任意の名前で保存し(「phpinfo.php」等のわかりやすい名前で保存することを推奨)てサーバーにアップロードし、そのファイルにブラウザからアクセスすることで、利用しているPHPの設定内容を画面上で確認できます。見やすい状態で確認したい場合に便利なので、ぜひ覚えておいてください。

そしてもう一つ覚えておくと便利なのが「printf」と「sprintf」という二つの関数の違いです。ここまでの記述例でも出ていたように、PHPでは出力する際は「echo」という関数を利用できますが、printfとsprintfでも出力が可能です。文字としては「s」が付くか付かないかの違いですが、仕様は大きく違います。

結論から言うと、printfはフォーマットされた文字列の出力を行う関数で、sprintfはフォーマットされた文字列を返す関数となり出力の機能は備わっていません。そのためsprintfの結果を出力するためには別途echo関数を記述する必要があります。

プログラムでは、文字列の集合を様々な文字列で表現する「正規表現」というものがあり、入力値のチェック等に利用されますが、PHPにはその正規表現と似た「型指定子」というものがあります。型指定子で意図した状態にフォーマットして出力する際に利用する関数がprintfやsprintfです。

今回全ては紹介しませんが、例えばよく使われる型指定子には「%c(文字)」「%s(文字列)」「%d(10進数)」などがあり、これらを引数として使用します。以下記述例を見ていきましょう。

a = 65.123456;
printf(""%d"", $a);

この例では第一引数に「%d」が入力されていて、第二引数に変数「a」が入力されているので、「a」で取得した値を10進数で出力することとなります。そのため出力結果は「65」となります。

続いてsprintfの記述例を以下に紹介します。

$format = ""名前は%sで、年齢は%d歳です"";
$self1 = sprintf($format, ""山田"", 20);
$self2 = sprintf($format, ""鈴木"", 30);
echo $self1;
echo $self2;

このコードの出力結果は「名前は山田で、年齢は20歳です」「名前は鈴木で、年齢は30歳です」となります。このように、それぞれ該当する型指定子に対して引数に設定した文字や数字が的確に当てはめられた状態で格納されたうえで、echoによって出力されることとなります。

なお型指定子には他にも「%hd(半分の精度の10進数)」「%ld(倍精度の10進数)」「%u(符号なし整数を10進数)」と利用頻度が少ないものがありますが、最初のうちは%c、%s、%dの3つを覚えていれば問題ないです。もし全て確認したい場合は、PHPの公式マニュアルを参照してください。

まとめ

PHPはWeb関連のシステム開発においてHTMLやCSSと共に利用されることの多いインタプリタ型のスクリプト言語であること、データベースとの接続に適しているサーバーサイドの言語であること、CMSのWordPressにおいて重要な役割を担っているということ等、そして基本的なプログラミング方法、printf、sprintfの違いについて紹介してきました。

PHPは歴史が長い言語であるもののいまだに非常に多くのWebシステムで利用されているため、これから学んでも十分に多くの現場で活躍できるプログラマー・エンジニアとなれる可能性も高いです。インターネット上の情報や学習ツールも充実していて学びやすい言語なので、もしこれから習得するプログラミング言語に迷っている方は、ぜひこの記事をきっかけにPHPを初めてみてはいかがでしょうか。