<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>モノについてのモノ語り</title>
	<atom:link href="http://www.near-mint.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.near-mint.com/blog</link>
	<description>万年筆や革製品など、こだわりのモノについて語る</description>
	<lastBuildDate>Tue, 15 May 2012 15:08:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/feed" />
		<item>
		<title>初心者による初心者のためのPHP講座　第9回　関数の定義</title>
		<link>http://www.near-mint.com/blog/5272</link>
		<comments>http://www.near-mint.com/blog/5272#comments</comments>
		<pubDate>Tue, 27 Mar 2012 13:16:50 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP講座]]></category>
		<category><![CDATA[ネット・PC]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=5272</guid>
		<description><![CDATA[この講座でも、echo()を始めとして、date()、define()、array()、explode()、extract()などの様々な関数が登場している。（厳密には関数でないものも含まれるが・・・。） これらは、PH &#8230; <a class="more-link" href="http://www.near-mint.com/blog/5272">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>この講座でも、echo()を始めとして、date()、define()、array()、explode()、extract()などの様々な関数が登場している。（厳密には関数でないものも含まれるが・・・。）</p>
<p>これらは、PHPが標準で備えている関数であり、構文と並んでPHPでのプログラミングの基本となる要素であるが、「ユーザー定義関数」として自身で関数を定義することも出来る。</p>
<p>関数については「<a href="http://www.near-mint.com/blog/3808" target="_blank">初心者による初心者のためのPHP講座　第２回　PHPの基本構造</a>」で触れているので、もう一度おさらいして欲しい。</p>
<p>ユーザー定義関数は、比較的小規模な処理を１つにまとめたもので、PHPのプログラムは、複数の「ユーザー定義関数」を組み合わせて実行させることで成立しているとも言える。</p>
<p>他の言語では、PHPの関数のような、ひとまとまりの処理を「サブルーチン」と呼ぶ場合もある。</p>
<p>ユーザー定義関数は、下記のようにfunction文を用いて定義する。</p>
<pre class="brush: php; gutter: true; first-line: 1">function 関数名() {
	処理1;
	処理2;
	処理3;
	.
	.
	.
}</pre>
<p>関数は、１つまたは複数の引数を取ることもあるが、その場合は</p>
<pre class="brush: php; gutter: true; first-line: 1">function 関数名(引数1, 引数2, 引数3...) {
	処理1;
	処理2;
	処理3;
	.
	.
	.
}</pre>
<p>となる。</p>
<p>関数名には、英数字、アンダースコアを使用することが出来るが、最初の一文字は、アルファベットかアンダースコアでなければならない。</p>
<p>戻り値を参照渡しする場合に、「&amp;」で始まる関数を定義することがあるが、厳密には「&amp;」は変数名の一部ではなく、「&amp;関数名」となっている。</p>
<p>ユーザー定義関数を実行する場合は、標準の関数を実行する場合と同様に</p>
<pre class="brush: php; gutter: true; first-line: 1">関数名();

または

関数名(引数1, 引数2, 引数3...);</pre>
<p>とすれば良い。</p>
<p>また、ユーザー定義関数の戻り値を別の関数の引数として用いることも出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
echo my_string();
round(my_value(), 2);
// my_string()とmy_value()はユーザー定義関数
?&gt;</pre>
<p>このあたりは、PHPの標準関数と同じである。</p>
<p>下記の例では、get_date_yesterday()という関数を定義しているが、これは昨日が何曜日だったかを求め、それを戻り値として返す関数である。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
echo get_date_yesterday();

function get_date_yesterday() {
	$yesterday = time() + (60 * 60 * 9) - (60 * 60 * 24 * 1);
	// $yesterday = time() + (60秒 * 60分 * 9時間) - (60秒 * 60分 * 24時間 * 1日);
	$date_yesterday = date(&#039;l&#039;, $yesterday);
	return $date_yesterday;
}
?&gt;</pre>
<p><a href="http://www.php.net/manual/ja/function.time.php" target="_blank">time()</a>関数は、現在の時刻が、1970年1月1日0時0分から何秒経過したか求める関数であるが、 GMT基準であるため、日本時間に修正した上で、1日分の秒数を引いている。</p>
<p>こうして補正した秒数をdate()関数で整形し、曜日を求めている。</p>
<p>最後に<a href="http://php.net/manual/ja/function.return.php" target="_blank">return()</a>を使って、戻り値として変数$date_yesterdayの値を返している。</p>
<p>return()は、処理を中断し、その引数を戻り値として返すが、echo()などと同様に厳密には関数ではないため、通常は、()は使わずに</p>
<pre class="brush: php; gutter: true; first-line: 1">return 引数(戻り値となる値、変数);</pre>
<p>のように記述する。</p>
<p>戻り値として値を返さず、echo()関数で表示することが前提なら</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [7]">&lt;?php
get_date_yesterday();

function get_date_yesterday() {
	$yesterday = time() + (60 * 60 * 9) - (60 * 60 * 24 * 1);
	// $yesterday = time() + (60秒 * 60分 * 9時間) - (60秒 * 60分 * 24時間 * 1日);
	$date_yesterday = date(&#039;l&#039;, $yesterday);
	echo $date_yesterday;
}
?&gt;</pre>
<p>としても良い。これは戻り値を返さない関数になる。</p>
<p>関数は引数を取ることで、更に柔軟になる。</p>
<p>以下の例では、ＧＭＴとの時差に部分と、何日前の部分を引数として指定出来るようになっている。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
echo get_date_before(9, 2);

function get_date_before($diff, $ago) {
	$before = time() + (60 * 60 * $diff) - (60 * 60 * 24 * $ago);
	// $before = time() + (60秒 * 60分 * 9時間) - (60秒 * 60分 * 24時間 * 1日);
	$date_before = date(&#039;l&#039;, $before);
	return $date_before;
}
?&gt;</pre>
<p>上記のサンプルでは、日本時間での一昨日前の曜日が表示されるが、</p>
<pre class="brush: php; gutter: true; first-line: 1">echo get_date_before(-8, 1);</pre>
<p>とすれば、（夏時間の時期を除く）アメリカ太平洋標準時での昨日の曜日となる。</p>
<p>また、下記のように関数の定義内で別の関数を定義し、それを実行することも出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
echo check_holiday(9, 1);

function check_holiday($diff, $ago){

	function get_date_before($diff, $ago) {
		$before = time() + (60 * 60 * $diff) - (60 * 60 * 24 * $ago);
		// $before = time() + (60秒 * 60分 * 9時間) - (60秒 * 60分 * 24時間 * 1日);
		$date_before = date(&#039;l&#039;, $before);
		return $date_before;
	}

	$date = get_date_before($diff, $ago);

	if ($date == &#039;Saturday&#039; || $date == &#039;Sunday&#039;) {
		return &quot;休日&quot;;
	} else {
		return &quot;平日&quot;;
	}

}
?&gt;</pre>
<p>この関数は、曜日が土曜日か日曜日なら「休日」と返す。</p>
<p>このように別の関数の定義をネストする場合は、関数を呼び出す前に、関数を定義しておくことがポイントになる。</p>
<p>また、上記のサンプルは、下記のように記述することも出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
echo check_holiday(9, 1);

function check_holiday($diff, $ago){
	$date = get_date_before($diff, $ago);

	if ($date == &#039;Saturday&#039; || $date == &#039;Sunday&#039;) {
		return &quot;休日&quot;;
	} else {
		return &quot;平日&quot;;
	}

}

function get_date_before($diff, $ago) {
	$before = time() + (60 * 60 * $diff) - (60 * 60 * 24 * $ago);
	// $before = time() + (60秒 * 60分 * 9時間) - (60秒 * 60分 * 24時間 * 1日);
	$date_before = date(&#039;l&#039;, $before);
	return $date_before;
}
?&gt;</pre>
<p>このように記述することでget_date_before()関数を別の処理でも再利用しやすくなる利点もある。</p>
<p>更に下記のように記述すれば、check_holiday()関数は、単に与えられた曜日が平日か休日かを判断する関数となり、汎用性が高くなる。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
echo check_holiday(get_date_before(9, 1)).&quot;&lt;br /&gt;&quot;;
echo check_holiday(get_date_before(-8, 2)).&quot;&lt;br /&gt;&quot;;
echo get_date_before(-8, 2);

function check_holiday($date){

	if ($date == &#039;Saturday&#039; || $date == &#039;Sunday&#039;) {
		return &quot;休日&quot;;
	} else {
		return &quot;平日&quot;;
	}

}

function get_date_before($diff, $ago) {
	$before = time() + (60 * 60 * $diff) - (60 * 60 * 24 * $ago);
	// $before = time() + (60秒 * 60分 * 9時間) - (60秒 * 60分 * 24時間 * 1日);
	$date_before = date(&#039;l&#039;, $before);
	return $date_before;
}
?&gt;</pre>
<p>関数を定義する際は、出来る限り再利用しやすい形にした方が、プログラミングの効率も良い。</p>
<p>また、似たような処理を複数回記述する必要がある場合は、その部分をユーザー定義関数として独立させた方が良い。</p>
<p>以上のような処理は、ユーザー定義関数を使わなくとも簡単に記述できる。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$diff = 9;
$ago = 1;

$before = time() + (60 * 60 * $diff) - (60 * 60 * 24 * $ago);
// $before = time() + (60秒 * 60分 * 9時間) - (60秒 * 60分 * 24時間 * 1日);
$date_before = date(&#039;l&#039;, $before);

if ($date_before == &#039;Saturday&#039; || $date_before == &#039;Sunday&#039;) {
	echo &quot;休日&quot;;
} else {
	echo &quot;平日&quot;;
}
?&gt;</pre>
<p>しかし、処理の再利用を前提とした場合、ユーザー定義関数が重要であることの理解は難しくないだろう。</p>
<p>関数を自身で定義し、複雑な処理を記述出来るようになると、必ず「変数のスコープ」を意識する必要が生じる。</p>
<p>「変数のスコープ」については、別の機会にお話ししたいと考えている。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/5272/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/5272" />
	</item>
		<item>
		<title>Plugin Directoryの統計情報を記事で表示出来るようにするプラグイン「Plugin Directory Stats」</title>
		<link>http://www.near-mint.com/blog/5190</link>
		<comments>http://www.near-mint.com/blog/5190#comments</comments>
		<pubDate>Mon, 05 Mar 2012 13:11:43 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=5190</guid>
		<description><![CDATA[「WordPress.ORG」の「Plugin Directory」から統計情報を取得し、投稿、固定ページ、ウェイジェットの中で表示できるようにするプラグイン「Plugin Directory Stats」をリリースした &#8230; <a class="more-link" href="http://www.near-mint.com/blog/5190">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「WordPress.ORG」の「<a href="http://wordpress.org/extend/plugins/" target="_blank">Plugin Directory</a>」から統計情報を取得し、投稿、固定ページ、ウェイジェットの中で表示できるようにするプラグイン「Plugin Directory Stats」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=plugin-directory-stats_0.1.zip" title="Plugin Directory Stats"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.0.1　2012/03/05</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/plugin-directory-stats " target="_blank">Plugin Directory Stats</a>」をダウンロード</strong></p>
<p>「Plugin Directory Stats」は、「Plugin Directory」からダウンロード数などの統計情報を取得し、ショートコードを使ってそれらを投稿、固定ページ、ウェイジェットの中で表示させることができる。</p>
<p>統計情報の取得にAPIと独自の仕組みを利用しているが、どちらもプラグインディレクトリのページをリクエストし、統計情報を取得する仕組みになっている。</p>
<p>つまりは、訪問者には見えない部分で、自サイトのページ以外にプラグインディレクトリのページを閲覧することになるため、サイトのパフォーマンスに少なからず影響を与える。</p>
<p>度が過ぎればWordPress.COMに対しても影響は皆無ではない。</p>
<p>そのため、原則として、プラグインの作者が、自身のプラグインの統計情報を自分のサイトで表示させる用途に向くプラグインである。</p>
<p>ただし、大量のプラグインの統計情報を表示させるような用途には向かない。</p>
<p>プラグインの利用者のサイト、WordPress.COMへの負荷を軽減するため、取得した情報は一定時間（デフォルトで3時間）キャッシュし、頻繁にページのリクエストを発生させない仕様になっている。</p>
<p>そのため表示される統計情報はリアルタイムの情報ではない。</p>
<p>キャッシュする時間を短くすることも出来るが、そもそも、リアルタイム性が重要な情報ではないので、可能な限り長めに設定して欲しい。</p>
<p>なお、統計情報は、プラグイン毎、作者者毎に独立してキャッシュされる仕組みであり、全情報が同時に更新されるとは限らない。</p>
<p>キャッシュの有効時間を過ぎた場合以外にもキャッシュが更新のタイミングがあり、UTCの午前0時（日本時間 午前9時）を過ぎ、日付が変わった後に、このプラグインのショートコードが記述されたページに訪問があった場合にもキャッシュが更新される。</p>
<p>以下は、このプラグインを使って統計情報の表示させた場合の例である。</p>
<p><strong>・特定のプラグインの統計情報</strong></p>
<p><p class="plugin-basic-stats"><strong>Version: </strong>0.1.4<br /><strong>Last Updated: </strong>2012-05-15<br /><strong>Relase: </strong>2012-03-05<br /><strong>Requires: </strong>2.8<br /><strong>Tested up to: </strong>3.3.2<br /><strong>Downloads: </strong>567<br /><strong>Average Rating: </strong>5/5 (2 ratings)</p></p>
<p><strong>・作者毎のプラグインリスト</strong></p>
<p><p class="plugin-list-all"><ul><li><strong><a href="http://wordpress.org/extend/plugins/plugin-directory-stats/">Plugin Directory Stats</a></strong><br /><small>Downloads: 567</small></li><li><strong><a href="http://wordpress.org/extend/plugins/codemirror-for-codeeditor/">CodeMirror for CodeEditor</a></strong><br /><small>Downloads: 1,755</small></li><li><strong><a href="http://wordpress.org/extend/plugins/post2pdf-converter/">POST2PDF Converter</a></strong><br /><small>Downloads: 8,416</small></li><li><strong><a href="http://wordpress.org/extend/plugins/ez-zenback/">EZ zenback</a></strong><br /><small>Downloads: 1,823</small></li><li><strong><a href="http://wordpress.org/extend/plugins/wp-syntaxhighlighter/">WP SyntaxHighlighter</a></strong><br /><small>Downloads: 23,288</small></li><li><strong><a href="http://wordpress.org/extend/plugins/tinymce-backslash-button/">TinyMCE Backslash Button</a></strong><br /><small>Downloads: 294</small></li><li><strong><a href="http://wordpress.org/extend/plugins/syntaxhighlighter-tinymce-button/">SyntaxHighlighter TinyMCE Button</a></strong><br /><small>Downloads: 10,576</small></li><li><strong><a href="http://wordpress.org/extend/plugins/wp-wapuu-widget/">WP Wapuu Widget</a></strong><br /><small>Downloads: 339</small></li></ul></p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/5190/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/5190" />
	</item>
		<item>
		<title>トラックバックスパム対策に適したWordPressプラグイン</title>
		<link>http://www.near-mint.com/blog/5178</link>
		<comments>http://www.near-mint.com/blog/5178#comments</comments>
		<pubDate>Wed, 29 Feb 2012 16:15:09 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[スパム]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=5178</guid>
		<description><![CDATA[先日、突然、トラックバックスパムが急増して、削除しても直ぐにトラックバックスパムを受信してしまうような状況に陥ってしまった。 コメントは「DISQUS」を使用しているので、「DISQUS」側でコメントスパム対策を行なって &#8230; <a class="more-link" href="http://www.near-mint.com/blog/5178">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>先日、突然、トラックバックスパムが急増して、削除しても直ぐにトラックバックスパムを受信してしまうような状況に陥ってしまった。</p>
<p>コメントは「<a href="http://disqus.com/" target="_blank">DISQUS</a>」を使用しているので、「DISQUS」側でコメントスパム対策を行なっているが、トラックバック（ピンバック）に関しては対策を行なっていなかった事が原因だが、やはり事前に対策を講じておくべきだったと反省している。</p>
<p>コメントスパムやトラックバックスパム対策と言えば「<a href="http://wordpress.org/extend/plugins/akismet/" target="_blank">Akismet</a>」が定番であるが、対象がトラックバックに絞られるため、もっとシンプルなトラックバックスパムに特化したプラグインの方が好ましい。</p>
<p>また、私のケースでは、記事へのリンクが含まれないサイトからのトラックバックを禁止する機能があれば十分だろうと思われたので、そのようなプラグインを探して見ると「<a href="http://wordpress.org/extend/plugins/simple-trackback-validation/" target="_blank">Simple Trackback Validation</a>」というプラグインが見つかった。</p>
<p>ところが、残念なことに「Simple Trackback Validation」は、長らくアップデートされていないので、出来れば使用は避けたい。</p>
<p>更に調べると、派生として「<a href="http://wordpress.org/extend/plugins/simple-trackback-validation-with-topsy-blocker/" target="_blank">Simple Trackback Validation with Topsy Blocker</a>」というプラグインが存在することが分かったので、こちらを使うことにした。</p>
<p>「Simple Trackback Validation with Topsy Blocker」は、「Simple Trackback Validation」の基本機能に加えて、「topsy.com blocker」という外部サービスを利用できるようになっている。</p>
<p>実際のところ、基本機能に違いがあるかは分からないが、単にリリースが新しいという理由で「Simple Trackback Validation with Topsy Blocker」を選んだ。</p>
<p>「Simple Trackback Validation with Topsy Blocker」では、トラックバックスパムの受信を拒否する以外に、承認待ちとして保存したり、スパムとしてマークして保存することも出来る。</p>
<p>スパム判定に「topsy.com blocker」という外部サービスを利用している点が、このプラグインの特徴であるが、これに加えて、次のような条件でもスパム判定を行う。</p>
<p>まず、IPアドレスをチェックする機能があり、トラックバックの送信元IPアドレスと、トラックバック元のサイトのIPアドレスを比較し、一致しなければスパムと判定される。</p>
<p>つまり、ツールなどを使って、実際のサイト以外からトラックバックが送信されたケースがこれに該当する。</p>
<p>また、トラックバック元のサイトに投稿へのリンクが含まれなければ、スパムと判定する。</p>
<p>これらの判定条件は、設定画面でON/OFFでき、かつ細かな設定が出来るようになっている。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2012/02/simple-trackback-validation-with-topsy-blocker_settings.jpg" rel="lightbox[5178]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2012/02/simple-trackback-validation-with-topsy-blocker_settings-247x300.jpg" alt="Simple Trackback Validation with Topsy Blockerの設定" title="Simple Trackback Validation with Topsy Blockerの設定" width="247" height="300" class="alignnone size-medium wp-image-5206" /></a></p>
<p>「Simple Trackback Validation with Topsy Blocker」は、シンプルなプラグインではあるが、トラックバックスパムに対抗するための機能は十分に備えており、実際、これでトラックバックスパムを完全に拒否することが出来た。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/5178/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/5178" />
	</item>
		<item>
		<title>Plugin Directoryから削除されたプラグインを検知する</title>
		<link>http://www.near-mint.com/blog/5149</link>
		<comments>http://www.near-mint.com/blog/5149#comments</comments>
		<pubDate>Mon, 20 Feb 2012 15:27:58 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=5149</guid>
		<description><![CDATA[このサイトで使用しているプラグインは、未公開の自作品を除けば全て「WordPress.ORG」の「Plugin Directory」に登録されたものを使っている。 「Plugin Directory」に登録されたものであ &#8230; <a class="more-link" href="http://www.near-mint.com/blog/5149">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>このサイトで使用しているプラグインは、未公開の自作品を除けば全て「WordPress.ORG」の「<a href="http://wordpress.org/extend/plugins/" target="_blank">Plugin Directory</a>」に登録されたものを使っている。</p>
<p>「Plugin Directory」に登録されたものであれば、ダッシュボードで更新通知を受信できるためアップデートが楽というメリットがあるが、実はもう１つの理由がある。</p>
<p>それは、「Plugin Directory」に登録されたものなら比較的安全だろうという考えに基づいている。</p>
<p>WordPress用のテーマやプラグインは、悪意を持って作ることも簡単である。</p>
<p>実際、そのようなテーマやプラグインは少なくない。</p>
<p>そのため、導入前のチェックが重要になる。</p>
<p>チェックを行うツールとして「<a href="http://wordpress.org/extend/plugins/theme-check/" target="_blank">Theme-Check</a>」と「<a href="http://wordpress.org/extend/plugins/plugin-check/" target="_blank">Plugin-Check</a>」をインストールする手もあるが、これもメッセージの内容が理解できてこそ意味のあるツールなので、敷居は低いとは言えない。</p>
<p>個人的には「Plugin Directory」のプラグインが比較的安全だろうとは思っているが、登録されているプラグイン全てが安全かと言われればそうではなく、そもそも「Plugin Directory」への登録自体が簡単で、ソースコードを提出しなくとも許可される。</p>
<p>実際、登録申請フォーム「<a href="http://wordpress.org/extend/plugins/add/" target="_blank">Add Your Plugin</a>」を見ると、「Plugin URL」の項目が「required(必須)」になっていない。</p>
<p>過去に「Plugin Directory」でセキュリティ上の問題が発生したことがあり、そのタイミング登録申請したプラグインに対してソースコードの提出を求められたので、最近は面倒を避けるために、最初からソースコードも提出しているおり、現在、すべての申請に対してソースコードの提出が求められていないかは分からない。</p>
<p>しかし、現在もノーチェックで登録が許可されている可能性も高い。</p>
<p>そもそも、登録申請から許可されるまでの時間を考えると、ソースコードを提出した場合でも、殆どノーチェックではないかと思われる。</p>
<p>つまり、すべての登録プラグインが、ガイドライン「<a href="http://wordpress.org/extend/plugins/about/guidelines/" target="_blank">Detailed Plugin Guidelines</a>」を守っているとは限らず、「<a href="http://wordpress.org/extend/themes/" target="_blank">Free Themes Directory</a>」に比べると甘いと言える。</p>
<p>とは言え、「Plugin Directory」はユーザー自体が多いので、万が一、悪意のあるプラグインが登録された場合でも、ある程度の期間公開されれば、ユーザーによって問題が報告され「Plugin Directory」から削除される。</p>
<p>公開からある程度時間の経過しているプラグインは、より安全であるとは言えるだろう。</p>
<p>ただし、公開間もないプラグインが全て危険という意味ではないので誤解のないように。</p>
<p>また「Plugin Directory」から削除される理由としては、プラグインの作者の都合であるケースもあるため、削除されたからと言って危険なプラグインだったとは限らない。</p>
<p>私は、以前から「Plugin Directory」に一度登録された後に削除されたプラグインを簡単に調べる方法が欲しいと思っていた。</p>
<p>削除されたプラグインは問題があった可能性もあるので、それを知りたいと言う理由もあるが、それに加えて運用上の理由が大きい。</p>
<p>私の場合は、ダッシュボードでの更新通知に完全に頼っているので、更新通知によってプラグインをアップデートしている。</p>
<p>更新通知がない場合は、それが単にアップデートが無いだけなのか、「Plugin Directory」から削除されたためなのか知る手段がないので、単にアップデートがないと考えるしかなくなる。</p>
<p>その結果、作者の意思で「Plugin Directory」から登録を削除し、「Plugin Directory」以外の場所で公開されている場合でも、アップデートがないと思って、古いバージョンを使い続けることになるかもしれないからだ。</p>
<p>この問題に対処する１つの方法として、先日「<a href="http://wordpress.org/extend/plugins/no-longer-in-directory/" target="_blank">No Longer in Directory</a>」というプラグインを見つけた。</p>
<p>このプラグインは、「Plugin Directory」から削除されたプラグインのリストを保持している。</p>
<p>リストは、バージョン1.0でも8,000行以上もある。</p>
<p>ダッシュボードの「プラグイン」-&gt;「No Longer in Directory」にアクセスすると、インストールされたプラグインの中にリストにマッチするものないか調べ、マッチするものがあれば、更にそのプラグインのページが「Plugin Directory」に存在するかHTTP requestによって調べ、ページがなければ、今、現在も「Plugin Directory」から削除されたままであると判断し、警告を表示する仕様になっている。</p>
<p>この方法であれば、リストが間違っていたり、不幸な偶然でリスト致してしまわない限り「Plugin Directory」以外からダウンロードしたプラグインが誤検知されることはない。</p>
<p>大前提としてリストが正確で、今後も更新され続けることが重要であるが、この問題の解決の１つの手段にはなりそうだ。</p>
<p>あまりダウンロードされないと、作者も更新しなくなる可能性があるので、再度、「<a href="http://wordpress.org/extend/plugins/no-longer-in-directory/" target="_blank">No Longer in Directory</a>」を宣伝しておく。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/5149/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/5149" />
	</item>
		<item>
		<title>POST2PDF Converter バージョン0.4　リリース</title>
		<link>http://www.near-mint.com/blog/5129</link>
		<comments>http://www.near-mint.com/blog/5129#comments</comments>
		<pubDate>Thu, 16 Feb 2012 00:47:37 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[TCPDF]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=5129</guid>
		<description><![CDATA[WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter バージョン0.4」をリリースした。 最新の「POST2PDF Converter」をダウンロ &#8230; <a class="more-link" href="http://www.near-mint.com/blog/5129">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter バージョン0.4」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=post2pdf-converter_0.4.zip" title="POST2PDF Converter"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.0.4　2012/02/16</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/post2pdf-converter">POST2PDF Converter</a>」をダウンロード</strong></p>
<p>バージョン0.4では、作成されたPDFをキャッシュする機能を追加した。</p>
<p>過去のバージョンでは、ダウンロードリンクがクリックされる度に、PDFへの変換処理を行う仕様であったが、新しく追加されたキャッシュを有効にすることで、一度変換が行われた投稿に関しては変換を行わず、キャッシュからダウンロードされるようになり、サーバーの負荷が軽減されるようになった。</p>
<p>キャッシュの保持期間の設定は出来ず、無制限であるが、記事の内容が変更された場合は、更新後の最初ダウンロードのタイミングで個別にキャッシュは更新され、変更内容がPDFに反映される。</p>
<p>また、設定のリセットを含め、PDFの内容に影響を与える設定変更を行った場合や、キャッシュを無効にした場合には、すべてのキャッシュファイルがクリアされるようになっている。</p>
<p>記事とキャッシュの内容の不一致が起こらないように配慮しており、手動でキャッシュをクリアすることも出来るが、これは殆ど使う必要はないだろう。</p>
<p>記事とキャッシュの不一致が起こると考えられるケースは、直接、データベース上の記事データを変更した場合で、これをダッシュボード上から実行できるプラグインもあるが、通常の仕様の範囲では、まず、記事とキャッシュの不一致は発生しないと考えて良いだろう。</p>
<p>なお、ダッシュボードからプラグインの自動更新を行った場合も、キャッシュはクリアされてしまうため、これを避けたいならば、アップデートの際、手動で上書きインストールを行えば良い。</p>
<p>キャッシュは、「プラグインディレクトリ/post2pdf-converter/pdfs」に格納されている。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/5129/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/5129" />
	</item>
		<item>
		<title>初心者による初心者のためのPHP講座　第8回　ループ処理</title>
		<link>http://www.near-mint.com/blog/5058</link>
		<comments>http://www.near-mint.com/blog/5058#comments</comments>
		<pubDate>Mon, 13 Feb 2012 15:14:38 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP講座]]></category>
		<category><![CDATA[ネット・PC]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=5058</guid>
		<description><![CDATA[PHPでは、同じ処理を繰り返し実行するための「ループ処理」を記述出来る。 ループ処理は、PHPでは、出番が多い構文であり、必ずマスターしておくこと。 while構文 while構文はシンプルなループを記述するための構文で &#8230; <a class="more-link" href="http://www.near-mint.com/blog/5058">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>PHPでは、同じ処理を繰り返し実行するための「ループ処理」を記述出来る。</p>
<p>ループ処理は、PHPでは、出番が多い構文であり、必ずマスターしておくこと。</p>
<h2><strong>while構文</strong></h2>
<p>while構文はシンプルなループを記述するための構文で、if文と似ている。</p>
<pre class="brush: php; gutter: true; first-line: 1">while (式) {
	処理
}</pre>
<p>if文の場合は、式が真の場合に処理を実行するが、while文の場合は、式が真である限り、同じ処理を繰り返し実行する。</p>
<p>下記のサンプルは、$countが6未満であれば処理を繰り返す。</p>
<p>$countの初期値は1であり、処理が実行される度に1加算される。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$count = 1;
while ($count &lt; 6) {
        echo $count;
	$count++;
}
?&gt;</pre>
<p>従って、上記のサンプルを実行すると「12345」と表示される。</p>
<h2><strong>for構文</strong></h2>
<p>for構文は、while構文と比較すると複雑な構文で、繰り返しの条件を定義するために3つの式を必要とする。</p>
<pre class="brush: php; gutter: true; first-line: 1">for (式1; 式3; 式3) {
	処理
}</pre>
<p>式1は、whileを開始した時に1度だけ実行され、式2は、処理に実行を完了する度に実行される。そして、式3が真であれば処理が繰り返される。</p>
<p>複雑ではあるが、以下のように読み替えると理解しやすい。</p>
<pre class="brush: php; gutter: true; first-line: 1">for (初期値; 条件式; 増減) {
	処理
}</pre>
<p>式1で変数の初期値を定義し、式3で変数の増減を定義しておけば、式2の条件式で変数を評価することで意図した回数ループを繰り返すことが出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
for ($count = 1; $count &lt; 6; $count++) {
        echo $count;
}
?&gt;</pre>
<p>上記のサンプルでは、$countの初期値が1で、処理の度に1増える。</p>
<p>そして、$countが6未満なら処理が繰り返されるため、実行すると「12345」と表示される。</p>
<p>次のサンプルでは、複数の変数の初期値と増減を記述している。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
for ($count = 1, $value = 5; $count &lt; 6; $count++, $value--) {
        echo &quot;\$count:&quot;.$count.&quot; \$value:&quot;.$value.&quot;&lt;br /&gt;&quot;;
}
?&gt;</pre>
<p>複数の変数の初期値と増減を記述する場合は、それらをカンマで区切ること。</p>
<p>for構文は、次のように記述しても良い。</p>
<pre class="brush: php; gutter: true; first-line: 1">for (式1; 式2; 式3):
	処理
endfor;</pre>
<h2><strong>do～while構文</strong></h2>
<p>while構文やfor構文が、まず条件式を評価した上で、条件式が真であれば処理を繰り返すのに対して、do～while構文は、まず処理を実行してから、条件式の評価が行われる。</p>
<p>つまり、条件を満たしているか否かに関係なく、少なくとも1回の処理が実行され、2回目以降は、条件式が真である場合のみ繰り返される。</p>
<pre class="brush: php; gutter: true; first-line: 1">do {
	処理スクリプト
} while(式);</pre>
<p>条件評価と処理の順序が逆であるが、基本的にはwhile構文と似ている。</p>
<p>次にサンプルは、$valの初期値が既に条件を満たしていない。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$val = -1;
do {
	echo $val;
} while ($val &gt; 0);
?&gt;</pre>
<p>しかし、do～while構文では、条件の評価より先に処理が実行されるため、「-1」と表示される。</p>
<h2><strong>foreach構文</strong></h2>
<p>foreach構文は、配列を処理するために使われる配列専用のループ構文である。</p>
<p>だからと言って、配列にfor構文などを使用してはいけないという訳ではない。</p>
<p>foreach構文が優れている点は、ごく簡単な記述で、配列から要素を１つずつ取り出して処理出来る点である。</p>
<p>構文は下記のようになる。</p>
<pre class="brush: php; gutter: true; first-line: 1">foreach(配列 as $value) {
	処理
}

または

foreach(配列 as $key =&gt; $value) {
	処理
}</pre>
<p>foreach構文では、配列から要素を取り出し、取り出した要素の値が自動的に変数$valueに代入される。</p>
<p>そして、この処理を、配列の先頭から最後まで繰り返す。</p>
<p>また、演算子「=&gt;」を用いることで、配列から取り出された要素のキーと対応する値を、$key、$valueに代入させることも出来る。</p>
<p>なお、受け皿となる変数名は、$key、$value以外でも構わない。</p>
<p>おそらく、具体的な処理を見た方が理解しやすいだろう。</p>
<p>以下では、全ての要素からキーと値を取り出して表示させてる。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [11,12,13,14,15,16]">&lt;!doctype html&gt;
&lt;?php echo &#039;&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&#039;; ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;ja&quot; xml:lang=&quot;ja&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;foreach文で連想配列を処理&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
$members = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);

foreach($members as $name =&gt; $age) {
	echo &quot;名前：&quot;.$name.&quot;&lt;br /&gt;&quot;;
	echo &quot;年齢：&quot;.$age.&quot;&lt;br /&gt;&lt;br /&gt;&quot;;
}
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><a href="http://www.near-mint.com/blog/sample/8-1.php">上記のスクリプトの実行結果を表示</a></p>
<p>下記のサンプルでは、要素の値の書き換えを行なっている。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$members = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);

foreach($members as $name =&gt; $age) {
	$members[$name] = $age * 2;
}

print_r($members);
?&gt;</pre>
<p>処理としては、単に年齢を2倍しているだけであり、下記のサンプルのように変数の「参照渡し」を利用し、直接、要素を書き換えて同様の処理を行うことも出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$members = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);

foreach($members as $name =&gt; &amp;$age) {
	$age = $age * 2;
}

print_r($members);
?&gt;</pre>
<p>「$gae」ではなく「&amp;$age」としている点がこの処理のポイントである。</p>
<h2><strong>ループのネスト</strong></h2>
<p>ループ内にループを記述して多重ループを構成することも出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$a = 1;

while ($a &lt; 3) {
	$b = 1;

	while ($b &lt; 3) {
		echo &quot;\$a:&quot;.$a.&quot; \$b:&quot;.$b.&quot;&lt;br /&gt;&quot;;
		$b++;
	}

	$a++;
}
?&gt;</pre>
<p>上のサンプルでは、外側のwhile文が1回実行される毎に内側のwhile文が3回実行される。</p>
<p>外側のwhile文は3回実行されるので、内側のwhile文内の処理echo()は、計９回実行されることになる。</p>
<h2><strong>break</strong></h2>
<p>「break」は、switch構文の際にも用いたが、ループ構文に対しても使用可能で、while、for、do～while、foreach構文の処理を中断し、ループを抜けることが出来る。</p>
<p>次の例では、「suzuki」というキーを持つ要素の値を表示している。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$members = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);

foreach($members as $name =&gt; $age) {
	if ($name == &quot;suzuki&quot;) {
		echo $age;
	}
}
?&gt;</pre>
<p>上記の例では、「suzuki」に一致するキーが見つかった時点で、以後の繰り返しは無駄になってしまう。</p>
<p>従って、以下のようにbreakを使ってループから抜けるのが適切な処理と言える。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [7]">&lt;?php
$members = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);

foreach($members as $name =&gt; $age) {
	if ($name == &quot;suzuki&quot;) {
		echo $age;
		break;
	}
}
?&gt;</pre>
<p>無駄な処理は、処理の遅延や負荷を生む原因になるため、breakを使用することを心掛ける必要がある。</p>
<p>ネストされたループ処理をbreakで抜ける場合は注意が必要である。</p>
<p>break文では、ループ構造を抜ける回数を指定できるので、例えば２重のループを完全に抜ける場合は、</p>
<pre class="brush: php; gutter: true; first-line: 1">break 2;</pre>
<p>と言った記述を行う必要がある。</p>
<p>なお、サンプルのようにループ構造を抜ける回数を指定しなかった場合は、「1」と見なされる。</p>
<h2><strong>continue</strong></h2>
<p>ループの中で「<a href="http://php.net/manual/ja/control-structures.continue.php" target="_blank">continue</a>」が記述されていると、それ以降の処理をスキップして、この回の繰り返しを終了し、条件式の評価を行い、真ならば次の繰り返しを実行する。</p>
<p>以下のサンプルでは、「continue」を使って、キーが「yamada」の場合のみ、echo()による出力を行わないようにしている。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [6]">&lt;?php
$members = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);

foreach($members as $name =&gt; $age) {
	if ($name == &quot;yamada&quot;) {
		continue;
	}

	echo &quot;名前：&quot;.$name.&quot;&lt;br /&gt;&quot;;
	echo &quot;年齢：&quot;.$age.&quot;&lt;br /&gt;&lt;br /&gt;&quot;;
}
?&gt;</pre>
<h2><strong>ループとループ内の変数</strong></h2>
<p>以下のサンプルの実行結果が予想出来るだろうか？</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$count = 1;
while($count &lt; 6) {
	echo $count;
	$count++;
}

echo $count;
?&gt;</pre>
<p>これは、どうだろうか？</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
for ($count = 1; $count &lt; 6; $count++) {
        $val = $count *2;
}

echo $count;
?&gt;</pre>
<p>答えは、どちらも「6」である。</p>
<p>条件式やループ内で定義した変数は、ループ終了後も解除されず、生きているので、同じ変数を再度利用する場合は、注意が必要である。</p>
<p>特に複数のwhile文やdo～while文で、条件式に使う変数を使い回す場合は、都度、再定義してリセットすること。</p>
<p>続いて、foreach構文の場合を検証してみよう。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$members = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);

foreach($members as $name =&gt; $age) {
	if ($name == &quot;suzuki&quot;) {
		$members[$name] = $age * 2;
	}
}

echo &quot;\$name:&quot;.$name.&quot;&lt;br /&gt;&quot;;
echo &quot;\$age:&quot;.$age.&quot;&lt;br /&gt;&lt;br /&gt;&quot;;
?&gt;</pre>
<p>上記のサンプルの実行結果は、</p>
<pre class="brush: text; gutter: true; first-line: 1">$name:tanaka
$age:46</pre>
<p>となる。</p>
<p>つまり、キーや値の受け皿となる変数は解除されず、最後に取得した値が格納されたままになっている。</p>
<p>しかし、同様のforeach構文で同じ変数をキーや値の受け皿として使う場合は、再度、配列の先頭から取得し直すため、現状、どのような値が格納されているかは問題にならない。</p>
<p>とは言え、ループが終了した時点で、これらは基本的に不要な変数となるので、<a href="http://www.php.net/manual/ja/function.unset.php" target="_blank">unset()</a>関数で変数の割り当てを解除し、メモリから解放すると良い。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [10,11]">&lt;?php
$members = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);

foreach($members as $name =&gt; $age) {
	if ($name == &quot;suzuki&quot;) {
		$members[$name] = $age * 2;
	}
}

unset($name);
unset($age);
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/5058/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/5058" />
	</item>
		<item>
		<title>PDFファイルを生成するためのPHPライブラリ「TCPDF」</title>
		<link>http://www.near-mint.com/blog/5040</link>
		<comments>http://www.near-mint.com/blog/5040#comments</comments>
		<pubDate>Sun, 05 Feb 2012 18:35:23 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[TCPDF]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=5040</guid>
		<description><![CDATA[昨年末にWordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン、「POST2PDF Converter」をリリースしたところ、予想外に反響があった。 そもそも、同様の機能を持つプラグイン &#8230; <a class="more-link" href="http://www.near-mint.com/blog/5040">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>昨年末にWordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン、「<a href="http://www.near-mint.com/blog/software/post2pdf-converter" target="_blank">POST2PDF Converter</a>」をリリースしたところ、予想外に反響があった。</p>
<p>そもそも、同様の機能を持つプラグインは既に複数存在しており、「POST2PDF Converter」は、特に目新しいプラグインではないのであるが・・・。</p>
<p>投稿や固定ページをPDFへ変換するプラグインのうち、人気のものは外部のオンラインサービスを利用してPDFファイルの変換している。</p>
<p>例えば、「<a href="http://wordpress.org/extend/plugins/printfriendly/" target="_blank">Print Friendly and PDF Button</a>」は、「<a href="http://www.printfriendly.com/" target="_blank">printfriendly</a>」と言うサービスを利用してPDFに変換している。</p>
<p>また、「<a href="http://wordpress.org/extend/plugins/pdf24-post-to-pdf/" target="_blank">PDF24 Article To PDF</a>」は、「<a href="http://en.pdf24.org/" target="_blank">PDF24</a>」というサービスを利用しており、「<a href="http://wordpress.org/extend/plugins/joliprint/" target="_blank">PDF &amp; Print Button Joliprint</a>」は、「<a href="http://joliprint.com/" target="_blank">joliprint</a>」を利用している。</p>
<p>これらのサービスは、PDF変換以外の機能も提供しているケースが多く、概ね高機能である。</p>
<p>対して「POST2PDF Converter」は、「<a href="http://www.tcpdf.org/" target="_blank">TCPDF</a>」というオープンソースのPHPライブラリを利用しており、外部サービスに依存せず、サーバー上で変換を行う。</p>
<p>もっとも、「TCPDF」を利用したプラグインは、以前から他にも存在しており、この点でも「POST2PDF Converter」が特に目新しいものでは無いのであるが・・・。</p>
<p>どちらかと言えば、「TCPDF」を利用したプラグインは、WordPressのプラグインの中ではマイナーな部類になるが、それは「TCPDF」が機能的に劣ると言うことではなく、UTF-8のWordPressコンテンツとも基本的に相性が良い。</p>
<p>「TCPDF」は、イタリア人のNicola Asuni氏（Tecnick.com S.r.l）によって開発されたPHPライブラリであり、「<a href="http://www.fpdf.org" target="_blank">FPDF</a>」の派生である。</p>
<p>このライブラリを使用するには、PHP 5が必要であるが、PHP 4用のパッケージも用意されている。</p>
<p>PHPのライブラリであるが故に、WordPressとの相性も良く、簡単な記述でDBからHTML形式のコンテンツ取得し、それを「TCPDF」に渡してPDF形式に変換することが出来る。</p>
<p>また、グラフやQRコードなどのバーコードの描画も可能であり、工夫次第で、かなり凝ったPDFを生成できるようになっている。</p>
<p>APIは単純とは言えないが、僅かなコードの追加でHTMLをPDFに変換するための処理を記述できる。<br />
WordPressのようにコンテンツをHTML形式で取得し易いシステムであれば、導入に苦はないはずである。</p>
<p>PDFへの変換処理に関しては「<a href="http://www.tcpdf.org/examples.php" target="_blank">TCPDF Examples</a>」でサンプルが用意されているので、これを真似て書くと手っ取り早いだろう。</p>
<p>少し版は古いが「<a href="http://www.monzen.org/" target="_blank">MONZEN.ORG</a>」で日本語ドキュメントが用意されているので、これも参考になる。</p>
<ul>
<li><a href="http://www.monzen.org/Refdoc/tcpdf/" target="_blank">TCPDFについて</a></li>
<li><a href="http://www.monzen.org/doc/tcpdf/jman/" target="_blank">TCPDF マニュアル 日本語版</a></li>
</ul>
<p>ディレクトリパス、フォント、フォントサイズと言った設定パラメーターは「/config/tcpdf_config.php」で定数として設定する形になっており、必要に応じてこれを編集する。</p>
<p>「/config/lang」ディレクトリには、各言語用の設定ファイルが格納されている。</p>
<p>バージョン5.9.145からは日本語用の設定ファイル「jpn.php」が同行されているので、これを使えば良いが、設定ファイルの記述自体は単純であり、足りない言語の設定ファイルも簡単に自作することが出来る。</p>
<p>$l['a_meta_charset'] で文字コード、$l['a_meta_dir']で記述方向（左から右ならltr、右から左ならrtl）、$l['a_meta_language']で言語コード定義する。</p>
<p>そして、$l['w_page']では、「page」の訳を定義する。</p>
<p>下記は、UTF-8、日本語の場合の記述例である。</p>
<pre class="brush: php; gutter: true; first-line: 1">// Japanese

global $l;
$l = Array();

// PAGE META DESCRIPTORS --------------------------------------

$l[&#039;a_meta_charset&#039;] = &#039;UTF-8&#039;;
$l[&#039;a_meta_dir&#039;] = &#039;ltr&#039;;
$l[&#039;a_meta_language&#039;] = &#039;ja&#039;;

// TRANSLATIONS --------------------------------------
$l[&#039;w_page&#039;] = &#039;ページ&#039;;

//============================================================+
// END OF FILE
//============================================================+</pre>
<p>この設定ファイルは、最初にrequire_once()で読みこめば良い。</p>
<p>更にもう１つ、言語によって変更すべき要素があり、それがフォントである。</p>
<p>フォントは、setHeaderFont、setFooterFont、SetFont、SetDefaultMonospacedFontメソッドで指定する。</p>
<p>なお、SetDefaultMonospacedFontでは、プロポーショナルフォントを指定することは出来ず、等幅フォントを指定する必要がある。</p>
<p>標準の日本語フォントは、</p>
<ul>
<li>cid0jp（ArialUnicodeMS）</li>
<li>kozgopromedium（Kozuka Gothic Pro）</li>
<li>kozminproregular（Kozuka Mincho Pro）</li>
</ul>
<p>の３つであるが、残念ながら文字化け等が発生するケースがある。</p>
<p>場合によっては、オープンソースのTrueType日本語フォントなどをTCPDF用に変換して、それを使った方が良いかもしれない。</p>
<p>バージョン5.9.123からは、TrueTypeフォントをTCPDF用に変換するためのメソッド、addTTFfont()が追加されたので、フォントの変換の際にはこれを利用する。</p>
<p>また、5.9.122以前に<a href="http://tcpdf.git.sourceforge.net/git/gitweb.cgi?p=tcpdf/tcpdf;a=tree;f=fonts/utils;h=bb226721af699d7ce3b5fff6f612c115a9a3a1a3;hb=30b07848b44dd53e2519617542f67e4e83f53134" target="_blank">同梱されていたツール</a>を使っても良い。</p>
<p>なお、このサイトでもオープンソースの<a href="http://www.near-mint.com/blog/software/rcjfont-for-tcpdf">IPAフォントと梅フォントをTCPDF用に変換したもの</a>を公開している。</p>
<p>TCPDFは、HTMLタグを解釈し、タグに従ってレイアウトを行った上でPDFに変換するが、全てのタグや属性を正しく解釈できる訳ではない。</p>
<p>また、通常ウェブサイトは、別途CSSを読み込んでレイアウトを行なっているが、このCSSがPDFに反映される訳でもない。（あくまでHTMLのみ解釈する。）</p>
<p>そのため、生成したPDFは、実際のウェブサイトとレイアウトが異なってしまう場合が多い。</p>
<p>必要であれば、HTMLにstyle属性を付加するなどして、微調整する必要がある。</p>
<p>PDFに変換される事を意識してHTMLを書くのも良いし、HTMLをそのままTCPDFに渡すのではなく、その前の段階で、HTMLをTCPDFに最適化させる処理を入れても良い。</p>
<p>拘れば、ここが最も面倒な作業になるだろう。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/5040/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/5040" />
	</item>
		<item>
		<title>Disqus Comment System for EZ zenback Ver. 2.70 modified 2.0 リリース</title>
		<link>http://www.near-mint.com/blog/4980</link>
		<comments>http://www.near-mint.com/blog/4980#comments</comments>
		<pubDate>Sat, 28 Jan 2012 01:08:12 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[DISQUS]]></category>
		<category><![CDATA[EZ zenback]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4980</guid>
		<description><![CDATA[「Disqus Comment System for EZ zenback Ver. 2.70 modified 2.0」を公開した。 最新の「Disqus Comment System for EZ zenback」を &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4980">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「Disqus Comment System for EZ zenback Ver. 2.70 modified 2.0」を公開した。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=disqus-comment-system.2.70_for_ez_zenback_2.0.zip" title="Disqus Comment System"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.2.70 for EZ zenback modified 2.0　2012/01/28</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/disqus-comment-system-for-ez-zenback">Disqus Comment System for EZ zenback</a>」をダウンロード</strong></p>
<p>このバージョンは、リリース予定の「<a href="http://www.near-mint.com/blog/software/ez-zenback">EZ zenback</a>」（バージョン1.5.2を予定）に対応したバージョンであり、「EZ zenback」のユーザーは、事前にこのバージョンにアップデートして欲しい。</p>
<p>勿論、現行の「EZ zenback バージョン1.5」および過去のリリースも対応している。</p>
<p>「Disqus Comment System for EZ zenback Ver. 2.70 modified 2.0」は、「<a href="http://www.near-mint.com/blog/software/ez-zenback">EZ zenback</a>」との併用が前提となっているので、これ単体では使用しないこと。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4980/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4980" />
	</item>
		<item>
		<title>POST2PDF Converter バージョン0.3　リリース</title>
		<link>http://www.near-mint.com/blog/4965</link>
		<comments>http://www.near-mint.com/blog/4965#comments</comments>
		<pubDate>Thu, 26 Jan 2012 04:56:21 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[TCPDF]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4965</guid>
		<description><![CDATA[WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter バージョン0.3」をリリースした。 最新の「POST2PDF Converter」をダウンロ &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4965">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter バージョン0.3」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=post2pdf-converter_0.3.zip" title="POST2PDF Converter"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.0.3　2012/01/26</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/post2pdf-converter">POST2PDF Converter</a>」をダウンロード</strong></p>
<p>「POST2PDF Converter」は、一度、変換されたPDFを保存せず、ダウンロードリンクがクリックされる度に、新たにPDFへの変換を行う方式を採用しており、この方法は、記事を変更した場合にも、リアルタイムでPDFにも反映されるというメリットがあるが、サーバーに負荷を掛けると言うデメリットもある。</p>
<p>このあたりは次のバージョンでの改善を考えているが、バージョン0.3では、この問題を解決する１つの手段として設定画面上で管理者が手動で記事をPDFに変換し、ダウンロード出来るようにした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2012/01/post2pdf-converter_pdf_converter1.jpg" rel="lightbox[4965]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2012/01/post2pdf-converter_pdf_converter1-300x142.jpg" alt="POST2PDF Converter PDFファイルの作成" title="POST2PDF Converter PDFファイルの作成" width="300" height="142" class="alignnone size-medium wp-image-5018" /></a></p>
<p>設定画面で作成したPDFファイルに、記事に任意の場所でリンクを貼れば、サーバーに負荷を掛ける事なく、記事をPDF形式でダウンロード出来るようになる。</p>
<p>また、「POST2PDF Converter」がPDF作成のために利用してる「TCPDF」は、PC用のTrueTypeフォントを直接フォントとして使用することが出来ず、予め変換を行う必要があるが、バージョン0.3では、この変換作業を設定画面上で行うこと出来るようになった。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2012/01/post2pdf-converter_font_converter.jpg" rel="lightbox[4965]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2012/01/post2pdf-converter_font_converter-300x135.jpg" alt="POST2PDF Converter フォントの変換" title="POST2PDF Converter フォントの変換" width="300" height="135" class="alignnone size-medium wp-image-5019" /></a></p>
<p>変換できるフォントは、TrueTypeフォント、OpenTypeフォント、Type1フォントなどである。</p>
<p>なお、変換テストは、TrueTypeフォントでしか行なっていない。</p>
<p><span style="text-decoration: underline;">TCPDF用フォントへの変換は、プログラムの改変する行為であり、またPDFで使用すると言うことは、広く一般に配布されるドキュメントでフォントを埋め込む事を意味する。</span></p>
<p>そのため、変換が許されるフォントは、ライセンス上、改変が許され、PDFの埋め込みフォントとして利用でき、作成したPDFの配布が許されているフォントに限られる。</p>
<p>現実的は、オープンソースのフォントや自作のフォントに限られるだろう。</p>
<p>変換後のフォントを再配布する場合も、ラインセンス上、問題がないか確認すること。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4965/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4965" />
	</item>
		<item>
		<title>Google Translate API v1の終了とWordPressの翻訳プラグイン</title>
		<link>http://www.near-mint.com/blog/4905</link>
		<comments>http://www.near-mint.com/blog/4905#comments</comments>
		<pubDate>Sat, 21 Jan 2012 16:21:24 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[翻訳]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4905</guid>
		<description><![CDATA[Googleが無料で提供している翻訳サービス「Google 翻訳」大変便利で、広く使われているが、その無料APIである「Google Translate API v1」が残念なことに昨年12月にサービスを終了し、有料の「 &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4905">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>Googleが無料で提供している翻訳サービス「<a href="http://translate.google.co.jp/" target="_blank">Google 翻訳</a>」大変便利で、広く使われているが、その無料APIである「<a href="http://code.google.com/intl/ja/apis/language/translate/overview.html" target="_blank">Google Translate API v1</a>」が残念なことに昨年12月にサービスを終了し、有料の「Google Translate API v2」のみの提供となってしまった。</p>
<p>WordPressの翻訳系プラグインでも広く使われていたAPIであるので、WordPressへの影響は大きく、これを機に開発を終了してしまったプラグインや、公開されてはいるものの動作しないプラグインが出てきている状況である。</p>
<p>実際、私が使っていたWordPressプラグイン「Gtranslate」も「Google Translate API v1」を使っていたため、機能しなくなった。</p>
<p>また、WordPressプラグインではないが、このブログの下に表示される多機能ツールバー「<a href="http://www.near-mint.com/blog/192">Wibiya</a>」の翻訳サービス「iTranslation」も同様の理由で機能しなくなってしまった。</p>
<p>そのため、代わりのプラグイン、サービスを探す必要が生じた。</p>
<p>APIが公開されている翻訳サービスは数多くあるようであるが、日本語に対応し、対応言語（翻訳可能な言語）が多く、使いやすく、サービスが継続されそうなものとなると殆ど皆無で、「<a href="http://www.microsofttranslator.com/" target="_blank">Bing Translator</a>」の「<a href="http://www.microsofttranslator.com/dev/" target="_blank">Microsoft Translator API</a>」が良さそうである。</p>
<p>ただし、「Google Translate API v1」と比べると対応言語が37と少ないなど、機能面で見劣りすることは否めないが・・・。</p>
<p>そこで「Microsoft Translator API」をサポートするWordPressプラグインを探してみたが、多くのプラグインが「Google Translate API」を採用しており、予想外に見つからない。</p>
<p>それだけ「Google Translate API」が優れているということだろうが、私が探した範囲では、「<a href="http://wordpress.org/extend/plugins/transposh-translation-filter-for-wordpress/" target="_blank">Transposh Translation Filter</a>」が、唯一「Microsoft Translator API」を採用し、まともに使えるプラグインだった。</p>
<p>厳密に言えば、「Transposh Translation Filter」は、「Google Translate API」と「Microsoft Translator API」の両方をサポートしており、「Microsoft Translator API」を使うなら、37の言語、日本語を除いて実質36の言語への翻訳が可能である。</p>
<p>設定画面上で、言語の有効化／無効化を行うが、言語と対応するAPIも分かりやすい。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2012/01/transposh_wordpress_translation_setting.jpg" rel="lightbox[4905]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2012/01/transposh_wordpress_translation_setting-300x139.jpg" alt="Transposh WordPress Translation 言語の設定" title="Transposh WordPress Translation 言語の設定" width="300" height="139" class="alignnone size-medium wp-image-4930" /></a></p>
<p>ただし、言語名の表記が、その言語でされているため、何の言語なのか分からないという難点がある。</p>
<p>言語の選択を行うウィジェットを追加できる他、ブラウザの言語に応じて、予め翻訳済みの記事を自動表示するように設定することも出来る。</p>
<p>実際に「<a href="http://www.near-mint.com/blog/4711">WordPressのショートコードAPI</a>」を英語に翻訳してみると・・・</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2012/01/transposh_wordpress_translation_eng.jpg" rel="lightbox[4905]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2012/01/transposh_wordpress_translation_eng-199x300.jpg" alt="Transposh WordPress Translationで英語に翻訳" title="Transposh WordPress Translationで英語に翻訳" width="199" height="300" class="alignnone size-medium wp-image-4936" /></a></p>
<p>本文だけでなく、タイトル、メニューのラベル、カレンダーと言ったかなり細かなところまで翻訳されていることが分かる。</p>
<p>このプラグインの最大の特徴は、「Google Translate API」と「Microsoft Translator API」を利用した自動翻訳機能を備えながらも、サイトの訪問者などに翻訳して貰う機能を備えている点である。</p>
<p>サイトの訪問者は、自動翻訳による訳文に気に入らない部分があれば、そこを簡単に修正することが出来る。</p>
<p>これを利用すれば、人の手による翻訳で翻訳の精度を上げることが出来るが、もっとも、これは訪問者の協力が得られればの話である。</p>
<p>設定にもよるが、自動翻訳、または人の手による翻訳によって作られた訳文はデータベースに保存されるようで、翻訳の度に必ずしもAPIにアクセスするわけではないようである。</p>
<p>設定項目は多く、細かな設定が出来るプラグインであるが、基本的には、最初の「Supported languages」の設定さえ行えば、問題なく使えるはずだ。</p>
<p>ただし、「wp-config.php」で、$_SERVER['HTTP_ACCEPT_LANGUAGE']を使って定数「WPLANG」の設定を振り分けてローケルを切り替えている場合は、「Enable override for default locale」を無効にしないと、管理画面の表示が思わぬ結果になる。</p>
<p>ちなみに、今のところ、WordPressの翻訳系プラグインは選択肢不足の状況にあるので、もし、人気のプラグインを作りたいなら、翻訳系のプラグインは狙い目かもしれない。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4905/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4905" />
	</item>
		<item>
		<title>Plugin Directoryの自分のプラグインページにバナーを設置する</title>
		<link>http://www.near-mint.com/blog/4876</link>
		<comments>http://www.near-mint.com/blog/4876#comments</comments>
		<pubDate>Mon, 16 Jan 2012 18:30:30 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[バナー]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4876</guid>
		<description><![CDATA[WordPressのプラグイン公開サイトである「WORDPRESS.ORG Plugin Directory」を見ると昨年末より、バナーが表示されているページが増えて来たことに気づくだろう。 これは、昨年末より「Plug &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4876">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>WordPressのプラグイン公開サイトである「<a href="http://wordpress.org/extend/plugins/" target="_blank">WORDPRESS.ORG Plugin Directory</a>」を見ると昨年末より、バナーが表示されているページが増えて来たことに気づくだろう。</p>
<p>これは、昨年末より「Plugin Directory」がバナーの表示をサポートしたからであり、これに関する記事が「<a href="http://wpdevel.wordpress.com/2011/12/21/been-giving-a-lot-of-thought-to-how/" target="_blank">WordPress Development Updates</a>」にMattの手で書かれている。</p>
<p>バナーを表示させるだけでも随分と見栄えが良くなり、プラグインの機能を端的に伝える事も出来る。</p>
<p>プラグインを開発し、「Plugin Directory」で公開しているなら、ぜひバナーを設置したい。</p>
<p>以下、バナーを表示させる方法をまとめる。</p>
<ol>
<li>まず、横772ピクセル、縦250ピクセルの画像を用意する。画像はjpegかpng形式でなければならない。ファイル名は、「<code>banner-772x250.jpg</code>」、または「<code>banner-772x250.png</code>」とすること。</li>
<li>続いて、「assets」というディレクトリを、SVNのルートの作成し、その中に作成した画像を入れてアップロードする。（ローカルで作成して、単にコミットすれば良い。）「assets」の作成場所は「trunk」の中ではない事に注意。</li>
</ol>
<p>以上で、暫くするとバナーが表示されるはずである。</p>
<p>これらの情報は、「<a href="http://wordpress.org/extend/plugins/about/faq/" target="_blank">Developer FAQ</a>」にも書かれており、ここを読むと更に面白いことが出来ることに気づく。</p>
<pre class="brush: text; gutter: true">?banner_url=画像のURL</pre>
<p>というパラメーターをプラグインページのURLに付加することで、指定した画像をバナーに使用して、プラグインページを表示させることが出来る。</p>
<p>以下のURLは、同じプラグインページへのURLであるが、パラメーターによるバナー画像の指定で、バナーが変化することが分かる。</p>
<p><a href="http://wordpress.org/extend/plugins/wp-syntaxhighlighter/" target="_blank">http://wordpress.org/extend/plugins/wp-syntaxhighlighter/</a></p>
<p><a href="http://wordpress.org/extend/plugins/wp-syntaxhighlighter/?banner_url=http://plugins.svn.wordpress.org/wp-wapuu-widget/assets/banner-772x250.png" target="_blank" rel="lightbox[4876]">http://wordpress.org/extend/plugins/wp-syntaxhighlighter/?banner_url=http://plugins.svn.wordpress.org/wp-wapuu-widget/assets/banner-772&#215;250.png</a></p>
<p><span style="font-size: small;">※URL中の「×」が全角で表示されているが、正しくは半角。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4876/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4876" />
	</item>
		<item>
		<title>CodeMirror for CodeEditor バージョン0.5　リリース</title>
		<link>http://www.near-mint.com/blog/4822</link>
		<comments>http://www.near-mint.com/blog/4822#comments</comments>
		<pubDate>Thu, 12 Jan 2012 07:03:40 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[CodeMirror]]></category>
		<category><![CDATA[SyntaxHighlighter]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4822</guid>
		<description><![CDATA[「CodeMirror for CodeEditor バージョン0.5」をリリースした。 最新の「CodeMirror for CodeEditor」をダウンロード バージョン0.5では内包する「CodeMirror」ラ &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4822">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「CodeMirror for CodeEditor バージョン0.5」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=codemirror-for-codeeditor_0.5.zip" title="CodeMirror for CodeEditor"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.0.5　2012/01/12</p>
<p style="text-align: center;"><strong><strong>最新の「<a href="http://www.near-mint.com/blog/software/codemirror-for-codeeditor">CodeMirror for CodeEditor</a>」をダウンロード</strong></strong></p>
<p>バージョン0.5では内包する「<a href="http://codemirror.net/" target="_blank">CodeMirror</a>」ライブラリをアップデートしている。</p>
<p>新機能としては、タブをマーカーで表示して、タブによるインデントを見えるようにする機能が追加された。</p>
<p>また、検索、置換機能が新しくなり、キー操作によって必要な時だけ表示するタイプに変わった。</p>
<p>そのためツールバーは、以前のバージョンに比べてすっきりしている。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2012/01/codemirror-for-codeeditor_0.5_toolbar.jpg" rel="lightbox[4822]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2012/01/codemirror-for-codeeditor_0.5_toolbar-300x78.jpg" alt="CodeMirror for CodeEditor 0.5のツールバー" title="CodeMirror for CodeEditor 0.5のツールバー" width="300" height="78" class="alignnone size-medium wp-image-4897" /></a></p>
<p>例えば、検索機能は、CtrlとFキーの同時押しで起動する。（または、CmdとFキー）</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2012/01/codemirror-for-codeeditor_0.5_search.jpg" rel="lightbox[4822]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2012/01/codemirror-for-codeeditor_0.5_search-300x77.jpg" alt="CodeMirror for CodeEditor 0.5の検索機能" title="CodeMirror for CodeEditor 0.5の検索機能" width="300" height="77" class="alignnone size-medium wp-image-4898" /></a></p>
<p>その他の操作は下記の通り。</p>
<ul>
<li><span style="font-size: small;">下候補：CtrlとGキーを同時に押す。（または、CmdとGキー）</span></li>
<li><span style="font-size: small;">上候補：Shift、CtrlとGキーを同時に押す。（または、Shift、CmdとGキー）</span></li>
<li><span style="font-size: small;">置換：Shift、CtrlとFキーを同時に押す。（または、Cmd、OptionとFキー）</span></li>
<li><span style="font-size: small;">全置換：Shift、CtrlとRキーを同時に押す。（または、Shift、Cmd、OptionとFキー）</span></li>
</ul>
<p>ただし、フルスクリーンモードでは、検索、置換機能が使えなくなった。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4822/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4822" />
	</item>
		<item>
		<title>初心者による初心者のためのPHP講座　第7回　配列</title>
		<link>http://www.near-mint.com/blog/4814</link>
		<comments>http://www.near-mint.com/blog/4814#comments</comments>
		<pubDate>Mon, 09 Jan 2012 15:52:12 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP講座]]></category>
		<category><![CDATA[ネット・PC]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4814</guid>
		<description><![CDATA[「配列」は変数の一種であるが、通常の変数が、１つの変数に１つの値しか格納できないのに対して、「配列」とは、複数の値を格納する変数のことである。 配列は、格納する値同士の紐付けが容易であるため、重宝する場面が多く、出番も多 &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4814">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「配列」は変数の一種であるが、通常の変数が、１つの変数に１つの値しか格納できないのに対して、「配列」とは、複数の値を格納する変数のことである。</p>
<p>配列は、格納する値同士の紐付けが容易であるため、重宝する場面が多く、出番も多いので必ずマスターしておく必要がある。</p>
<p>私の場合、それほど多用するわけではないが、設定パラメーターを格納する際には、よく配列を用いている。</p>
<h2><strong>配列の定義</strong></h2>
<p>例えば、年齢を変数に格納するとしよう。</p>
<p>複数の年齢を格納する場合は、今まで学んだ知識の範囲でこれを記述するとなると、</p>
<pre class="brush: php; gutter: true">&lt;?php
$age1 = 13;
$age2 = 25;
$age3 = 46;
?&gt;</pre>
<p>のように複数の変数を定義する必要がある。</p>
<p>値の数が少ない場合は、上記のような定義も悪くはないが、値の数が1,000個、10,000個となると、定義すべき変数の数が膨大になり、非常に効率が悪い。</p>
<p>しかし、配列を用いれば、複数の値を１つの変数に格納することが出来る。</p>
<p>実際に配列を使って定義すると以下のようになる。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$age[0] = 13;
$age[1] = 25;
$age[2] = 46;
?&gt;</pre>
<p>上記の例では、１つの変数と言うことも出来る配列$ageに全ての構成要素が格納されている。</p>
<p>配列と言っても通常の変数と書式に違いはないが、配列に格納される各要素（値）を定義する場合は、角括弧構文を用いて[キー]を指定する必要がある。</p>
<pre class="brush: php; gutter: true">&lt;?php
$変数名[キー1] = 値1;
$変数名[キー2] = 値2;
$変数名[キー3] = 値3;
?&gt;</pre>
<p>「キー」と「値」は、必ずペアになっており、「キー」に紐付けられた「値」を配列の要素と呼ぶ。</p>
<p>「要素」は「値」が住んでいる部屋で、そのルームナンバーが「キー」と理解すると良いだろう。</p>
<p>配列から値を取り出したい場合も、ルームナンバーである「キー」を使って取り出すことが出来る。</p>
<p>値としては、通常の変数同様に、整数値、浮動小数点、文字列、論理値、NULLが格納できる他、配列を格納することも出来る。</p>
<p>配列を格納する配列を、多次元配列と呼ぶが、これについては後ほど説明する。</p>
<p>以下の例では、配列$ageを定義し、$ageからキー「1」の値を取り出してecho()で表示させている。</p>
<pre class="brush: php; gutter: true">&lt;?php
$age[0] = 13;
$age[1] = 25;
$age[2] = 46;

echo $age[1];
?&gt;</pre>
<p>以上のように、特定の値を取り出す場合にも角括弧構文を用いて、キーで指定する。</p>
<p>キーに0から始まる整数値を使う場合は、下記のように角括弧構文の中のキーを省略して定義することも出来る。</p>
<pre class="brush: php; gutter: true">&lt;?php
$age[] = 13;
$age[] = 25;
$age[] = 46;

echo $age[1];
?&gt;</pre>
<p>上記の例では、キーは省略されているもの、各要素には先頭から順に0、1、２・・・と言った整数値がキーとして与えられており、「25」と表示される。</p>
<p>また、配列は角括弧構文以外でも定義でき、配列の定義のために用意されている<a href="http://php.net/manual/ja/function.array.php" target="_blank">array()</a>関数を使って配列を定義することも出来る。</p>
<pre class="brush: php; gutter: true">&lt;?php
$age = array(13, 25, 46);
?&gt;</pre>
<p>キーは、省略されているが、この場合も、各要素には0から始まる整数値のキーが自動的に割り当てられる。</p>
<p>明示的にキーを書くならば、下記のようになる。</p>
<pre class="brush: php; gutter: true">&lt;?php
$age = array(0 =&gt; 13, 1 =&gt; 25, 2 =&gt; 46);
?&gt;</pre>
<p>array()関数を用いる場合は、演算子「<em>=&gt;</em>」を使って、キーと値の関係を記述し、要素を定義できる。</p>
<p>また、<a href="http://php.net/manual/ja/function.explode.php" target="_blank">explode()</a>関数を使えば、特定の文字で区切られた文字列を配列に格納することが出来る。</p>
<pre class="brush: php; gutter: true">&lt;?php
$str_age = &quot;13,25,46&quot;;
$age = explode(&quot;,&quot;, $str_age);

echo $age[1];
?&gt;</pre>
<p>上記の例では、「,」を区切り文字として「,」で元の文字列を分解し、先頭から順に要素として格納している。結果、「25」と表示される。</p>
<p>その他、<a href="http://www.php.net/manual/ja/function.str-split.php" target="_blank">str_split()</a>関数、<a href="http://www.php.net/manual/ja/function.preg-split.php" target="_blank">preg_split()</a>関数など、戻り値として配列を返す関数は、数多く有り、これらも配列の定義に利用することが出来る。</p>
<h2><strong>空の配列</strong></h2>
<p>array()関数を使って配列を定義し、下記のように引数を省略すれば、要素を持たない空の配列を定義することが出来る。</p>
<pre class="brush: php; gutter: true">&lt;?php
$var = array();

if ($var === NULL) {
	echo &quot;NULLです。&quot;;
} else if (is_array($var)) {
	echo &quot;配列です。&quot;;
}
?&gt;</pre>
<p>ただし、型としては配列であるため、型の違いまで考慮すれば、NULLとは本質的に異なる。</p>
<p>なお、<a href="http://php.net/manual/ja/function.is-array.php" target="_blank">is_array()</a>関数は、変数が配列の場合はtrue、そうでない場合は、falseを返す。</p>
<p>予め空の配列を定義する行為に意味がないわけではなく、配列が要素を持たない場合にも、空の変数ではなく、空の配列として識別が可能であるため、例えば、条件分岐によって要素を与え、条件によっては、全く要素が追加されず、空になるケースが考えられる場合でも、型としては配列であり、それを判定することが出来る。</p>
<p>特に角括弧構文を用いて要素を定義し、配列を組み立てる場合は、１つ目の要素が定義されるまでは、仮に参照したとしても未定義の変数でしかないので、予め、空の配列として定義しておくと良い。</p>
<pre class="brush: php; gutter: true">&lt;?php
$age = array();
$age[0] = 13;
$age[1] = 25;
$age[2] = 46;

echo $age[1];
?&gt;</pre>
<p>些細な事ではあるが、空の変数と区別する場合は重要である。</p>
<h2><strong>配列全体を表示する</strong></h2>
<p>配列全体を表示させる処理を実際のプログラムの中で使うことは、少ないかもしれないが、デバッグ用に出力して配列の中身を確認する必要性が生じるケースは少なくないので、これも覚えておく必要がある。</p>
<p>しかし、下記の例は上手くいかない。</p>
<pre class="brush: php; gutter: true">&lt;?php
$age = array(13, 25, 46);

echo $age;
?&gt;</pre>
<p>それは単純にecho()関数が、キーを指定せずに配列全体を表示させることは出来ず、結果は「Array」と表示してしまうからである。</p>
<p>代わりに<a href="http://php.net/manual/ja/function.print-r.php" target="_blank">print_r()</a>関数、<a href="http://www.php.net/manual/ja/function.var-dump.php" target="_blank">var_dump()</a>関数、<a href="http://www.php.net/manual/ja/function.var-export.php" target="_blank">var_export()</a>関数を使うと良い。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$age = array(13, 25, 46);

print_r($age);
?&gt;</pre>
<h2><strong>連想配列</strong></h2>
<p>「連想配列」と言っても特殊な配列ではなく、整数値ではなく、文字列をキーに持つ要素を格納する配列のことである。</p>
<pre class="brush: php; gutter: true">&lt;?php
$age[&#039;suzuki&#039;] = 13;
$age[&#039;yamada&#039;] = 25;
$age[&#039;tanaka&#039;] = 46;
?&gt;</pre>
<p>や</p>
<pre class="brush: php; gutter: true">&lt;?php
$age = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);
?&gt;</pre>
<p>が「連想配列」になる。</p>
<p>「キー」には、アルファベット、数字、アンダースコアを使うことが出来るが、最初の１文字はアルファベットかアンダースコアである必要がある。</p>
<p>このようにキーに文字列を使い意味を持たせることで、配列の意図がより分かりやすいものになる。</p>
<p>連想配列の場合も、角括弧構文を用いて、キーを指定して配列から値を取り出すことができる。</p>
<pre class="brush: php; gutter: true">&lt;?php
$age = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);

echo $age[&#039;yamada&#039;];
?&gt;</pre>
<h2><strong>多次元配列</strong></h2>
<p>多次元配列とは、値として配列を格納する多重構造の配列である。</p>
<p>値として配列を格納することで、より複雑なツリー構造を構築でき、構造自体は複雑になるかもしれないが、配列の持つ意味は、明示的なものであり、PHPのコードで考えるよりも構造を図示をした方理解しやすいかもしれない。</p>
<p>これまで例では、名前と年齢を紐付けた連想配列を作成したが、ここでは、加えて性別も格納するとする。</p>
<p>以下で、その構造を図示してみた。</p>
<ul>
<li>suzuki</li>
<ul style="list-style-type: disc;">
<li>age：13</li>
<li>sex：male</li>
</ul>
<li>yamada</li>
<ul style="list-style-type: disc;">
<li>age：25</li>
<li>sex：female</li>
</ul>
<li>tanaka</li>
<ul style="list-style-type: disc;">
<li>age：46</li>
<li>sex：male</li>
</ul>
</ul>
<p>黒四角が各要素の「キー」であり、黒丸が値になるが、値は複数あるので、それぞれの黒丸のペアも独立した配列になる。</p>
<p>つまり、連想配列の中で、名前に紐付けられた形で年齢と性別の連想配列を格納する。</p>
<p>ちなみに、これは二次元配列である。</p>
<p>以下、３つの方法で連想配列を定義してみた。</p>
<pre class="brush: php; gutter: true">&lt;?php
// array()関数を使わずに定義
$prof[&#039;suzuki&#039;][&#039;age&#039;] = 13;
$prof[&#039;suzuki&#039;][&#039;sex&#039;] = &#039;male&#039;;
$prof[&#039;yamada&#039;][&#039;age&#039;] = 25;
$prof[&#039;yamada&#039;][&#039;sex&#039;] = &#039;female&#039;;
$prof[&#039;tanaka&#039;][&#039;age&#039;] = 46;
$prof[&#039;tanaka&#039;][&#039;sex&#039;] = &#039;male&#039;;

echo $prof[&#039;yamada&#039;][&#039;sex&#039;];
?&gt;

&lt;?php
// 内包する配列のみarray()関数を使って定義
$prof[&#039;suzuki&#039;] = array(&#039;age&#039; =&gt; 13, &#039;sex&#039; =&gt; &#039;male&#039;);
$prof[&#039;yamada&#039;] = array(&#039;age&#039; =&gt; 25, &#039;sex&#039; =&gt; &#039;female&#039;);
$prof[&#039;tanaka&#039;] = array(&#039;age&#039; =&gt; 46, &#039;sex&#039; =&gt; &#039;male&#039;);

echo $prof[&#039;yamada&#039;][&#039;sex&#039;];
?&gt;

&lt;?php
// 全てにarray()関数を使って定義
$prof = array(
	&#039;suzuki&#039; =&gt; array(&#039;age&#039; =&gt; 13, &#039;sex&#039; =&gt; &#039;male&#039;),
	&#039;yamada&#039;=&gt; array(&#039;age&#039; =&gt; 25, &#039;sex&#039; =&gt; &#039;female&#039;),
	&#039;tanaka&#039; =&gt; array(&#039;age&#039; =&gt; 46, &#039;sex&#039; =&gt; &#039;male&#039;),
);

echo $prof[&#039;yamada&#039;][&#039;sex&#039;];
?&gt;</pre>
<p>おそらく3番目の方法が一番分かりやすいだろう。</p>
<p>末端の値を取り出す場合も、一次元の配列同様に角括弧構文を用いて「キー」で指定する。</p>
<p>ただし、複数のキーを記述する必要がある。</p>
<p>以下のように書いても良いし、以下の例のほうが、その意味が分かりやすいかもしれない。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$val = $prof[&#039;yamada&#039;];
echo $val[&#039;sex&#039;];
?&gt;</pre>
<h2><strong>キーの自動付与</strong></h2>
<p>キーを省略した場合は、自動的に0から始まる整数値がキーとして与えられることは前にも書いたが、ここでは少し複雑な例を扱う。</p>
<p>下記の例では、最後の要素に与えられるキーはどのようになるだろうか？</p>
<pre class="brush: php; gutter: true">&lt;?php
$color[3] = &#039;black&#039;;
$color[11] = &#039;white&#039;;
$color[] = &#039;blue&#039;;
?&gt;</pre>
<p>答えは、「12」である。</p>
<p>上の例では、キーの最大値が11であるため、その続きとして12となる。</p>
<p>これは、次のようにarray()関数を用いた場合も同様である。</p>
<pre class="brush: php; gutter: true">&lt;?php
$color = array(3 =&gt; &#039;black&#039;, 11 =&gt; &#039;white&#039;, &#039;blue&#039;);
?&gt;</pre>
<h2><strong>配列の操作</strong></h2>
<p>ここでは、様々な配列の操作について学ぶ。PHPでは、配列を扱う関数が充実しており、配列に対して様々な処理を簡単に行うことが出来る。</p>
<p>ここでは、一部ではあるが、それらを紹介する。</p>
<p>次の例では、キーとして「2」が与えられている要素が2度定義されている。</p>
<pre class="brush: php; gutter: true">&lt;?php
$color[0] = &#039;black&#039;;
$color[1] = &#039;white&#039;;
$color[2] = &#039;blue&#039;;

$color[2] = &#039;red&#039;;

echo $color[2];
?&gt;</pre>
<p>上記の例では、最終的に「red」と表示される。</p>
<p>つまり、要素を定義し直すことで、配列の要素を上書き出来るのである。</p>
<p>また、要素を削除するには<a href="http://php.net/manual/ja/function.unset.php" target="_blank">unset()</a>関数を使えば良い。</p>
<pre class="brush: php; gutter: true">&lt;?php
$color[0] = &#039;black&#039;;
$color[1] = &#039;white&#039;;
$color[2] = &#039;blue&#039;;

unset($color[2]);

print_r($color);
?&gt;</pre>
<p><a href="http://php.net/manual/ja/function.list.php" target="_blank">list()</a>関数を使えば、配列を分解し、指定した変数に代入し直すことが出来る。</p>
<pre class="brush: php; gutter: true">&lt;?php
$color = array(&#039;black&#039;, &#039;white&#039;, &#039;blue&#039;);
list($val1, $val2, $val3) = $color;

echo $val2;
?&gt;</pre>
<p><a href="http://php.net/manual/ja/function.extract.php" target="_blank">extract()</a>関数は、キーを変数名とした変数に値を格納し、配列を個別の変数に分解してくれる。</p>
<pre class="brush: php; gutter: true">&lt;?php
$age = array(&#039;suzuki&#039; =&gt; 13, &#039;yamada&#039;=&gt; 25, &#039;tanaka&#039; =&gt; 46);
extract($age);

echo $yamada;
?&gt;</pre>
<p>配列に格納される要素の数を知りたいなら、<a href="http://php.net/manual/ja/function.count.php" target="_blank">count()</a>関数を使うと良い。</p>
<pre class="brush: php; gutter: true">&lt;?php
$color = array(&#039;black&#039;, &#039;white&#039;, &#039;blue&#039;);

echo count($color);
?&gt;</pre>
<p><a href="http://www.php.net/manual/ja/function.implode.php" target="_blank">implode()</a>は、指定した文字列で要素の値を結合した文字列を返す。以下の例では「,」で結合されて「black,white,blue」となる。</p>
<pre class="brush: php; gutter: true">&lt;?php
$color = array(&#039;black&#039;, &#039;white&#039;, &#039;blue&#039;);
$color_list = implode(&quot;,&quot;, $color);

echo $color_list;
?&gt;</pre>
<p>配列を値でソートする場合は、昇順なら<a href="http://www.php.net/manual/ja/function.sort.php" target="_blank">sort()</a>関数、降順なら<a href="http://www.php.net/manual/ja/function.rsort.php" target="_blank">rsort()</a>関数を使えば良い。ただし、キーと値との関係は維持されない。</p>
<pre class="brush: php; gutter: true">&lt;?php
$color = array(&#039;black&#039;, &#039;white&#039;, &#039;blue&#039;);
sort($color);

print_r($color);
?&gt;</pre>
<p>また、連想配列を値でソートする場合は、昇順なら<a href="http://www.php.net/manual/ja/function.asort.php" target="_blank">asort()</a>関数、降順なら<a href="http://www.php.net/manual/ja/function.arsort.php" target="_blank">arsort()</a>関数を使う。キーと値の関係は維持される。</p>
<pre class="brush: php; gutter: true">&lt;?php
$name = array(&#039;suzuki&#039; =&gt; &#039;taro&#039;, &#039;yamada&#039;=&gt; &#039;ichiro&#039;, &#039;tanaka&#039; =&gt; &#039;ai&#039;);

asort($name);

print_r($name);
?&gt;</pre>
<p>連想配列をキーでソートするなら<a href="http://www.php.net/manual/ja/function.ksort.php" target="_blank">ksort()</a>関数、<a href="http://www.php.net/manual/ja/function.krsort.php" target="_blank">krsort()</a>関数を使う。この場合も、キーと値の関係は維持される。</p>
<pre class="brush: php; gutter: true">&lt;?php
$name = array(&#039;suzuki&#039; =&gt; &#039;taro&#039;, &#039;yamada&#039;=&gt; &#039;ichiro&#039;, &#039;tanaka&#039; =&gt; &#039;ai&#039;);

ksort($name);

print_r($name);
?&gt;</pre>
<p>複数の配列をマージ（結合）するなら、<a href="http://php.net/manual/ja/function.array-merge.php" target="_blank">array_merge()</a>関数を使えば良い。</p>
<pre class="brush: php; gutter: true">&lt;?php
$name1 = array(&#039;suzuki&#039;, &#039;yamada&#039;, &#039;tanaka&#039;);
$name2 = array(&#039;yamamoto&#039;, &#039;takahashi&#039;, &#039;honda&#039;);

$new_array = array_merge($name1, $name2);

print_r($new_array);
?&gt;</pre>
<p>以上は一例であり、<a href="http://php.net/manual/ja/ref.array.php" target="_blank">配列を処理できる関数</a>は数多く存在する。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4814/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4814" />
	</item>
		<item>
		<title>EZ zenback バージョン1.5 リリース</title>
		<link>http://www.near-mint.com/blog/4780</link>
		<comments>http://www.near-mint.com/blog/4780#comments</comments>
		<pubDate>Thu, 05 Jan 2012 03:24:48 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[zenback]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4780</guid>
		<description><![CDATA[「EZ zenback バージョン1.5」をリリースした。 最新の「EZ zenback」をダウンロードする バージョン1.5では、zenbackを表示させる手段として、ショートコードをサポートした。 書式：[zenba &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4780">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「EZ zenback バージョン1.5」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=ez-zenback_1.5.zip" title="EZ zenback"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.1.5　2012/01/05</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/ez-zenback">EZ zenback</a>」をダウンロードする</strong></p>
<p>バージョン1.5では、zenbackを表示させる手段として、ショートコードをサポートした。</p>
<pre class="brush: text; gutter: true">書式：[zenback]</pre>
<p>上記のショートコードは、投稿や固定ページの本文で使うことが出来る。</p>
<p>ショートコードを使えば、投稿や固定ページの任意の場所で、zenbackを表示させる事ができ、特定の投稿や固定ページのみでzenbackを表示させたい場合も、ショートコードを使うことで対応できる。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4780/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4780" />
	</item>
		<item>
		<title>WordPressのショートコードAPI</title>
		<link>http://www.near-mint.com/blog/4711</link>
		<comments>http://www.near-mint.com/blog/4711#comments</comments>
		<pubDate>Wed, 04 Jan 2012 05:03:20 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[ショートコード]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4711</guid>
		<description><![CDATA[WordPressは、ショートコードを登録、処理するためのAPIを備えており、このショートコードAPIを使えば、簡単にショートコードを登録することが出来る。 今回は、このショートコードAPIの説明を行う。 ショートコード &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4711">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>WordPressは、ショートコードを登録、処理するためのAPIを備えており、このショートコードAPIを使えば、簡単にショートコードを登録することが出来る。</p>
<p>今回は、この<a href="http://wpdocs.sourceforge.jp/%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89_API" target="_blank">ショートコードAPI</a>の説明を行う。</p>
<p>ショートコードの登録には、add_shortcode()関数を使用する。</p>
<pre class="brush: php; gutter: true">add_shortcode(&#039;ショートコードタグ&#039;, &#039;ハンドラー&#039;);</pre>
<p>ショートコードは、</p>
<pre class="brush: text; gutter: true">[ショートコードタグ]</pre>
<p>と言った[]で文字列を囲んだ書式であるが、[]を除いたものを「ショートコードタグ」として記述し、「ハンドラー」には、ショートコードと置き換える文字列を戻り値として返す関数の名称を記述する。</p>
<p>例えば、「こんにちは」と表示されるショートコード [hi]を登録する場合は、</p>
<pre class="brush: php; gutter: true">add_shortcode(&#039;hi&#039;, &#039;my_shortcode_handler&#039;);

function my_shortcode_handler() {
	return &#039;こんにちは&#039;;
}</pre>
<p>と記述すれば良い。</p>
<p>非常に簡単にショートコードを登録できるようになっているが、内部的には、 do_shortcode()というフィルター関数が、add_shortcode()関数で登録された全てのショートコードハンドラーを使って文字列に変換する処理を行なっており、デフォルトでは、do_shortcode()関数は、the_contentフィルターフックにプライオリティ11で適用されている。</p>
<p>このフィルターによって、投稿や固定ページが表示される際に、ショートコードが決められた文字列に変換され、表示に反映される。</p>
<p>デフォルトでは、ショートコードが使えるのは投稿と固定ページの中だけであるが、他の場所でも使用したいなら、このdo_shortcode()関数を使えば良い。</p>
<p>例えば、コメントでショートコードを使いたいなら、</p>
<pre class="brush: php; gutter: true">add_filter(&#039;comment_text&#039;, &#039;do_shortcode&#039;, 11);</pre>
<p>とすれば良い。（プライオリティは11ある必要はない。）</p>
<p>以上がショートコードの登録の基本であるが、ショートコードAPIは、単純なショートコードだけなく、属性値を持つショートコードや囲み型のショートコードもサポートしている。</p>
<pre class="brush: text; gutter: true">[ショートコードタグ attr1=&quot;値1&quot; attr2=&quot;値2&quot; ・・・]任意の文字列[/ショートコードタグ]</pre>
<p>次の例は、属性値を持つ、囲み型のショートコードであり、[div id="id1" class="class1"]任意の文字列[/div]と言う書式のショートコードを&lt;div id=&#8221;id1&#8243; class=&#8221;class1&#8243;&gt;任意の文字列&lt;div&gt;に変換してくれる。</p>
<pre class="brush: php; gutter: true">add_shortcode(&#039;div&#039;, &#039;my_shortcode_handler&#039;);

function my_shortcode_handler($atts, $content = null) {
	extract(shortcode_atts(array(
		&#039;id&#039; =&gt; &#039;block&#039;,
		&#039;class&#039; =&gt; &#039;block&#039;,
		), $atts));

	return &#039;&lt;div id=&quot;&#039;.esc_attr($id).&#039;&quot; class=&quot;&#039;.esc_attr($class).&#039;&quot;&gt;&#039;.do_shortcode($content).&#039;&lt;/div&gt;&#039;;
}</pre>
<p>ハンドラーは、引数としてショートコードで囲まれた部分の文字列を受け取ることが出来る。</p>
<p>加えて、属性名をキー、属性値を値とする配列の形で、ショートコードの記述された全ての属性と属性値を引数として受け取ることが出来る。</p>
<p>しかし、ユーザーが入力する属性、属性値に関しては、何が含まれているか分からない。</p>
<p>そこで、無効な属性が含まれている場合は、これを取り除き、欠けている場合は、デフォルト値を与えて補う必要があるが、これを簡単に行うことができるのが、shortcode_atts()関数である。</p>
<p>上の例では、id、classのデフォルト属性値は「block」となっており、ショートコードで、idまたはclassが省略された場合は、この「block」が値として自動的に割り当てられる。</p>
<p>そして最終的には、extract()を使って属性名を名前とする変数に格納している。</p>
<p>これらの値を用いて、置き換えの文字列を定義し、これを戻り値として返しているが、受け取った属性値は、セキュリティ上も信頼できないので、そのまま出力することは避けたい。</p>
<p>そこで、戻り値として返す前にesc_attr()関数でエスケープしている。</p>
<p>また、$contentに対してdo_shortcode()を適用して、ショートコードに囲まれたショートコード、つまりネストされたショートコードも、ショートコードとして正しく処理されるようにしている。</p>
<p>前にも書いたがdo_shortcode()が、ショートコードを処理するフィルターそのものであるので、do_shortcode()を文字列に適用すれば、文字列内のショートコードが正しく処理される。上記の場合は、$contentに対して、これを行なっている。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4711/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4711" />
	</item>
		<item>
		<title>POST2PDF Converter バージョン0.2　リリース</title>
		<link>http://www.near-mint.com/blog/4674</link>
		<comments>http://www.near-mint.com/blog/4674#comments</comments>
		<pubDate>Mon, 02 Jan 2012 04:50:38 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[TCPDF]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4674</guid>
		<description><![CDATA[WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter バージョン0.2」をリリースした。 最新の「POST2PDF Converter」をダウンロ &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4674">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter バージョン0.2」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=post2pdf-converter_0.2.zip" title="POST2PDF Converter"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.0.2　2012/01/02</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/post2pdf-converter">POST2PDF Converter</a>」をダウンロード</strong></p>
<p>バージョン0.2では、ショートコードをサポートし、ショートコードを使って、投稿や固定ページの任意の場所にPDFのダウンロードリンクを追加できるようにしている。</p>
<pre class="brush: text; gutter: true">書式：[pdf]PDF形式でダウンロード[/pdf]</pre>
<p>ショートコードを使えば、特定のページのみPDF形式でのダウンロードを許可すると言ったことが出来る。</p>
<p>また、様々な属性をサポートしており、ページごとに言語やフォントやロゴを変えたり、投稿IDを指定して、別のページをPDFとしてダウンロードさせることも可能だ。</p>
<pre class="brush: text; gutter: true">書式：[pdf id=&quot;1643&quot; lang=&quot;jpn&quot; file=&quot;id&quot; font=&quot;cid0jp&quot; monospaced=&quot;cid0jp&quot; fontsize=&quot;11&quot; subsetting=&quot;1&quot; ratio=&quot;1.35&quot; header=&quot;1&quot; logo=&quot;1&quot; logo_file=&quot;my_logo.png&quot; logo_width=&quot;45&quot; wrap_title=&quot;1&quot; footer=&quot;1&quot; filters=&quot;1&quot; shortcode=&quot;1&quot; ffamily=&quot;0&quot;]Click here to get a PDF[/pdf]</pre>
<p>また、このバージョンからは、本文末に署名を表示できるようになった。<br />
任意のテキストを署名として登録できるので、署名以外に、ラインセンス、メッセージなどの表示にも利用できる。</p>
<p>加えて、引用やソースコードが本文に含まれる場合、それを整形して表示する機能も追加され、PDFに変換された際に見やすくなっている。</p>
<p><a href="http://www.near-mint.com/blog/software/wp-syntaxhighlighter">WP SyntaxHighlighter</a>、<a href="http://wordpress.org/extend/plugins/syntaxhighlighter/" target="_blank">SyntaxHighlighter Evolved</a>、<a href="http://wordpress.org/extend/plugins/syntax-highlighter/" target="_blank">Syntax Highlighter for WordPress</a>、<a href="http://wordpress.org/extend/plugins/syntax-highlighter-compress/" target="_blank">Syntax Highlighter Compress</a>などのSyntaxHighlighterベースのプラグイン用に書かれたソースコード、<a href="http://wordpress.org/extend/plugins/wp-syntax/" target="_blank">WP-Syntax</a>、<a href="http://wordpress.org/extend/plugins/codecolorer/" target="_blank">CodeColorer</a>、<a href="http://wordpress.org/extend/plugins/wp-codebox/" target="_blank">WP-CodeBox</a>、<a href="http://wordpress.org/extend/plugins/wp-synhighlight/" target="_blank">WP-SynHighlight</a>などのGeSHiベースのプラグイン用に書かれたソースコードがその対象となる。</p>
<p>設定画面の項目も増え、ヘッダー、フッターの表示/非表示、フィルターの有効化/無効化、長いタイトルの折り返しと言った機能を設定できるようになっている。</p>
<p>また、同梱しているTCPDFをバージョン5.9.142にアップデートしている。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4674/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4674" />
	</item>
		<item>
		<title>WordPressの投稿をPDF形式でダウンロード出来るプラグイン「POST2PDF Converter」</title>
		<link>http://www.near-mint.com/blog/4631</link>
		<comments>http://www.near-mint.com/blog/4631#comments</comments>
		<pubDate>Mon, 26 Dec 2011 16:33:31 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[TCPDF]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4631</guid>
		<description><![CDATA[WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter」をリリースした。 最新の「POST2PDF Converter」をダウンロード 「POST2 &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4631">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=post2pdf-converter_0.1.zip" title="POST2PDF Converter"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.0.1　2011/12/27</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/post2pdf-converter">POST2PDF Converter</a>」をダウンロード</strong></p>
<p>「POST2PDF Converter」は、PHPライブラリ「<a href="http://www.tcpdf.org/" target="_blank">TCPDF</a>」を用いて、HTML形式のWordPressのコンテンツをPDFに変換し、ダウンロード出来るようにする。</p>
<p>このページの先頭にも、ダウンロードリンクがあるので、実際の動きを見たいなら試してみると良いだろう。</p>
<p>主な特徴は下記の通り。</p>
<ul>
<li>ダウンロードリンクの追加が簡単、かつ柔軟。</li>
<li>PDFのダンロードに制限をかけることが可能。</li>
<li>様々な言語に対応し、言語に応じて最適化される（つもり）。</li>
<li>PDFのフォントサイズの変更やフォントの指定が可能。</li>
<li>ショートコードを処理するか削除するか選べる。</li>
<li>Font subsettingサポートし、PDFのファイルサイズを抑えられる。</li>
</ul>
<p>なお、「Font subsetting」は、フォントのうち、実際使われている文字だけをPDFに組み込むことで、フォントの組み込みによるPDFのファイルサイズの増大を抑えることが出来る機能であるが、PHPの処理としては負荷がかかる複雑な処理になる。</p>
<p>そのため、場合によっては、「Font subsetting」を無効化し、フォント全体を組み込んだ方が良いかもしれない。</p>
<p>「POST2PDF Converter」で使用している「TCPDF」は、現状、日本語で書かれたHTMLを上手くPDF化出来ず、一部の文字が表示されないなどの問題が発生する。</p>
<p>これは、搭載している日本語フォントが主な原因であるが、この問題を解決するために、別途、TCPDF用日本語フォント「<a href="http://www.near-mint.com/blog/software/rcjfont-for-tcpdf">RCJフォント for TCPDF</a>」と「<a href="http://www.near-mint.com/blog/software/rcjfont-for-tcpdf">梅フォント for TCPDF</a>」を公開している。</p>
<p>ファイルサイズの関係で、「RCJフォント for TCPDF」と「梅フォント for TCPDF」は「POST2PDF Converter」に同梱していないので、別途インストールして欲しい。</p>
<p>「Font subsetting」を無効化し、フォント全体を組み込むならファイルサイズが比較的小さい「梅フォント for TCPDF」が向いている。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4631/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4631" />
	</item>
		<item>
		<title>TCPDF用日本語フォント「RCJフォント」</title>
		<link>http://www.near-mint.com/blog/4606</link>
		<comments>http://www.near-mint.com/blog/4606#comments</comments>
		<pubDate>Wed, 21 Dec 2011 19:14:49 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[TCPDF]]></category>
		<category><![CDATA[フォント]]></category>
		<category><![CDATA[日本語]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4606</guid>
		<description><![CDATA[「TCPDF」用の日本語フォント「RCJフォント for TCPDF」をリリースした。 バージョン003.03 2011/12/22 最新の「RCJフォント for TCPDF」をダウンロード 「TCPDF」は、テキスト &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4606">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「<a href="http://www.tcpdf.org/" target="_blank">TCPDF</a>」用の日本語フォント「RCJフォント for TCPDF」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=rcjfont_003.03.zip" title="RCJフォント for TCPDF"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> バージョン003.03 2011/12/22</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/rcjfont-for-tcpdf">RCJフォント for TCPDF</a>」をダウンロード</strong></p>
<p>「TCPDF」は、テキストやHTMLをPDFファイルに変換するためのPHPライブラリであるが、標準のフォントでは、正しく日本語を表示できないなど、日本語環境（おそらくマルチバイト過環境全般）での利用に関して問題も多い。</p>
<p>そこで、オープンソースの日本語フォントである「<a href="http://ossipedia.ipa.go.jp/ipafont/index.html" target="_blank">IPAフォント</a>」ベースに、TCPDF用に変換した「RCJフォント for TCPDF」を作成した。</p>
<p>パッケージには、「IPAゴシック」、「IPA Pゴシック」、「IPA明朝」、「IPA P明朝」と同等のフォントが収められている。</p>
<p>このフォントは、「/tcpdf/fonts/」ディレクトリにインストールして使うことができるが、PDFを受け取った相手が、同じフォント持っていなくとも編集出来るようにするには「FontSubsetting」を</p>
<pre class="brush: php; gutter: true">setFontSubsetting(false)</pre>
<p>に設定して使用する必要があるため、PDFファイルにフォント全体が組み込まれ、生成するPDFファイルのサイズが大きくなるという問題もある。</p>
<p>「RCJフォント」は、超マイナーなフォントであり、パッケージにソースとして収録はしているが、PDFを受け取った相手のPCに「RCJフォント」がインストールされている確率は皆無であり、そのためPDFにフォントを組み込む必要が生じる。</p>
<p>また、フォント自体のファイルサイズが小さくないため、PHPに割り当てられたメモリの上限が小さい場合は、PDFを正常に生成出来ないかもしれない。</p>
<p>その場合は「php.ini」を編集するなどして、割り当てるメモリの上限を増やす必要がある。</p>
<pre class="brush: text; gutter: true">memory_limit = 64M</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4606/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4606" />
	</item>
		<item>
		<title>WP SyntaxHighlighter バージョン1.7　リリース</title>
		<link>http://www.near-mint.com/blog/4568</link>
		<comments>http://www.near-mint.com/blog/4568#comments</comments>
		<pubDate>Thu, 15 Dec 2011 01:07:50 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[SyntaxHighlighter]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4568</guid>
		<description><![CDATA[「WP SyntaxHighlighter バージョン1.7」をリリースした。 最新の「WP SyntaxHighlighter」をダウンロード バージョン1.7は、1.6.7に続くリリースとなるが、中身は、バージョンの &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4568">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「WP SyntaxHighlighter バージョン1.7」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=wp-syntaxhighlighter_1.7.zip" title="WP SyntaxHighlighter"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.1.7　2011/12/15</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/wp-syntaxhighlighter">WP SyntaxHighlighter</a>」をダウンロード</strong></p>
<p>バージョン1.7は、1.6.7に続くリリースとなるが、中身は、バージョンの数字以上に変化している。</p>
<p>まず、<a href="http://wordpress.org/extend/plugins/bbpress/" target="_blank">bbPress</a> 2.0以上をサポートし、フォーラムのトピック、リプライに含まれるコードを強調表示できるようになった。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/12/wp-syntaxhighlighter_bbpress.jpg" rel="lightbox[4568]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/12/wp-syntaxhighlighter_bbpress-474x1024.jpg" alt="WP SyntaxHighlighter　bbPressのトピック/リプライを強調表示" title="WP SyntaxHighlighter　bbPressのトピック/リプライを強調表示" width="474" height="1024" class="alignnone size-large wp-image-4584" /></a></p>
<p>bbPressの投稿フォームには、コメント欄と同様にテキスト形式のリンクボタンを挿入できるようになっており、簡単にソースコードを強調表示させることが出来る。</p>
<p>また、過去のバージョンでは、ソースコードのマークアップに&lt;pre&gt;タグのみを用いていたが、バージョン1.7では、ショートコードもサポートした。</p>
<p>書式は<a href="http://en.support.wordpress.com/code/posting-source-code/" target="_blank">WordPress.comで使われているショートコード</a>と互換性がある。</p>
<pre class="brush: text; gutter: true">[sourcecode language=&quot;php&quot; gutter=&quot;true&quot; firstline=&quot;1&quot; highlight=&quot;&quot; htmlscript=&quot;false&quot;]PHP コード[/sourcecode]
[sourcecode lang=&quot;xhtml&quot; gutter=&quot;true&quot; firstline=&quot;1&quot; highlight=&quot;&quot; htmlscript=&quot;false&quot;]XHTML コード[/sourcecode]</pre>
<p>language（lang）以外の属性は、省略しても良い。language（lang）を省略するとプレーンテキストとして強調表示される。</p>
<p>設定にもよるが、ショートコードは、投稿の作成/編集画面、固定ページの作成/編集画面、コメントの投稿欄、管理画面上のコメントの編集/返信画面、「WP SyntaxHighlighter Widget」で使うことができる他、bbPressのトピック/リプライの投稿フォーム、トピック/リプライの編集フォーム、管理画面のトピック/リプライの作成/編集画面でも使用できる。</p>
<p>実は、より簡略な下記の書式のショートコードもサポートしているのだが、事実上、これらの書式は使えない。</p>
<pre class="brush: text; gutter: true">[source language=&quot;php&quot; gutter=&quot;true&quot; firstline=&quot;1&quot; highlight=&quot;&quot; htmlscript=&quot;false&quot;]PHP コード[/source]
[code lang=&quot;xhtml&quot; gutter=&quot;true&quot; firstline=&quot;1&quot; highlight=&quot;&quot; htmlscript=&quot;false&quot;]XHTML コード[/code]</pre>
<p>なぜならば、この書式を適切に処理できるフィルターを実装していないからだ。そのため、これらの書式を使おうと思うと面倒になる。仮に自身でコードをエスケープしたとしても低い権限しか与えられていないユーザーが投稿した場合は、ソースコードが壊れる場合がある。</p>
<p>そもそも「WP SyntaxHighlighter Widget」の場合は、手入力でのマークアップは想定していないので、多少長くともWordPress.comとの互換性を優先した形になっている。</p>
<p>ショートコードを有効にした状態で、本文中にこれらのショートコードを書くと、表示の際にタグに展開されてしまうので注意が必要だ。</p>
<p>それを避けたい場合は、下記のようにショートコードを「[]」で囲んでエスケープすること。</p>
<pre class="brush: text; gutter: true">[[sourcecode language=&quot;php&quot; gutter=&quot;true&quot; firstline=&quot;1&quot; highlight=&quot;&quot; htmlscript=&quot;false&quot;]PHP コード[/sourcecode]]
[[sourcecode lang=&quot;xhtml&quot; gutter=&quot;true&quot; firstline=&quot;1&quot; highlight=&quot;&quot; htmlscript=&quot;false&quot;]XHTML コード[/sourcecode]]</pre>
<p>例外として、&lt;pre&gt;タグで囲まれたショートコード（sourcecode、source、codeのみ）、つまり、ショートコードを含むソースコードを&lt;pre&gt;タグでマークアップした場合は、ショートコードをエスケープしなくとも、正常に処理されるようにしている。</p>
<p>ショートコードの導入に合わせて、コメント欄、WP SyntaxHighlighter Widget、bbPressの投稿フォームに追加されるテキスト形式のリンクボタンも強化され、&lt;pre&gt;タグだけでなく、ショートコードの挿入もサポートし、設定画面で切り替えることが出来るようになった。</p>
<p>過去のバージョンでは、投稿および固定ページにソースコードを記述することが許されたのは、「unfiltered_htm」権限を持つユーザー、つまりデフォルトのユーザーロールでは、管理者、編集者のみであったが、必要に応じて投稿者や寄稿者など、記事の投稿が許されているユーザー対して、ソースコードの記述を許可出来るようになった。</p>
<p>以上が目に見える機能面での主な新機能であるが、目に見えない部分でも変化している。</p>
<p>構成ファイルのうち、メインファイルが肥大して来たので、役割毎にファイルを分割し、処理を効率化している。</p>
<p>パフォーマンスを重視するなら、設定画面で不要な機能を無効化することをオススメする。</p>
<p>ただし、（過去のバージョンでも既に複雑であったが）設定画面は、我ながら、ここまで必要かと思うほど複雑になっているので、隅まで良く見た方が良い。</p>
<p>デフォルトでも、全てのユーザーが必要としていると思われない機能は、殆ど無効化されているが、設定の煩雑さを考慮して、敢えてデフォルトで有効になっている機能もある。</p>
<p>なお、デフォルトで有効になっている機能は、プラグインインストール時のWordPressのバージョンによっても異なる。</p>
<p>今後のリリースでも、設定画面に関しては、より複雑化する方向に向かうのではないかと思うわれるが、「設定しなくとも使え、設定することで、より幸せになれる」方向で開発を行うつもりであるため、頭が痛くなるようなら設定画面は見ない方が幸せかもしれない。</p>
<p>とは言え、以下の項目だけは、しっかり設定した方が良いだろう。</p>
<ul>
<li><span style="font-size: small;">使用するライブラリ・・・２つのバージョンから選べるが、外観や機能も随分と異なったものになる。</span></li>
<li><span style="font-size: small;">テーマ・・・外観を変えたいなら。</span></li>
<li><span style="font-size: small;">ツールバー・・・強調表示されたソースコードの右上に表示される「?」やツールバーを消せる。</span></li>
<li><span style="font-size: small;">デフォルトの言語・・・必要な言語だけに絞りこめば、ボタンをクリックした時に表示される言語も減るので操作しやすくなる。</span></li>
</ul>
<p>コメントやウィジェットの処理を除き、過去のバージョンでは、WordPressのデフォルトフィルターに依存し、独自のフィルターの適用は避けてきたが、必要性に迫られて投稿や固定表示の投稿/編集時、および表示時に適用されるフィルターも追加している。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4568/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4568" />
	</item>
		<item>
		<title>「Ultimate TinyMCE」でWordPressのビジュアルエディターをカスタマイズ</title>
		<link>http://www.near-mint.com/blog/4513</link>
		<comments>http://www.near-mint.com/blog/4513#comments</comments>
		<pubDate>Mon, 05 Dec 2011 15:05:15 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[TinyMCE]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4513</guid>
		<description><![CDATA[WordPressのビジュアルエディターのカスタマイズを簡単にするプラグインと言えば、「TinyMCE Advanced」が定番であるが、今回紹介する「Ultimate TinyMCE」もビジュアルエディターのカスタマイ &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4513">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>WordPressのビジュアルエディターのカスタマイズを簡単にするプラグインと言えば、「<a href="http://wordpress.org/extend/plugins/tinymce-advanced/" target="_blank">TinyMCE Advanced</a>」が定番であるが、今回紹介する「<a href="http://wordpress.org/extend/plugins/ultimate-tinymce/" target="_blank">Ultimate TinyMCE</a>」もビジュアルエディターのカスタマイズを簡単に行う事ができる優秀なプラグインである。</p>
<p>リリースから間もないが、既に人気プラグインとなっており、「Ultimate TinyMCE」も「TinyMCE Advanced」と並んで定番となりそうである。</p>
<p>「TinyMCE Advanced」が4行にわたって自由にアイコンを配置し、順序の変更や区切りの表示も柔軟に出来るのに対して、「Ultimate TinyMCE」は、デフォルトで表示される2行に加えて3行目、4行目に表示するボタンをチェックボックで選択する仕組みを採用している。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/12/ultimate_tinymce_settings.jpg" rel="lightbox[4513]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/12/ultimate_tinymce_settings-490x1024.jpg" alt="Ultimate TinyMCE 設定画面" title="Ultimate TinyMCE 設定画面" width="490" height="1024" class="alignnone size-large wp-image-4533" /></a></p>
<p>順番の変更は出来ない。単に表示/非表示が選べるだけである。</p>
<p>柔軟性を欠くものの、その分気軽さがあり、下記のように簡単にビジュアルエディターにボタンを追加できる。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/12/ultimate_tinymce_editor.jpg" rel="lightbox[4513]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/12/ultimate_tinymce_editor-300x80.jpg" alt="Ultimate TinyMCE 拡張されたエディター" title="Ultimate TinyMCE 拡張されたエディター" width="300" height="80" class="alignnone size-medium wp-image-4525" /></a></p>
<p>また、ボタンを追加してくれる以外に、標準のボタンの機能拡張も行なってくれる。</p>
<p>下記は、拡張された「リンクの挿入/編集」ボタンである。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/12/ultimate_tinymce_link_box.jpg" rel="lightbox[4513]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/12/ultimate_tinymce_link_box.jpg" alt="Ultimate TinyMCE 拡張された「リンクの挿入/編集」ボタン" title="Ultimate TinyMCE 拡張された「リンクの挿入/編集」ボタン" width="494" height="441" class="alignnone size-full wp-image-4522" /></a></p>
<p>既存のボタンの拡張に関しては、個人的には不要なので、設定画面で選択出来るようになると有難い。</p>
<p>過去のバージョンでは、WordPressのインストールパスによっては、設定画面でアイコンが表示されないバグがあったが、バーッジョン1.5.6以降では、これも解消している。</p>
<p>また、バージョン1.5.7以降は、設定画面の日本語表示にも対応した。</p>
<p>ちなみに「TinyMCE Advanced」と「Ultimate TinyMCE」の共存はできない、エラーになるわけではないが、同時に有効化すると、ボタンの配置は「TinyMCE Advanced」の設定が優先され、一部のボタンは「Ultimate TinyMCE」のものと置き換わる。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4513/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4513" />
	</item>
		<item>
		<title>初心者による初心者のためのPHP講座　第6回　条件分岐</title>
		<link>http://www.near-mint.com/blog/4423</link>
		<comments>http://www.near-mint.com/blog/4423#comments</comments>
		<pubDate>Thu, 01 Dec 2011 15:22:04 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP講座]]></category>
		<category><![CDATA[ネット・PC]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4423</guid>
		<description><![CDATA[ここまで学んだ知識でも、変数の定義や関数を記述して簡単なプログラムを作成することは出来るはずである。 しかし、条件分岐やループ処理などの制御構文を記述することで、初めて複雑なプログラミングが可能になる。 今回は「条件分岐 &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4423">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>ここまで学んだ知識でも、変数の定義や関数を記述して簡単なプログラムを作成することは出来るはずである。</p>
<p>しかし、条件分岐やループ処理などの制御構文を記述することで、初めて複雑なプログラミングが可能になる。</p>
<p>今回は「条件分岐」について説明する。</p>
<p>「条件分岐」とは、特定の条件を満たすか否か判定し、その結果に応じて処理を割り当てる制御構文である。</p>
<p>条件分岐には「if文」、「switch文」が使われる。</p>
<h2><strong>if文</strong></h2>
<p>「if文」とは、「もし～ならば、処理を実行する」といった意味を持つ構文である。</p>
<p>条件式の評価を行い、その条件が真（ture）であれば、処理を実行する。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
if (条件式) {
	処理;
}
?&gt;</pre>
<p>下の例では、変数$colorが、「red」であれば、echo()関数が実行され、「Red」と表示される。</p>
<pre class="brush: php; gutter: true">&lt;?php
if ($color == &quot;red&quot;) {
	echo &quot;Red&quot;;
}
?&gt;</pre>
<p>if文では、「()」内に評価する条件式を記述し、対応する処理は「{}」内に記述する。</p>
<p>条件式の評価の部分で使われている「==」は、比較演算子と呼ばれる構文で、この場合は、左辺と右辺の値が等しいことを意味している。</p>
<p>「$colorがredと等しい」か否かの評価、つまり「$colorがred」であるか否かの評価を行なっている。</p>
<p>上記のif文は、条件式の評価が偽（false）である場合は、何も行わない、単一の条件の評価であるが、「else if文」を使えば、最初の「もし(if)　ならば」が偽であれば、「あるいは　ならば」といった別の評価を行うことが出来る。</p>
<p>下記の例では「$colorがred」である場合は、「echo &#8220;Red&#8221;;」実行して、if文を終了するが、「$colorがred」でない場合は、続いて「$colorがblue」か否かの評価が行われる。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
if ($color == &quot;red&quot;) {
	echo &quot;Red&quot;;
} else if ($color == &quot;blue&quot;) {
	echo &quot;Blue&quot;;
}
?&gt;</pre>
<p>「else if」文は、下記のように複数回記述することも出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
if ($color == &quot;red&quot;) {
	echo &quot;Red&quot;;
} else if ($color == &quot;blue&quot;) {
	echo &quot;Blue&quot;;
} else if ($color == &quot;black&quot;) {
	echo &quot;Black&quot;;
}
?&gt;</pre>
<p>「else if」は、空白を空けずに「elseif」と書いても良い。</p>
<p>個人的には、「else if」と書く癖があるが、同様の構文を持つJavaスクリプトで「elseif」と書くべきところを、「else if」と書いて失敗することがある。</p>
<p>そう言った意味では「elseif」で覚えたほうが良いかもしれない。</p>
<p>更に、「else文」を使えば、いずれの条件式評価も偽となった場合の処理を記述することが出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
if ($color == &quot;red&quot;) {
	echo &quot;Red&quot;;
} else if ($color == &quot;blue&quot;) {
	echo &quot;Blue&quot;;
} else if ($color == &quot;black&quot;) {
	echo &quot;Black&quot;;
} else {
	echo &quot;ERR: Unknown Color&quot;;
}
?&gt;</pre>
<p>意図して「else」を使わない場合もあるが、例外的な処理として「else」を記述した方が良いケースも少なくない。</p>
<p>例えば、次のケースでは、すべての条件式評価が偽の場合は、変数$stringは、未定義となるが、「else文」で例外的な場合の代入値を定義することも出来る。（予め、$stringのデフォルト値をif文の前で定義して、それを例外的な場合の値としても良い）</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
if ($color == &quot;red&quot;) {
	$string = &quot;Red&quot;;
} else if ($color == &quot;blue&quot;) {
	$string = &quot;Blue&quot;;
} else if ($color == &quot;black&quot;) {
	$string = &quot;Black&quot;;
}
?&gt;</pre>
<p>「else if文」や「else文」を組み合わせる場合は、if文の条件式は先頭から順に評価されることを意識しなければならない。</p>
<p>いずれかの条件式が真となった時点でif文は終了されるため、条件式の順序がまずいと、予想外の結果になる可能性がある。</p>
<p>下記は、今まで学んだ内容のみで組み立てたサンプルである。</p>
<p>現在の時間の「分」が偶数であれば、「もう、～です。」、奇数であれば「まだ、～です。」と表示する。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [10,11,12,13,14,15,16,17,18]">&lt;!doctype html&gt;
&lt;?php echo &#039;&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&#039;; ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;ja&quot; xml:lang=&quot;ja&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;if文&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
$min = date(&quot;i&quot;);
$min_remainder = $min % 2;
if ($min_remainder == 0) {
	echo &quot;もう、&quot;.date(&quot;H:i:s&quot;).&quot;です。&quot;;
} else {
	echo &quot;まだ、&quot;.date(&quot;H:i:s&quot;).&quot;です。&quot;;
}
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><a href="http://www.near-mint.com/blog/sample/6-1.php">上記のスクリプトの実行結果を表示</a></p>
<h2><strong>比較演算子</strong></h2>
<p>比較演算子とは、左辺と右辺の値を比較するための構文である。</p>
<p>そして比較の結果が真であれば「true」、偽であれば「false」を返す。</p>
<p>「if文」の説明でも、条件式の記述に比較演算子「==」を使用しているので、大まかには理解できていることと思うが、条件式を記述するために比較演算子は欠かせない。</p>
<p>「==」は左辺と右辺が等しいか比較する演算子であるが、次の結果は予想できるだろうか？</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$a = 1;
if ($a == &quot;1&quot;) {
	echo &quot;Yes&quot;;
} else {
	echo &quot;No&quot;;
}
?&gt;</pre>
<p>変数$aは、整数「1」として定義されているが、if文では、文字列「1」と等しいか評価を行なっている。</p>
<p>型が異なるわけであるが、PHPでの型の扱いについては、何度が述べてきたので、おそらく予想出来ていたと思うが、このケースは、「Yes」と表示される。</p>
<p>つまり、「==」では型の違いは無視される。</p>
<p>厳密に言えば、整数と文字列の比較の場合は、文字列は、自動的に整数型に変換された上で比較される。</p>
<p>しかし、PHPでは、型の評価を行う比較演算子が用意されているので、型を含めた比較を行うことも出来る。</p>
<p>以下に、PHPで用いられる比較演算子をリストする。</p>
<ul>
<li>==　・・・左辺と右辺の値が等しい。</li>
<li>===　・・・左辺と右辺の値と型が等しい。</li>
<li>!=　・・・　左辺と右辺の値が等しくない。</li>
<li>&lt;&gt;　・・・　左辺と右辺の値が等しくない。</li>
<li>!==　・・・　左辺と右辺の値が等しくない、または型が等しくない。</li>
<li>&gt;　・・・　左辺が右辺より大きい。</li>
<li>&gt;=　・・・　左辺が右辺より大きい、または等しい。</li>
<li>&lt;　・・・　左辺が右辺より小さい・</li>
<li>&lt;=　・・・　左辺が右辺より小さい、または等しい。</li>
</ul>
<p>以下のサンプルでは、様々な比較演算子をif文で使用してる。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
if ($age &gt;= 20) {
	echo &quot;お酒、タバコが許されます。&quot;;
} else if ($age == 18) {
	echo &quot;ようやく普通免許が取れますね。&quot;;
} else if ($age == 14) {
	echo &quot;中二病の可能性があります。&quot;;
} else if ($age &lt;= 12) {
	echo &quot;運賃は、半額です。&quot;;
}
?&gt;</pre>
<h2><strong>論理演算子</strong></h2>
<p>「論理演算子」を使えば「AかつB」、「AまたはB」、「AかつB、またはAかつC」と言った条件を記述することが出来る。</p>
<p>つまり、複数の条件式を繋いで評価することが出来る。</p>
<p>PHPで用いられる論理演算子は下記のとおりである。</p>
<ul>
<li>左辺　&amp;&amp;　右辺　・・・　左辺、右辺共に真。</li>
<li>左辺　and　右辺　・・・　左辺、右辺共に真。</li>
<li>左辺　||　右辺　・・・　少なくとも、左辺または右辺のどちらかが真。</li>
<li>左辺　or　右辺　・・・　少なくとも、左辺または右辺のどちらかが真。</li>
<li>左辺　xor　右辺　・・・左辺または右辺の一方が真。両方が真の場合は、偽を返す。</li>
<li>!値（式）　・・・　値（式）が偽である。値（式）が偽の時に真を返す。</li>
</ul>
<p>次の例では、「&amp;&amp;」を使って、年齢（変数$age）、性別（変数$sex）の両方が特定の条件を満たすか判定している。</p>
<pre class="brush: php; gutter: true">&lt;?php
if ($age &gt;= 18 &amp;&amp; $sex == &quot;male&quot;) {
	echo &quot;結婚できます。&quot;;
} else if ($age &gt;= 16 &amp;&amp; $sex == &quot;female&quot;) {
	echo &quot;結婚できます。&quot;;
} else {
	echo &quot;結婚できません。&quot;;
}
?&gt;</pre>
<p>また、論理演算子は、算術演算子と同様に「()」を使うことで、評価の優先順位を変えることが出来る。</p>
<p>以下の例では、まず「()」内が真であることが条件となる。</p>
<pre class="brush: php; gutter: true">&lt;?php
if ($sex == &quot;male&quot; &amp;&amp; ($age == 25 || $age == 42 || $age == 61)) {
	echo &quot;厄年です。&quot;;
} else if ($sex == &quot;female&quot; &amp;&amp; ($age == 19 || $age == 33 || $age == 37)) {
	echo &quot;厄年です。&quot;;
} else {
	echo &quot;厄年ではありません。&quot;;
}
?&gt;</pre>
<p>性別と年齢の両方が真であることが、条件式が真となる条件であるが、年齢に関しては、「()」内のいずれかを満たせば真となる。</p>
<h2><strong>if文のネストと「{}」の省略</strong></h2>
<p>if文は、次のように別のif文にネスト（入れ子）することも出来る。</p>
<pre class="brush: php; gutter: true">&lt;?php
if ($sex == &quot;male&quot;) {
	if ($age == 25 || $age == 42 || $age == 61) {
		echo &quot;厄年です。&quot;;
	} else {
		echo &quot;厄年ではありません。&quot;;
	}
} else if ($sex == &quot;female&quot;) {
	if ($age == 19 || $age == 33 || $age == 37) {
		echo &quot;厄年です。&quot;;
	} else {
		echo &quot;厄年ではありません。&quot;;
	}
}
?&gt;</pre>
<p>if文内の処理が1行で書ける場合は、次のように「{}」を省略することが出来る。</p>
<pre class="brush: php; gutter: true">&lt;?php
if ($age &gt;= 20)
	echo &quot;成人です。&quot;;
?&gt;</pre>
<h2><strong>if文での真偽の解釈と演算子を省略した条件式</strong></h2>
<p>if文は、条件式の比較演算子を省略し、次のように書くことも出来る。</p>
<pre class="brush: php; gutter: true">&lt;?php
if ($value) {
	echo &quot;tureです。&quot;;
}
?&gt;</pre>
<p>これは次の式の省略形であるが、比較演算子が、型を無視する「==」である以上、話は単純ではない。</p>
<pre class="brush: xhtml; gutter: true">&lt;?php
if ($value == true) {
	echo &quot;tureです。&quot;;
}
?&gt;</pre>
<p>つまり、条件式が真となるのは、$valueにtrueが代入されている時だけとは限らない。</p>
<p>変数$valueが、整数の「0」、浮動小数点の「0.0」、空の文字列、文字列「&#8221;0&#8243;」、NULL以外の値を持つ時は、常に真となる。</p>
<p>他にも、変数が配列の場合やオブジェクトの場合も考慮する必要があるが、ここでは省略する。</p>
<p>上記の２つの例のような条件式であっても、変数の型が論理値であると確信できる場合は、変数に格納された値がtrueであることの判定に十分に使えるが、そうでない場合は、変数に何か値が格納されているたけで、条件式が真となる可能性があることを覚えておく必要がある。</p>
<p>場合よっては比較演算子に「===」を使うべきである。</p>
<p>また、比較演算子を省略し、条件式に変数のみを記述する方法は、変数が空である可能性を除き、0などの条件式が偽となる値が変数に格納されることがないと確信できるなら、変数に値が格納されているか否かの判定に使うことも出来る。</p>
<p>同様に、次のような省略も成立する。</p>
<pre class="brush: php; gutter: true">if (!$value) {
	echo &quot;tureです。&quot;;
}
?&gt;</pre>
<p>ここでは、論理演算子「!」を使用しており、「$valueが、trueでない」という意味になる。</p>
<p>if文では、必ずしも型を判定する比較演算子を使用する必要はなく、むしろ必要のない判定は省いた方が処理上もスマートであるが、変数に格納される可能性のある値を十分に把握しておかなければ、予想外の結果になる可能性がある。</p>
<h2><strong>switch文</strong></h2>
<p>switch文は、if文でも代用できるが、変数の値に応じて、処理を割り当てたい時などに適した構文である。</p>
<p>下記のように、case文やbreak文と組み合わせて使用する。</p>
<pre class="brush: php; gutter: true">&lt;?php
switch (式または変数){
	case 値1:
		式または変数が、値1と等しい場合の処理;
 		break;
	case 値2:
 		式または変数が、値2と等しい場合の処理;
		break;
	case 値3:
  		式または変数が、値3と等しい場合の処理;
		break;
	default:
		式または変数が、いずれの値とも等しくない場合の処理;
}
?&gt;</pre>
<p>「break」は、ループ（繰り返し）処理を抜けるための制御構造であり、条件に一致し、それに応じた処理が終了した時点で。switch文を終了するために記述している。</p>
<p>switch文は、if文と異なり、一度、いずれかの条件に一致しまうと、「break」が記述されている行まで、（case文の条件を無視して、本来、他の条件のための）処理の実行を継続してしまうため、「break」の記述が必要になる。</p>
<p>必要がなければ、「defaut」は省略しても良い。</p>
<p>次の例では、曜日が格納されている変数$dateの値に応じてメッセージを変えている。</p>
<pre class="brush: php; gutter: true">&lt;?php
switch ($date){
	case &#039;月曜日&#039;:
		echo &#039;休み明けは、ダルいですね。&#039;;
 		break;
	case &#039;金曜日&#039;:
 		echo &#039;明日からお休みです。&#039;;
		break;
	case &#039;日曜日&#039;:
  		echo &#039;明日から仕事です。&#039;;
		break;
	default:
		echo &#039;今日も頑張りましょう。&#039;;
}
?&gt;</pre>
<p>以下の例では、複数の条件に、同じ処理を割り当てている。</p>
<pre class="brush: php; gutter: true">&lt;?php
switch ($country){
	case &#039;イギリス&#039;:
		echo &#039;ヨーロッパ&#039;;
 		break;
	case &#039;日本&#039;:
  		echo &#039;アジア&#039;;
		break;
	case &#039;ドイツ&#039;:
 		echo &#039;ヨーロッパ&#039;;
		break;
	case &#039;中国&#039;:
  		echo &#039;アジア&#039;;
		break;
}
?&gt;</pre>
<p>次は、「break」の記述を忘れた例である。</p>
<pre class="brush: php; gutter: true">&lt;?php
switch ($country){
	case &#039;イギリス&#039;:
		echo &#039;ヨーロッパ&#039;;
	case &#039;日本&#039;:
  		echo &#039;アジア&#039;;
		break;
	case &#039;ドイツ&#039;:
 		echo &#039;ヨーロッパ&#039;;
		break;
	case &#039;中国&#039;:
  		echo &#039;アジア&#039;;
		break;
}
?&gt;</pre>
<p>この場合、変数$countryの値が「イギリス」の場合、まず「ヨーロッパ」と表示し、「アジア」と表示した後に、「break」と出会って、switch文を終了する。</p>
<p>これを逆手に取れば、次のような処理を記述することも出来る。</p>
<pre class="brush: php; gutter: true">&lt;?php
switch ($country){
	case &#039;イギリス&#039;:
	case &#039;ドイツ&#039;:
 		echo &#039;ヨーロッパ&#039;;
		break;
	case &#039;日本&#039;:
  		echo &#039;アジア&#039;;
		break;
	case &#039;中国&#039;:
  		echo &#039;アジア&#039;;
		break;
}
?&gt;</pre>
<p>上での例では、変数$countryの値が、「イギリス」または「ドイツ」である場合に、「ヨーロッパ」と表示される。</p>
<h2><strong>三項演算子</strong></h2>
<p>「三項演算子」は、条件分岐を行う構文のように見えるが、演算子であり、条件に応じて式を返す。</p>
<p>条件に応じて処理を実行するif文、switch文とは本質的に異なる。</p>
<p>今まで学んだ演算子は、数学で言うところの２つの項を使用する「二項演算子」であるが、「三項演算子」は、唯一、３つの項を使用する演算子である。</p>
<p>個人的には、「三項演算子」は使わず、if文で記述することが多いが、知っておかないと、他の人が書いたプログラムを読めなくなってしまう。</p>
<p>「三項演算子」は、以下のようにシンプルに記述できる。</p>
<pre class="brush: php; gutter: true">条件式 ? 式1 : 式2</pre>
<p>条件式が真の場合は、「式1」を返し、偽の場合は「式2」を返す。</p>
<p>次の例では、返された式を変数$strに代入するように記述している。</p>
<p>変数$ageが20以上の場合は、「成人です。」を返し、変数$strに代入され、20未満の場合は、「未成年です。」が返されて変数$strに代入される。</p>
<pre class="brush: php; gutter: true">&lt;?php
$str = ($age &gt;= 20) ? &quot;成人です。&quot; : &quot;未成年です。&quot;;
echo $str;
?&gt;</pre>
<p>条件式を囲む「()」は省略しても良い。</p>
<pre class="brush: php; gutter: true">&lt;?php
$str = $age &gt;= 20 ? &quot;成人です。&quot; : &quot;未成年です。&quot;;
echo $str;
?&gt;</pre>
<p>以下のように記述した場合も、処理としては全く同じ結果となる。</p>
<pre class="brush: php; gutter: true">&lt;?php
echo $age &gt;= 20 ? &quot;成人です。&quot; : &quot;未成年です。&quot;;
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4423/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4423" />
	</item>
		<item>
		<title>WordPress 3.3のHTMLエディターにクイックタグを追加する</title>
		<link>http://www.near-mint.com/blog/4373</link>
		<comments>http://www.near-mint.com/blog/4373#comments</comments>
		<pubDate>Tue, 15 Nov 2011 15:24:40 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[クイックタグ]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4373</guid>
		<description><![CDATA[この記事は、「WordPress 3.3 ベータ 3」に基づいて書かれており、不確定な要素を含んでいる。 WordPressは、記事の作成、編集のために「ビジュアルエディター」と「HTMLエディター」の２つのエディターを &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4373">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration: underline;">この記事は、「WordPress 3.3 ベータ 3」に基づいて書かれており、不確定な要素を含んでいる。</span></p>
<p>WordPressは、記事の作成、編集のために「ビジュアルエディター」と「HTMLエディター」の２つのエディターを備えており、操作を簡略化するために、それぞれ独自のボタンを配している。</p>
<p>「ビジュアルエディター」で表示されるボタンは、ビジュアルエディターのベースとなってるライブラリ、「<a href="http://www.tinymce.com/" target="_blank">TinyMCE</a>」が標準で搭載してるボタンか、「TinyMCE」のプラグインとして導入されているものである。</p>
<p>また、「HTMLエディター」に表示されるボタンは「クイックタグ（Quicktag）」と呼ばれ、「ビジュアルエディター」のボタンとは異なるものである。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/11/wordpress33_quicktag.jpg" rel="lightbox[4373]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/11/wordpress33_quicktag-300x29.jpg" alt="HTMLエディターのクイックタグ" title="HTMLエディターのクイックタグ" width="300" height="29" class="alignnone size-medium wp-image-4398" /></a></p>
<p>（現時点では、未だリリースされていないが）「WordPress 3.3」では、この「クイックタグ」の処理が変更されており、従来方法ではクイックタグを「HTMLエディター」に追加出来なくなってしまっている。</p>
<p>そのため、独自のクイックタグを追加するようなプラグインは、WordPress 3.3に合わせて修正しない限り、WordPress 3.3では、クイックタグが表示されないと言った問題が発生することが予想される。</p>
<p>この記事では、WordPress 3.3のHTMLエディターに独自のクイックタグを追加する方法を説明する。</p>
<p>下記は、&lt;pre&gt;タグ（および終了タグ&lt;/pre&gt;）を入力するためのクイックタグを追加する場合の例である。</p>
<p>プラグインやfunctions.phpで記述すれば良い。</p>
<pre class="brush: php; gutter: true; first-line: 1; html-script: true">&lt;?php

function add_my_quicktag() {
?&gt;
	&lt;script type="text/javascript"&gt;
	//QTags.addButton('ID', 'ボタンのラベル', '開始タグ', '終了タグ');
	QTags.addButton('ed_pretag', 'pre', '&lt;pre&gt;', '&lt;/pre&gt;');
	&lt;/script&gt;
&lt;?php
}

add_action('admin_print_footer_scripts',  'add_my_quicktag');

?&gt;</pre>
<p>「ID」は任意のもの、「ボタンのラベル」には、ボタン上に表示したい文字を設定する。</p>
<p>「開始タグ」には、ボタンをクリックした時に、選択範囲の前に挿入されるタグを入力する。</p>
<p>「終了タグ」は、不要であれば省略することも出来る。</p>
<p>その他に、タイトル（title属性）、アクセスキー、プライオリティと言ったパラメーターを指定することも出来る。</p>
<p>詳しくは、</p>
<p>/wp-includes/js/quicktags.dev.js</p>
<p>のコメントを参照のこと。</p>
<p>上記の例は、単にタグを挿入するだけの処理であるが、より高度な処理を行うために、指定したJavaスクリプトの関数を実行させることもでき、この場合も、シンプルに記述することが出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: []; html-script: true">&lt;?php

function add_my_quicktag() {
?&gt;
	&lt;script type="text/javascript"&gt;
	//QTags.addButton('ID', 'ボタンのラベル', 関数名);
	QTags.addButton('ed_saywordpress', 'Say WordPress', say_wordpress);
	function say_wordpress() {
		alert('WordPress');
	}
	&lt;/script&gt;
&lt;?php
}

add_action('admin_print_footer_scripts',  'add_my_quicktag');

?&gt;</pre>
<p>「関数名」は、クォーテーションで囲んではいけない。</p>
<p>また、「WordPress 3.3」では、「quicktags_settings」と言うフィルターフックが新しく追加されており、このフックを使えば、デフォルトで表示させるクイックタグを制御することが出来る。</p>
<p>標準では、デフォルトで表示されるクイックタグは、strong(b)、em(i)、link、block(b-quote)、del、ins、img、ul、ol、li、code、more、spell(lookup)、close（close tags）、fullscreenであるが、下記のように記述することで、これを変更することが出来る。</p>
<pre class="brush: php; gutter: true; first-line: 1">function default_quicktags($qtInit) {
	$qtInit['buttons'] = 'strong,em,link';
	return $qtInit;
}

add_filter('quicktags_settings', 'default_quicktags', 10, 1);</pre>
<p>上記の例では、strong(b)、em(i)、linkがデフォルトで表示されるクイックタグとなる。</p>
<p>なお、デフォルトのクリックタグの指定は、最初に説明した方法で追加したクイックタグには影響を与えないので、デフォルトのボタンとして指定しなくとも表示される。</p>
<p>詳しくは、</p>
<p>/wp-includes/class-wp-editor.php</p>
<p>のeditor_settings()関数を参照のこと。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4373/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4373" />
	</item>
		<item>
		<title>初心者による初心者のためのPHP講座　第５回　演算子</title>
		<link>http://www.near-mint.com/blog/4306</link>
		<comments>http://www.near-mint.com/blog/4306#comments</comments>
		<pubDate>Sun, 13 Nov 2011 15:53:52 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP講座]]></category>
		<category><![CDATA[ネット・PC]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4306</guid>
		<description><![CDATA[PHPに限らず、プログラムでは、「演算子」と呼ばれる数学的または論理的な演算を行うための記号を使用する事が多い。 この演算子を使えば、足し算、引き算などの四則演算を行ったり、値の代入を行うことが出来る。 また、PHPのプ &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4306">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>PHPに限らず、プログラムでは、「演算子」と呼ばれる数学的または論理的な演算を行うための記号を使用する事が多い。</p>
<p>この演算子を使えば、足し算、引き算などの四則演算を行ったり、値の代入を行うことが出来る。</p>
<p>また、PHPのプログラムでは、ある条件を満たすか否かの判定、つまりは真偽（true、false）の判定を行うことが多いが、このような判定では「比較演算子」、「論理演算子」が欠かせない。</p>
<p>既に「<a href="http://www.near-mint.com/blog/3845">初心者による初心者のためのPHP講座　第３回　文字列</a>」で「文字列演算子」について触れ、「<a href="http://www.near-mint.com/blog/4128">初心者による初心者のためのPHP講座　第４回　定数と変数</a>」で「代入演算子」と「算術演算子」についても触れており、実際に使用しているが、それら以外にも演算子には様々な種類がある。</p>
<p>とは言え、復習的な部分も少なくない。</p>
<p>演算子は、必ず知っておく必要があるが、演算子だけ取り上げて学習するよりも、プログラムの中で実際に使った方が感覚的にも分かりやすいかもしれない。</p>
<p>具体的な使い方は、実際にプログラミングしながら覚えれば良い。</p>
<p>しかし、演算を行うための演算子という記述があることは、少なくとも覚えておこう。</p>
<h2><strong>算術演算子</strong></h2>
<p>単純な計算を行うための記述にであり、「5+3」、「2×3」の「+」や「×」に相当するもので、プログラミングの知識が無くとも、馴染みがあり、理解しやすいはずである。</p>
<p>PHPでは、以下の５つの四則演算子が用意されている。</p>
<pre class="brush: text; gutter: true; first-line: 1">+	足し算
-	引き算
*	掛け算
/	割り算
%	割り算の余りを求める</pre>
<p>下記は、算術演算子を使ったサンプルである。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [10,11,12,13,14,15,16,17,18,19,20,21,22]; html-script: true">&lt;!doctype html&gt;
&lt;?php echo '&lt;?xml version="1.0" encoding="utf-8"?&gt;'; ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;四則演算子&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
$cal1 = 8 + 3;	// 8と3の足し算。$cal1には整数11が代入される。
$cal2 = 8 - 3;	// 8から3を引く。$cal2には整数5が代入される。
$cal3 = 8 * 3;	// 8に3を掛ける。$cal3には整数24が代入される。
$cal4 = 8 / 3;	// 8を3で割る。$cal4には浮動小数点2.66666666667が代入される。
$cal5 = 8 % 3;	// 8割る3の余り。$cal3には整数2が代入される。
echo "8 ＋ 3 ＝ ".$cal1."&lt;br /&gt;";
echo "8 － 3 ＝ ".$cal2."&lt;br /&gt;";
echo "8 × 3 ＝ ".$cal3."&lt;br /&gt;";
echo "8 ÷ 3 ＝ ".$cal4."&lt;br /&gt;";
echo "8 ÷ 3の余りは ".$cal5."&lt;br /&gt;";
echo $cal3." － ".$cal1." ＝ ".($cal3 - $cal1); // 変数同士の演算
?&gt;
&lt;/body&gt;</pre>
<p><a href="http://www.near-mint.com/blog/sample/5-1.php">上記のスクリプトの実行結果を表示</a></p>
<p>算術演算子では単純な計算しか出来ないが、高度な演算については関数が用意されているので、それらを使えば良い。</p>
<p>例えば、指数演算を行う<a href="http://php.net/manual/ja/function.pow.php" target="_blank">pow()</a>関数、サインを求める<a href="http://php.net/manual/ja/function.sin.php" target="_blank">sin()</a>関数などがある。</p>
<p>演算子「+」は、算術演算子としてだけでなく、配列演算子として配列の結合に使われる場合もある。</p>
<h2><strong>文字列演算子</strong></h2>
<p>文字列を連結する際に使用する演算子「.」を指す。</p>
<p>「.」で接続された文字列（変数）は、左の文字列の後ろに右の文字列を加える形で１つに連結される。</p>
<pre class="brush: text; gutter: true; first-line: 1">"東京"."都"		// 東京都となる</pre>
<h2><strong>代入演算子</strong></h2>
<p>代入演算子は右辺の値を左辺の代入する「=」が基本となるが、 算術演算子や文字列演算子と組み合わせて、より複雑な値の代入を行うことが出来る。</p>
<pre class="brush: text; gutter: true; first-line: 1">=		// 左辺に右辺を代入
+=		// 左辺に右辺を加えた数を左辺に代入
-=		// 左辺から右辺を引いた数を左辺に代入
*=		// 左辺に右辺を掛けた数を左辺に代入
/=		// 左辺を右辺で割った数を左辺に代入
%=		// 左辺を右辺で割った余りを左辺に代入
.=		// 左辺に右辺を連結した値を左辺に代入</pre>
<h2><strong>加算子、減算子</strong></h2>
<p>加算子、減算子とは、値を１つ増やしたり、１つ減らしたりする演算子の事である。</p>
<pre class="brush: text; gutter: true; first-line: 1">$a++	// $a += 1と同じ
$a--	// $a -= 1と同じ</pre>
<p>以下の例では、変数$aの値を加算子、減算子で増減させている。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$a = 0;
$a++;		// 1加算されて$aの値は1になる
echo $a."&lt;br /&gt;";
$a--;		// 1減算されて$aの値は0になる
echo $a;
?&gt;</pre>
<p>下記のように変数の前に「++」、「&#8211;」を配置しても良い。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$a = 0;
++$a;		// 1加算されて$aの値は1になる
echo $a."&lt;br /&gt;";
--$a;		// 1減算されて$aの値は0になる
echo $a;
?&gt;</pre>
<p>厳密に言えば「$a++」と「++$a」、「$a&#8211;」と「$a++」では内部処理が異なる。</p>
<p>「++」または「&#8211;」を変数の後に記述した場合は、まず、元の変数の値を返してから加算、減算が行われる。</p>
<p>それに対して、変数の前に記述した場合は、最初に加算、減算が行われ、その結果を変数の値として返す。</p>
<p>次のサンプルでは、その違いがはっきりと結果に現れている。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [10,11,12,13,14,15,16,17]; html-script: true">&lt;!doctype html&gt;
&lt;?php echo '&lt;?xml version="1.0" encoding="utf-8"?&gt;'; ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;加算子、減算子&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
$a = 0;
$b = 0;
echo '++$aは '.++$a."です。&lt;br /&gt;";
echo '$aは '.$a." です。&lt;br /&gt;";
echo '$b++は '.$b++." です。&lt;br /&gt;";
echo '$bは '.$b." です。";
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><a href="http://www.near-mint.com/blog/sample/5-2.php">上記のスクリプトの実行結果を表示</a></p>
<h2><strong>その他の演算子</strong></h2>
<p>「比較演算子」、「論理演算子」もよく使用する演算子であるが、これらは別の機会に説明する。</p>
<h2><strong>演算子の優先順位</strong></h2>
<p>演算子には、演算の優先順位がある。</p>
<p>例えば「*」、「/」、「%」は、「+」、「-」より優先して演算される。</p>
<p>つまり、掛け算、割り算は、足し算、引き算よりも優先されると言うことだが、これは数学上の数式と同じである。</p>
<p>意図して優先順位を変える場合は、数学同様に「()」を使えば良い。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
echo 1 + 3 * 5;		// 16になる
echo "&lt;br /&gt;";
echo (1 + 3) * 5;	// 20になる
?&gt;</pre>
<h2><strong>演算と型</strong></h2>
<p>変数等の値を考える場合、その型を意識する必要がる。</p>
<p>基本的に同じ型同士でなければ演算できないが、都度、型を変換する必要がないように自動的に型の変換が行われるようになっている。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [10,11,12,13,14,15,16,17,18,19,20]; html-script: true">&lt;!doctype html&gt;
&lt;?php echo '&lt;?xml version="1.0" encoding="utf-8"?&gt;'; ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;演算と型&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
echo "2" + "3.3";
echo "&lt;br /&gt;";
echo "2a" + "3";
echo "&lt;br /&gt;";
echo "a2" + "3";
echo "&lt;br /&gt;";
echo "2.3b" + "3b";
echo "&lt;br /&gt;";
echo "a" + "3";
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><a href="http://www.near-mint.com/blog/sample/5-3.php">上記のスクリプトの実行結果を表示</a></p>
<p>「整数」と「浮動小数点」の演算では、「整数」が「浮動小数点」に変換された後に演算が行われ、演算結果の型は、「浮動小数点」となる。</p>
<p>変わったところでは、文字列と数値、文字列同士の演算も成立する。</p>
<p>文字列が数字で始まる場合、始まりの数字の部分が値として使われ演算される。</p>
<p>文字列が数字で始まらない場合は、整数の0として扱われる。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4306/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4306" />
	</item>
		<item>
		<title>WordPressにソーシャルボタンを追加する「Facebook, Twitter &amp; Google+ Social Widgets」</title>
		<link>http://www.near-mint.com/blog/4291</link>
		<comments>http://www.near-mint.com/blog/4291#comments</comments>
		<pubDate>Wed, 09 Nov 2011 00:22:49 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4291</guid>
		<description><![CDATA[WordPressにソーシャルボタンを追加するプラグインは、数多くあるが、今回紹介する「Facebook, Twitter &#38; Google+ Social Widgets」もその１つである。 このプラグインは、 &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4291">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>WordPressにソーシャルボタンを追加するプラグインは、数多くあるが、今回紹介する「<a href="http://wordpress.org/extend/plugins/facebook-twitter-google-social-widgets/" target="_blank">Facebook, Twitter &amp; Google+ Social Widgets</a>」もその１つである。</p>
<p>このプラグインは、どちらかと言えば後発で、機能も非常にシンプルであるが、既にかなりの人気を獲得している。</p>
<p>「Facebook, Twitter &amp; Google+ Social Widgets」で追加できるボタンは、「Facebook いいね！」、「ツイート」、「Google+」の3つに限られており、この３つのボタンのうち、選択したものを単に横並びに記事に表示するだけである。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/11/social_widgets_buttons.jpg" rel="lightbox[4291]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/11/social_widgets_buttons.jpg" alt="Facebook, Twitter &amp; Google+ Social Widgets ボタン" title="Facebook, Twitter &amp; Google+ Social Widgets ボタン" width="300" height="30" class="alignnone size-full wp-image-4299" /></a></p>
<p>しかし、この３つのボタンは、世界中で人気のサービスであり、ある意味、的を得た選択と言える。</p>
<p>「Facebook, Twitter &amp; Google+ Social Widgets」は、単に有効化するだけでも使えるが、表示に関して細かな設定でき、このあたりも人気の秘密だろう。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/11/social_widgets_settings.jpg" rel="lightbox[4291]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/11/social_widgets_settings-237x300.jpg" alt="Facebook, Twitter &amp; Google+ Social Widgets 設定" title="Facebook, Twitter &amp; Google+ Social Widgets 設定" width="237" height="300" class="alignnone size-medium wp-image-4300" /></a></p>
<p>まず、ボタンの順序を自由に入れ替えることが出来る。</p>
<p>また、ボタンを表示するページを次から複数選択することが出来る。</p>
<ul>
<li><span style="font-size: small;">投稿</span></li>
<li><span style="font-size: small;">固定ページ</span></li>
<li><span style="font-size: small;">ホーム</span></li>
<li><span style="font-size: small;">カテゴリーページ</span></li>
<li><span style="font-size: small;">タグページ</span></li>
<li><span style="font-size: small;">タクソノミーページ</span></li>
<li><span style="font-size: small;">日付別ページ</span></li>
<li><span style="font-size: small;">作成者ページ</span></li>
<li><span style="font-size: small;">検索結果</span></li>
<li><span style="font-size: small;">添付ファイルページ</span></li>
</ul>
<p>加えて、ページ内でのボタンの表示位置が指定でき、「投稿の上」、「投稿の下」、または「両方」に表示させることが出来る。</p>
<p>なお、このプラグインの作者は、以前、「<a href="http://www.near-mint.com/blog/software/wp-syntaxhighlighter">WP SyntaxHighlighter</a>」用にとDOSバッチファイル用のBrushファイルを作成してくれた方である。</p>
<p>参考：<a href="http://www.near-mint.com/blog/3552">SyntaxHighlighter用のBrushファイル「DOS バッチファイル」</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4291/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4291" />
	</item>
		<item>
		<title>TinyMCE Backslash Button バージョン0.2　リリース</title>
		<link>http://www.near-mint.com/blog/4277</link>
		<comments>http://www.near-mint.com/blog/4277#comments</comments>
		<pubDate>Thu, 03 Nov 2011 05:13:41 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[TinyMCE]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4277</guid>
		<description><![CDATA[「TinyMCE Backslash Button バージョン0.2」をリリースした。 最新の「TinyMCE Backslash Button」をダウンロードする バージョン0.2では、HTMLエディター上でもフォント &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4277">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「TinyMCE Backslash Button バージョン0.2」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=tinymce-backslash-button_0.2.zip" title="TinyMCE Backslash Button"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.0.2　2011/11/03</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/tinymce-backslash-button">TinyMCE Backslash Button</a>」をダウンロードする</strong></p>
<p>バージョン0.2では、HTMLエディター上でもフォントの指定付きでバックスラッシュを入力出来るQuicKtagを追加した。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/11/tinymce-backslash-button_quicktag.jpg" rel="lightbox[4277]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/11/tinymce-backslash-button_quicktag.jpg" alt="TinyMCE Backslash ButtonのQuicktag" title="TinyMCE Backslash ButtonのQuicktag" width="94" height="28" class="alignnone size-full wp-image-4279" /></a></p>
<p>これによって、ビジュアルエディター、HTMLエディターの両方でバックスラッシュの入力が可能になった。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4277/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4277" />
	</item>
		<item>
		<title>WP SyntaxHighlighter バージョン1.6　リリース</title>
		<link>http://www.near-mint.com/blog/4247</link>
		<comments>http://www.near-mint.com/blog/4247#comments</comments>
		<pubDate>Wed, 02 Nov 2011 06:52:34 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[SyntaxHighlighter]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4247</guid>
		<description><![CDATA[「WP SyntaxHighlighter バージョン1.6」をリリースした。 最新の「WP SyntaxHighlighter」をダウンロード 「WP SyntaxHighlighter」は、基本的に標準のビジュアルエ &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4247">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「WP SyntaxHighlighter バージョン1.6」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=wp-syntaxhighlighter_1.6.zip" title="WP SyntaxHighlighter"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.1.6　2011/11/02</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/wp-syntaxhighlighter">WP SyntaxHighlighter</a>」をダウンロード</strong></p>
<p>「WP SyntaxHighlighter」は、基本的に標準のビジュアルエディターの使用を想定したものであり、HTMLエディターを主に利用しているユーザーにとっては使い易いとは言えなかった。</p>
<p>バージョン1.6では、ソースコードをエースケープし、&lt;pre&gt;でマークアップして強調表示の対象とできるQuicktag（ボタン）「SH pre」をHTMLエディターに追加した。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/11/wp-syntaxhighlighter_sh_pre_button.jpg" rel="lightbox[4247]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/11/wp-syntaxhighlighter_sh_pre_button.jpg" alt="WP SyntaxHighlighter　「SH pre」ボタン" title="WP SyntaxHighlighter　「SH pre」ボタン" width="51" height="28" class="alignnone size-full wp-image-4259" /></a></p>
<p>これにより、HTMLエディターでのソースコード記述が大幅に楽になっている。</p>
<p>「SH pre」ボタンの基本的な操作は、TinyMCEの「pre」ボタンを同じである。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/11/wp-syntaxhighlighter_sh_pre_button_popup.jpg" rel="lightbox[4247]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/11/wp-syntaxhighlighter_sh_pre_button_popup.jpg" alt="WP SyntaxHighlighter　「SH pre」ボタンのポップアップウィンドウ" title="WP SyntaxHighlighter　「SH pre」ボタンのポップアップウィンドウ" width="262" height="192" class="alignnone size-full wp-image-4260" /></a></p>
<p>ただし、タグの編集が出来るHTMLエディターのボタンであることもあり、「pre」ボタンと異なり、設定値の変更機能は備えていない。</p>
<p>また、一度「SH pre」ボタンで処理したソースコードは、特殊な文字がエスケープされて表示されるため、見かけ上、元々のソースコードとは、異なった表示となってしまう。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4247/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4247" />
	</item>
		<item>
		<title>初心者による初心者のためのPHP講座　第４回　定数と変数</title>
		<link>http://www.near-mint.com/blog/4128</link>
		<comments>http://www.near-mint.com/blog/4128#comments</comments>
		<pubDate>Mon, 31 Oct 2011 16:10:36 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP講座]]></category>
		<category><![CDATA[ネット・PC]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4128</guid>
		<description><![CDATA[多くのプログラミング言語同様に、PHPでも、定数、変数を使うことが出来る。 定数、変数とは、「初心者による初心者のためのPHP講座　第３回　文字列」で学んだ文字列などの値を格納しておく箱のようなもので、命令文の中などで箱 &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4128">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>多くのプログラミング言語同様に、PHPでも、定数、変数を使うことが出来る。</p>
<p>定数、変数とは、「<a href="http://www.near-mint.com/blog/3845" target="_blank">初心者による初心者のためのPHP講座　第３回　文字列</a>」で学んだ文字列などの値を格納しておく箱のようなもので、命令文の中などで箱から値を取り出して使うことが出来る。</p>
<h2><strong>定数</strong></h2>
<p>定数とは変わることない不変の値、不変の値を格納する箱を指し、<a href="http://php.net/manual/ja/function.define.php" target="_blank">define()</a>関数を使って以下のように定義する。</p>
<pre class="brush: php; gutter: true">define("定数名", 値);</pre>
<p>定数名には、アルファベット、数字、アンダースコアを使うことが出来るが、最初の１文字はアルファベットかアンダースコアである必要がある。</p>
<p>また、特別な引数を設定しない限り、アルファベットの大文字と小文字は区別され、別のものとして扱われる。</p>
<p>定義した定数に格納された値は、定数名で取り出すことが出来る。</p>
<p>難しいことを考えるよりも、実際にサンプルを見たほうが理解が早いだろう。</p>
<p>以下のサンプルでは、echo()関数と組み合わせて定数を使用している。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [10,11,12,13,14,15,16,17,18,19]; html-script: true">&lt;!doctype html&gt;
&lt;?php echo '&lt;?xml version="1.0" encoding="utf-8"?&gt;'; ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;定数&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
define("VALUE1", 100);
define("VALUE2", "100");
define("VALUE3", "こんにちは");
echo VALUE1."&lt;br /&gt;";
echo VALUE2."&lt;br /&gt;";
echo VALUE3."&lt;br /&gt;";
echo VALUE1."円"."&lt;br /&gt;";
echo VALUE3."。 この商品は".VALUE1."円です。";
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><a href="http://www.near-mint.com/blog/sample/4-1.php">上記のスクリプトの実行結果を表示</a></p>
<p>定数に文字列を格納する場合は、前回学んだ通り「&#8221;」や「&#8217;」で囲む必要がある。</p>
<p>数値を格納する場合は、「&#8221;」や「&#8217;」で囲む必要はないが、文字列として数字を扱う場合は、「&#8221;」や「&#8217;」で囲む必要がある。</p>
<p>例えば「&#8221;1&#8243;」と「1」は、それぞれ文字列と数値であり、プログラミング上では、本来は別物であり、区別されるべきものだが、PHPでも区別はあるものの、その区別が曖昧である。</p>
<p>この事は、変数の説明の際に再度述べる。</p>
<p>定数は、何度でも呼び出して使用することができ、一度、定数を定義してしまえば、後は定数として呼び出すだけで良いので、都度、値を記述するより遥かに楽であるし、ミスも起こりにくくなる。</p>
<p>実際、上記のサンプルでも定数「VALUE1」、「VALUE3」は、2度以上使われている。</p>
<p>文字列の連結同様に「.」を使って、定数や文字列と連結することも出来る。</p>
<p>定数は、不変の値を考えるよりも、一度定義したら変更が効かない値と考えたほうが分かりやすいかもしれない。</p>
<p>つまり、箱の中身を取り出すことは出来ても、入れ替えることは出来ない。</p>
<p>定義した後で値を変更する必要がなく、繰り返し使う可能性がある値は、定数として定義すると良いだろう。</p>
<h2><strong>変数</strong></h2>
<p>変数とは、変化する可能性がある値を格納する箱のようなものである。</p>
<p>定数が、一度定義したら値の変更が出来ないのに対して、変数は、何度でも値を変更することが許されている。</p>
<p>つまり、箱の中身を自由に入れ替えることが出来る。</p>
<p>変数の定義は、定数と異なり関数を使う必要がなく、非常にシンプルである。</p>
<pre class="brush: text; gutter: true">$変数名;
$変数名 = 値;</pre>
<p>「$」が変数であることを表し、空の変数を定義するなら単に「$変数名」と宣言すれば良いし、何かしらの値を代入した変数を定義するなら「代入演算子」である「=」を使って値を代入した形で変数を定義すれば良い。</p>
<p>値の代入の有無は別として、この要領で変数を宣言をした時点で変数は初期化され、値が格納される。（値を代入していない場合は、空の値が格納される。）</p>
<p>このあたりは、数学の代入と要領は同じである。</p>
<p>変数名には、アルファベット、数字、アンダースコアを使うことが出来るが、最初の１文字はアルファベットかアンダースコアである必要がある。</p>
<p>また、アルファベットの大文字と小文字は区別され、別のものとして扱われる。</p>
<p>「$$value」のように変数名に変数を使う使うことも出来るが、ここでは説明を省く。</p>
<p>では実際にサンプルを見てみよう。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]; html-script: true">&lt;!doctype html&gt;
&lt;?php echo '&lt;?xml version="1.0" encoding="utf-8"?&gt;'; ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;定数&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
$value;
$price = 2000;
$birthday = "19970903";
$comment = "こんにちは。";
define("VALUE1", "おはよう。");
echo "値は「".$value."」です。&lt;br /&gt;";
echo $price."&lt;br /&gt;";
echo $birthday."&lt;br /&gt;";
echo $comment."&lt;br /&gt;";
echo $comment." この商品は".$price."円です。&lt;br /&gt;";
echo VALUE1." この商品は".$price."円です。&lt;br /&gt;";
$value = "ありがとう";
echo "値は「".$value."」です。";
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><a href="http://www.near-mint.com/blog/sample/4-2.php">上記のスクリプトの実行結果を表示</a></p>
<p>定数同様に、文字列と数値の区別があり、文字列を変数に代入する場合は、「&#8221;」や「&#8217;」を使う必要がある。</p>
<p>「.」を使って文字列や定数と連結することも出来る。</p>
<p>変数「$value」をecho()関数でブラウザに表示した結果が、16行目と23行目では異なっているが、16行目の時点では、$valueは空であり、22行目で初めて文字列を格納しているためである。</p>
<p>このように変数に格納された値は、再度、値を代入する形で容易に変更できる。</p>
<h2><strong>値の代入の応用</strong></h2>
<p>変数に変数を代入したり、関数の戻り値を代入することも可能である。</p>
<pre class="brush: php; gutter: true; first-line: 1">&lt;?php
$today = date("Y/m/d");
$message = "今日は".$today."です。";
?&gt;</pre>
<p>このサンプルでは、 date()関数の戻り値、つまりは現在の日付を変数「$today」に代入している。</p>
<p>更に変数「$today」は、変数「$message」に代入されている。</p>
<p>代入演算子「=」以外にも、「+=」、「 -=」、「*=」、「/=」、「%=」、「.=」と言った代入演算子を使用することができる。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]; html-script: true">&lt;!doctype html&gt;
&lt;?php echo '&lt;?xml version="1.0" encoding="utf-8"?&gt;'; ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;様々な代入演算子&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
$num1 = 8;
$num1 += 5;
$num2 = 1000;
$num2 -= 500;
$num3 = 3;
$num3 *= 4;
$num4 = 21;
$num4 /= 7;
$num5 = 17;
$num5 %= 5;
$str1 = "鈴木";
$str1 .= "さん";
echo $num1."&lt;br /&gt;";
echo $num2."&lt;br /&gt;";
echo $num3."&lt;br /&gt;";
echo $num4."&lt;br /&gt;";
echo $num5."&lt;br /&gt;";
echo $str1;
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p><a href="http://www.near-mint.com/blog/sample/4-3.php">上記のスクリプトの実行結果を表示</a></p>
<p>上記のサンプルで使われている演算子のうち「.」は、文字列、定数、変数の連結で学んでいるが、その他は、下記のとおりである。</p>
<ul>
<li>+　・・・足し算</li>
<li>-　・・・引き算</li>
<li>*　・・・掛け算</li>
<li>/　・・・割り算</li>
<li>%　・・・割り算の余りを求める</li>
</ul>
<p>上記のサンプルは、下記と同じ意味であり、下記のような記述の方が理解しやすいだろう。</p>
<pre class="brush: php; gutter: true; first-line: 1; highlight: [10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]; html-script: true">&lt;!doctype html&gt;
&lt;?php echo '&lt;?xml version="1.0" encoding="utf-8"?&gt;'; ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;様々な代入演算子&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;?php
$num1 = 8;
$num1 = $num1 + 5;
$num2 = 1000;
$num2 = $num2 - 500;
$num3 = 3;
$num3 = $num3 * 4;
$num4 = 21;
$num4 = $num4 / 7;
$num5 = 17;
$num5 = $num5 % 5;
$str1 = "鈴木";
$str1 = $str1."さん";
echo $num1."&lt;br /&gt;";
echo $num2."&lt;br /&gt;";
echo $num3."&lt;br /&gt;";
echo $num4."&lt;br /&gt;";
echo $num5."&lt;br /&gt;";
echo $str1;
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<h2><strong>定義済み変数</strong></h2>
<p>PHPでは、予め定義された変数がある。</p>
<p>つまり、自分で値を代入する必要がなく、何もしなくとも予め値が格納されており、自由に値を取り出して使うことが出来る変数である。</p>
<p>「$_SERVER」、「$_GET」、「$_POST」、「$_COOKIE」などがそうであるが、これらについては、実際に使う機会に詳しく説明する。</p>
<p>これらは「スコープ」を無視して使えることから、「スーパーグローバル変数」と呼ばれている。</p>
<p><span style="font-size: small;">※「スコープ」については別の機会に説明する。</span></p>
<h2><strong>参照渡し</strong></h2>
<p>次のサンプルでは$aと$bは実質的に同じ意味を持つ。</p>
<p>つまりどちらの値は「100」である。</p>
<pre class="brush: php; gutter: true">&lt;?php
$a = 100;
$b = $a;
?&gt;</pre>
<p>では、次のプログラムの実行結果はどうなるだろうか？</p>
<pre class="brush: php; gutter: true">&lt;?php
$a = 100;
$b = $a;
$a = 200;
echo $b;
?&gt;</pre>
<p>「100」と表示されるという予想と「200」と表示される予想の２つの予想が成り立つのではないかと思うが、答えは「100」である。</p>
<p>$aとSbは、値こそ同じかもしれないが、全く別の変数であり、$bが定義された時点で「100」が代入されており、$bを定義し直さない限り、$bの値を変えることは出来ない。</p>
<p>では、次のサンプルの結果はどうなるだろうか？</p>
<pre class="brush: php; gutter: true">&lt;?php
$a = 100;
$b = &amp;$a;
$a = 200;
echo $b;
?&gt;</pre>
<p>答えは「200」である。</p>
<p>3行目の$bに$aを代入する式で「$a」の前に「&amp;」を付けて「&amp;$a」としているが、こうすることによって、後に$aの値が変わった際に、$bにも反映されるようになる。</p>
<p>これを「参照渡し」と呼ぶ。</p>
<h2><strong>変数の型</strong></h2>
<p>ここまでの説明から、変数の値には、文字列と数値があることに気づいたと思うが、実際、様々な種類の値を変数に格納することが出来る。</p>
<p>変数に代入される値の種類を「変数の型」と呼び、プログラミング上では、型の違いを意識する必要がある。</p>
<p>しかし、PHPも例外ではないが、PHPにおいては「変数の型」の区別が曖昧である。</p>
<p>以下、主な「変数の型」をまとめる。</p>
<h3><strong>文字列</strong></h3>
<p>文字列は、「<a href="http://www.near-mint.com/blog/3845" target="_blank">初心者による初心者のためのPHP講座　第３回　文字列</a>」で説明した通りである。</p>
<pre class="brush: php; gutter: true">$my_string = "おはよう";</pre>
<h3><strong>整数</strong></h3>
<p>数値の一種で、小数点を持たないもの。</p>
<p>PHPでは、-2,147,483,648 から 2,147,483,647 までの整数値を扱うことが出来る。</p>
<pre class="brush: php; gutter: true">$my_integer = 1000;</pre>
<h3><strong>浮動小数点</strong></h3>
<p>小数点を持つ数値。14桁まで扱うことが出来る。</p>
<pre class="brush: php; gutter: true">$my_float = 3.1415;</pre>
<h3><strong>論理値</strong></h3>
<p>格納できる値は、trueまたはfalseのみで、それぞれ「正しい」、「誤り」を表すと考えると理解しやすいかもしれない。</p>
<p>プログラミング上では「真偽」という。</p>
<p>この型は、ある事柄に関して、それが正しいか、誤りかを判定する際に使われる。</p>
<p>例えば、特定の条件の満たすなら「true」を格納し、そうでない場合は「false」を格納しておいて、後の処理でその値を判別に利用する。</p>
<pre class="brush: php; gutter: true">$my_boolean = true;
$my_boolean = false;</pre>
<p>文字列の「&#8221;true&#8221;」や「&#8221;false&#8221;」とは本質的に意味が異なり、「&#8221;」を必要としないことからも分かるように文字列として値が格納されているわけではなく、この型の変数をecho()関数で表示すると、値が「true」の場合は、「1」が表示され、値が「false」の場合は、何も表示されない。</p>
<p>真偽の判定ではあるが、echo()関数で「true」、「false」と表示させたいなど、文字列とし再利用する必要がある場合は、以下のように最初から文字列として定義したほうが良い場合もある。</p>
<pre class="brush: php; gutter: true; first-line: 1">$my_boolean = "true";
$my_boolean = "false";</pre>
<p>しかし、似て非なるものであり、上記の例の型は「文字列」であり、もはや「論理値」ではない。</p>
<h3><strong>配列、連想配列</strong></h3>
<p>区切り文字で区切られたリスト状の値、階層構造を持つリストのような複雑なデータを変数に格納に、容易に処理が出来る点もPHPの特徴である。</p>
<p>「配列」、「連想配列」については、別の機会に詳しく述べる。</p>
<pre class="brush: php; gutter: true">$my_array = array(
	"鈴木さん" =&gt; array('男', '20'),
	"田中さん" =&gt; array('女', '68'),
	"山田さん" =&gt; array('男', '45'),
);</pre>
<h3><strong>オブジェクト</strong></h3>
<p>「class」を使った「オブジェクト指向プログラミング」を行う際に使用するが、本講座でのサンプルプログラムは、「オブジェクト指向」ではないので、ここでは説明を省く。</p>
<h3><strong>NULL</strong></h3>
<p>NULL型とは、値として何も格納されていない空の状態である。</p>
<p>「NULL」が代入されている場合の他、何も代入されていない場合もNULL型となる。</p>
<pre class="brush: php; gutter: true">&lt;?php
$my_null = NULL;
$my_null;
?&gt;</pre>
<h3><strong>その他の型</strong></h3>
<p>「リソース」、「ストリーム」と言った特殊な型も存在するが、これらは特定の処理の際に使うものである。</p>
<h2><strong>型の区別の実際</strong></h2>
<p>PHPは、型の区別が非常に曖昧なプログラミング言語であり、そのため型の区別をあまり意識する必要がないので、PHPが「易しい言語」である理由の１つになっているかもしれない。</p>
<p>但し、これがプログラマーに優しいか否かは別問題ではあると思うが・・・。</p>
<p>次の例は、演算子「+」を使って、数学上の足し算を行なっている。</p>
<pre class="brush: php; gutter: true">&lt;?php
$a = 100;
$b = "50";
echo $a + $b;
?&gt;</pre>
<p>$aは整数、$bは文字列であり、型を厳密に区別するなら、整数と文字列の足し算など成立しないが、実際には「150」と表示される。</p>
<p>次のサンプルでは、$cに代入する際に足し算を行い、<a href="http://php.net/manual/ja/function.gettype.php" target="_blank">gettype()</a>関数で、$cの型を取得し、echo()関数で表示している。</p>
<pre class="brush: php; gutter: true">&lt;?php
$a = 100;
$b = "50";
$c = $a + $b;
echo gettype($c);
?&gt;</pre>
<p>結果は「integer」、つまり整数となる。</p>
<p>整数と文字列の足し算の結果が、自動的に整数型になっている。</p>
<p>PHPでは、変数が柔軟に処理される反面、「100」と「&#8221;100&#8243;」の区別が難しくなっている側面もある。</p>
<h2><strong>未定義の変数</strong></h2>
<p>次のサンプルは、一文字ずつ、よく見て欲しい。単純なタイプミスがある。</p>
<pre class="brush: php; gutter: true">&lt;?php
$my_string = "おはよう";
echo $ny_string;
?&gt;</pre>
<p>このサンプルのecho()関数は、未定義の変数「$ny_string」を引数として使おうとしている事になるが、これは「エラー」にはならない。</p>
<p>設定ファイル「php.ini」の設定によっては、「Notice: Undefined variable」と言う「注意」が表示される場合もあるが、これはエラーではないため、処理は継続される。</p>
<p>PHPでは、未定義の変数を使おうとした場合、自動的にNULL型の変数として定義されるようである。</p>
<p>よって、このサンプルは、NULL型の$ny_stringを表示することになるので、結果として何も表示れない。</p>
<p>この場合、処理結果が意図した結果と異なるので、エラーとして表示されなくとも誤りがあることは明確であるが、処理の仕方によっては正常に動作しているように見えることもあるので厄介である。</p>
<p>ともかく、<span style="text-decoration: underline;">自動定義されるからと言って、変数を未定義のまま使用する事は避けた方が良い。</span></p>
<p>私も同様のミスをした経験があり、ユーザーから「注意」が表示されることを指摘されて、ようやく、未定義の変数の扱いについて気づいた。</p>
<p>NULL型の変数として自動的に定義される点も、私の処理には都合が良く、処理結果から、この誤りに気づくことが出来なかった。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4128/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4128" />
	</item>
		<item>
		<title>CodeMirror for CodeEditor バージョン0.4　リリース</title>
		<link>http://www.near-mint.com/blog/4123</link>
		<comments>http://www.near-mint.com/blog/4123#comments</comments>
		<pubDate>Sun, 30 Oct 2011 07:15:03 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[CodeMirror]]></category>
		<category><![CDATA[SyntaxHighlighter]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4123</guid>
		<description><![CDATA[「CodeMirror for CodeEditor バージョン0.4」をリリースした。 バージョン0.4 2011/10/30 最新の「CodeMirror for CodeEditor」をダウンロード バージョン0. &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4123">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「CodeMirror for CodeEditor バージョン0.4」をリリースした。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=codemirror-for-codeeditor_0.4.zip" title="CodeMirror for CodeEditor"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> バージョン0.4 2011/10/30</p>
<p style="text-align: center;"><strong><strong>最新の「<a href="http://www.near-mint.com/blog/software/codemirror-for-codeeditor">CodeMirror for CodeEditor</a>」をダウンロード</strong></strong></p>
<p>バージョン0.4では、新しい機能の追加はないが、内包する「<a href="http://codemirror.net/" target="_blank">CodeMirror</a>」ライブラリをアップデートしている。</p>
<p>このバージョンで採用した「CodeMirror」ライブラリは、正式リリースのものではなく、開発中のものであり、バージョン2.16の修正版（2.16-22）に当たる。</p>
<p>開発中のバージョンを採用した事には理由がある。</p>
<p>以前のバージョンでは、IEで参照するとタブがスペースに変換され、インデントが正しく反映されない問題が発生しており、以前から気になっていた。</p>
<p>この問題は、バージョン2.16で解消しており、このプラグインでもバージョン2.16を新たに採用するつもりであったが、テストした結果、新たに別の問題が発生していることが分かり、これら全ての問題を解消するために開発中のバージョンを採用した。</p>
<p>なお「CodeMirror」の開発チームは、仕事に熱心で、レスポンスが良く、バグとして報告すれば、直ぐに対応して貰える。</p>
<p>マイナーな用途のライブラリではあるが、こう言った点からも、今後、この手のライブラリの主流の１つになることが予想される。</p>
<p>バグを報告したり、パッチを提供したりするユーザーも増えて来ているようなので、開発自体も更に盛り上がって行きそうだ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4123/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4123" />
	</item>
		<item>
		<title>開発者が重宝するプラグイン「Debug Bar」</title>
		<link>http://www.near-mint.com/blog/4106</link>
		<comments>http://www.near-mint.com/blog/4106#comments</comments>
		<pubDate>Tue, 25 Oct 2011 15:42:25 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4106</guid>
		<description><![CDATA[「Debug Bar」は、その名の通り、プラグインなどのデバッグに適したプラグインで、エラー、警告、注意メッセージの確認、SQLクエリーの確認が出来る。 十分な情報を得るためには、をかもとさんの書かれた記事、「WordP &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4106">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>「<a href="http://wordpress.org/extend/plugins/debug-bar/" target="_blank">Debug Bar</a>」は、その名の通り、プラグインなどのデバッグに適したプラグインで、エラー、警告、注意メッセージの確認、SQLクエリーの確認が出来る。</p>
<p>十分な情報を得るためには、をかもとさんの書かれた記事、「<a href="http://dogmap.jp/2011/03/08/wordpress-debug-bar/" target="_blank">WordPress 開発に便利なプラグイン Debug Bar</a>」にもあるように「wp-config.php」に記述を追加する必要があるが、「SAVEQUERIES」、「WP_DEBUG」は、下手に常時有効にする訳にはいかないため、どちらかと言えば、評価環境で使った方が良いプラグインと言える。</p>
<p>また、「Debug Bar」は、フロントエンドや管理画面の上部に表示される「管理バー」から実行するタイプであるため、使用する場合は、管理バーを表示させておく必要がある。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/10/debug_bar_on_admin_bar.jpg" rel="lightbox[4106]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/10/debug_bar_on_admin_bar-300x117.jpg" alt="Debug Bar" title="Debug Bar" width="300" height="117" class="alignnone size-medium wp-image-4114" /></a></p>
<p>よって、管理バーが苦手な方には向かないかもしれない。</p>
<p>しかし、「Debug Bar」の機能はこれだけではなく「<a href="http://wordpress.org/extend/plugins/debug-bar-extender/" target="_blank">Debug-Bar-Extender</a>」、「<a href="http://wordpress.org/extend/plugins/debug-bar-query-tracer/" target="_blank">Debug Bar Query Tracer</a>」、「<a href="http://wordpress.org/extend/plugins/debug-bar-console/" target="_blank">Debug Bar Console</a>」と言ったプラグインで機能を強化できる。</p>
<p>「Debug-Bar-Extender」については、jim912さんが書かれた「<a href="http://www.warna.info/archives/1239/" target="_blank">Debug BarとDebug-Bar-ExtenderでWordPressのパフォーマンスチェック</a>」という記事が参考になる。</p>
<p>「Debug Bar Query Tracer」は、使っていないため、機能についてはよく分からない。</p>
<p>私が重宝しているのが、「Debug Bar Console」で、このプラグインをインストールすると、PHPやSQLスクリプトを実行できるコンソールが追加される。</p>
<p>もっぱら、PHPプログラムの実行テストに使用しているが、このコンソールは良く出来ており、ちょっとした検証程度のことならここで出来てしまう。</p>
<p>例えば、プラグインなどで定義されたものを含め、WordPressの関数も実行できる。</p>
<p>下記の例では、get_posts()関数を使って最近の10件の記事を取り出している。</p>
<pre class="brush: php; gutter: true; first-line: 1">$posts = get_posts(array('numberposts'=&gt;10));
foreach($posts as $post) {
	echo($post-&gt;post_content);
}</pre>
<p>左側に入力したスクリプトの実行結果はコンソール右側に表示される。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/10/console_on_debug_bar_result1.jpg" rel="lightbox[4106]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/10/console_on_debug_bar_result1-300x109.jpg" alt="Debug Bar Consoleでの実行例１" title="Debug Bar Consoleでの実行例１" width="300" height="109" class="alignnone size-medium wp-image-4116" /></a></p>
<p>ただし、実行結果を表示する部分は、ブラウザとして機能するため、実行結果にHTMLタグが含まれる場合は、タグは処理されてしまう。</p>
<p>上記の例であれば、エスケープする処理を加えれば、タグも確認できる。</p>
<pre class="brush: php; gutter: true">$posts = get_posts(array('numberposts'=&gt;10));
foreach($posts as $post) {
	echo(esc_html($post-&gt;post_content));
}</pre>
<p>WordPressがグローバルスコープで定義している変数を使用する場合は、Global宣言が必要となる。つまりスコープが異なる。</p>
<p>下記は、WordPressの変数$localeを使用する場合の例である。</p>
<pre class="brush: php; gutter: true">global $locale;
echo($locale);</pre>
<p>同じ要領でプラグインが定義している変数も取得できる。</p>
<p>管理バー自体は、WordPressの管理画面以外にフロントエンドでも表示できるが、投稿ページでコンソールを開こうが、アーカイブページで開こうが、このコンソールは、管理画面の一部として機能する。</p>
<p>つまりis_admin()は、常にtrueを返す。</p>
<p>従って、現在のページの記事やコメントを取得すると言った事は出来ないが、IDで指定して取得する方法もあるので、全く不可能ではない。</p>
<p>万能ではないが、癖さえ理解してしまえば、「Debug Bar Console」は、かなり使えるツールになるはずだ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4106/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4106" />
	</item>
		<item>
		<title>記事にバックスラッシュを入力するためのプラグイン「TinyMCE Backslash Button」</title>
		<link>http://www.near-mint.com/blog/4092</link>
		<comments>http://www.near-mint.com/blog/4092#comments</comments>
		<pubDate>Sat, 22 Oct 2011 11:50:55 +0000</pubDate>
		<dc:creator>redcocker</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[ネット・PC]]></category>
		<category><![CDATA[自作アプリ]]></category>
		<category><![CDATA[TinyMCE]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.near-mint.com/blog/?p=4092</guid>
		<description><![CDATA[バックスラッシュ「\」を記事に入力する手助けをするプラグイン「TinyMCE Backslash Button バージョン0.1」を新しく公開した。 最新の「TinyMCE Backslash Button」をダウンロー &#8230; <a class="more-link" href="http://www.near-mint.com/blog/4092">続きを読む →</a>]]></description>
			<content:encoded><![CDATA[<p>バックスラッシュ「<span style="font-family: 'Courier New',Courier,monospace;">\</span>」を記事に入力する手助けをするプラグイン「TinyMCE Backslash Button バージョン0.1」を新しく公開した。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/download.php?id=tinymce-backslash-button_0.1.zip" title="TinyMCE Backslash Button"><img src="http://www.near-mint.com/blog/wp-content/plugins/download-monitor/img/download.gif" style=”border-style:none;” /></a> Ver.0.1　2011/10/22</p>
<p style="text-align: center;"><strong>最新の「<a href="http://www.near-mint.com/blog/software/tinymce-backslash-button">TinyMCE Backslash Button</a>」をダウンロードする</strong></p>
<p>日本語環境では、「<span style="font-family: 'Courier New',Courier,monospace;">\</span>」は、「\」として表示されてしまうが、「TinyMCE Backslash Button」を使えば「<span style="font-family: 'Courier New',Courier,monospace;">\</span>」の入力が可能となる。</p>
<p>標準のビジュアルエディター（TinyMCE）に追加されるボタンを使って簡単に「<span style="font-family: 'Courier New',Courier,monospace;">\</span>」を入力でき、「\」になること無く「<span style="font-family: 'Courier New',Courier,monospace;">\</span>」をそのまま表示させることが可能。</p>
<p><a href="http://www.near-mint.com/blog/wp-content/uploads/2011/10/tinymce-backslash-button_button_icon.jpg" rel="lightbox[4092]"><img src="http://www.near-mint.com/blog/wp-content/uploads/2011/10/tinymce-backslash-button_button_icon.jpg" alt="TinyMCE Backslash Buttonのボタン" title="TinyMCE Backslash Buttonのボタン" width="30" height="30" class="alignnone size-full wp-image-4089" /></a></p>
<p>仕組みとしては、欧文フォントを「<span style="font-family: 'Courier New',Courier,monospace;">\</span>」に適用しているだけのため、クライアントの環境によっては「<span style="font-family: 'Courier New',Courier,monospace;">\</span>」と表示されず、「\」となる場合もある。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.near-mint.com/blog/4092/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.near-mint.com/blog/4092" />
	</item>
	</channel>
</rss>

