<?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"
	>

<channel>
	<title>Webプログラミングの情報をまとめるブログ</title>
	<atom:link href="http://www.pghack.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.pghack.com</link>
	<description>プログラミング Web技術 ネット情報など</description>
	<pubDate>Mon, 15 Dec 2008 14:42:35 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>ja</language>
			<item>
		<title>PHP＋Mecabをさくらレンタルサーバーで実行</title>
		<link>http://www.pghack.com/archives/33</link>
		<comments>http://www.pghack.com/archives/33#comments</comments>
		<pubDate>Tue, 18 Nov 2008 17:08:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web技術]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=33</guid>
		<description><![CDATA[形態素解析という文字列の分割をするものがあります。以前から気になっていてWindows版はインストールしたのですが、UNIX版に関しては今までノータッチでした。
そこで今回、このMecabをさくらレンタルサーバーで実行できるようインストールしました。また、PHPからMecabを実行するよう拡張モジュールも同時にインストールします。

※さくらレンタルサーバーのスタンダード以上（telnetができるもの）が対象です


ダウンロード
以下を全てダウンロードします。私は一旦windowsでダウンロードして、ftpでサーバーにUPしました。

Mecab本体（mecab-0.97.tar.gz）
Mecab用辞書（mecab-ipadic-2.7.0-20070801.tar.gz）
php用拡張モジュール（php-mecab-0.3.0.tgz）

インストール
今回、インストールフォルダは、以下のフォルダを作成し、ここに全てのモジュールをインストールしました。以下、ダウンロードしたzipファイルは全てoptディレクトリにUPしてあるものとします。また、ログインユーザ名をusernameとしています。

/home/username/opt

Mecabのインストール

cd /home/username/opt
tar zxfv mecab-0.97.tar.gz
cd mecab-0.97
./configure &#45;&#45;prefix=/home/username/opt
make
make check
chmod z+x install-sh
make install

インストールが完了したら、以下のコマンドで簡単なテストが可能です（ヘルプが表示されます）。

/home/username/opt/bin/mecab -h

Mecab辞書のインストール

cd /home/username/opt
tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure &#45;&#45;prefix=/home/username/opt &#45;&#45;exec-prefix=/home/username/opt
&#45;&#45;with-mecab-config=/home/username/opt/bin/mecab-config
make
make install

他のサイトの方はmecab-configなどは指定しなくてもインストールできているようですが、私の環境ではconfigure実行時に&#45;&#45;prefix、&#45;&#45;exec-prefix、&#45;&#45;with-mecab-configと3つの引数を指定しないとうまくインストールができませんでした。
また、&#45;&#45;with-charset=utf8などのように文字コードの変更を設定できるようなのですが、私の環境ではこの設定もうまくいかずデフォルトのEUCのままになっています。まぁ、このあたりはエンコードで処理可能なのでとりあえずはこのままで進めます。
php-mecabのインストール
php-mecabのインストールは若干苦戦しました。まずphpizeというコマンドが通らない。これはphpのbinまでのパスを全て指定することで実行可能です。

cd /home/username/opt/php_mecab-0.3.0
/usr/local/php-5.2.6/bin/phpize

しかし、phpizeを実行すると今度はautoconfが見つからないというエラーが出ます。この解決にはログインシェルの設定ファイルに環境変数を設定することで解決しました。

vi /home/username/.cshrc
※以下の環境変数を追加

setenv  PHP_AUTOCONF    /usr/local/bin/autoconf259
setenv  PHP_AUTOHEADER  /usr/local/bin/autoheader259



設定ファイルを編集し終わったら環境変数を設定し直します（もしくは再ログインでもOK）。

source ~/.cshrc

これでphpizeを実行すればconfigureファイルが作成されるようになります。

/usr/local/php-5.2.6/bin/phpize (今回は成功）

続いてconfigureを実施します。

./configure &#45;&#45;with-php-config=/usr/local/php-5.2.6/bin/php-config &#45;&#45;with-mecab=/home/username/opt/bin/mecab-config

他のサイトの方は引数を指定しないでも通るようですが、私の環境では辞書と同様引数がないと通りませんでした。以上の手順をふまえ、php-mecabのインストール手順をまとめると次の通りです。

シェル設定ファイルに環境変数をセット

vi /home/username/.cshrc
setenv  PHP_AUTOCONF    /usr/local/bin/autoconf259
setenv  PHP_AUTOHEADER  /usr/local/bin/autoheader259


source ~/.cshrc
cd /home/username/opt
tar zxfv php_mecab-0.3.0.tgz
cd php_mecab-0.3.0
/usr/local/php-5.2.6/bin/phpize
./configure &#45;&#45;with-php-config=/usr/local/php-5.2.6/bin/php-config
&#45;&#45;with-mecab=/home/username/opt/bin/mecab-config
make
make install

以上でphp-mecabnのインストールは完了です。
php.iniの設定
php-mecabは拡張モジュールとして読み込む必要があり、拡張モジュールの設定はphp.iniに記述します。しかし、レンタルサーバーの環境では大元のphp.iniファイルを編集することはできません。
さくらのレンタルサーバーでは、各ユーザが独自のphp.iniの設定をできるようになっているのでそのphp.iniにmecabの設定を記述します。

会員メニューにログインし、サーバー設定のページを表示
[アプリケーションの設定]の[php設定の編集]を開く
php.iniファイルパスに以下のパスを記述し[保存する]を選択

extension_dir=/home/username/opt/php_mecab-0.3.0/modules/
extension=mecab.so



以上でphp.iniの設定が完了します。これでphpからMecabを利用可能になります。
サンプルの作成
phpを用いたMecabのサンプルを作成しました。
サンプルはこちら

はてなからrssを取得
rssの中身を解析
解析結果を表示

Mecabを使うことで最新の記事情報を解析して人気キーワードのデータを集めたり、SEOなどに利用できそうです。こんなにすごいものをフリーで提供していただいて本当に感謝したいです。
＜参考＞

Mecab
php_mecab-0.3.0
php_mecab関数リファレンス
さくらの500円レンタルサーバで MeCab を使う
ウノウラボ - [...]]]></description>
			<content:encoded><![CDATA[<p>形態素解析という文字列の分割をするものがあります。以前から気になっていてWindows版はインストールしたのですが、UNIX版に関しては今までノータッチでした。</p>
<p>そこで今回、このMecabをさくらレンタルサーバーで実行できるようインストールしました。また、PHPからMecabを実行するよう拡張モジュールも同時にインストールします。</p>
<ul>
<li>※さくらレンタルサーバーのスタンダード以上（telnetができるもの）が対象です</li>
</ul>
<p><span id="more-33"></span></p>
<h4>ダウンロード</h4>
<p>以下を全てダウンロードします。私は一旦windowsでダウンロードして、ftpでサーバーにUPしました。</p>
<ul>
<li><a href="http://mecab.sourceforge.net/#download">Mecab本体（mecab-0.97.tar.gz）</a></li>
<li><a href="http://mecab.sourceforge.net/#download">Mecab用辞書（mecab-ipadic-2.7.0-20070801.tar.gz）</a></li>
<li><a href="http://d.hatena.ne.jp/rsky/20071228/1198841049">php用拡張モジュール（php-mecab-0.3.0.tgz）</a></li>
</ul>
<h4>インストール</h4>
<p>今回、インストールフォルダは、以下のフォルダを作成し、ここに全てのモジュールをインストールしました。<span style="color: #ff0000;">以下、ダウンロードしたzipファイルは全てoptディレクトリにUPしてあるものとします。</span>また、ログインユーザ名を<span style="color: #ff0000;">username</span>としています。</p>
<ul>
<li>/home/username/opt</li>
</ul>
<h4>Mecabのインストール</h4>
<ol>
<li>cd /home/username/opt</li>
<li>tar zxfv mecab-0.97.tar.gz</li>
<li>cd mecab-0.97</li>
<li>./configure &#45;&#45;prefix=/home/username/opt</li>
<li>make</li>
<li>make check</li>
<li>chmod z+x install-sh</li>
<li>make install</li>
</ol>
<p>インストールが完了したら、以下のコマンドで簡単なテストが可能です（ヘルプが表示されます）。</p>
<ul>
<li>/home/username/opt/bin/mecab -h</li>
</ul>
<h4>Mecab辞書のインストール</h4>
<ol>
<li>cd /home/username/opt</li>
<li>tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz</li>
<li>cd mecab-ipadic-2.7.0-20070801</li>
<li>./configure &#45;&#45;prefix=/home/username/opt &#45;&#45;exec-prefix=/home/username/opt<br />
&#45;&#45;with-mecab-config=/home/username/opt/bin/mecab-config</li>
<li>make</li>
<li>make install</li>
</ol>
<p>他のサイトの方はmecab-configなどは指定しなくてもインストールできているようですが、私の環境ではconfigure実行時に&#45;&#45;prefix、&#45;&#45;exec-prefix、&#45;&#45;with-mecab-configと3つの引数を指定しないとうまくインストールができませんでした。</p>
<p>また、&#45;&#45;with-charset=utf8などのように文字コードの変更を設定できるようなのですが、私の環境ではこの設定もうまくいかずデフォルトのEUCのままになっています。まぁ、このあたりはエンコードで処理可能なのでとりあえずはこのままで進めます。</p>
<h4>php-mecabのインストール</h4>
<p>php-mecabのインストールは若干苦戦しました。まずphpizeというコマンドが通らない。これはphpのbinまでのパスを全て指定することで実行可能です。</p>
<ul>
<li>cd /home/username/opt/php_mecab-0.3.0</li>
<li>/usr/local/php-5.2.6/bin/phpize</li>
</ul>
<p>しかし、phpizeを実行すると今度はautoconfが見つからないというエラーが出ます。この解決にはログインシェルの設定ファイルに環境変数を設定することで解決しました。</p>
<ul>
<li>vi /home/username/.cshrc</li>
<li>※以下の環境変数を追加
<ul>
<li>setenv  PHP_AUTOCONF    /usr/local/bin/autoconf259</li>
<li>setenv  PHP_AUTOHEADER  /usr/local/bin/autoheader259</li>
</ul>
</li>
</ul>
<p>設定ファイルを編集し終わったら環境変数を設定し直します（もしくは再ログインでもOK）。</p>
<ul>
<li>source ~/.cshrc</li>
</ul>
<p>これでphpizeを実行すればconfigureファイルが作成されるようになります。</p>
<ul>
<li>/usr/local/php-5.2.6/bin/phpize (今回は成功）</li>
</ul>
<p>続いてconfigureを実施します。</p>
<ul>
<li>./configure &#45;&#45;with-php-config=/usr/local/php-5.2.6/bin/php-config &#45;&#45;with-mecab=/home/username/opt/bin/mecab-config</li>
</ul>
<p>他のサイトの方は引数を指定しないでも通るようですが、私の環境では辞書と同様引数がないと通りませんでした。以上の手順をふまえ、php-mecabのインストール手順をまとめると次の通りです。</p>
<ol>
<li>シェル設定ファイルに環境変数をセット
<ol>
<li>vi /home/username/.cshrc</li>
<li>setenv  PHP_AUTOCONF    /usr/local/bin/autoconf259</li>
<li>setenv  PHP_AUTOHEADER  /usr/local/bin/autoheader259</li>
</ol>
</li>
<li>source ~/.cshrc</li>
<li>cd /home/username/opt</li>
<li>tar zxfv php_mecab-0.3.0.tgz</li>
<li>cd php_mecab-0.3.0</li>
<li>/usr/local/php-5.2.6/bin/phpize</li>
<li>./configure &#45;&#45;with-php-config=/usr/local/php-5.2.6/bin/php-config<br />
&#45;&#45;with-mecab=/home/username/opt/bin/mecab-config</li>
<li>make</li>
<li>make install</li>
</ol>
<p>以上でphp-mecabnのインストールは完了です。</p>
<h4>php.iniの設定</h4>
<p>php-mecabは拡張モジュールとして読み込む必要があり、拡張モジュールの設定はphp.iniに記述します。しかし、レンタルサーバーの環境では大元のphp.iniファイルを編集することはできません。</p>
<p>さくらのレンタルサーバーでは、各ユーザが独自のphp.iniの設定をできるようになっているのでそのphp.iniにmecabの設定を記述します。</p>
<ol>
<li>会員メニューにログインし、サーバー設定のページを表示</li>
<li>[アプリケーションの設定]の[php設定の編集]を開く</li>
<li>php.iniファイルパスに以下のパスを記述し[保存する]を選択
<ol>
<li>extension_dir=/home/username/opt/php_mecab-0.3.0/modules/</li>
<li>extension=mecab.so</li>
</ol>
</li>
</ol>
<p>以上でphp.iniの設定が完了します。これでphpからMecabを利用可能になります。</p>
<h4>サンプルの作成</h4>
<p>phpを用いたMecabのサンプルを作成しました。</p>
<p><a href="http://www.pghack.com/program/mecab/">サンプルはこちら</a></p>
<ul>
<li>はてなからrssを取得</li>
<li>rssの中身を解析</li>
<li>解析結果を表示</li>
</ul>
<p>Mecabを使うことで最新の記事情報を解析して人気キーワードのデータを集めたり、SEOなどに利用できそうです。こんなにすごいものをフリーで提供していただいて本当に感謝したいです。</p>
<p>＜参考＞</p>
<ul>
<li><a href="http://mecab.sourceforge.net/">Mecab</a></li>
<li><a href="http://d.hatena.ne.jp/rsky/20071228/1198841049">php_mecab-0.3.0</a></li>
<li><a href="http://page2.xrea.jp/#php_mecab">php_mecab関数リファレンス</a></li>
<li><a href="http://chalow.net/2008-11-15-1.html">さくらの500円レンタルサーバで MeCab を使う</a></li>
<li><a href="http://labs.unoh.net/2008/01/keyword-autolink-using-php-and-mecab.html">ウノウラボ - PHPとMecabでキーワード自動リンクを実装する</a></li>
<li><a href="http://blog.zuzara.com/2006/07/05/95/">MeCab PHP extension moduleを使ってみた</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/33/feed</wfw:commentRss>
		</item>
		<item>
		<title>iアプリ（機能の拡張）</title>
		<link>http://www.pghack.com/archives/32</link>
		<comments>http://www.pghack.com/archives/32#comments</comments>
		<pubDate>Sun, 16 Nov 2008 10:57:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[iアプリ]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=32</guid>
		<description><![CDATA[iアプリ(EclipseでHelloWorld作成)でiアプリのサンプルを作成しました。前回は文字列の表示だけだったので、あまり面白いアプリとは呼べません。そこで今回はもう少しアプリらしいものを作るための拡張を行います。拡張する内容は以下の通りです。

イベント処理（ボタンの入力に対する処理）
タイマー（アニメーション）
画像表示
音楽再生

これだけできるようになると、少しはアプリと呼べるものができるようになります。それでは拡張を行っていきます。

イベント処理
まずはボタンの入力に対する処理を追加します。 ボタンのイベントに対する処理はprocessEventというメソッドで実現します。
サンプル１を見る
ここでのポイントは

processEvent内で十字ボタンイベントによる描画座標(x, y)の更新
getWidth(), getHeight()による描画サイズの取得
clearRect()による描画エリアのクリア
repaint()による文字列の再描画

となります。描画のクリアをするためにあらかじめ画面のサイズを取得し、画面を一度クリアします。その後、文字列の描画位置を更新し再描画することで文字の描画位置の更新します。
タイマー（アニメーション）
先ほどのイベント処理だとボタンを一回押した時のイベントしか取得できず、何度もボタンを押しなおす必要があります。ボタンを押しっぱなしにした状態で描画位置を変更させるためにはタイマー機能を利用します。タイマー機能は、一定時間毎のイベントを処理することでアニメーションやゲームのスクロールなど色々と応用することもできます。
タイマー機能を実現するには、ShortTimerというクラスを使用します。このクラスは一定時間毎にタイマーイベントを発生させます。
サンプル２を見る
ここでのポイントは

タイマーを定義するためのstart()メソッドの追加
メインクラス&#8221;HelloWorld&#8221;からのstart()メソッドの呼び出し
processEvent()内でのタイマー処理の追加

となります。タイマーから発生されたイベントをprocessEventで受け取り一定時間毎の処理を定義しておくことでアニメーションなどの機能を実現できます。今回はHelloWorldの文字列の描画位置を一定時間毎に移動させることで文字列が動いているようにしています。 
画像表示
続いて画像の描画を行います。画像の描画には、MediaImage、Imageという２つのクラスを使用します。また、表示するImage（gifファイル）をあらかじめresフォルダに保存しておく必要があります。
サンプル３を見る
ここでのポイントは

MediaImage.getImage()による画像の読み込み
MediaImageのuse()による画像の使用宣言
drawImage()による画像の表示
読み込み時のtrycatchによるエラー処理
終了時の解放処理

となります。gifファイルはプロジェクトにあるresファルダ内に保存しておくようにしてください（ここにおいて置かないとimageを参照した時点でプログラムが落ちます）。
画像の表示の際に、画像を画面中央に表示するため画像サイズを取得するようにしています。また、KEY_SOFT_2ボタンを押したときに終了するようイベントを追加しました。
音楽再生
音楽の再生も画像表示の処理とほとんど同様の手順で実現できます。音楽の再生にはMediaSound、AudioPresenterという２つのクラスを使用します。音楽の再生にはmldと呼ばれるドコモ専用の音楽ファイルを使用します。このファイルもあらかじめresフォルダに保存しておく必要があります。
サンプル４を見る
ここでのポイントは

MediaManager.getSound()による音楽データの読み込み
mediaSoundのuse()による音楽データの使用宣言
AudioPresenter.getAudioPresenter()によるAudioPresenterの取得
AudioPresenterのsetSound()による使用宣言
AudioPresenterのplay()による音楽再生

となります。また、画像と同様エラー処理も実施します。音楽はstart()時点で自動的に演奏されるようにしています。また数字の１を押した際に再生し直すようにイベントを追加しました。
アプリの公開
アプリを作成したら実際に公開してみます。プロジェクトのbinフォルダの下にjarファイル、jamファイル、htmlファイルができているのでこの３つのファイルをサーバーにUPします。UPしたhtmlファイルを携帯から見に行けば作成したiアプリのウンロードが可能です。
今まで行った拡張をまとめたものをアプリとして作成しました。以下のQRコードを見に行くとiアプリをダウンロードできます。また作成したプロジェクトのzipも置いてあります（F706iにて動作確認）。


サンプルをダウンロード

画像、音楽は以下のサイトからお借りしました（もし問題がある際は削除しますのでご連絡ください）。

「ケロ⑨ destiny」に絵をつけてみました（ニコニコ動画）
Music Load様

以上でiアプリの拡張が完了しました。iアプリの作成も一通りやってみるとそれほど難しくないですね。ただ、本格的なアプリの作成を考えるとデータサイズやプログラムの制約が多く、また機種依存の処理なども考慮しなくてはならないので面倒ではあります。
しかも、auやソフトバンクのアプリとは全く互換性がないので（泣）、全キャリア対応を考えると頭の痛いことになります。今のところ、個人的な趣味アプリを作成する程度しかできませんね。
今後、googleのAndroidなど開発環境が普及していくことで互換性の問題も変わっていくかもしれません。そうなれば個人による携帯アプリの開発も普及していくかもしれません。
＜参考＞

ITmarks(環境準備)
J2SEとDoJadで愛アプリ（サンプル作成） 

 
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pghack.com/archives/31">iアプリ(EclipseでHelloWorld作成)</a>でiアプリのサンプルを作成しました。前回は文字列の表示だけだったので、あまり面白いアプリとは呼べません。そこで今回はもう少しアプリらしいものを作るための拡張を行います。拡張する内容は以下の通りです。</p>
<ul>
<li>イベント処理（ボタンの入力に対する処理）</li>
<li>タイマー（アニメーション）</li>
<li>画像表示</li>
<li>音楽再生</li>
</ul>
<p>これだけできるようになると、少しはアプリと呼べるものができるようになります。それでは拡張を行っていきます。</p>
<p><span id="more-32"></span></p>
<h4>イベント処理</h4>
<p>まずはボタンの入力に対する処理を追加します。 ボタンのイベントに対する処理は<span style="color: #ff0000;">processEvent</span>というメソッドで実現します。</p>
<p><a href="http://www.pghack.com/program/iapri/sample1.html">サンプル１を見る</a></p>
<p>ここでのポイントは</p>
<ul>
<li>processEvent内で十字ボタンイベントによる描画座標(x, y)の更新</li>
<li>getWidth(), getHeight()による描画サイズの取得</li>
<li>clearRect()による描画エリアのクリア</li>
<li>repaint()による文字列の再描画</li>
</ul>
<p>となります。描画のクリアをするためにあらかじめ画面のサイズを取得し、画面を一度クリアします。その後、文字列の描画位置を更新し再描画することで文字の描画位置の更新します。</p>
<h4>タイマー（アニメーション）</h4>
<p>先ほどのイベント処理だとボタンを一回押した時のイベントしか取得できず、何度もボタンを押しなおす必要があります。ボタンを押しっぱなしにした状態で描画位置を変更させるためにはタイマー機能を利用します。タイマー機能は、一定時間毎のイベントを処理することでアニメーションやゲームのスクロールなど色々と応用することもできます。</p>
<p>タイマー機能を実現するには、<span style="color: #ff0000;">ShortTimer</span>というクラスを使用します。このクラスは一定時間毎にタイマーイベントを発生させます。</p>
<p><a href="http://www.pghack.com/program/iapri/sample2.html">サンプル２を見る</a></p>
<p>ここでのポイントは</p>
<ul>
<li>タイマーを定義するためのstart()メソッドの追加</li>
<li>メインクラス&#8221;HelloWorld&#8221;からのstart()メソッドの呼び出し</li>
<li>processEvent()内でのタイマー処理の追加</li>
</ul>
<p>となります。タイマーから発生されたイベントをprocessEventで受け取り一定時間毎の処理を定義しておくことでアニメーションなどの機能を実現できます。今回はHelloWorldの文字列の描画位置を一定時間毎に移動させることで文字列が動いているようにしています。 </p>
<h4>画像表示</h4>
<p>続いて画像の描画を行います。画像の描画には、<span style="color: #ff0000;">MediaImage、Image</span>という２つのクラスを使用します。また、表示するImage（gifファイル）をあらかじめresフォルダに保存しておく必要があります。</p>
<p><a href="http://www.pghack.com/program/iapri/sample3.html">サンプル３を見る</a></p>
<p>ここでのポイントは</p>
<ul>
<li>MediaImage.getImage()による画像の読み込み</li>
<li>MediaImageのuse()による画像の使用宣言</li>
<li>drawImage()による画像の表示</li>
<li>読み込み時のtrycatchによるエラー処理</li>
<li>終了時の解放処理</li>
</ul>
<p>となります。gifファイルはプロジェクトにあるresファルダ内に保存しておくようにしてください（ここにおいて置かないとimageを参照した時点でプログラムが落ちます）。</p>
<p>画像の表示の際に、画像を画面中央に表示するため画像サイズを取得するようにしています。また、KEY_SOFT_2ボタンを押したときに終了するようイベントを追加しました。</p>
<h4>音楽再生</h4>
<p>音楽の再生も画像表示の処理とほとんど同様の手順で実現できます。音楽の再生には<span style="color: #ff0000;">MediaSound、AudioPresenter</span>という２つのクラスを使用します。音楽の再生にはmldと呼ばれるドコモ専用の音楽ファイルを使用します。このファイルもあらかじめresフォルダに保存しておく必要があります。</p>
<p><a href="http://www.pghack.com/program/iapri/sample4.html">サンプル４を見る</a></p>
<p>ここでのポイントは</p>
<ul>
<li>MediaManager.getSound()による音楽データの読み込み</li>
<li>mediaSoundのuse()による音楽データの使用宣言</li>
<li>AudioPresenter.getAudioPresenter()によるAudioPresenterの取得</li>
<li>AudioPresenterのsetSound()による使用宣言</li>
<li>AudioPresenterのplay()による音楽再生</li>
</ul>
<p>となります。また、画像と同様エラー処理も実施します。音楽はstart()時点で自動的に演奏されるようにしています。また数字の１を押した際に再生し直すようにイベントを追加しました。</p>
<h4>アプリの公開</h4>
<p>アプリを作成したら実際に公開してみます。プロジェクトのbinフォルダの下にjarファイル、jamファイル、htmlファイルができているのでこの３つのファイルをサーバーにUPします。UPしたhtmlファイルを携帯から見に行けば作成したiアプリのウンロードが可能です。</p>
<p>今まで行った拡張をまとめたものをアプリとして作成しました。以下のQRコードを見に行くとiアプリをダウンロードできます。また作成したプロジェクトのzipも置いてあります（F706iにて動作確認）。</p>
<p style="PADDING-LEFT: 30px"><img src="http://www.pghack.com/program/iapri/iapri.bmp" alt="" width="100" height="103" /></p>
<ul>
<li><a href="http://www.pghack.com/program/iapri/HelloWorld.zip">サンプルをダウンロード</a></li>
</ul>
<p>画像、音楽は以下のサイトからお借りしました（もし問題がある際は削除しますのでご連絡ください）。</p>
<ul>
<li><a href="http://www.nicovideo.jp/watch/sm3228702">「ケロ⑨ destiny」に絵をつけてみました（ニコニコ動画）</a></li>
<li><a href="http://f39.aaa.livedoor.jp/~hirokazu/">Music Load様</a></li>
</ul>
<p>以上でiアプリの拡張が完了しました。iアプリの作成も一通りやってみるとそれほど難しくないですね。ただ、本格的なアプリの作成を考えるとデータサイズやプログラムの制約が多く、また機種依存の処理なども考慮しなくてはならないので面倒ではあります。</p>
<p>しかも、auやソフトバンクのアプリとは全く互換性がないので（泣）、全キャリア対応を考えると頭の痛いことになります。今のところ、個人的な趣味アプリを作成する程度しかできませんね。</p>
<p>今後、googleのAndroidなど開発環境が普及していくことで互換性の問題も変わっていくかもしれません。そうなれば個人による携帯アプリの開発も普及していくかもしれません。</p>
<p>＜参考＞</p>
<ul>
<li><a href="http://www.itmarks.co.jp/iappli/iappli.html">ITmarks(環境準備)</a></li>
<li><a href="http://muimi.com/a/iapp/">J2SEとDoJadで愛アプリ（サンプル作成）</a> </li>
</ul>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/32/feed</wfw:commentRss>
		</item>
		<item>
		<title>iアプリ(EclipseでHelloWorld作成)</title>
		<link>http://www.pghack.com/archives/31</link>
		<comments>http://www.pghack.com/archives/31#comments</comments>
		<pubDate>Sun, 16 Nov 2008 05:31:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[iアプリ]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=31</guid>
		<description><![CDATA[iアプリ（開発環境の準備）でiアプリの開発環境の準備が整いました。今回はEclipseにより簡単なサンプルを作成していきます。

Eclipseの環境設定
前回の作業でアプリケーションのインストールは全て完了しました。しかし、このままだとEclipse上からDoJaの開発ができないので、Eclipseでの環境設定を行います。
まずEclipseを実行します。初回だとワークスペースの指定などありますが、これは自分の好きなフォルダを指定して構いません。また、最初の画面では&#8221;ようこそ&#8221;というタブが開いているかもしれませんが、特に必要ないのでタブを閉じておきます。
[ウィンドウ]メニューから[設定]を選択します。 左側の一覧にある[DoJa-5.1 Environment]を選択してください。このページの[DoJa-5.1のインストール先]の項目をDoJaをインストールしたパスに変更してください。（当環境では&#8221;D:\Program Files\iDKDoJa5.1&#8243;）
以上でEclipseからDoJaの開発ができるようになります。
新規プロジェクトの作成
続いてプロジェクトを作成していきます。

[ファイル] - [新規] - [プロジェクト]を選択
リストの中から[Java]のフォルダを開き[DoJa-5.1プロジェクト]を選択し[次へ]を選択
プロジェクト名を&#8221;HelloWorld&#8221;と入力し[終了]を選択

以上でプロジェクトの作成が完了しました。
新規クラスの作成
続いてクラスを作成します。

左端にあるパッケージエクスプローラ画面を選択状態する
[プロジェクト] - [DoJa-5.1] - [ソースファイルの新規作成]を選択する
ソースファイル名の項目に&#8221;HelloWorld&#8221;と入力し[OK]ボタンを選択する

以上でプロジェクトのsrcに新しくHelloWorld.javaというファイルが追加されます。ダブルクリックすると画面にソースコードが表示されます。これでクラスの作成が完了しました。
ソースコードの修正
表示されたコードを見ると、いくつかクラスが定義されています。このままでも実行可能ですが、せっかくなのでHelloWorldという文字を画面に表示させるプログラムに修正します。以下のソースコードを入力してください（コピー＆ペーストする場合、全角スペースを変換してください）。
import com.nttdocomo.ui.*;
//==============================================
// HelloWorld
//==============================================
public class HelloWorld extends IApplication
{
　　MyCanvas myCanvas;
　　public void start(){
　　　　myCanvas = new MyCanvas();
　　　　Display.setCurrent(myCanvas);
　　}
}
//==============================================
// myCanvas
//==============================================
class MyCanvas extends Canvas
{
　　public void paint(Graphics g){
　　　　g.drawString(&#8221;Hello World!&#8221;, 10,10);
　　}
}
プログラムを修正したらソースコードを保存してください。以上でソースコードの修正は完了です。
プログラムの実行
ソースコードの修正が完了したら、いよいよプログラムを実行します。

[実行] - [構成および実行]を選択
左の一覧から[DoJa-5.1アプリケーション]をダブルクリック
プロジェクトの項目に”HelloWorld&#8221;と入力し[実行]を選択する

以上でiアプリのアプリケーションが実行されます。表示された画面のうち、メインディスプレイの画面に”Hello World!&#8221;という文字が表示されているか確認してください。
プログラムの実行がうまくいかなかった場合、以下の設定が行われているか確認してください。

JDKのbinへのPATHが環境変数に定義されているか
 [ウィンドウ] - [設定] - [DoJa-5.1 Environment]ページのDoJa-5.1のインストール先に正しいインストールパスが設定されているか
[プロジェクト] - [DoJa-5.1] - [ADF/トラステッド動作設定]を選択し、ADF設定の中のAppClassが&#8221;HelloWorld&#8221;に設定されているか

ADFのクラス名の設定は、クラス作成の際に自動的に設定されるようですが、もし設定がない場合は自分で設定が必要となります。
上記の設定を見直してもうまく動かない場合、アプリケーションのインストールに問題がある可能性があります。アプリケーションのインストールから再度確認してみてください。

※cygwinというプログラムをインストールしていると、JDKの環境変数の設定の際に問題が発生することがあるようです。その際はcygwinの環境設定を外してから実行してみてください。

以上でiアプリのサンプルプログラムの作成は完了です。次回は画像の表示、音楽の再生を実施します。
 
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pghack.com/archives/30">iアプリ（開発環境の準備）</a>でiアプリの開発環境の準備が整いました。今回はEclipseにより簡単なサンプルを作成していきます。</p>
<p><span id="more-31"></span></p>
<h4>Eclipseの環境設定</h4>
<p>前回の作業でアプリケーションのインストールは全て完了しました。しかし、このままだとEclipse上からDoJaの開発ができないので、Eclipseでの環境設定を行います。</p>
<p>まずEclipseを実行します。初回だとワークスペースの指定などありますが、これは自分の好きなフォルダを指定して構いません。また、最初の画面では&#8221;ようこそ&#8221;というタブが開いているかもしれませんが、特に必要ないのでタブを閉じておきます。</p>
<p>[ウィンドウ]メニューから[設定]を選択します。 左側の一覧にある[DoJa-5.1 Environment]を選択してください。このページの<span style="color: #ff0000;">[DoJa-5.1のインストール先]の項目をDoJaをインストールしたパスに変更してください。</span>（当環境では&#8221;D:\Program Files\iDKDoJa5.1&#8243;）</p>
<p>以上でEclipseからDoJaの開発ができるようになります。</p>
<h4>新規プロジェクトの作成</h4>
<p>続いてプロジェクトを作成していきます。</p>
<ol>
<li>[ファイル] - [新規] - [プロジェクト]を選択</li>
<li>リストの中から[Java]のフォルダを開き[DoJa-5.1プロジェクト]を選択し[次へ]を選択</li>
<li>プロジェクト名を&#8221;HelloWorld&#8221;と入力し[終了]を選択</li>
</ol>
<p>以上でプロジェクトの作成が完了しました。</p>
<h4>新規クラスの作成</h4>
<p>続いてクラスを作成します。</p>
<ol>
<li>左端にあるパッケージエクスプローラ画面を選択状態する</li>
<li>[プロジェクト] - [DoJa-5.1] - [ソースファイルの新規作成]を選択する</li>
<li>ソースファイル名の項目に&#8221;HelloWorld&#8221;と入力し[OK]ボタンを選択する</li>
</ol>
<p>以上でプロジェクトのsrcに新しくHelloWorld.javaというファイルが追加されます。ダブルクリックすると画面にソースコードが表示されます。これでクラスの作成が完了しました。</p>
<h4>ソースコードの修正</h4>
<p>表示されたコードを見ると、いくつかクラスが定義されています。このままでも実行可能ですが、せっかくなのでHelloWorldという文字を画面に表示させるプログラムに修正します。以下のソースコードを入力してください（コピー＆ペーストする場合、全角スペースを変換してください）。</p>
<p style="padding-left: 30px; font-size:x-small; line-height:12pt;">import com.nttdocomo.ui.*;<br />
//==============================================<br />
// HelloWorld<br />
//==============================================<br />
public class HelloWorld extends IApplication<br />
{<br />
　　MyCanvas myCanvas;<br />
　　public void start(){<br />
　　　　myCanvas = new MyCanvas();<br />
　　　　Display.setCurrent(myCanvas);<br />
　　}<br />
}<br />
//==============================================<br />
// myCanvas<br />
//==============================================<br />
class MyCanvas extends Canvas<br />
{<br />
　　public void paint(Graphics g){<br />
　　　　g.drawString(&#8221;Hello World!&#8221;, 10,10);<br />
　　}<br />
}</p>
<p>プログラムを修正したらソースコードを保存してください。以上でソースコードの修正は完了です。</p>
<h4>プログラムの実行</h4>
<p>ソースコードの修正が完了したら、いよいよプログラムを実行します。</p>
<ol>
<li>[実行] - [構成および実行]を選択</li>
<li>左の一覧から[DoJa-5.1アプリケーション]をダブルクリック</li>
<li>プロジェクトの項目に”HelloWorld&#8221;と入力し[実行]を選択する</li>
</ol>
<p>以上でiアプリのアプリケーションが実行されます。表示された画面のうち、メインディスプレイの画面に”Hello World!&#8221;という文字が表示されているか確認してください。</p>
<p>プログラムの実行がうまくいかなかった場合、以下の設定が行われているか確認してください。</p>
<ol>
<li>JDKのbinへのPATHが環境変数に定義されているか</li>
<li> [ウィンドウ] - [設定] - [DoJa-5.1 Environment]ページのDoJa-5.1のインストール先に正しいインストールパスが設定されているか</li>
<li>[プロジェクト] - [DoJa-5.1] - [ADF/トラステッド動作設定]を選択し、ADF設定の中のAppClassが&#8221;HelloWorld&#8221;に設定されているか</li>
</ol>
<p>ADFのクラス名の設定は、クラス作成の際に自動的に設定されるようですが、もし設定がない場合は自分で設定が必要となります。</p>
<p>上記の設定を見直してもうまく動かない場合、アプリケーションのインストールに問題がある可能性があります。アプリケーションのインストールから再度確認してみてください。</p>
<ul>
<li>※cygwinというプログラムをインストールしていると、JDKの環境変数の設定の際に問題が発生することがあるようです。その際はcygwinの環境設定を外してから実行してみてください。</li>
</ul>
<p>以上でiアプリのサンプルプログラムの作成は完了です。次回は画像の表示、音楽の再生を実施します。</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/31/feed</wfw:commentRss>
		</item>
		<item>
		<title>iアプリ（開発環境の準備）</title>
		<link>http://www.pghack.com/archives/30</link>
		<comments>http://www.pghack.com/archives/30#comments</comments>
		<pubDate>Sat, 15 Nov 2008 04:54:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[iアプリ]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=30</guid>
		<description><![CDATA[最近はiPhoneなど高機能な携帯も普及してきて、私も携帯アプリでも作ってみようかと考えて色々調べてみました。そしたらiPhoneのアプリはMacでないと作成できないことが判明しがっかり。
そこで、今回は自分も使っているドコモのiアプリを作成してみることにしました。まずはiアプリ開発のための環境を準備します。

開発アプリのDownLoad
iアプリの開発環境を作るためには以下のアプリケーションが必要となります。以下のアプリケーションを全てダウンロードしてください。

JDK(1.4.2_17)　（J2SDK/J2RE - 1.4の欄 から選択）
Eclipse3.2
Eclipse3.2 日本語化パッチ
DoJa(5.1)

JDKはJavaアプリの開発環境、DoJaはiアプリの開発環境です。EclipseはJava用の統合開発環境（IDE）のため必須ではないですが、あると開発が楽になるのでインストールすることにします。

※JDKは1.5以降のバージョンではうまく動きませんでした。DoJaが対応していないようです。
※Eclipseの3.4でもうまく動きませんでした。こちらもDojaが対応していないようです。

開発アプリのインストール
 ダウンロードが完了したら、それぞれインストールしていきます。
JDK(1.4.2_17)
JDK(1.4.2_17)はダウンロードしたexeファイルをそのまま実行するだけです。インストール完了後に大事な作業があります。それはJDKのbinへのPATHを環境変数で定義することです。これをしないとJavaアプリが実行できないので注意してください。
環境変数の定義方法
１．マイコンピュータを右クリックして[プロパティ]を選択
２．上のタブから[詳細設定]を選択
３．下にある[環境変数]のボタンをクリック
４．ユーザー環境変数の[新規]ボタンをクリック
５．[変数]の項目に&#8221;PATH&#8221;と入力
６．[変数値]の項目JDKのbinへのパスを入力
 　（当環境では&#8221;D:\Program Files\Java\j2sdk1.4.2_04\bin&#8221;）
Eclipse3.2／日本語化パッチ
Eclipseのインストール作業はダウンロードしたzipファイルを解凍するだけです。他に特別な作業はありません。日本語化パッチも同様に解凍してeclipseの解凍フォルダに全てのファイルを上書きコピーするだけです。同じフォルダ内で解凍した場合、自動的に上書きされます。
ただし、DoJaのインストール時にeclipseのフォルダパスを参照させる必要があります。デスクトップなどで解凍した場合は、適当な位置に移動するようにしてください。（私の環境では”D:\Program Files\eclipse”に移動）
DoJa(5.1)
ダウンロードしたzipファイルを解凍し、DISK1というフォルダにあるsetup.exeを実行します。
１．インストール先を選択する（当環境では”D:\Program Files\iDKDoJa5.1”）
２．セットアップタイプで[カスタム]を選択する
３．NetBeansの選択を解除し、Eclipseに選択があるのを確認する
４．Eclipseのインストール先を指定する（当環境では”D:\Program Files\eclipse”）
この時点でDoJaによるiアプリの開発ができるようになります。また、DoJaにはインストールフォルダのappsの中に&#8221;CarRace&#8221;というサンプルが付いているので実行できるか確認してください。 
以上で開発環境の準備は完了です。次回はEclipseで実際に開発していきます。
 
]]></description>
			<content:encoded><![CDATA[<p>最近はiPhoneなど高機能な携帯も普及してきて、私も携帯アプリでも作ってみようかと考えて色々調べてみました。そしたらiPhoneのアプリはMacでないと作成できないことが判明しがっかり。</p>
<p>そこで、今回は自分も使っているドコモのiアプリを作成してみることにしました。まずはiアプリ開発のための環境を準備します。</p>
<p><span id="more-30"></span></p>
<h4>開発アプリのDownLoad</h4>
<p>iアプリの開発環境を作るためには以下のアプリケーションが必要となります。以下のアプリケーションを全てダウンロードしてください。</p>
<ul>
<li><a href="http://java.sun.com/products/archive/index.html">JDK(1.4.2_17)</a>　（J2SDK/J2RE - 1.4の欄 から選択）</li>
<li><a href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.2-200606291905/index.php">Eclipse3.2</a></li>
<li><a href="http://archive.eclipse.org/eclipse/downloads/drops/L-3.2_Language_Packs-200607121700/index.php">Eclipse3.2 日本語化パッチ</a></li>
<li><a href="http://www.nttdocomo.co.jp/service/imode/make/content/iappli/tool/doja/doja51/index.html">DoJa(5.1)</a></li>
</ul>
<p>JDKはJavaアプリの開発環境、DoJaはiアプリの開発環境です。EclipseはJava用の統合開発環境（IDE）のため必須ではないですが、あると開発が楽になるのでインストールすることにします。</p>
<ul>
<li>※JDKは1.5以降のバージョンではうまく動きませんでした。DoJaが対応していないようです。</li>
<li>※Eclipseの3.4でもうまく動きませんでした。こちらもDojaが対応していないようです。</li>
</ul>
<h4>開発アプリのインストール</h4>
<p> ダウンロードが完了したら、それぞれインストールしていきます。</p>
<p><strong>JDK(1.4.2_17)</strong></p>
<p style="padding-left: 30px;">JDK(1.4.2_17)はダウンロードしたexeファイルをそのまま実行するだけです。インストール完了後に大事な作業があります。それは<span style="color: #ff0000;">JDKのbinへのPATHを環境変数で定義することです。</span>これをしないとJavaアプリが実行できないので注意してください。</p>
<p style="padding-left: 30px;">環境変数の定義方法</p>
<p style="padding-left: 60px;">１．マイコンピュータを右クリックして[プロパティ]を選択</p>
<p style="padding-left: 60px;">２．上のタブから[詳細設定]を選択</p>
<p style="padding-left: 60px;">３．下にある[環境変数]のボタンをクリック</p>
<p style="padding-left: 60px;">４．ユーザー環境変数の[新規]ボタンをクリック</p>
<p style="padding-left: 60px;">５．[変数]の項目に&#8221;PATH&#8221;と入力</p>
<p style="padding-left: 60px;">６．[変数値]の項目JDKのbinへのパスを入力<br />
 　（当環境では&#8221;D:\Program Files\Java\j2sdk1.4.2_04\bin&#8221;）</p>
<p><strong>Eclipse3.2／日本語化パッチ</strong></p>
<p style="padding-left: 30px;">Eclipseのインストール作業はダウンロードしたzipファイルを解凍するだけです。他に特別な作業はありません。日本語化パッチも同様に解凍してeclipseの解凍フォルダに全てのファイルを上書きコピーするだけです。同じフォルダ内で解凍した場合、自動的に上書きされます。</p>
<p style="padding-left: 30px;">ただし、<span style="color: #ff0000;">DoJaのインストール時にeclipseのフォルダパスを参照させる必要があります。</span>デスクトップなどで解凍した場合は、適当な位置に移動するようにしてください。（私の環境では”D:\Program Files\eclipse”に移動）</p>
<p><strong>DoJa(5.1)</strong></p>
<p style="PADDING-LEFT: 30px">ダウンロードしたzipファイルを解凍し、DISK1というフォルダにあるsetup.exeを実行します。</p>
<p style="PADDING-LEFT: 30px">１．インストール先を選択する（当環境では”D:\Program Files\iDKDoJa5.1”）</p>
<p style="PADDING-LEFT: 30px">２．セットアップタイプで[カスタム]を選択する</p>
<p style="PADDING-LEFT: 30px">３．NetBeansの選択を解除し、Eclipseに選択があるのを確認する</p>
<p style="PADDING-LEFT: 30px">４．Eclipseのインストール先を指定する（当環境では”D:\Program Files\eclipse”）</p>
<p style="PADDING-LEFT: 30px">この時点でDoJaによるiアプリの開発ができるようになります。また、DoJaにはインストールフォルダのappsの中に&#8221;CarRace&#8221;というサンプルが付いているので実行できるか確認してください。 </p>
<p>以上で開発環境の準備は完了です。次回はEclipseで実際に開発していきます。</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/30/feed</wfw:commentRss>
		</item>
		<item>
		<title>javascriptでテトリス</title>
		<link>http://www.pghack.com/archives/28</link>
		<comments>http://www.pghack.com/archives/28#comments</comments>
		<pubDate>Wed, 20 Aug 2008 16:28:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=28</guid>
		<description><![CDATA[ 
javascriptでテトリスを作成しました。ゲームを作成するとなるとjavascriptでは難しいかと思いましたが、javascriptでも十分に作成することができました。
テトリスを作成するために必要となる処理は、次のようになります。

入力キーのチェック（回転、移動、Pauseなど）
ピース操作（作成、配置、移動、回転、衝突判定など）
自動落下（時間毎のループ処理）
ライン削除
ゲームオーバーの判定
描画処理
スコア等の表示（今回はライン削除数を表示）

テトリスを作成するに当たり一番大変なのがピースを操作する処理です。 特に衝突判定は処理が複雑で作るのが大変でした。

javascriptテトリスを見る
javascriptテトリス 関数一覧


テトリスを作成したきっかけ
テトリスを作成したのは565バイトテトリスというものを知ったのがきっかけです。javascriptでわずか7行ほどでテトリスを作っているのを知り自分でも作って見ようと考えました。
今回のテトリス作成でゲーム性を出すために必要となる処理をいくつか追加しました。

一定時間毎にピースの落下速度を早くする
ポーズ中に画面をブラインドする
削除ライン数の表示

しかし、まだ十分でない機能もあります。

カベ付近で回転がうまくできない
スコア計算がない
ライン削除のエフェクトがない
プレイ時間がない

これらについてはある程度割り切って作成したため仕方ないですが、今後の課題として取り組んでいければと思います。
その他にもスコアのランキング登録などを行っていくとよりｹﾞｰﾑ性が高くなると思います。WEB上で何かゲームを作成するとなるとFlashが一般的かもしれませんが、Javascriptでもかなりのことはできるようです。
今回のテトリス作成で、落ち物パズルの基本的な仕組みが分かるようになりました。プログラミングを始めたいと思ったときや、何かを作りたいと思ったときにJavascriptを選ぶというのは有効な選択肢の１つと言えそうです。

javascriptテトリスを見る
javascriptテトリス 関数一覧

＜参考＞

テトリスの作り方
わずか565バイトテトリスのプログラミング解説
 

]]></description>
			<content:encoded><![CDATA[<p> <a href="http://www.pghack.com/program/game/index.html"><img style="border: 1px solid gray; margin: 10px;" src="http://www.pghack.com/wp-content/uploads/2008/08/game.jpg" alt="" width="216" height="316" /></a></p>
<p>javascriptでテトリスを作成しました。ゲームを作成するとなるとjavascriptでは難しいかと思いましたが、javascriptでも十分に作成することができました。</p>
<p>テトリスを作成するために必要となる処理は、次のようになります。</p>
<ul>
<li>入力キーのチェック（回転、移動、Pauseなど）</li>
<li>ピース操作（作成、配置、移動、回転、衝突判定など）</li>
<li>自動落下（時間毎のループ処理）</li>
<li>ライン削除</li>
<li>ゲームオーバーの判定</li>
<li>描画処理</li>
<li>スコア等の表示（今回はライン削除数を表示）</li>
</ul>
<p>テトリスを作成するに当たり一番大変なのがピースを操作する処理です。 特に衝突判定は処理が複雑で作るのが大変でした。</p>
<ul>
<li><a href="http://www.pghack.com/program/game/index.html">javascriptテトリスを見る</a></li>
<li><a href="http://www.pghack.com/program/game/game.html">javascriptテトリス 関数一覧</a></li>
</ul>
<p><span id="more-28"></span></p>
<h4>テトリスを作成したきっかけ</h4>
<p>テトリスを作成したのは565バイトテトリスというものを知ったのがきっかけです。javascriptでわずか7行ほどでテトリスを作っているのを知り自分でも作って見ようと考えました。</p>
<p>今回のテトリス作成でゲーム性を出すために必要となる処理をいくつか追加しました。</p>
<ul>
<li>一定時間毎にピースの落下速度を早くする</li>
<li>ポーズ中に画面をブラインドする</li>
<li>削除ライン数の表示</li>
</ul>
<p>しかし、まだ十分でない機能もあります。</p>
<ul>
<li>カベ付近で回転がうまくできない</li>
<li>スコア計算がない</li>
<li>ライン削除のエフェクトがない</li>
<li>プレイ時間がない</li>
</ul>
<p>これらについてはある程度割り切って作成したため仕方ないですが、今後の課題として取り組んでいければと思います。</p>
<p>その他にもスコアのランキング登録などを行っていくとよりｹﾞｰﾑ性が高くなると思います。WEB上で何かゲームを作成するとなるとFlashが一般的かもしれませんが、Javascriptでもかなりのことはできるようです。</p>
<p>今回のテトリス作成で、落ち物パズルの基本的な仕組みが分かるようになりました。プログラミングを始めたいと思ったときや、何かを作りたいと思ったときにJavascriptを選ぶというのは有効な選択肢の１つと言えそうです。</p>
<ul>
<li><a href="http://www.pghack.com/program/game/index.html">javascriptテトリスを見る</a></li>
<li><a href="http://www.pghack.com/program/game/game.html">javascriptテトリス 関数一覧</a></li>
</ul>
<p>＜参考＞</p>
<ul>
<li><a href="http://www13.plala.or.jp/kymats/study/game_other/SPACE_TETRIS/st1.html">テトリスの作り方</a></li>
<li><a href="http://zapanet.info/blog/item/1125">わずか565バイトテトリスのプログラミング解説</a><br />
 </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/28/feed</wfw:commentRss>
		</item>
		<item>
		<title>Yahoo!のPV数がすごい件</title>
		<link>http://www.pghack.com/archives/27</link>
		<comments>http://www.pghack.com/archives/27#comments</comments>
		<pubDate>Mon, 21 Apr 2008 15:38:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Webサイト]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=27</guid>
		<description><![CDATA[Yahoo!のトップページのPVについてPDFで資料が公開されています。
http://netadguide.yahoo.co.jp/info/rate/
１ヶ月のサービス全体の平均PV数が４５０億だそうです。トップページだけでも45億PVになるそうです。さらにすごいのは、各ページにおける広告掲載料金とPV数が公開されているところです。
保障インプレッション数（表示数）に応じて単価が変わっていき、100万impsだと0.5～2円程度、4000万impsだと0.2～0.9円程度というように変化していきます。これを金額にすると、100万impsだと50～200万円、4000万impsだと800万～3600万円。
トップページのPV数が45億PVなので1日平均1.5億PV。トップページの一番右上に表示される通常サイズのバナーの単価が1円/impsとすると、1日で1.5億になりますね（実際はランダムで表示されるので1/10程度でしょうが）。
1週間Yahooのトップページにバナー表示すればかなりの宣伝効果にはなると思いますが、それだけで1億円以上のお金が必要になります。おそるべしWeb広告収入。それよりもさらに影響力を持っているのがgoogleのアドセンス広告収入です。ネット業界トップの企業は本当にすごいとしかいいようがありません。
]]></description>
			<content:encoded><![CDATA[<p>Yahoo!のトップページのPVについてPDFで資料が公開されています。</p>
<p><a href="http://netadguide.yahoo.co.jp/info/rate/">http://netadguide.yahoo.co.jp/info/rate/</a></p>
<p>１ヶ月のサービス全体の平均PV数が<strong>４５０億</strong>だそうです。トップページだけでも45億PVになるそうです。さらにすごいのは、各ページにおける<strong>広告掲載料金とPV数が公開されている</strong>ところです。</p>
<p>保障インプレッション数（表示数）に応じて単価が変わっていき、100万impsだと0.5～2円程度、4000万impsだと0.2～0.9円程度というように変化していきます。これを金額にすると、100万impsだと50～200万円、4000万impsだと800万～3600万円。</p>
<p>トップページのPV数が45億PVなので1日平均1.5億PV。トップページの一番右上に表示される通常サイズのバナーの単価が1円/impsとすると、1日で1.5億になりますね（実際はランダムで表示されるので1/10程度でしょうが）。</p>
<p>1週間Yahooのトップページにバナー表示すればかなりの宣伝効果にはなると思いますが、それだけで<strong>1億円以上のお金</strong>が必要になります。おそるべしWeb広告収入。それよりもさらに影響力を持っているのがgoogleのアドセンス広告収入です。ネット業界トップの企業は本当にすごいとしかいいようがありません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/27/feed</wfw:commentRss>
		</item>
		<item>
		<title>jQueryでRSSリーダーを作成</title>
		<link>http://www.pghack.com/archives/22</link>
		<comments>http://www.pghack.com/archives/22#comments</comments>
		<pubDate>Sun, 20 Apr 2008 12:15:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=22</guid>
		<description><![CDATA[
前回 Ajaxサンプル集を作ったときの内容を少し発展させjQueryを用いてRSSリーダーを作成しました。
作成したRSSリーダーでは、

RSSのURL登録（クッキー使用）
RSSのリストを折りたたんで表示
RSSのリストをドラッグ可能
選択したリストを最前面に表示
リストのカラム数を変更

など色々な処理ができるようになっています。
今回はPHPでRSSの処理を行い、ユーザーインターフェイス上の処理をjavaScriptで行うなど色々な技術を使って作成しました。色々と初めて行う処理が多かったのですが、非常に勉強になりました。
ｊQuery RSSリーダーを見る

RSSリーダーを作成したきっかけ
このRSSリーダーを作成したのは、効率のいい情報収集ができないかと考えたのがきっかけです。いくつものサイトを横断することなく一度に多くの情報を見ることができれば時間収集の時間も短縮されると思い作成しました。
このRSSリーダーは一度に多くの情報を表示することを一番の主眼として作成しています。そのため文字サイズや文字間隔はかなり小さく設定しています。
ぱっと見た感じではWebページだとは思えないようなデザインなので（Excelに似ている！？）、仕事中に見ていてもきっと目立ちません。visitedサイトは黄色のマーカーっぽくしてどこを見たかを分かりやすく表示したつもりです。
今回はじめてWebアプリケーションらしいものを作成したのですが、それなりに使えるサイトになったのではないかと感じます。
RSSリーダーで学んだ技術

PearのRSSでRSSデータを扱う
PearのCache_LiteによりRSSのデータをキャッシュで保持する（1時間）
保持していたキャッシュを使用する
クッキーにRSSを保存する（PHP, Javascript両方から実施）
保存されているクッキーを使用する
リストの折りたたみ処理
z-indexによるリストの表示順（前面に移動）の処理
CSS全般（U/Iを実現するための設定色々）

全体的にWeb上でU/Iの向上を実現するための処理が多いですね。ユーザーの使い勝手向上はどんな分野でも使える技術なので、今後も色々と学んでいきたいと思います。
ｊQuery RSSリーダーを見る
 
追記（2008.04.21）
ニコニコ動画にはRSSがないかとおもっていましたが、URLの後に”?rss=feed&#8221;のようにRSS用のqueryキーを入れればRSSが取れるようです。
例）総合ランキングの場合
http://www.nicovideo.jp/ranking/mylist/daily/all?rss=feed
RSSリーダーでニコニコ動画の一覧を作っても面白いと思います。 
 
＜参考＞

Pear RSS導入
Pear Cache_Lite導入（Holiday Programing Guide）
Pear Cache_Lite導入（PHPプロ）
jQuery リストの折りたたみ
jQuery クッキー用ライブラリ
Yahoo ニュースRSS
はてなブックマーク
unnecessary words

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pghack.com/program/rss/index.php"><img style="border: 1px solid gray; margin: 10px;" src="http://www.pghack.com/wp-content/uploads/2008/04/rss.jpg" alt="" width="411" height="238" /></a></p>
<p>前回 Ajaxサンプル集を作ったときの内容を少し発展させjQueryを用いてRSSリーダーを作成しました。</p>
<p>作成したRSSリーダーでは、</p>
<ul>
<li>RSSのURL登録（クッキー使用）</li>
<li>RSSのリストを折りたたんで表示</li>
<li>RSSのリストをドラッグ可能</li>
<li>選択したリストを最前面に表示</li>
<li>リストのカラム数を変更</li>
</ul>
<p>など色々な処理ができるようになっています。</p>
<p>今回はPHPでRSSの処理を行い、ユーザーインターフェイス上の処理をjavaScriptで行うなど色々な技術を使って作成しました。色々と初めて行う処理が多かったのですが、非常に勉強になりました。</p>
<p><a href="http://www.pghack.com/program/rss/index.php">ｊQuery RSSリーダーを見る</a></p>
<p><span id="more-22"></span></p>
<h4>RSSリーダーを作成したきっかけ</h4>
<p>このRSSリーダーを作成したのは、効率のいい情報収集ができないかと考えたのがきっかけです。いくつものサイトを横断することなく一度に多くの情報を見ることができれば時間収集の時間も短縮されると思い作成しました。</p>
<p>このRSSリーダーは一度に多くの情報を表示することを一番の主眼として作成しています。そのため文字サイズや文字間隔はかなり小さく設定しています。</p>
<p>ぱっと見た感じではWebページだとは思えないようなデザインなので（Excelに似ている！？）、仕事中に見ていてもきっと目立ちません。visitedサイトは黄色のマーカーっぽくしてどこを見たかを分かりやすく表示したつもりです。</p>
<p>今回はじめてWebアプリケーションらしいものを作成したのですが、それなりに使えるサイトになったのではないかと感じます。</p>
<h4>RSSリーダーで学んだ技術</h4>
<ul>
<li>PearのRSSでRSSデータを扱う</li>
<li>PearのCache_LiteによりRSSのデータをキャッシュで保持する（1時間）</li>
<li>保持していたキャッシュを使用する</li>
<li>クッキーにRSSを保存する（PHP, Javascript両方から実施）</li>
<li>保存されているクッキーを使用する</li>
<li>リストの折りたたみ処理</li>
<li>z-indexによるリストの表示順（前面に移動）の処理</li>
<li>CSS全般（U/Iを実現するための設定色々）</li>
</ul>
<p>全体的にWeb上でU/Iの向上を実現するための処理が多いですね。ユーザーの使い勝手向上はどんな分野でも使える技術なので、今後も色々と学んでいきたいと思います。</p>
<p><a href="http://www.pghack.com/program/rss/index.php">ｊQuery RSSリーダーを見る</a></p>
<p> </p>
<h4>追記（2008.04.21）</h4>
<p>ニコニコ動画にはRSSがないかとおもっていましたが、URLの後に<strong>”?rss=feed&#8221;</strong>のようにRSS用のqueryキーを入れればRSSが取れるようです。</p>
<p>例）総合ランキングの場合</p>
<p><a href="http://www.nicovideo.jp/ranking/mylist/daily/all?rss=feed">http://www.nicovideo.jp/ranking/mylist/daily/all?rss=feed</a></p>
<p>RSSリーダーでニコニコ動画の一覧を作っても面白いと思います。 </p>
<p> </p>
<p>＜参考＞</p>
<ul>
<li><a href="http://www.doyouphp.jp/sample/sample_xml_pear_rss.shtml">Pear RSS導入</a></li>
<li><a href="http://blogs.yahoo.co.jp/nob_ll/45478859.html">Pear Cache_Lite導入（Holiday Programing Guide）</a></li>
<li><a href="http://www.phppro.jp/school/mashup/vol7/1">Pear Cache_Lite導入（PHPプロ）</a></li>
<li><a href="http://redline.hippy.jp/lab/misc/jquery_1.php">jQuery リストの折りたたみ</a></li>
<li><a href="http://blog.4galaxy.net/28.html">jQuery クッキー用ライブラリ</a></li>
<li><a href="http://public.news.yahoo.co.jp/rss/">Yahoo ニュースRSS</a></li>
<li><a href="http://b.hatena.ne.jp/">はてなブックマーク</a></li>
<li><a href="http://d.hatena.ne.jp/hayori/20080319/1205883717">unnecessary words</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/22/feed</wfw:commentRss>
		</item>
		<item>
		<title>WordPressのカスタマイズ</title>
		<link>http://www.pghack.com/archives/21</link>
		<comments>http://www.pghack.com/archives/21#comments</comments>
		<pubDate>Sat, 19 Apr 2008 10:00:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=21</guid>
		<description><![CDATA[ブログを作成してから１週間が経ちました。WordPressの使い方もだいぶわかるようになってきました。
WordPressはPHPで作成されているのでコードを読んでいけばどのファイルで何をしているかがわかります。また、ブログ管理ツール内で大抵のことができるので、デザインの修正などもブラウザ上でほとんど処理することができます。
変更した内容は、

デザインテンプレートを変更
「続きを読む」の表記を変更
サイドバーの表示内容を変更
フォントサイズを変更

などほとんど簡単なものばかりですが、CSSの構成やPHPを勉強するのにもWordPressは役立ちます。
デザインテンプレートのサイトに行くとデザインテンプレートが豊富にあり、しかも非常によくできています。設定も簡単でダウンロードしてきてcontentのthemesというフォルダに保存すれば管理画面上ですぐにデザインを変更することができます。
ただし英語のテンプレートを使用すると、日本語での表示には合わないものもあるのでカスタマイズは多少必要になると思います。
]]></description>
			<content:encoded><![CDATA[<p>ブログを作成してから１週間が経ちました。WordPressの使い方もだいぶわかるようになってきました。</p>
<p>WordPressはPHPで作成されているのでコードを読んでいけばどのファイルで何をしているかがわかります。また、ブログ管理ツール内で大抵のことができるので、デザインの修正などもブラウザ上でほとんど処理することができます。</p>
<p>変更した内容は、</p>
<ul>
<li>デザインテンプレートを変更</li>
<li>「続きを読む」の表記を変更</li>
<li>サイドバーの表示内容を変更</li>
<li>フォントサイズを変更</li>
</ul>
<p>などほとんど簡単なものばかりですが、CSSの構成やPHPを勉強するのにもWordPressは役立ちます。</p>
<p>デザインテンプレートのサイトに行くとデザインテンプレートが豊富にあり、しかも非常によくできています。設定も簡単でダウンロードしてきてcontentのthemesというフォルダに保存すれば管理画面上ですぐにデザインを変更することができます。</p>
<p>ただし英語のテンプレートを使用すると、日本語での表示には合わないものもあるのでカスタマイズは多少必要になると思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/21/feed</wfw:commentRss>
		</item>
		<item>
		<title>AptanaとFirebugでjavascript開発</title>
		<link>http://www.pghack.com/archives/20</link>
		<comments>http://www.pghack.com/archives/20#comments</comments>
		<pubDate>Sat, 19 Apr 2008 07:42:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=20</guid>
		<description><![CDATA[前回作成した迷路プログラム（javascript版）ですが、Aptana SdutioとFirefoxのエラー検出機能を利用して作成しました。
Aptanaでコーディング
AptanaはWeb開発用のIDEです。Aptanta Studioと呼ばれる単独のIDEとEcripseのプラグインの2種類が提供されています。今回はAptanaStudioをインストールして使ってみました。
Aptanaには無料版と有料版があります。無料版といえども機能は非常に豊富でHTMLやCSS, javascriptの色分け、入力アシスト、エラー部の自動表示などの機能が用意されています。
またプラグインとして、

PHP
Ruby on Rails
Adobe AIR
Apple iPhone Development

などの開発環境もインストールすることができます。 
Aptanaを利用することによる一番のメリットは、なんといってもエラー自動検出機能です。javascriptの構文チェックなどを記述している最中に自動で検出してくれるので、入力ミスがほぼなくなります。

Firebugによるデバッグ
Firefoxにはアドオン機能としてFirebugと呼ばれるデバッグ機能があります。Firebugを使うとjavascriptにブレークポイントを置いてステップ実行したり、変数の中身を確認することができます。
また、HTMLやCSSの構成を見たり、直接編集することもできます。
 
AptanaとFirebugで開発効率アップ
今回、初めてjavascriptでプログラムを作成しました。迷路プログラムは最初テキストエディタで作成していたのですが、コードの入力ミスなどがあるとプログラムが動かず、エラー部を探すのが大変で非常に不便でした。
元のプログラムがVBだったのでコード変換もすぐにできるかと思っていたのですが、ちょっとした記述ミス(returnがReturnになっているなど）でプログラムが動かなくなるのでエラー自動検出機能は非常に重宝します。
今までAptanaやFirebugなどのツールを知らなかったのですが、一度この機能を使ってしまうと手放せなくなるほど貴重なツールといえます。
それにしても、javascriptの機能はすごいです。AptanaやFirebugなどの開発ツールとjQueryなどのjavascriptのライブラリが普及してきたこともあって、非常に開発は簡単になってきていると感じます。
サーバーサイドで動くjavascriptについても徐々に話が出ているようなので、javascriptは今後ますます需要が高まってくるかもしれません。 
＜参考＞

AptanaStduio ダウンロード
Aptana説明(@IT)
FirebugとAptana(@IT)
サーバーサイドJavaScript Aptana Jaxer紹介(Gihyo.jp) 

]]></description>
			<content:encoded><![CDATA[<p>前回作成した迷路プログラム（javascript版）ですが、Aptana SdutioとFirefoxのエラー検出機能を利用して作成しました。</p>
<h4>Aptanaでコーディング</h4>
<p>AptanaはWeb開発用のIDEです。Aptanta Studioと呼ばれる単独のIDEとEcripseのプラグインの2種類が提供されています。今回はAptanaStudioをインストールして使ってみました。</p>
<p>Aptanaには無料版と有料版があります。無料版といえども機能は非常に豊富でHTMLやCSS, javascriptの色分け、入力アシスト、エラー部の自動表示などの機能が用意されています。</p>
<p>またプラグインとして、</p>
<ul>
<li>PHP</li>
<li>Ruby on Rails</li>
<li>Adobe AIR</li>
<li>Apple iPhone Development</li>
</ul>
<p>などの開発環境もインストールすることができます。 </p>
<p>Aptanaを利用することによる一番のメリットは、なんといってもエラー自動検出機能です。javascriptの構文チェックなどを記述している最中に自動で検出してくれるので、入力ミスがほぼなくなります。</p>
<p><span id="more-20"></span></p>
<h4>Firebugによるデバッグ</h4>
<p>Firefoxにはアドオン機能としてFirebugと呼ばれるデバッグ機能があります。Firebugを使うとjavascriptにブレークポイントを置いてステップ実行したり、変数の中身を確認することができます。</p>
<p>また、HTMLやCSSの構成を見たり、直接編集することもできます。</p>
<p> </p>
<h4>AptanaとFirebugで開発効率アップ</h4>
<p>今回、初めてjavascriptでプログラムを作成しました。迷路プログラムは最初テキストエディタで作成していたのですが、コードの入力ミスなどがあるとプログラムが動かず、エラー部を探すのが大変で非常に不便でした。</p>
<p>元のプログラムがVBだったのでコード変換もすぐにできるかと思っていたのですが、ちょっとした記述ミス(returnがReturnになっているなど）でプログラムが動かなくなるのでエラー自動検出機能は非常に重宝します。</p>
<p>今までAptanaやFirebugなどのツールを知らなかったのですが、一度この機能を使ってしまうと手放せなくなるほど貴重なツールといえます。</p>
<p>それにしても、javascriptの機能はすごいです。AptanaやFirebugなどの開発ツールとjQueryなどのjavascriptのライブラリが普及してきたこともあって、非常に開発は簡単になってきていると感じます。</p>
<p>サーバーサイドで動くjavascriptについても徐々に話が出ているようなので、javascriptは今後ますます需要が高まってくるかもしれません。 </p>
<p>＜参考＞</p>
<ul>
<li><a href="http://www.aptana.com/studio/">AptanaStduio ダウンロード</a></li>
<li><a href="http://www.atmarkit.co.jp/fwcr/rensai/freeauthoring01/freeauthoring01_1.html">Aptana説明(@IT)</a></li>
<li><a href="http://www.atmarkit.co.jp/fwcr/rensai/freeauthoring04/freeauthoring04_1.html">FirebugとAptana(@IT)</a></li>
<li><a href="http://gihyo.jp/dev/serial/01/jaxer">サーバーサイドJavaScript Aptana Jaxer紹介(Gihyo.jp)</a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/20/feed</wfw:commentRss>
		</item>
		<item>
		<title>迷路プログラム（javascript版）</title>
		<link>http://www.pghack.com/archives/18</link>
		<comments>http://www.pghack.com/archives/18#comments</comments>
		<pubDate>Wed, 16 Apr 2008 14:46:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://www.pghack.com/?p=18</guid>
		<description><![CDATA[
前回VBで作成した迷路プログラムをjavascriptで作成してみました。
１マスごとの四角をDIVタグで定義し、それぞれのDIVタグを絶対座標で表示することで迷路を表示しています。
作成したDIVタグの背景色を変更していくことで迷路の作成＆探索過程をアニメーションとして表現しています。
迷路のサイズを大きくするとかなり処理が重くなりますのでjavascriptを実行する際はサイズに注意するようお願いします。

迷路プログラム（javascript版）
迷路プログラム 関数一覧

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pghack.com/program/maze/index.html"><img style="border: 1px solid gray; margin: 10px;" src="http://www.1afl.sakura.ne.jp/wordpress/wp-content/uploads/2008/04/maze-java.jpg" alt="" width="269" height="279" /></a></p>
<p>前回VBで作成した迷路プログラムをjavascriptで作成してみました。</p>
<p>１マスごとの四角をDIVタグで定義し、それぞれのDIVタグを絶対座標で表示することで迷路を表示しています。</p>
<p>作成したDIVタグの背景色を変更していくことで迷路の作成＆探索過程をアニメーションとして表現しています。</p>
<p>迷路のサイズを大きくするとかなり処理が重くなりますのでjavascriptを実行する際はサイズに注意するようお願いします。</p>
<ul>
<li><a href="http://www.pghack.com/program/maze/index.html">迷路プログラム（javascript版）</a></li>
<li><a href="http://www.pghack.com/program/maze/maze.html">迷路プログラム 関数一覧</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pghack.com/archives/18/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
