Monthly Archives: October 2011

CodeMirror for CodeEditor バージョン0.4 リリース

「CodeMirror for CodeEditor バージョン0.4」をリリースした。 バージョン0.4 2011/10/30 最新の「CodeMirror for CodeEditor」をダウンロード バージョン0.4では、新しい機能の追加はないが、内包する「CodeMirror」ライブラリをアップデートしている。 このバージョンで採用した「CodeMirror」ライブラリは、正式リリースのものではなく、開発中のものであり、バージョン2.16の修正版(2.16-22)に当たる。 開発中のバージョンを採用した事には理由がある。 以前のバージョンでは、IEで参照するとタブがスペースに変換され、インデントが正しく反映されない問題が発生しており、以前から気になっていた。 この問題は、バージョン2.16で解消しており、このプラグインでもバージョン2.16を新たに採用するつもりであったが、テストした結果、新たに別の問題が発生していることが分かり、これら全ての問題を解消するために開発中のバージョンを採用した。 なお「CodeMirror」の開発チームは、仕事に熱心で、レスポンスが良く、バグとして報告すれば、直ぐに対応して貰える。 マイナーな用途のライブラリではあるが、こう言った点からも、今後、この手のライブラリの主流の1つになることが予想される。 バグを報告したり、パッチを提供したりするユーザーも増えて来ているようなので、開発自体も更に盛り上がって行きそうだ。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | Leave a comment

開発者が重宝するプラグイン「Debug Bar」

「Debug Bar」は、その名の通り、プラグインなどのデバッグに適したプラグインで、エラー、警告、注意メッセージの確認、SQLクエリーの確認が出来る。 十分な情報を得るためには、をかもとさんの書かれた記事、「WordPress 開発に便利なプラグイン Debug Bar」にもあるように「wp-config.php」に記述を追加する必要があるが、「SAVEQUERIES」、「WP_DEBUG」は、下手に常時有効にする訳にはいかないため、どちらかと言えば、評価環境で使った方が良いプラグインと言える。 また、「Debug Bar」は、フロントエンドや管理画面の上部に表示される「管理バー」から実行するタイプであるため、使用する場合は、管理バーを表示させておく必要がある。 よって、管理バーが苦手な方には向かないかもしれない。 しかし、「Debug Bar」の機能はこれだけではなく「Debug-Bar-Extender」、「Debug Bar Query Tracer」、「Debug Bar Console」と言ったプラグインで機能を強化できる。 「Debug-Bar-Extender」については、jim912さんが書かれた「Debug BarとDebug-Bar-ExtenderでWordPressのパフォーマンスチェック」という記事が参考になる。 「Debug Bar Query Tracer」は、使っていないため、機能についてはよく分からない。 私が重宝しているのが、「Debug Bar Console」で、このプラグインをインストールすると、PHPやSQLスクリプトを実行できるコンソールが追加される。 もっぱら、PHPプログラムの実行テストに使用しているが、このコンソールは良く出来ており、ちょっとした検証程度のことならここで出来てしまう。 例えば、プラグインなどで定義されたものを含め、WordPressの関数も実行できる。 下記の例では、get_posts()関数を使って最近の10件の記事を取り出している。 $posts = get_posts(array(‘numberposts’=>10)); foreach($posts as $post) { echo($post->post_content); } 左側に入力したスクリプトの実行結果はコンソール右側に表示される。 ただし、実行結果を表示する部分は、ブラウザとして機能するため、実行結果にHTMLタグが含まれる場合は、タグは処理されてしまう。 上記の例であれば、エスケープする処理を加えれば、タグも確認できる。 $posts = get_posts(array(‘numberposts’=>10)); foreach($posts as $post) { echo(esc_html($post->post_content)); } WordPressがグローバルスコープで定義している変数を使用する場合は、Global宣言が必要となる。つまりスコープが異なる。 下記は、WordPressの変数$localeを使用する場合の例である。 global $locale; echo($locale); 同じ要領でプラグインが定義している変数も取得できる。 管理バー自体は、WordPressの管理画面以外にフロントエンドでも表示できるが、投稿ページでコンソールを開こうが、アーカイブページで開こうが、このコンソールは、管理画面の一部として機能する。 つまりis_admin()は、常にtrueを返す。 従って、現在のページの記事やコメントを取得すると言った事は出来ないが、IDで指定して取得する方法もあるので、全く不可能ではない。 万能ではないが、癖さえ理解してしまえば、「Debug Bar Console」は、かなり使えるツールになるはずだ。

Posted in WordPress, ネット・PC | Tagged , | Leave a comment

記事にバックスラッシュを入力するためのプラグイン「TinyMCE Backslash Button」

バックスラッシュ「\」を記事に入力する手助けをするプラグイン「TinyMCE Backslash Button バージョン0.1」を新しく公開した。 最新の「TinyMCE Backslash Button」をダウンロードする 日本語環境では、「\」は、「\」として表示されてしまうが、「TinyMCE Backslash Button」を使えば「\」の入力が可能となる。 標準のビジュアルエディター(TinyMCE)に追加されるボタンを使って簡単に「\」を入力でき、「\」になること無く「\」をそのまま表示させることが可能。 仕組みとしては、欧文フォントを「\」に適用しているだけのため、クライアントの環境によっては「\」と表示されず、「\」となる場合もある。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , | Leave a comment

初心者による初心者のためのPHP講座 第3回 文字列

※「\」が「\」に見える場合は、別のPCからアクセスする事をお勧めする。この記事では、意図して「\」を使用しており、「\」と「\」の区別が出来たほうが分かりやすい。 「文字列」とは、文字を集まり、つまりは文字で書かれた単語や文の事を指し、単語、文の長さに関係なく、PHPで文字列を扱う際は、それが文字列である事を表す構文を使う必要がある。 「第2回 PHPの基本構造」でも、echo()関数の引数として文字列を用いている。 例えば「こんにちは」と表示させたい時は、echo()関数を用いて <?php echo “こんにちは”; ?> と命令文を書く必要がある。 「”こんにちは”」の部分が文字列であり、文字列を扱う場合は、文字列を「”」または「’」で囲む方法が良く用いられる。 このルールは、関数の引数として文字列を扱う場合だけでなく、変数に代入したり、条件式で用いる場合なども同様である。(変数と条件式は別の機会に説明する。) 引用符 「’」で文字列を囲む方法は、文字列の始まりと終わりを意味する「’」を文字列に直接書きこむ事が出来ない。 しかし、「’」の前に「\」または「\」を置き、「\’」または「\‘」とすることで、文字列内に「’」を書きこむことが出来る。 ※バックスラッシュ「\」は、多くの日本語フォントでは「\」と表示されるが、同じ意味であり、日本語キボード上でも「\」と表示されているが、入力は「\」で良い。 また、「\」または「\」も同様に直接記述することが出来ず、「\」または「\」を記述する場合は、「\\」または「\\」とする必要がある。 文字列に空白、改行が含まれる場合は、空白と改行は、そのまま文字列に反映される。 <!doctype html> <?php echo ‘<?xml version=”1.0″ encoding=”utf-8″?>’; ?> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml” lang=”ja” xml:lang=”ja”> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /> <title>引用符を使った文字列</title> </head> <body> <?php echo ‘\’こんにちは\’<br />’; echo ‘\\こんにちは\\’; ?> </body> </html> 上記のスクリプトの実行結果を表示 以上のような「\」または「\」を使った特殊な記述を「エスケープシーケンス」と言う。 エスケープシーケンスには、「\」または「\」を文字の前に置く以外に、特別なコードで置き換える方法もあり、構文やシステム都合のよる理由で、文字そのままでは不都合が生じる場合や文字で表現できない場合は、特別な文字や機能を特別なコードで置き換えたもの使用することがあり、これら全般をエスケープシーケンスと読んでいる。 ここで言うエスケープシーケンスは、狭義のものであるが、その他のエスケープシーケンスについては、別の機会に説明する。 また、特殊な文字や機能をエスケープシーケンスで置き換えることを「エスケープする」と言う。 なお、ここまでは、「\」と「\」の両方を表記してきたが、以後は「\」をもってエスケープシーケンスを意味し、エスケープされた文字を意味するものとする。 二重引用符 文字列は、「”」で囲む場合は、文字列内でも「’」の使用が許されるが「”」を使用する際は、「\”」とする必要がある。 また引用符「’」の場合と異なり、様々なエスケープシーケンスを文字列中に使用することが出来る。 \n ・・・ UNIX系の改行(LF)を意味する。 \r ・・・ 昔のMacなどの改行(CR)を意味するが、文字列中で改行させたい時は、通常は\nを使う。 \t ・・・ タブ(水平タブ)を意味でする。 \v ・・・ 垂直タブを意味する。PHP 5.2.5以降でサポート。 \f ・・・ フォームフィード(FF)。PHP 5.2.5以降でサポート。 \$ ・・・ ドル記号。 \\ ・・・ バックスラッシュ。 上記以外に(アスキー)文字の8進数表記を「\nnn」、16進数表記を「\xnn」と書くことも出来る。 ※nは、8進数の場合は、0から7の数字で、16進数の場合は、数字の0から9およびアルファベットのaからf。 「\n」での改行は、タグの「<br />」を意味しておらず、あくまでHTMLソース上の改行であるため、ブラウザ上で反映されるわけではない、効果を確認するためにはブラウザでソースを見ること。 例えば、PHPでHTMLタグを含む文字列を表示させる場合、「\n」を使って改行を入れるとソースも見やすくなる。 「\r\n」は「CRLF」、つまりWindowsなどの改行コードとなる。 インターネットプロトコルでは、意外にもUNIX系の「LF」でなく、DEC系の「CRLF」が使われてきた経緯もあり、改行コードとして「CRLF」が必要なケースもあり得るので、使う機会があるかもしれない。 ともかく、改行コードの扱いはシステムによって事なる場合があり、意外に曲者なので、記憶しておくとトラブルの際の助けになるかもしれない。 私の経験では、ダウンロードしたPHPのメールフォームで送信されたメールが、メーラーのよっては正常に表示されず、メールフォーム自体もインターネットの決まりごと(RFC)を順守したものだったが、決まりを順守しない方向に改行コードを変更したら、問題が解消した経験がある。 エスケープシーケンス以外の特徴として、文字列内に変数を直接記述し、変数を使用することが許される。(文字列内で変数が展開される。) 変数の直後に文字が続く場合は、変数の終わりが判断できなくなるため、「{$text}」のように「{}」で囲むと良い。 ちなみに、関数を「{}」で囲むことで、文字列内に関数の戻り値を展開することも出来るのだが、本来、仕様にない事かもしれないので、使わない方が良いかもしれない。 文字列に空白、改行が含まれる場合は、空白と改行は、そのまま文字列に反映される。 以下のサンプルでは「変数」を使用しているが、変数については別の機会に説明する。 <!doctype html> <?php echo ‘<?xml version=”1.0″ encoding=”utf-8″?>’; ?> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml” lang=”ja” xml:lang=”ja”> <head> <meta http-equiv=”Content-Type” … 続きを読む →

Posted in PHP, PHP講座, ネット・PC | Tagged | 2 Comments

初心者による初心者のためのPHP講座 第2回 PHPの基本構造

第2回では、PHPプログラムの基本構造について説明する。 プログラミング環境の準備 前回、テキストエディタの準備が必要であることを書いたが、「TeraPad」を例に話を進めてゆく。 インストールが完了したら、まず、文字コードと改行コードの設定しておくと良いだろう。 「TeraPad」の場合は、「表示」メニューから「オプション」を実行し、「文字コード」タブを開くと、ファイルを開いた際の文字コードである「初期文字コード)」保存する際の文字コードである「保存文字コード」の設定が出来るようになっているので、それぞれ設定しておく事。 テキストにマルチバイト文字を含まない限り、文字コードの「自動判別」は効かないので、意識しなくとも意図した文字コードで保存されるようにするためにも必要な設定である。 PHPは、Unix環境で動作させる事が多い事もあり、 文字コード:EUC(EUC-JP)、 改行コード:LF が使われることが多く、これは無難な設定である。 私の場合は、WordPress用のプラグインを作ることが多く、ウェブサイトもUTF-8で記述する事が多いので、 文字コード:UTF-8N(UTF-8、BOMなし)、改行コード:LF に設定しており、この講座は、この設定を前提に話を進めてゆく。 ファイルの拡張子 PHPで記述されたコードを含むファイルの拡張子は、原則として「php」とする必要がある。 ファイル名には、半角英数字を使用し、区切りが必要な場合は「.」や「-」、「_」を使用する。 そして「.php」で終わるようすること。 アップロードと実行 PHPで記述されてファイルは、HTMLで記述されたファイル同様に、ウェブサーバーにアップロードすれば良い。 拡張子は異なるものの、実行もHTMLの場合と全く同じ要領であり、「http://example.com/index.php」のようなURLをブラウザに入力してアクセスすれば良い。 基本構造 PHPは、下記のようにHTMLに簡単に組み込むことが出来る。 <!doctype html> <?php echo ‘<?xml version=”1.0″ encoding=”utf-8″?>’; ?> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml” lang=”ja” xml:lang=”ja”> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /> <title>PHPの基本構造</title> </head> <body> <p>PHPで日付を表示します。</p> <p>今日は、<?php echo date(“Y/m/d”); ?> です。</p> </body> </html> 上記のスクリプトの実行結果を表示 PHPによる記述は、 <?php PHPでの記述 ?> の部分であり、PHPのプログラムは、「<?php」で始まり「?>」で終わる必要がある この「<?php」と「?>」に囲まれた間に、PHPで命令文を記述してプログラムを作成する。 複数の命令文を書く事も可能で、「;」が命令文の区切りを表し、各命令文の最後には「;」を付ける必要がある。 例外として「?>」の直前の命令文は「;」を省略することが出来るが、命令文には「;」を付けることを習慣とした方が良い。 また、「<?php」と「?>」で囲まれたPHPプログラムは、1つのファイル内で複数回登場しても良い。 逆に「<?php」と「?>」に囲まれない範囲にあるHTMLによる記述は、そのままHTMLとして処理される。 つまり、HTMLとPHPを、簡単に混在させることが出来る。 サンプルプログラムでは、下記のコードで、現在の日付を動的に表示している。 <?php echo date(“Y/m/d”); ?> ここでは、echo()、date()と言う2つの関数を使用している。 「関数」とは、「与えられた値(引数)を元に処理を行い、結果(戻り値)を返す」という役割を担う命令文で、PHPプログラム内の処理の中心となる構造物である。 関数を電子レンジに例えるなら 引数・・・温める時間。 処理・・・物を温める。 戻り値・・・加熱の終了を知らせる音。 と言ったところだろうか。 シンプルな時計は、引数を必要としないが、時刻の計算処理を実行し、戻り値として現在の時刻を常に返すと言えるかもしれない。 実際、サンプルスクリプトでも使用しているdate()関数は、時計と似ている。 関数は、通常、下記のように記述する。 関数名(引数) サンプルプログラムを見るとechoには「()」が無く、これは関数のルールから外れているように思えるが、echo()の場合は「()」を省略出来る。 「()」が省略できるのは、echo()は厳密には関数ではなく、「言語構造」と呼ばれるものであるためだが、ともかく、echo()は、こう言うものと理解しておこう。 ただし、ここでは便宜上、関数として扱う。 echo()の「()」を省略せずに <?php echo(date(“Y/m/d”)); ?> と書くことも出来るが、通常は、このような書き方はしない。 date()関数は、現在の日付を計算する関数で、引数として日付のフォーマット(Y/m/d)を関数に渡し、戻り値として現在の年月日を返させている。 echo()関数は、引数をブラウザに表示する処理を行う。 この場合、echo()関数の引数は、date()関数の戻り値であり、結果としてブラウザには、現在の年月日が「/」区切りで表示される。 このサンプルプログラムでは、date()関数の引数に文字列(別の機会に詳しく)を使用しているが、文字列は「”」や「’」で囲むなどする必要がある。 関数には、引数、処理、戻り値の3つが必ずしもセットになっているとは限らない。 例えば、echo()関数は、引数を必要とし、引数をブラウザに表示する処理を行うが、戻り値は返さない。 echo()関数と同等の処理を行う関数として、print()関数があるが、こちらは戻り値を返す。 ちなみにprint()も厳密には関数ではなく、言語構造。 echo()関数やdate()関数は、PHPで予め定義された関数で、同様の関数は他にも沢山あり、「関数リファレンス」で見つけることが出来る。 ※関数リファレンスでは、「引数」は「パラメーター」、「戻り値」は「返り値」と表記されている。 このような定義済み関数の他に、自身で関数を定義して使用することも出来る。 サンプルプログラムでは、下記にもPHPを使用している。 <?php echo ‘<?xml … 続きを読む →

Posted in PHP, PHP講座, ネット・PC | Tagged | 1 Comment

テキストエリアのソースコードの強調表示に適した「CodeMirror」

この記事で紹介する「CodeMirror」は、<textarea>タグを使ったテキストエリアに表示されるソースコードの強調表示に適したJavaスクリプトライブラリである。 公開中のWordPress用プラグイン「CodeMirror for CodeEditor」でも、このライブラリを使用している。 「WP SyntaxHighlighter」でも、同様にソースコードを強調表示する「SyntaxHighlighter」と言うライブラリを使用しているが、「SyntaxHighlighter」が任意の場所のソースコードを対象しとているのに対して、「CodeMirror」は、<textarea>タグを使ったエディタ上のソースコードの強調表示に適している。 「WordPress」を例に上げると、「SyntaxHighlighter」が記事内のソースコードなどフロントエンドの強調表示に適しているのに対して、「CodeMirror」は、ダッシュボード上のテーマエディターやプラグインエディターに適していると言える。 テキストエディタでも、強調表示に対応したものが多いが、「CodeMirror」は、それと同様の事をウェブベースのテキストエディタ上で実現できる。 「CodeMirror」は、バージョン0.x系のリリースが続いた後に「CodeMirror 1.0」と「CodeMirror 2.0」が同時にリリースされているが、「1.0」と「2.x」ではAPIに違いがあるので互換性がない。 作者によると、今後は「CodeMirror 2.x」の方に力を入れていくようであるため、この記事では、「CodeMirror 2.x」について書く。 「CodeMirror」は、制限が少ないMITライセンスと互換性があり、様々なシステムの中で利用し易い。 「CodeMirror 2.x」には、コアのJavaスクリプト、コアのCSSの他、見た目を変えるための各テーマ用のCSS、各言語を定義したJavaスクリプトが含まれている。 ダウンロードファイルのうち、実際に必要なファイル群は、下記の通りである。 libフォルダ・・・基本的なJavaスクリプトとCSS。 themeフォルダ・・・各テーマ用CSS。 modeフォルダ・・・各言語を定義したJavaスクリプト。 ウェブサイトへの導入は、それほど難しくない。 まず、ヘッダ部分で下記のCSSとスクリプトを読み込む。パスは自身の環境に合わせて変更すること。 <link rel=”stylesheet” href=”lib/codemirror.css”> <link rel=”stylesheet” href=”theme/default.css”> <script src=”lib/codemirror.js”></script> <script src=”mode/css/css.js”></script> <script src=”mode/javascript/javascript.js”></script> <script src=”mode/xml/xml.js”></script> <script src=”mode/htmlmixed/htmlmixed.js”></script> 「codemirror.css」は、コアのCSSであり、読み込みは必須。 上記の例では、テーマは「default」を使用しているが、他のテーマを使用する場合は、「default.css」に加えて、そのテーマのCSSを読み込むようにする。 「codemirror.js」が、コアのJavaスクリプトになる。 4行目以降で、言語を定義するJavaスクリプトファイルを読み込む。 例では、CSS、Javaスクリプトが混在したHTMLを強調表示するために「htmlmixed.js」を使っているが、この場合は「css.js」、「javascript.js」、「xml.js」の後で読み込む必要がある。 このように「CodeMirror」では、複数の言語が混在するテキストを強調表示することも出来る。 PHPなどC言語に近い構文を持つ言語をサポートする「clike.js」を使う際にも、Javaスクリプトを読み込む順序が問題になるが、言語を定義するJavaスクリプトと同じフォルダに実行サンプルの「index.html」が収まっているので、このソースを確認すると良いだろう。 続いて、ページの後半、テキストエリア部分より後ろに、下記を記述を追加する。 <script> var editor = CodeMirror.fromTextArea(document.getElementById(“code”), { mode: “text/html”, theme: “default”, indentUnit: 4, indentWithTabs: false, tabMode: “shift”, enterMode: “keep”, electricChars: false, lineNumbers: true, firstLineNumber: 1, gutter: false, fixedGutter:false, matchBrackets: true }); </script> 2行目で、<textarea>タグのid属性の属性値を記述する。例では「code」になっている。 3行目以降は、パラメーターの定義である。 以下に、パラメーターの一部をまとめる。 mode・・・言語を言語名またはMINEタイプで指定。値:”javascript”、”text/javascript”等。 theme・・・テーマを指定。値:”default”/”cobalt”/”eclipse”/”elegant”/”neat”/”night”。 identUnit・・・タブによるインデントのサイズを半角スペースの数で指定。値:数値。 indentWithTabs・・・行の先頭の半角スペース8個分が1つのタブで置き換えられる。値:true/false。 tabMode・・・Tabキーを押した時の動作を指定。値:”classic”/”shift”/”indent”/”default”。 enterMode・・・改行した時の動作を指定。値:”indent”/”keep”/”flat”。 electricChars・・・構文上、意味を持つ「{ }」などが入力された際に、自動的にインデントする。値:true/false。 lineNumbers・・・行番号の表示、非表示。値:true/false。 firstLineNumber・・・行番号の開始番号。値:true/false。 gutter・・・「gutter」は、行番号の表示エリアを指すが、厳密には、行番号をクリックすることで印を付ける事が出来るマーカーエリアの表示、非常の指定。「true」ならlineNumbersが「false」の場合も「gutter」は表示される。値:true/false。 fixedGutter・・・「true」なら水平スクロールバーでスクロールしても、「gutter」は表示されたままになる。値:true/false。 matchBrackets・・・「true」なら「(」、「)」、「{」、「}」、「[」、「]」が選択された時に、対応する括弧と共に強調表示する。値:true/false。 なお、動作と記述は、配布サイトのデモページやダンロードファイルのdemoフォルダ内のファイルで確認できる。 以下のサンプルでは、ドロップダウンリストでテーマの変更、「Esc」または「F11」キーで、通常モード/フルスクリーンモードの切り替えが可能になっている。 <!doctype html> <?xml version=”1.0″ encoding=”UTF-8″?> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html … 続きを読む →

Posted in ネット・PC | Tagged | Leave a comment

初心者による初心者のためのPHP講座 第1回 PHPとは

WordPressのカスタマイズやプラグインを作成する事を目的に、2011年の4月から独学で「PHP」について勉強を始めた。 「PHP」は、簡単とは言われているが、私の場合は、海外在住のため日本語の書籍も簡単に手に入るわけではなく、インターネットの情報や既存のプログラムのソースコードを元に学んだため、苦労は無かったとは言えないが、最初の作品となるWordPress用プラグイン「Add attrib for LightBox」を意外と簡単に完成させられたこともあり、その後もPHPでの開発を継続している。 実際、最初につまずくと、先へ進めないものである。 そこで「初心者による初心者のためのPHP講座」と題して、私の経験を交えた「PHP入門書」をブログ上で作成してみることにした。 これは、私の勉強にもなる。 私がPHPを勉強し始めたきっかけが「WordPress」であり、PHPを使って作成しているものが「WordPress」用のプラグインであるため、一般的なPHPの話と言うよりは「WordPress」寄りの内容になるだろう。 どこまで出来るか分からないが、これからPHPを学ぼうとする方の手助けになれば幸いである。 なお、「初心者による初心者のためのPHP入門」の投稿は、不定期に行う。 PHPとは 「PHP」は、「PHP: Hypertext Preprocessor」の略で、動的にHTMLを生成することが出来る開発言語である。 要は、PHPを使えば、HTMLだけで記述した場合と比較して、より高機能なHPを簡単に構築することが出来る。 ・PHPの特徴 ウェブサイト、ウェブアプリケーションの開発に特化。 サーバー上で実行される。 C言語の影響を受けた構文で、平易な文法。 データベースとの連携が容易。 スクリプト言語なので大げさな開発環境が不要。 PHPは、1995年にバージョン1.0が登場しており、開発言語としては歴史はそれほど古くない。 にも関わらず、文法が易しいこともあり、広く普及している。 ユーザーが多いということは、書籍やインターネットを通じて情報を得やすいと言う利点もある。 PHPは、ウェブサイト、ウェブアプリケーションの構築に特化した開発言語であり、「PHP」同様に動的なサイトの構築に用いられる事が多い「Perl」とはこの点で異なる。 ウェブサイト上の掲示板、お問い合せフォームなどはPHPで記述できるウェブアプリケーションの例である。 PHPで記述されたアプリケーションの中でも比較的、大規模なものの例を挙げると、「WordPress」やWikipediaで使われている「MediaWiki」、ショッピングカートの「Zen Cart」、「EC CUBE」などがある。 データベースとの連携が容易であることも特徴で、データを「MySQL」などのデータベースという外部の入れ物に保存し、必要に応じて取り出して利用することが出来る。 HTMLでは、表示する内容は全てHTML上に含める必要があるが、PHPの場合は、本文をデータベースに格納し、サイトにアクセスがあった際に、データベースから取り出し、必要に応じて加工した上でブラウザに送信することも可能である。 実際、多くのPHPプログラムがデータベースと連携している。 ・PHPで出来ることの例 コメントを受け取り、表示する。しかし、危険な部分は、不適切な部分は削除して表示したい。 ⇒ HTMLでは、データを受け取れないし、処理できない。 フォームから入力されたデータを整形して管理者にメールで送信する。 ⇒ HTMLでは、データを処理できないし、メールも送信できない。 ユーザーの環境に合わせて、自動的に異なる言語のページを表示する。 ⇒ HTMLでは、リンクなどで対応するしかない。 必要な予備知識 PHPは、比較的、敷居の低い開発言語かとは思うが、全くの予備知識なしに学べるものではない。 参考までに私のケースを挙げておくが、PHPを勉強し始める以前にも、HTMLとCSSは、それなりに書け、PerlとJavaスクリプトも少し書けたが、Perlの方は、長い間使っていないので、かなり忘れてしまっていた。 ・必要な予備知識 HTML CSS 英語(必須ではないが、開発の幅広がる。) PHPは、ウェブアプリケーションを構築する言語であるため、「HTML」や「CSS」に関する知識は不可欠である。 テキストエディターを使って、HTMLで構造を記述し、CSSでレイアウトして、HPを作ることが出来る方なら全く問題ないだろう。 予備知識として「英語」を上げたのは、PHPに限らず、情報を公開する上での標準言語になっているからだ。 PHPやその他の言語で記述された数多くのプログラムがオープンソースの形で公開されており、自身が作るPHPプログラムに、それらを機能の一部として取り込む事も可能である。 実際に、他にプログラムとの連携を目的とした「ライブラリ」と呼ばれるプログラムも数多く存在する。 それらを利用したいとと思った場合、仕様の解説文を読む必要がある。 しかし、これらは英語で記述されていることが多い。 逆に英語以外の言語で仕様をまとめると、そのプログラムは、世に広まり難いといえるので、ネイティブでない開発者であっても英語で記述している場合が多い。 つまり有名なもの、実績があり、安心できるものを求める場合は、英語は避けて通れない。 「WordPress」のように多言語に翻訳されているものばかりなら良いのだが、実際には、そのようなケースは稀である。 また、自身で開発したプログラムを公開する場合も、仕様や解説文を英語で書いた方が、利用者が獲得しやすく、フィードバックも得られやすい。 プログラミングとは さて、プログラムを初めて経験する方にとっては、プログラムとは何かすら分からな状況かもしれない。 プログラムは、基本的に「文章」である。 「俳句を作る」、「Twitterにつぶやく」事と、本質的には変わらない。 「俳句」は定型文であり、ルールがある。 また、Twitterにも文字数制限があり、RT、ハッシュなどの流儀がある。 プログラムをこれと全く同じであり、一定のルールに従って文章を作れば良い。 「俳句」、「Twitterのつぶやき」は、ルールに従った上で、人間が理解出来る言葉で書けばよいが、プログラムは、誰に理解できる言葉で記述すべきであろうか? 答えは、PCなどの内蔵されている中核の処理装置「CPU」である。 CPUの理解できる言葉は、マシン語と呼ばれ、0と1と組み合わせである2進数(通常は、16進数で表記)である。 しかし、マシン語で記述されたプログラムなど理解が容易なはずがない。 小規模なアプリケーションが主流だった、古き良き時代には、個人が作るアプリケーションであってもマシン語で記述していたこともあるが、現在の大規模なアプリケーションでは、それも困難である。 また、マシン語は、1つではなく方言があり、CPUの種類毎に異なるため、1つのCPUのマシン語を覚えたからといって、別のCPUのマシン語が簡単に書けるわけではない。 ちなみに私は、インターネットもまだ無く、キャプテンシステムとか騒いでいた古き良き時代にマシン語(アセンブリ言語)を勉強しようとして挫折した。 実際の開発では、C言語のような、より人間が話す言葉に近く、CPUの差を吸収してくれる高級言語(中級言語)と呼ばれる開発言語が使われることが多い。 しかし、C言語は、あくまで人間寄りの言葉であって、C言語で記述されたファイルは、CPUには理解出来ないので、そのままでは実行する事も出来ない。 そこで、C言語で記述されたプログラムは、「コンパイラ」と呼ばれるプログラムを用いてCPUが理解出来る実行形式に変換する作業(コンパイル)を行う必要がある。 ※開発言語で書かれた元のファイルをソースファイル、その中の記述をソースコード、コンパイル後のファイルをバイナリと呼ぶ。 通常、プログラムは、ソースコードのままで提供されるのではなく、コンパイルされ、実行形式に変換されて提供、販売されるため、私たちも簡単に利用することが出来る。 それに対してPHPの場合は、バイナリと言った概念は存在しない。 人間寄りの言葉で書かれたソースコードをそのまま実行させる。 では、どのように実行しているかと言うと、実行する際にインタプリタと呼ばれる翻訳機を通すことで、CPUが理解できる言葉に変換し、実行を可能としている。 この方法は、通訳を通して会話するようなものであるため、コンパイルされたバイナリに比べて実行速度が落ちると言う欠点もある。 プラグラムは、コンパイルやインタプリタによる翻訳が必要であるため、プログラミング言語には、一定のルールが必要となる。 翻訳を考えれば、柔軟な人間の言葉よりも、人間寄りの言葉ではあるが、人間の言葉とは異なったシンプルなものの方が都合が良い。 人間の言葉では、同じような意味の事柄を異なった言い回しで表現出来る。 つまり、「画面を表示して頂けますか?」、「画面を表示して下さい。」、「画面を表示しろ!」よりもプログラム言語では、「表示 画面」などの方が遥かに都合が良い。 また、構文も人間の話す言葉に準じるよりも、効率的にプログラムを書く事を優先した方が良い。 その辺りがプログラム言語を難しく見せている理由ではあるかとは思うが、より柔軟な言語である「英語」を学ぶことよりも遥かに易しいとも言える。 開発環境の準備 C言語での開発の場合、コンパイラを必要とし、コンパイルという余計な作業が発生するのに対して、PHPでは、コンパイラは不要であり、コンパイルが不要な分、楽であるとも言える。 つまり、PHPの場合は、特別な開発環境は不要である。 PHPのプログラムは、テキスト形式のファイルで保存する必要があるため、文章を書くための紙に相当するテキストエディタ(シンプルなワープロ)さえあれば良い。 これから、PHPによるプログラミングを始めるなら、必ず、テキストエディタの準備が必要になるが、お金を必要はなく、フリーのもので十分である。 ただし、文字コード、改行コードが選択できるもの使うこと、例えば、Windowsのメモ帳は不可である。 参考:Windows用のテキストエディタを比較 WordPress用のテーマ、プラグインを作成するなら、「UTF-8、BOMなし」で保存できるものにすること。 私は、シェアウェアの「秀丸エディタ」を使っているが、Window用ならフリーの「TeraPad」で十分なので、ダウンロードしてインストールしておくこと。 今後、エディタの操作などは、「TeraPad」を標準して書くようにする。 PHPの実行と実行形態 PHPが翻訳され、実行されることは先に書いたが、つまり、そんための環境が必要となる事を意味している。 では、具体的にどこで翻訳され、実行されるのだろうか? PHPのプログラムは、ウェブサーバー上で翻訳され、プログラムに従って処理を実行し、実行結果をHTMLとしてブラウザに送信するパターンが基本となる。 ウェブサーバーには、「Apache」などのウェブサーバーアプリケーションがインストールされており、このアプリケーションの働きにより、HPにアクセスがあれば、HTMLで記述されたデータがブラウザに送信され、閲覧者はHPを参照できるが、これだけではPHPの実行までは出来ない。 更にオプションとして「PHP」を加えることで、PHPで記述されたサイトの出力も可能となる。 PHPで記述されたプログラムは、Apacheなどのウェブサーバーアプリケーション自身が実行するか、ウェブサーバーアプリケーションが、PHPを解釈、実行できるPHPプログラムを起動して代わりに実行させている。 前者のようなPHPの実行に仕方は、PHPがウェブサーバーアプリケーションの一部(モジュール)として組み込まれている場合にのみ可能であり、実行が高速である。 後者のような方法は、CGIと呼ばれ、ウェブサーバーが、逐次、PHPプログラムを起動する必要があるため実行が遅くなる。 PHPは、ウェブサーバー上で動作するため、PHPを利用するためには、PHPをサポートするレンタルサーバーの契約が必要となる。(PC上で動作される方法もあるが割愛する。) これは、一般的なウェブサイトを構築するために借りるレンタルサーバーで問題ない。 PHPをサポートしないレンタルサーバーを探すほうが難しいであろうから、PHPのサポートの有無については、あまり心配はいらないだろう。 PHPと単にいう場合は、PHPで記述されたプログラムを指すことが多いが、ウェブサーバーにインストールされているPHPを実行するためのプログラム(PHPランタイム)を指すこともあり、こちらがPHPのコアとも言える。 ウェブサーバーにインストールされているPHPにもバージョンがあり、できる限り新しいバージョンのものがインストールされているサーバーが好ましいが、レンタルサーバー会社側の都合にもよるので、最新のものが利用できるとは限らない。 新しいバージョンのPHPでは、機能が拡張されており、新しいバージョンで追加された機能を使ったPHPプログラムは、古いバージョンのPHPでは動作しないので注意が必要だ。 例えば、「WordPress … 続きを読む →

Posted in PHP, PHP講座, ネット・PC | Tagged | Leave a comment

CodeMirror for CodeEditor バージョン0.3 リリース

「CodeMirror for CodeEditor バージョン0.3」をリリースした。 最新の「CodeMirror for CodeEditor」をダウンロード バージョン0.3では、設定画面を設け、各パラメーターの設定が可能になった。 これによって、デフォルトのテーマの選択、行番号の表示/非表示、インデントの設定などが可能になっている。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | Leave a comment

CodeMirror for CodeEditor バージョン0.2 リリース

「CodeMirror for CodeEditor バージョン0.2」をリリースした。 最新の「CodeMirror for CodeEditor」をダウンロード バージョン0.2では、「テーマエディター」、「プラグインエディター」に、検索、置換機能を付加するツールバーが追加された。 また、関数などの入力を補完する「オートコンプリート」を搭載した。 これによって、標準の「テーマエディター」、「プラグインエディター」が、コードエディターとして、より使い易いものになっている。 テーマに関しても、フルスクリーンモード切替時の制限を無くし、フルスクリーンモードでの切り替えもサポートした。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | Leave a comment