PHP Guid

初心者の方がコンソールモードのプログラムを学ぶなら PHP は最適 です。

PHP 紹介

  1. PHP のコンソールモードは、初心者の方がプログラムを学ぶのに適しています。

  2. このコーナーの主眼は PHP を活用してホームページを作成することです。
    ホームページは WWW(World Wide Web)サーバー上に構築するのですが、そのためには HTML の基礎知識と多少のプログラム経験が必要です。
    コンソールモードを利用して、必要なプログラミング能力を身に着けて下さい。
    PHP を使ったホームページを作成するには、PHP に対応した WWW サーバーが必要です。

  3. ネットワークゲームにも色々ありますが、比較的簡単に作成出来て多くの人がプレイを楽しむことができるゲームとしては HTTP プロトコルを利用したブラウザゲームが最適です。
    ホームページにアクセス出来れば、スマホからでもゲームを楽しむことが出来ます。
    私のページでも携帯端末やスマホから起動できる スマホ・ゲーム を提供しています。
    PHP は Web ページの記述に特化したスクリプト言語です。

  4. スクリプト言語とは事前に翻訳しないで実行時に命令を解析しながら実行するプログラム言語です。
    スクリプトには、クライアントサイドスクリプト(CSL)とサーバーサイドスクリプト(SSL)があります。
    クライアントサイドスクリプトとはクライアントのコンピュータ上で動作するもので JavaScript がその代表で、マウスやキーボードの操作などクライアントサイドの処理を担当します。
    サーバーサイドスクリプト(SSL)はサーバー上で動作するもので Perl や PHP が有名です。
    複数のユーザーが情報を交換しながらプレイするゲームなどは、サーバー上で動作する SSL が活躍します。
    PHP は JavaScript ほどの派手さはありませんが、クライアントサイドでは対応できない処理を担当します。
    例えば、サーバーを介して peer to peer で接続したり、複数のクライアントが同時に参加するゲームなどでは、欠くことができません。
    PHP はデータベース(MySQL)とも相性が良く、ネットワークゲームにも適しています。

  5. CSL(ライアントサイドスクリプト)が動作するか否かはクライアント側(パソコン側)の問題です。
    具体的に言うなら使用する Webブラウザ(IE や Edge や Chrome)の問題です。
    これに対して SSL(サーバーサイドスクリプト)が動作するか否かは、サーバーにその機能が備わっているか否かによります。
    最近ではセキュリティの関係からサーバー上で動作するプログラムは敬遠されるようです。
    幸いにして PHP が使えるサーバーを利用できることになり、PHP のページを復活することにします。

  6. CGI(Common Gateway Interface) はホームページの標準的なインターフェースです。
    決められた呼び出し形式によりプログラムを実行して HTML(HyperText Markup Language)文を文字列として吐き出します。
    ブラウザは、この出力文字列(HTML文)を受け取ってホームページ上に表示します。
    CSL も SSL も HTML 文を文字列として吐き出します。
    従って JavaScript や PHP のプログラムを作成するには HTML の文法に精通していることが必須です。
    html タグは大文字でも小文字でもOKですが、XHTML(エックスエイチティーエムエル)の影響か小文字が使われる例が増えてきています。

  7. 例えば大きな文字で「HTML & PHP」と表示する HTML のタグは次のように次のように書きます。
    <h1>HTML & PHP</h1>
    PHP では次のように書きます。
    print "<h1>HTML & PHP</h1>";
    つまりブラウザが実行する html のプログラムを PHP の print 文で吐き出します。
    プログラムを出力するプログラムをメタプログラムと言いますが、この機能により柔軟性に富んだゲームプログラムなどの作成が可能になります。
    ブラウザゲームと普通のゲームとで最も異なる点は、通信を伴うことです。
    パソコン上でプレイするゲームは、ほとんどの場合瞬間的にアクション(一連の命令)が終了しますが、通信を伴う場合は通信速度を考慮しなければなりません。
    特に人と人が対戦するゲームでは、お互いにプレイを確認しながらゲームを進めなければなりません。

  8. プログラム的には変数の値に付いて特別の配慮が必要です。
    普通のゲームでは設定された変数の値はゲームが終了するまで保持されますが、ブラウザゲームではページが更新される度に値が初期化されます。
    従ってセマンティック(ゲーム状態の連続性)を確保する必要があります。
    方法としては、ページを更新するときにパラメーターとして渡す方法や、サーバー上のファイルに記録するなどの方法が考えられます。

文字コード

  1. 昔(Windows7 以前)は Shift_JIS が使われていたのですが、最近では Unicode が使われるようになってきました。
    Unicode には BOM が格納されているものと、格納されていないものがあります。
    BOM(byte order mark)とはテキストファイルの先頭に格納される文字コードを示すIDです。
    BOM が格納されていると Encoding で間違った設定をしても、文字化けすることなく正しく読むことができます。
    文字コード BOM 説明
    utf-16 FFFE 先頭2バイトが BOM です
    utf-8 EFBBBF先頭3バイトが BOM です
    utf-8(BOM無し) BOM は格納されていません
    Shift_JIS BOM は格納されていません
  2. HTML やソースプログラムに最も多く使われている文字コードは utf-8 です。
    私のページでも C++ や C# 関係のファイルは utf-8(BOM 付き)を使っています。
    所が PHP では全てのソースファイルを utf-8(BOM 付き)に統一すればOKとは行かないようです。
    サーバーにアップロードする HTML ファイルは utf-8(BOM 付き)で問題は無いようです。
    ファイルの種類 説明
    HTML ホームページを記述する html 文が書かれたファイル
    PHP(コンソール) スタンドアロンで実行する PHP のプログラムファイル
    PHP(ネット) サーバー上で実行される PHP のプログラムファイル
    sql SQLite(データベース)のコマンドが書かれたファイル
  3. Windows10 のコンソールモードで SQLite(データベース)を使う場合の文字コードを調べてみました。
    SQLite では BOM が付加されていると、これが邪魔して syntax error が発生します。
    Shift-JIS でタイプすると漢字が文字化けします。
    SQLiteのコマンドファイル(*.sql)では utf-8(BOM 無し)でタイプするのが適しているようです。
  4. 所が SQLite を扱う PHP ファイルを utf-8(BOM 無し)でタイプしてアップロードすると漢字が文字化けします。
    どうやら私がお借りしているサーバーでは BOM が無いファイルは Shift_JIS でタイプされていると認識されているようです。
    この事はサーバーによって違いがあり、全てのサーバーが Shift_JIS として認識されるとは限りません。
    また SQLite のバージョンアップやサーバーのアップデートによって変わることは容易に想像できます。
  5. 2019/09/08 現在、サーバーにアップロードする SQLite を扱う PHP プログラムファイルは Shift_JIS でタイプします。
    SQLite を扱わない PHP プログラムファイルは utf-8(BOM 付き) でタイプします。
    コンソールモードで使用する SQLite のファイルは utf-8(BOM 無し)を使用します。

前田稔の超初心者のプログラム入門
PHP Program