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

<channel>
	<title>キテレツ荘 &#187; かしこ</title>
	<atom:link href="http://www.kiteretsu-so.com/archives/author/kashiko/feed" rel="self" type="application/rss+xml" />
	<link>http://www.kiteretsu-so.com</link>
	<description>関西で活動するクリエーターたちによるシェアブログ キテレツ荘。クリエイティブな話題を住人達が発信中。</description>
	<lastBuildDate>Mon, 17 Oct 2011 23:20:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>【短期連載！Mac初心者がiPhoneアプリをつくってみた！（予定）】【ハウチーXcode】</title>
		<link>http://www.kiteretsu-so.com/archives/2218</link>
		<comments>http://www.kiteretsu-so.com/archives/2218#comments</comments>
		<pubDate>Sat, 02 Jul 2011 18:27:47 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=2218</guid>
		<description><![CDATA[ようこそのお運び、厚く御礼申し上げます。 キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。 &#160; クーラーをつけずに扇風機で我慢しています。 もう、その我慢も限界ですがなにか？ &#160; ア [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>ようこそのお運び、厚く御礼申し上げます。</p>
<p>キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。</p>
<p>&nbsp;</p>
<p>クーラーをつけずに扇風機で我慢しています。</p>
<p>もう、その我慢も限界ですがなにか？</p>
<p>&nbsp;</p>
<p>アンドロイド所持者のわたくしですが恩師の壮大な計画に巻き込まれる形で</p>
<p>iPhoneアプリ開発講座なるものに通うことになりました。</p>
<p><a href="http://www.applil.com/" target="_blank">※iPhoneプログラミング講座の詳細はコチラ　&gt;&gt;&gt;</a></p>
<p>&nbsp;</p>
<p>前回、お取り寄せで沖縄からMBP、アマゾンの堺倉庫よりMacOS10.6をGETしたワタクシですが、</p>
<p>実のところ、アンドロイドアプリ作ろうと思ってアンドロイドSDKのEclipseもインストールしましたが、</p>
<p>それどころではなく、Xcodeと格闘しております。</p>
<p>こんなことでiPhoneアプリを作れるようになるのか？</p>
<p>&nbsp;</p>
<p>現在進行形で送るこの記事群の結末に関してはワタクシ自身も知りません（笑）</p>
<p>&nbsp;</p>
<p>それでは本人の備忘録も兼ねた【短期連載！Mac初心者がiPhoneアプリをつくってみた！（予定）】の第二回、【ハウチーXcode編】スタートです。</p>
<p>&nbsp;</p>
<p><span id="more-2218"></span></p>
<p>&nbsp;</p>
<p>ここでiPhoneアプリに必要な二つの要素を挙げてみます。</p>
<p>&nbsp;</p>
<p>1.開発キットであるXcodeと呼ばれるIDE</p>
<p>2.開発言語であるobjective-C</p>
<p>&nbsp;</p>
<p>この二つは切っても切れないものですが、</p>
<p><span style="color: rgb(255, 0, 0);"><span style="font-size: 14px;">当分はobjective-Cについては忘れます！</span></span></p>
<p>この記事読んでくれている方々も一旦忘れてください！</p>
<p>&nbsp;</p>
<p>何故かって？</p>
<p>&nbsp;</p>
<p>Xcodeの使い方とobjective-C言語、どっちも覚えられないからです！！！</p>
<p>&nbsp;</p>
<p>この時点ではまずXcodeの使い方を覚える方がプライオリティ（優先度）が高いと判断したので言語については忘れます。</p>
<p>これは前回の記事で宣言した「<span style="color: rgb(255, 0, 0);">わからないものを無理して覚えない</span>」理論です。</p>
<p>&nbsp;</p>
<p>ではXcodeを触っていきます。</p>
<p><a href="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2011/07/bolg2_base01.jpg"><img alt="bolg2_base01" class="alignnone size-medium wp-image-2220" height="300" src="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2011/07/bolg2_base01-291x300.jpg" title="bolg2_base01" width="291" /></a></p>
<p>1.NewProjectのタイプを選ぶ。赤○のところ選びます。</p>
<p>2.新規ファイルのテンプレートを選びます。</p>
<p>3.ファイル名を決めてあげます。今回のファイル名は「sample」とします。</p>
<p>&nbsp;</p>
<p>NewProjectからの一連の流れはそんなものだと思ってください。</p>
<p>さて、ここでアプリのベースを選ぶ画面があります。</p>
<p>このXcodeくん、賢くてですね、最初から何パターンかアプリのベースを用意してくれてます。</p>
<p>このテンプレートの選択によってはいきなりボタン押して画面遷移とかできちゃったりします。</p>
<p>&nbsp;</p>
<p>このあたりはそのうち解説します。</p>
<p>&nbsp;</p>
<p>とりあえず今回はXcodeをおいしく頂くための基礎ということなので「View-based-application」を選択します。</p>
<p>「View-based-application」というテンプレートは何も配置されていない一番オーソドックスなテンプレートです。</p>
<p>&nbsp;</p>
<p>それではXcodeの画面を見ながら確かめていきます。</p>
<p>-<a href="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2011/07/bolg2_base02.jpg"><img alt="bolg2_base02" class="alignnone size-medium wp-image-2224" height="180" src="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2011/07/bolg2_base02-300x180.jpg" title="bolg2_base02" width="300" /></a></p>
<p>1.ナビゲーター領域</p>
<p>いろいろ最初からファイルが生成されております。</p>
<ul>
<li>sampleAppDelegate.h</li>
<li>sampleAppDelegate.m</li>
<li>mainWindow.xib</li>
<li>sampleViewContllore.h</li>
<li>sampleViewContllore.m</li>
<li>sampleViewContllore.xib</li>
</ul>
<p>&nbsp;</p>
<p>このあたりのファイル生成はほとんどどのテンプレートを選択しても生成されます。</p>
<p>そんなものだと思いましょう。</p>
<p>&nbsp;</p>
<p>では見慣れない拡張子の解説。</p>
<p>.h　　ヘッダーファイルと呼ばれるファイル。主に宣言文を書きます。</p>
<p>.m　　メソッドファイルと呼ばれるファイル。主に処理文を書きます。</p>
<p>.xib　 エクシィブファイルと呼ばれるファイル。主に画面のレイアウトを司ります。</p>
<p>&nbsp;</p>
<p>ここでWeb関係の方にはわかりやすい例えをします。</p>
<p>.h　はhtmlでいうところの&lt;head&gt;&lt;/head&gt;の中身です。表示にはなんら関係ないですがないとhtmlとして成立しません。</p>
<p>.m　はhtmlでいうところの&lt;body&gt;&lt;/body&gt;の中身です。ここにタグがかかれていないと何も表示されませんよね。</p>
<p>.xib　はDreamWeaverでいうところのデザインビューと同じで見た目を現します。htmlと違うのは見た目はxibで設定してやるということです。</p>
<p>&nbsp;</p>
<p>ここでFlasherな方にもっとわかりやすい例えをします。</p>
<p>.h　はflashでいうところのタイムラインのasです。</p>
<p>.m　はflashでいうところの外部クラスです。</p>
<p>.xib　はflashでいうところのメインステージです。</p>
<p>&nbsp;</p>
<p>上記イメージはあくまでも考え方のイメージであって実際にはXcode上において本来の役割があります。</p>
<p>が、あえて暫くはそういうイメージを持ってハウチーしてます。</p>
<p>&nbsp;</p>
<p>2.インスペクター選択バー</p>
<p>アプリのビュー（見た目）の設定変更ボタンです。適当にいじってみましょう。</p>
<p>&nbsp;</p>
<p>では次に、ボタンを押したらテキストが出たというアプリを作ってみます。</p>
<p>&nbsp;</p>
<p><a href="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2011/07/bolg2_base03.jpg"><img alt="bolg2_base03" class="alignnone size-medium wp-image-2225" height="300" src="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2011/07/bolg2_base03-249x300.jpg" title="bolg2_base03" width="249" /></a></p>
<p>1,ナビゲーター領域から「sampleViewContllore.xib」を選びます。</p>
<p>2.インスペクター選択バーでユーティリティー領域を表示させライブラリーペインから「Round Rect Button」をドラッグアンドドロップでエディター領域へ。便宜上、紐付けと呼びます。</p>
<p>3.同じく「Text Field&nbsp;&nbsp; 」をドラッグアンドドロップでエディター領域へ。</p>
<p>4.このようになります。</p>
<p>5.2で追加したボタン上で右クリックするとこのようなウインドが表示されます。</p>
<p>このウインドウをOutletteと呼んでおきます。</p>
<p>TouchDownの項目の白○のところをクリックしたまま「sampleViewContllore.h」の@endの直上まで誘導して離します。</p>
<p>「Name」の欄に&quot;button&quot;と入力しましょう。</p>
<p>おなじようにTextFieldも右クリックでOutletteの接続設定をしましょう。</p>
<p>ここではNew Refrance Outlette の白○を「sampleViewContllore.h」の@interface{}の間まで誘導して離します。</p>
<p>「Name」は&quot;text&quot;と入力しましょう。</p>
<p>&nbsp;</p>
<p>ただしく設定できていると下のようになります。</p>
<p><a href="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2011/07/bolg2_base04.jpg"><img alt="bolg2_base04" class="alignnone size-medium wp-image-2226" height="291" src="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2011/07/bolg2_base04-300x291.jpg" title="bolg2_base04" width="300" /></a></p>
<p>&nbsp;</p>
<p>はい、おなじようになっていることを確認してください。</p>
<p>えー、ここまで設定した内容はこれからの基本になります。</p>
<p>が、今回は深く考えないでよいです。</p>
<p>&nbsp;</p>
<p>で、上図の赤の二重線の項目を追加してください。</p>
<ul>
<li>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">［text textSet<span style="color: #339933;">:@</span>”押したぜよ”］<span style="color: #339933;">;</span></pre></div></div>

</li>
</ul>
<p>&nbsp;</p>
<p>では、アプリ左上の再生ボタンをポチっとしてみましょう。</p>
<p>はい、どーん！別名ビルドという行動です。</p>
<p>ビルドすると上の図のようにシュミレーターが立ち上がります。</p>
<p>&nbsp;</p>
<p>ボタンを押してらテキストが出ましたね。</p>
<p>&nbsp;</p>
<p>では、もう一度、上の図を確認します。</p>
<p>赤で線の引かれているところが、オブジェクトを追加した際に自動で記載された箇所です。</p>
<p>二重線の箇所が追記した箇所です。</p>
<p>&nbsp;</p>
<p>結論、プログラムっぽいことをしたのは二重線のところだけです。</p>
<p>&nbsp;</p>
<p>ね、一旦Objective-Cを忘れても問題ないでしょ！？</p>
<p>&nbsp;</p>
<p>さぁ、いかがですか？</p>
<p>理屈はおいといてまずはボタンをおしたらテキストが出たアプリができました。</p>
<p>&nbsp;</p>
<p>理屈はとりあえずほっときましょう。</p>
<p>&nbsp;</p>
<p>ということで今回覚えておきたい用語です。</p>
<p>&nbsp;</p>
<ul>
<li>.h</li>
<li>.m</li>
<li>.xib</li>
<li>アウトレット（Outlette）</li>
<li>紐付け</li>
<li>はい、どーん！(ビルド)</li>
</ul>
<p>&nbsp;</p>
<p>とりあえずこれくらいでいいと思います。</p>
<p>これ以上はしんどいので続きは次回の機会にいたします。</p>
<p>&nbsp;</p>
<p>ということで長くなりましたが【ハウチーXcode】でした。</p>
<p>次回は【Xcodeと親密になりたい！】です。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;SeeYou　byebye！</p>
<p>かしこ</p>
<p>&nbsp;</p>
<p>※このシリーズは週一程度で更新されていく予定です。</p>
<p>※一応アプリル株式会社の了解を得て記事にしております。</p>
</div>
<p><a href="http://www.amazon.co.jp/iOS%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80-Objective-C-%EF%BC%8B-Xcode-4%E3%81%A7%E5%AD%A6%E3%81%B6%E3%80%81iOS%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%AE%E5%9F%BA%E7%A4%8E/dp/486100764X%3FSubscriptionId%3DAKIAIVA3RPYJX4VJQ47A%26tag%3Dkiteretsu0e-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D486100764X"><img src="http://ecx.images-amazon.com/images/I/51n3pxmc4DL._SL75_.jpg" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/2218/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【短期連載！Mac初心者がiPhoneアプリをつくってみた！（予定）】【Xcode4導入編】</title>
		<link>http://www.kiteretsu-so.com/archives/2210</link>
		<comments>http://www.kiteretsu-so.com/archives/2210#comments</comments>
		<pubDate>Wed, 29 Jun 2011 06:12:38 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=2210</guid>
		<description><![CDATA[ようこそのお運び、厚く御礼申し上げます。 キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。 &#160; この時期、カフェでアイスコーヒーを飲みながらUKロックなぞ聞いてるとフェスりたくなります。 が、 [...]]]></description>
			<content:encoded><![CDATA[<p>ようこそのお運び、厚く御礼申し上げます。</p>
<p>キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。</p>
<p>&nbsp;</p>
<p>この時期、カフェでアイスコーヒーを飲みながらUKロックなぞ聞いてるとフェスりたくなります。</p>
<p>が、そんなことはおいといて、本日のお題はこちら。</p>
<p>【短期連載！Mac初心者がiPhoneアプリをつくってみた！（予定）】</p>
<p>&nbsp;</p>
<p>アンドロイド所持者のわたくしですが恩師の壮大な計画に巻き込まれる形で</p>
<p>iPhoneアプリ開発講座なるものに通うことになりました。</p>
<p><a href="http://www.applil.com/" target="_blank">※iPhoneプログラミング講座の詳細はコチラ　&gt;&gt;&gt;</a></p>
<p>&nbsp;</p>
<p>えぇ、旧ザクよろしくばりのMacG4を兄より譲り受けて早2年。</p>
<p>ブラウザチェックのために3回程度しか起動させないほどのWindowsユーザーが</p>
<p>果たしてiPhoneアプリを作れるのか！？</p>
<p>&nbsp;</p>
<p>現在進行形で送るこの記事群の結末に関してはワタクシ自身も知りません（笑）</p>
<p>&nbsp;</p>
<p>それでは本人の備忘録も兼ねた【短期連載！Mac初心者がiPhoneアプリをつくってみた！（予定）】の第一回、【Xcode4導入編】スタートです。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span id="more-2210"></span></p>
<p>&nbsp;</p>
<p>■iPhoneアプリを作るのに必要なもの</p>
<p>・Mac（MacOS10.6以降のCore2プロセッサー以上搭載のマシン）</p>
<p>・iPhone、iPad、iPodTouchのいずれか（iOS4以上推奨）</p>
<p>・気合いと脱力と妄想力</p>
<p>&nbsp;</p>
<p>以上になります。たぶん本当に。</p>
<p>&nbsp;</p>
<p>えぇ、iPodTouchを持っていたのでMacが手に入れば講座いきますよ！と返答したのでまずはMac探しをして、</p>
<p>結局ヤフオクで1.5世代くらい前のMacBookPro（以下MBP）を購入。</p>
<p>沖縄よりやってきたMBPは思いのほか綺麗でバッテリー以外は問題なしでした。</p>
<p>が、ここで問題！</p>
<p>OSがMacOS10.4だと！</p>
<p>ここでひとつ解説をすると、iPhoneアプリを開発するデベロッパーキット（以下IDE）をXcodeと呼びますが</p>
<p>このXcodeの最新版がMacOS10.6以上でないと動かないのです。</p>
<p>&nbsp;</p>
<p>OhOpps!</p>
<p>OS買わなきゃなのか？・・・はい、結局買いました。（ただ、ちょっと安く手に入れる方法があったのでそれで。）</p>
<p>OSが手元に届いた後、早速アップグレード作業をしてBootCampでWindowsXPを入れようと思ったのですが、</p>
<p>どうにもこうにも我が家のXPsp3が入ってくれない。（appleのアナウンスもWin7対応。ただしサポートに連絡すれば解決するかもだそうです）</p>
<p>7はすんなりインストできたのですが、この7のライセンスは別のマシンに使ってるのでとりあえず諦めました。</p>
<p>&nbsp;</p>
<p>が、この作業を通じてMacというものを少し理解できたのがよかったです。</p>
<p>TimeMachineという機能があるのですがこれが素晴らしいバックアップツールでした。</p>
<p>定期的にみなさんもTimeMachineを利用してください。</p>
<p>&nbsp;</p>
<p>さて、次にXcode導入！ですがその前にMac暦2ヶ月のお役立ち情報。</p>
<p>&nbsp;</p>
<p>■ショートカット（基本はWindowsと一緒でCtrlキーがCommandキーになるだけ）</p>
<p>・space+ファイル　　　imgやPDFを専用ビューワーで閲覧できる</p>
<p>・Command+tab　　　winのalt+tabに相当。アプリの切り替えにどうぞ。</p>
<p>・Command+shift+4　winのプリントスクリーン(範囲指定)。</p>
<p>・Command+shift+4+space　winのプリントスクリーン(ウインド単位)。</p>
<p>・Control+トラックパットスクロール　拡大</p>
<p>&nbsp;</p>
<p><a href="http://inforati.jp/apple/mac-tips-techniques/system-hints/how-to-use-mac-keyboard-shortcut.html" target="_blank">その他ショートカット集　&gt;&gt;&gt;</a></p>
<p>&nbsp;</p>
<p>■豆知識</p>
<p>・windowsフォントはインストールできます。fontフォルダにコピペでOKです。</p>
<p>・Exposeと呼ばれる機能は作業効率をアップします。（画面4隅にショートカットを割り当てる機能）</p>
<p>&nbsp;</p>
<p>これだけで随分とマカーになった気になれます。が、あくまでもその気だけです。</p>
<p>&nbsp;</p>
<p>さて、いよいよXcodeの導入です。正確にはXcode4ですね。</p>
<p>このXcode、今年度よりAppStoreで600円で購入するようになったのです。やれやれです。</p>
<p>で、インストールをします。</p>
<p>&nbsp;</p>
<p>これで開発環境はできました。</p>
<p>このXcodeにはCocoaというフレームワークや</p>
<p>iPhoneシュミレーターが統合されております。</p>
<p>なんのこっちゃわからなかったですが、そこはスルーします。</p>
<p>大事なのは開発環境が整ったということです。</p>
<p>&nbsp;</p>
<p>ただし、iPhoneシュミレーターは完璧ではなく、</p>
<p>加速度センサーやジャイロ機能、Bluetooth機能など一部検証できないということは覚えておきます。</p>
<p>そのあたりまで確認しようとすると実機での検証が必要になります。</p>
<p>&nbsp;</p>
<p>しかし、今のままでは開発はできますが実機での検証やAppStoreの登録ができません。</p>
<p>なんと、ここでDeveloper登録（\10,800）が必要に。</p>
<p>AppleIDをもって登録しましょう。</p>
<p>&nbsp;</p>
<p>詳しくはこちらの記事などを参考にしてください。親切に書かれてあります。</p>
<p><a href="http://thinkit.co.jp/story/2011/04/15/2094" target="_blank">iOSアプリ開発の準備 &gt;&gt;&gt;</a></p>
<p>&nbsp;</p>
<p>固体識別番号やらプロビジョニングキーとかぶっちゃけ訳わかりませんが、記事通りで問題ナッシングです。</p>
<p>&nbsp;</p>
<p>はい、<span style="color:#ff0000;"><strong>わからないものを無理して理解しようとするより、必要になるまで深く考えないスタンス</strong></span>がここで重要になってきます。</p>
<p>実際にXcodeを触りだして、余計に感じる事でもあります。</p>
<p>&nbsp;</p>
<p>これはサボレといっているのではなく、どうしても知る必要が出たときに深く考えようという事です。</p>
<p>何故か？</p>
<p>時間は有限だからです。</p>
<p>もちろん、ポイント、ポイントでは壁にぶつかる必要もあるのですが、</p>
<p>そのときには周辺の理解力も上がっているはずなので効率良く覚えるためのワタクシなりのコツです。</p>
<p>&nbsp;</p>
<p>ということで長くなりましたが導入までの序章でした。</p>
<p>次からは実際にXcodeを使ってアプリもどきなどを作成していきます。</p>
<p>次回は【xcodeとはなんぞえ？】です。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;SeeYou　byebye！</p>
<p>&nbsp;</p>
<p>※このシリーズは週一程度で更新されていく予定です。</p>
<p>※一応アプリル株式会社の了解を得て記事にしております。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/2210/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>たったこれだけで短縮URLサービスが作られていた件</title>
		<link>http://www.kiteretsu-so.com/archives/2176</link>
		<comments>http://www.kiteretsu-so.com/archives/2176#comments</comments>
		<pubDate>Tue, 12 Apr 2011 02:33:53 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=2176</guid>
		<description><![CDATA[ようこそのお運び、厚く御礼申し上げます。 キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。 &#160; 新メンバー&#34;けんちき&#34;の入居祝いを兼ねて一本記事を書きやした。その内容とは・ [...]]]></description>
			<content:encoded><![CDATA[<p>ようこそのお運び、厚く御礼申し上げます。</p>
<p>キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。</p>
<p>&nbsp;</p>
<p>新メンバー&quot;けんちき&quot;の入居祝いを兼ねて一本記事を書きやした。その内容とは・・・？</p>
<p>&nbsp;</p>
<p>さて、昨今気付いているか気付かぬ内なのかはわかりませんが</p>
<p>URL短縮サービス、もしくはURL短縮システムというのを多く見かけます。</p>
<p>&nbsp;</p>
<p>なんじゃいそりゃ？</p>
<p>いえいえ、ご存知のハズです。</p>
<p>&nbsp;</p>
<p>例えば、Twitterで写真をtwitpectやInstantgramへアップロードしたときや、URL貼り付けた時。</p>
<p>気付かぬ内に短縮されたURLになっていることが多々あるはずです。</p>
<p>firestrageにも短縮URL発行とかって機能もありましたね。</p>
<p>あと、pixivの[p.tl]とか。</p>
<p>&nbsp;</p>
<p>今回はそのあたりの仕組みを作りながらお勉強したいと思います。</p>
<p>まずは&hellip;<a href="../../kashiko_work/shorten/index.php" shape="rect" target="_blank">短縮URLサンプル。</a></p>
<p>そしてたった数ステップだけでこのサービスが作られていたことに思わず真似したくなるでしょう。</p>
<p>&nbsp;</p>
<p><span id="more-2176"></span></p>
<p>まずこのURL短縮の目的と仕組みですが以下のようになっていると思います。（たぶん）</p>
<p>&nbsp;</p>
<p>■目的</p>
<p>長いURLだと煩わしい、もしくは文字制限のあるツールに貼り付けるには長すぎる。</p>
<p>こういったものを解消するために考えられたものだと思います。</p>
<p>&nbsp;</p>
<p>故にこのサービスを展開するには極力短いドメインが必要になってきます。</p>
<p>上記記載のpixivのドメイン名は[p.tl]ですから。</p>
<p>※今回はドメインは用意していないのでドメイン関連箇所は各自考慮して頂きたい！</p>
<p>&nbsp;</p>
<p>■仕組み</p>
<p>webサーバーにおいて現在のページから他のURLに転送できる仕組みがいくつかあります。</p>
<p>この中で「.htaccess」と呼ばれるwebサーバーの設定ファイルのようなものを利用して転送させます。</p>
<p>&nbsp;</p>
<p>この.htaccessに短縮前のURLと短縮後のURLを所定の記載ルールにのっとって記載してやると転送します。</p>
<p>&nbsp;</p>
<p>短縮URLというぐらいですからドメイン以降のURLも短く、且つランダムに設定してあげましょう。</p>
<p>&nbsp;</p>
<p>1．ユーザーが短縮前URLを入力</p>
<p>2．短縮後ランダムURLを生成</p>
<p>3．短縮前URLと短縮後URLを所定の形に成型して.htaccessファイルに追記していく。</p>
<p>&nbsp;</p>
<p>以上になります。</p>
<p>&nbsp;</p>
<p>論ずるより触るがよろし！</p>
<p>ということでこちらにサンプルをご用意しました。</p>
<p><a href="http://www.kiteretsu-so.com/kashiko_work/shorten/index.php" shape="rect" target="_blank">短縮URLサンプル</a></p>
<p>&nbsp;</p>
<p>さて、お勉強です。</p>
<p>1については割愛しても問題ないでしょうかね。</p>
<p>formメゾットをpostにして書き込みルーチンにデータを送ってます。（getでも構いませんがサービスとしてならpostでしょうか。）</p>
<p>&nbsp;</p>
<p>2についてはややこしい部分ではありましたが、幸いランダム生成の記事を書いてくださっていた方がいらっしゃったので利用させていただきました。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<ol>
<li>&nbsp;&nbsp;&nbsp; function getRandomString($nLengthRequired = 6){</li>
<li>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $sCharList = &quot;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_&quot;;</li>
<li>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mt_srand();</li>
<li>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $sRes = &quot;&quot;;</li>
<li>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for($i = 0;$i&lt;$nLengthRequired;$i++)</li>
<li>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $sRes .=$sCharList{mt_rand(0,strlen($sCharList)-1)};</li>
<li>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return $sRes;</li>
<li>&nbsp;&nbsp;&nbsp; }</li>
<li>&nbsp;&nbsp;&nbsp;</li>
<li>&nbsp;&nbsp;&nbsp; $rand = getRandomString();</li>
</ol>
<p>&nbsp;</p>
<p>まぁ、みたまんまです。</p>
<p>&nbsp;</p>
<p>3については書き込みとリダイレクトの構文を一気に解説します。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<ol>
<li>$shorten = $_POST[&#39;shorten&#39;];</li>
<li>$file = &#39;.htaccess&#39;;</li>
<li>&nbsp;</li>
<li>$write = &quot;Redirect permanent /kashiko_work/shorten/$rand $shorten\n&quot;;</li>
<li>$text = &quot;http://www.kiteretsu-so.com/kashiko_work/shorten/$rand&quot;;</li>
<li>print &quot;発行された短縮URLは【&quot;.$text.&quot;】です。&quot;;</li>
<li>print &quot;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&quot;;</li>
<li>file_put_contents($file, $write, FILE_APPEND | LOCK_EX);</li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Redirect permanent A B　と記載することでAのURLにアクセスがあればBへ転送しなさいという意味になります。</p>
<p>Aというのは2でランダムに生成したサーバーのルートからのURLになります。</p>
<p>Bというのはpostで飛ばされてきたデータそのままです。</p>
<p>若干解説をすると1行目で入力画面からのPOSTデータを変数$shortenに入力</p>
<p>２行目で書き込むファイルを指定</p>
<p>4行目で書き込む形に整形して、５行目は見た目の整形</p>
<p>8行目でファイル書き込み指示です。</p>
<p>&nbsp;</p>
<p>この形で.htaccessファイルに追記できればいいので</p>
<p>file_put_contents($file, $write, FILE_APPEND | LOCK_EX);</p>
<p>で追記しましょうね。と指示されています。</p>
<p>file_put_contents関数の第一引数は追記するファイル名、第二引数は追記する内容、第三引数は書き込みモードです。</p>
<p>今回の&quot;FILE_APPEND | LOCK_EX&quot;というのは追記します。そしてファイルにアクセスしているので他のアクセスは禁止しますという記載方法です。</p>
<p>詳しくは別途Google先生に聞いてみてください。</p>
<p>&nbsp;</p>
<p>さぁ、いかがでしたでしょうか。簡単でしょｗ</p>
<p>実際のところphp10行くらいでできちゃってるんですから。</p>
<p>&nbsp;</p>
<p>これを勉強するメリットは2つあります。</p>
<p>まず、既存のサービスは結構簡単に作られているんだよ。ということを理解できる。要するにアイディアなわけです。</p>
<p>次にphpという言語の見せ場のひとつ、ファイルにデータを書き込むということを理解できる。</p>
<p>&nbsp;</p>
<p>実際にこれをサービス化するのであればセキュリティー対策とランダム発行のURLに重複がないかどうかをチェックする仕組みを入れてやらなければいけませんが・・・</p>
<p>それでもここまでできれば余裕じゃないでしょうか。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>今回は既存サービスの仕組みを分解・理解・再構築のステップを踏まえたphpのお勉強でした。</p>
<p>&nbsp;</p>
<p>ちなみにタイトルは以前のもーりーの記事「<a href="http://www.kiteretsu-so.com/archives/2156">本当に読んでほしいならタイトルにこだわるべき</a>」から参考にしました。</p>
<p>&nbsp;</p>
<p>かしこ。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/2176/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【Tips】JSを使ったGETの書き方</title>
		<link>http://www.kiteretsu-so.com/archives/2150</link>
		<comments>http://www.kiteretsu-so.com/archives/2150#comments</comments>
		<pubDate>Wed, 09 Mar 2011 16:06:19 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=2150</guid>
		<description><![CDATA[ようこそのお運び、厚く御礼申し上げます。 キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。 昨今Ajax隆盛の中、じゃ、普通のJavaScript（以下JS）ってどうなのよ？ってところですが ふとした時 [...]]]></description>
			<content:encoded><![CDATA[<p>ようこそのお運び、厚く御礼申し上げます。<br />
	キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。</p>
<p>昨今Ajax隆盛の中、じゃ、普通のJavaScript（以下JS）ってどうなのよ？ってところですが<br />
	ふとした時に便利な子です。</p>
<p>ん？前回の記事の前フリまんまコピペじゃないですかー！？</p>
<p>ということで製作現場で役立つJavaScriptの簡単なTipsをお送りします。</p>
<p>今回はJSを使ってgetでデータを受け取ってみたいと思います。</p>
<p>&nbsp;</p>
<p><span id="more-2150"></span></p>
<p>さて、getでデータを受け取ってみたい。。。とはなんぞえ？</p>
<p>「http://hogehoge.jp/index.html?hoge=1&amp;abeshi=5」みたいなURLがあったとしたら・・・</p>
<p>?hoge=1&amp;abeshi=5の部分がgetという方式でデータを送っている部分です。</p>
<p>本来、こういった処理はPearとかphpとかでやるんですがね・・・</p>
<p>phpだと「$_GET[&#39;hoge&#39;]」と書けば簡単に取得できるんですが敢えてJSでやります。</p>
<p>&nbsp;</p>
<p>まずは論ずるよりサンプル確認。</p>
<p>■<a href="http://www.kiteretsu-so.com/kashiko_work/tips_vol1/" target="_blank">クリックしてサンプル確認</a>■</p>
<p>&nbsp;</p>
<p>ではそのソースとちょびっと解説。</p>
<p>&nbsp;</p>
<ol>
<li>&lt;script type=&quot;text/javascript&quot;&gt;</li>
<li>&lt;!&#8211;</li>
<li>function init() {</li>
<li>var arr=Array();</li>
<li>var vl=Array();</li>
<li>var ss = &quot;&quot;;</li>
<li>var vl = &quot;&quot;;</li>
<li>var kiteretsu=location.search;</li>
<li>if(kiteretsu) {</li>
<li>var k = kiteretsu.replace(/^\?/,&#39;&#39;).split(&#39;&amp;&#39;);</li>
<li>for(i=0 ; i&lt;k.length ; i++){</li>
<li>var pair=k[i].split(&#39;=&#39;);</li>
<li>arr[pair[0]]=pair[1];</li>
<li>ss += pair[0] + &quot; = &quot; + pair[1] + &quot;\n&quot;;</li>
<li>if(i==0){</li>
<li>vl = pair[1];</li>
<li>}else if(i==1){</li>
<li>vl2 = pair[1];</li>
<li>}</li>
<li>}</li>
<li>}</li>
<li>alert(ss);</li>
<li>window.onload= init;</li>
<li>//&#8211;&gt;&lt;/script&gt;</li>
</ol>
<p>1行目で関数つくります。</p>
<p>8行目、「<strong>location.search」</strong>でgetパラメータを取得します。</p>
<p>10行目、「<strong>&amp;</strong>」があればデータを分割します。</p>
<p>12行目、「<strong>=</strong>」でデータを分割します。この時にpairという変数に「<strong>=</strong>」の前後の値が格納されます。</p>
<p>14行目で変数SSに所得したデータまんま入れてます。これは22行目のalertに渡してます。要は確認用なので不要な場合は削除可能です。</p>
<p>15行目から19行目に関しては取得した変数をこの後使い勝手がいいようにvl、ｖｌ2という変数にいれてあります。getパラメーターの数が増えればここの処理は増やします。（うまく書けば処理短縮できそう）</p>
<p>23行目はページがロードされた時に実行と指令です。</p>
<p>&nbsp;</p>
<p>さてさて、これでJS内でのif文が構成しやすくなり、使い勝手の幅は広がります。</p>
<p>あとは「document.○○○.src」やら「document.getElementById(&#39;□□□&#39;)」とかと絡めていけばJSだけでphpと同じ様な事がある程度実現できます。</p>
<p>その辺りの実際の書き方なんぞは<a href="http://www.kiteretsu-so.com/kashiko_work/tips_vol1/" target="_blank">サンプル</a>で確認してください。</p>
<p>phpが走らない環境とかではある程度これで代替はできるようになります。が、それってどんなシーンなのかはあまり想像できませんが（苦笑）。</p>
<p>が、こういうこともできるんだよーっというJSのTipsでした。</p>
<p>かしこ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/2150/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>【Tips】JSを使ったマルチドメイン対策記述</title>
		<link>http://www.kiteretsu-so.com/archives/1957</link>
		<comments>http://www.kiteretsu-so.com/archives/1957#comments</comments>
		<pubDate>Tue, 14 Dec 2010 14:05:35 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=1957</guid>
		<description><![CDATA[ようこそのお運び、厚く御礼申し上げます。 キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。 Twitterにてパワハラを受けてので記事を大急ぎで書き上げました！！！ 昨今Ajax隆盛の中、じゃ、普通のJ [...]]]></description>
			<content:encoded><![CDATA[<p>ようこそのお運び、厚く御礼申し上げます。<br />
キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。</p>
<p>Twitterにてパワハラを受けてので記事を大急ぎで書き上げました！！！</p>
<p>昨今Ajax隆盛の中、じゃ、普通のJavaScript（以下JS）ってどうなのよ？ってところですが<br />
ふとした時に便利な子です。</p>
<p>製作現場で役立つJavaScriptの簡単なTipsをお送りします。</p>
<p><span id="more-1957"></span></p>
<p>クライアントに納品するまでは基本的には自サイトで製作、確認することになるかと思います。<br />
普段はそれで問題ないのですがGoogleMapのAPI Keyはドメイン毎に発行されているので自サイトとクライアントサイトで正常に動作しない状態になります。<br />
そんな時にJSです。</p>
<p>【一般的なAPI Keyの記述】</p>
<p>&lt;script src=&#8221;http://maps.google.com/maps?file=api&amp;v=2&amp;key=○○○○○…○○○○○&#8221;　type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p>
<p>【JSを使ったマルチドメイン対策記述】</p>
<p>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
var domain = location.hostname;<br />
if( domain==&#8221;www.kiteretsu-so.com&#8221;){</p>
<blockquote><p>$gApiKey=&#8221;=○○○○○…○○○○○&#8221;;</p></blockquote>
<p>}else if( domain==&#8221;www.kiteretsu-so.jp&#8221;){</p>
<blockquote><p>$gApiKey=&#8221;=□□□□□…□□□□□&#8221;;</p></blockquote>
<p>}<br />
var src =&#8217;&lt;&#8217;+'script src=&#8217;+'&#8221;&#8216;+&#8217;http://maps.google.com/maps?file=api&amp;v=2&amp;key=&#8217;+$gApiKey+&#8217;&#8221;&#8216;+&#8217;type=&#8221;text/javascript&#8221; charset=&#8221;utf-8&#8243;&gt;&lt;&#8217;+'/script&gt;&#8217;;</p>
<blockquote><p>document.write(src);</p></blockquote>
<p>&lt;/script&gt;</p>
<p>※Aサイト：www.kiteretsu-so.com Bサイト:www.kiteretsu-so.jp　とする。</p>
<p>===========================================</p>
<p>さてさて、如何でしょうか？<br />
JS自体はシンプルなif文です。吐き出しに際してシングルクォーテーションで囲ってやらないと正しいhtmlにならないのでそこだけは注意です。</p>
<p>応用としてはアナリティクスをドメインごとにチェックするとか、まぁ、いろいろ考えれます。</p>
<p>それにこれはJSの基本であるif文でもあるのでこれを気にJSも触ってみてよ。</p>
<p>しかし、これだけで公開時のチェック項目がひとつ減らせるので是非参考にしてください。</p>
<p>かしこ。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/1957/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>まったりプレビュー　SoftBank Desire X06HT</title>
		<link>http://www.kiteretsu-so.com/archives/1883</link>
		<comments>http://www.kiteretsu-so.com/archives/1883#comments</comments>
		<pubDate>Sat, 08 May 2010 09:17:15 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[アンドロイド]]></category>
		<category><![CDATA[ニュースネタ]]></category>
		<category><![CDATA[閑話休題]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=1883</guid>
		<description><![CDATA[ようこそのお運び、厚く御礼申し上げます。 キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。 さて、私的に旬なネタがいくつかあった中で今を逃すと意味がなさそうなこのネタで参ります。 「まったりプレビュー　 [...]]]></description>
			<content:encoded><![CDATA[<p>ようこそのお運び、厚く御礼申し上げます。<br />
キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。</p>
<p>さて、私的に旬なネタがいくつかあった中で今を逃すと意味がなさそうなこのネタで参ります。</p>
<p>「まったりプレビュー　SoftBank Desire X06HT」</p>
<p><img class="alignnone size-medium wp-image-1884" title="K0000099395" src="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2010/05/K0000099395-300x225.jpg" alt="K0000099395" width="300" height="225" /><br />
3月28日に孫さんが発表し4月27日に強硬発売されたアンドロイド2.1携帯です。<br />
みなさん、興味はなんとなくあるけどまぁ、いいかぁーってなりがちなスマフォですｗ</p>
<p>前段階でのウリは下記のような感じです。</p>
<p>・3.7インチ有機ELディスプレイ<br />
・HTC Senseと呼ばれるHOME画面のインターフェイス<br />
・マルチタッチ<br />
・Google 音声検索<br />
・マルチタスク<br />
・Flashlite搭載<br />
・MMS非対応(これはデメリットですが)</p>
<p>ということで上記を抑えつつプレビューと参ります。</p>
<p><span id="more-1883"></span></p>
<p>■Desireを使う前に。</p>
<p>使う前にやらなければならないことがいくつかあります。</p>
<p>・Gmail.comへのアドレス変更通知。<br />
MMSが利用できないための措置です。<br />
SB同志だった場合はSBのロングメールアドレスのレス依頼とドメイン許可設定の依頼も併せて行う必要あり。<br />
ちなみに旧アドレスは存続されるのでSIMを差替えれば旧携帯で受信できます。<br />
また冬くらいにはMMS対応予定だそうです。</p>
<p>・3G携帯からアドレス帳をエクスポート。<br />
microSDにて該当ファイルをPCへ。その後、GmailにインポートすればOKです。</p>
<p>・付属のmicroSDが2Gなので交換したい場合は先に行うが吉。<br />
microSDにアプリを退避させたり音楽や画像を置いておくので2Gでは心もとないかも。</p>
<p>・PCにHTCサイトよりHTCSyncをダウンロード・設定しておく。<br />
HTCSncyとはPCとDesireを同期するツールです。</p>
<p>■Desireを使えるように。</p>
<p>まずオンラインショップから配送されてきた本機の梱包を解いた一枚。<br />
<img class="alignnone size-medium wp-image-1885" title="s200" src="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2010/05/s200-300x225.jpg" alt="s200" width="300" height="225" /></p>
<p>次にバッテリカバーを外した一枚。<br />
<img class="alignnone size-medium wp-image-1886" title="s202" src="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2010/05/s202-300x225.jpg" alt="s202" width="300" height="225" /></p>
<p>バッテリはパージされているので最低一度はカバーを外す必要があります。<br />
背面上部に凹部があるのでさっくりあけて、SIMとmicroSDを差しましょう。<br />
microSDは押し込むと外れますので無理に抜かないように。<br />
その後、バッテリを装着して同梱されていたケーブルを差してまずは充電。</p>
<p>バッテリについては諸説ありますが&#8221;慣らし&#8221;をすると持ちがいいとのことです。<br />
慣らしとはフル充電、フル放電を3回ほど行うことだそうです。<br />
要するに最初2・3日は寝る前に音楽をエンドレスで再生させて寝ればいいのです。</p>
<p>通電しますと本体設定を適当に行って起動。<br />
たしかネットワークの設定等々あった気がしますがあとから変更できる項目です。</p>
<p>このままだとメール設定が行われていないのでGmailの設定を行います。<br />
全てのプログラムからGmailを選択して同期を行います。たしか同じくGmailの連絡帳の同期を行えたハズです。</p>
<p>以上で初期設定終了です。</p>
<p>■Desireを弄ぶ。</p>
<p>アンドロイドマーケットよりアプリをDLして便利していきます。</p>
<p>オススメアプリ</p>
<p>・TaskControl…（マルチタスク対策）<br />
・MemoryForLemmings…（マルチタスク対策）<br />
・QRコードスキャナー…（そのまま）<br />
・乗換案内…（そのまま）</p>
<p>・shimeji（あいぽんのフリックに慣れた人はこれを）</p>
<p>・EverNote（月40Mまで無料なPCとの同期ツール）<br />
・Foursquear（現在位置をTweeterに…あいぽんユーザーが使ってるのを見て密かに羨ましかった）<br />
・UstreamBroadcast（Ustクライアント…アンドロイド2.1では動きませんでした。動作報告はあるようなのですが…）<br />
・S2TweetNP…（今聞いている曲をTweeterに…これも動きませんでした。アプデに期待）</p>
<p>・GoogleEarth（おもちゃですが素晴らしい）<br />
・Andjong（マージャン）<br />
・Solitaire（ソリティア）<br />
・Fishin&#8217;2Go（釣りゲー）</p>
<p>プログラムとして使うのはもちろん、ウジェットとして使えるツールもあります<br />
。</p>
<p>Desire標準のカメラで夜景を撮影。<br />
<img class="alignnone size-medium wp-image-1887" title="s205" src="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2010/05/s205-300x179.jpg" alt="s205" width="300" height="179" /></p>
<p>オートフォーカス・ズーム・露出の補正など携帯カメラにしてはよいかと思います。<br />
ただ、手ぶれだけは…デジカメじゃないので仕方ない。</p>
<p>Desire標準のイヤマイク。</p>
<p>音はクセがない普通なカンジ。音楽聴いてる状態で着信が入るとちゃんとわかる仕様になっていました。<br />
地味だけどピンがありがたい。</p>
<p>■Desireを評価する。</p>
<p>・3.7インチ有機ELディスプレイ<br />
綺麗。ただし液晶に比べて日光に弱い。</p>
<p>・HTC Senseと呼ばれるHOME画面のインターフェイス<br />
7シーン用意されててカスタマイズ可能。デフォルトでも中々に使いやすい。<br />
【天気・Tweeter・メール・HOME・お気に入り・RSS・フリーエリア】（私はフリーエリアにウジェットを置いてます）</p>
<p>・マルチタッチ<br />
あいぽんに引けを取らない感度です。<br />
使用感はヌルヌル。拡大縮小はあいぽんと同じ。</p>
<p>・Google 音声検索<br />
まったく期待してなかったですが、これは素晴らしい。<br />
かなりの精度で音声を拾いブラウザの検索結果を開いてくれます。</p>
<p>・マルチタスク<br />
正直、あまり実感はないですね。<br />
逆に油断するとバックグランドでアプリが起動しっぱになるのでタスク管理アプは必須かな。<br />
でも、いろんなアプリが立ち上がってるという事実はマルチタスク様々といったとこです。</p>
<p>・Flashlite搭載<br />
標準ブラウザでパッチリ見れました。<br />
が、重いのとかは辛いです。10.4へのアプデに期待します。</p>
<p>・MMS非対応(これはデメリットですが)<br />
はっきり言ってこいつが最大のネックですね。</p>
<p>===================================================</p>
<p>・バッテリ…普通に使ってれば2日程度は持ちそう。microUSBあればPCで充電できます。<br />
・発熱　　…ほんのり温かい。熱いまではいかないので低温やけどはしないかと。<br />
・Gmail　 …きちんと設定すればプッシュ式で普通のメールとかわりはない。<br />
・音声　　…マナーモードや個別の設定はきちんと切り分けができている。ただ、外国製の使い勝手に慣れるまでは…<br />
・目ざまし…標準で搭載。まぁ、期待してなかったのでそこそこ使えるかな。<br />
・wifi      …すんません、基本使ってないので評価の仕様がないです。</p>
<p>その他気になる点はアプリが1.6用のものが多くアプデ待ちってのがあります。</p>
<p>あと使用していて不便だったのはGmail。送信されてきたときに名前がでずにアドレスが表示される。<br />
なにかの条件で名前が表示されているのもあるんですが…<br />
これはなんとかしたい。全力をもってアプリなり設定なりを捜索中です。</p>
<p><img class="alignnone size-medium wp-image-1888" title="s204" src="http://www.kiteretsu-so.com/wordpress/wp-content/uploads/2010/05/s204-225x300.jpg" alt="s204" width="225" height="300" /><br />
■統括</p>
<p>エンタメを求めるならあいぽん。<br />
スマフォにしたいだけならエクスペリ。<br />
もの好きはDesire。</p>
<p>といってもどれも帯に短し襷に長しで、<br />
あいぽんは林檎さんの戦略次第で浮沈がきまりますし、<br />
エクスペリアは安定ですがならわざわざスマフォにする必要ある？ってとこで、<br />
Desireは環境とマーケットが未熟なのとSBの見切り発車なのが不安要素でもあります。</p>
<p>ただ、私がDesireを選んだ理由としては開発環境の自由度とFlashが決めてでした。</p>
<p>■最後に</p>
<p>スマフォ初体験の私としてはスマフォってすごいって思いました。<br />
とにかく携帯ではなく携帯型PCですね。PCとの同期を前提に設計されてる点や同期アプリ、アップデートアプリなどすごいです。</p>
<p>みなさんもスマフォ乗り換えるなら決め手を見極めてください。（SBのスマフォは秋以降MMS対応してからでもいいかもね…）<br />
そして乗り換える必要性を感じないなら無理に乗り換えはしないように。<br />
はっきり言って優しくはないですから。（特にDesireは）</p>
<p>そして、キテ荘にこんな記事書いてよかったのかしらと今更思ってますーｗ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/1883/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ハッタリ企画解体新書【ハッタリくんFlash】</title>
		<link>http://www.kiteretsu-so.com/archives/1773</link>
		<comments>http://www.kiteretsu-so.com/archives/1773#comments</comments>
		<pubDate>Wed, 07 Apr 2010 15:07:09 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[FLASH]]></category>
		<category><![CDATA[Lab]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[コンテンツ]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=1773</guid>
		<description><![CDATA[ようこそのお運び、厚く御礼申し上げます。 キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。 何か記事を書かねばと思いはや数日。 ここはやっぱりこれですかね。 ハッタリ企画解体新書。 リニューアルに併せて [...]]]></description>
			<content:encoded><![CDATA[<p>ようこそのお運び、厚く御礼申し上げます。<br />
キテレツ荘で暗部を担当しております、かしこい風なだけのかしこです。</p>
<p>何か記事を書かねばと思いはや数日。<br />
ここはやっぱりこれですかね。</p>
<p>ハッタリ企画解体新書。</p>
<p>リニューアルに併せてハッタリなコンテンツを作ろうとなったのが2月末。<br />
3月末までにハッタリコンテンツと称して「<a href="http://www.kiteretsu-so.com/kashiko_work/hattari/index.php" target="_blank">キテレツWEB2.015</a>」なる群れを用意しました。</p>
<p>・虚勢を張ってみよう。<br />
・キテレツ忍者ハッタリくん<br />
・おまけのキテレツボット<br />
・さらにおまけのキテレツ時計</p>
<p>その中でも<a href="http://twitter.com/tonka1981jp" target="_blank">@tonka</a>氏より解体依頼がありました”キテレツ忍者ハッタリくん”を解体してみようかしら。。。</p>
<p><span id="more-1773"></span><br />
まず、この記事はFlashの基本は抑えているものとしております旨、ご了承ください。<br />
基本から抑えたい場合は下記のサイトをご参照ください。</p>
<p>Flashゲーム講座 &amp; アクションスクリプトサンプル集（いろんな方もリスペクトしている神サイトです）<br />
<a href="http://hakuhin.jp/as.html" target="_blank">http://hakuhin.jp/as.html</a></p>
<p>ざっとしたパート構成案を考察</p>
<p>■タイトル<br />
■名前等入力画面<br />
■ゲーム部分<br />
■結果<br />
■ランキング</p>
<p>【前提】<br />
ほぼすべての動きをAS化させて軽量にする。<br />
シームレス感を持たす。</p>
<p><a href="http://www.kiteretsu-so.com/kouhaku/shiro/" target="_blank">相撲鳥人間</a>の際も軽量化はしていましたがどうしてもランキングやデータ登録周りでシームレス感がなかったことへの反省です。<br />
ということで今回は登録まわりも含めた全編Flashでいくことにしました。</p>
<p>スクリプトバージョンはFlashプレーヤーバージョン9を鑑みてAS2を利用。<br />
（AS3わからないのは内緒⇒この後、キテレツ時計のためにAS3に踏み込んだのも内緒）</p>
<p>大まかな流れを決めればパーツの作成へ移行</p>
<p><strong>■タイトル</strong><br />
この時点でハイスコアとプレイNOを取得します。<br />
プレイNOはデータ管理のために利用しているのと後述のランキング更新判定にも利用しています。<br />
<strong><span style="color: #ff6600;">loadVariables()</span></strong></p>
<p><strong>■名前入力</strong><br />
名前・目標ちくわの設定画面で特に解説の必要はないかと。<br />
名前の漢字NG設定とちくわ入力は最大999までに設定しているくらいです。<br />
<span style="color: #ff6600;"><strong>restrict</strong></span></p>
<p><strong>■ゲーム部分</strong><br />
ちくわを発生させてキャラクターとの当たり判定、ちくわ数等を取得する重要パートです。</p>
<p>①ちくわオブジェクトの動き<br />
<a href="http://hakuhin.jp/as/move.html#MOVE_05" target="_blank">http://hakuhin.jp/as/move.html#MOVE_05</a><br />
放物線を描く自由落下の動きにランダム要素を追加</p>
<p>②ちくわオブジェクトをランダムで鉄アレイ化</p>
<p>③キャラオブジェクトとの当たり判定<br />
<a href="http://hakuhin.jp/as/hittest.html#HITTEST_04" target="_blank">http://hakuhin.jp/as/hittest.html#HITTEST_04</a><br />
当たり判定を取得して、ちくわ数と裏で実行している鉄アレイ指数を計算。<br />
<span style="color: #ff6600;"><strong>hitTest() </strong></span><br />
<span style="color: #ff6600;"><strong>Key.○○○()</strong></span></p>
<p>④ちくわオブジェクトの複製<br />
<a href="http://hakuhin.jp/as/movieclip.html#MOVIECLIP_07" target="_blank">http://hakuhin.jp/as/movieclip.html#MOVIECLIP_07</a><br />
①で作ったちくわを複製します。複製回数の指定も含みます。<br />
複製したちくわに個別のプロパティを持たす必要が発生するところで激しくツマリましたが・・・<br />
attachMovie()関数内にてonEnterFrameで個別処理！他にもやり方はあるでしょうが・・・（eval関数が使えるなら他のやり方もありますが）<br />
<span style="color: #ff6600;"><strong>attachMovie()</strong></span></p>
<p><strong>■結果</strong><br />
ハッタリ指数という訳のわからない指数の計算と結果を登録する重要パートです。<br />
ハッタリ指数とは目標ちくわ数に設定された基礎倍率と目標に対する取得ちくわの達成率を掛けたモノです。</p>
<p>①ハッタリ指数の計算式を導入</p>
<p>②ハッタリ指数に対するコメントとコメンテーターを決められた値に準じてランダムに表示。</p>
<p>③phpに取得ちくわ、ハッタリ指数、名前をシームレスに引き渡す。<br />
<span style="color: #ff6600;"><strong>sendAndLoad()</strong></span></p>
<p><strong>■ランキング</strong><br />
ゲーム後、すぐにランキングに反映しないといけないのでどのタイミングでデータを取得するのかがキモのパートでした。<br />
結局、ランキングフェイズに行くたびにランクデータを取得するので都度ローディングしています。</p>
<p>①ハイハッタリ順にソートしておいた上位10件のデータをロード</p>
<p>②ハイスコア時のカラー変更のために現在のプレイNOとロードしたデータに記録しているNOのつき合せ処理。合致した場合、カラーが変更される。</p>
<p><strong>■バックグランド</strong><br />
<a href="http://hakuhin.jp/as/sound.html#SOUND_00" target="_blank">http://hakuhin.jp/as/sound.html#SOUND_00</a><br />
全セクションでサウンドの外部読み込みとI/Oの切り替え実装。<br />
<strong><span style="color: #ff6600;">sound_obj.setVolume();</span></strong></p>
<p>細かいパート解説とかいるようならflaファイル公開してもいいか、質問あればブロック単位で回答してもいいかとか、<br />
とも考えてますが、みなさんの要望次第でどうするかまた考えます。</p>
<p>ということで、ハッタリくんFlashパート解体新書でした。（phpパートはまったく別ものなので要望あれば解体します。）</p>
<p>感想としては・・・やってる処理に対してできあがりの印象が本当にしょぼいのがステキ。クソゲー作ろうの趣旨にはバッチリだと思います！</p>
<p>以上、長々となりましたが解体新書でした。</p>
<p>P.S　Flashは161KBに抑えました！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/1773/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>【夏休み企画】検索システムつくってみようぜ！⑤</title>
		<link>http://www.kiteretsu-so.com/archives/1685</link>
		<comments>http://www.kiteretsu-so.com/archives/1685#comments</comments>
		<pubDate>Mon, 07 Sep 2009 14:00:59 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=1685</guid>
		<description><![CDATA[コオロギの唄が聞こえる季節になってきました。 やたらと忙しく最終回の5回目をなかなか更新できなかった、かしこです。 【５、条件による検索結果の表示（完成）】 ・検索結果の表示。 というルーチンの概要説明となります。 指定 [...]]]></description>
			<content:encoded><![CDATA[<p>コオロギの唄が聞こえる季節になってきました。</p>
<p>やたらと忙しく最終回の5回目をなかなか更新できなかった、かしこです。</p>
<p>【５、条件による検索結果の表示（完成）】</p>
<p>・検索結果の表示。</p>
<p>というルーチンの概要説明となります。</p>
<p>指定した条件に対してdata.phpの中身を表示。前回の検索数で作った変数$banbanを利用してチャラット完成させましょう。</p>
<p>実際の完成形はこちら⇒「<a href="../../kashiko_work/search/index.php" target="_blank">キテ荘的検索ってみよ</a>」</p>
<p>スターターキットは<a href="../../kashiko_work/search/starter_kit.zip" target="_blank">こちら</a>。</p>
<p><span id="more-1685"></span></p>
<p>さて、前述の通り$banbanを利用します。</p>
<p>？・・・$banbanってなにって？</p>
<p>ふむ、$banbanは前回の検索数表示ルーチンの中に、仕組んだ変数ですが、この変数の中には表示されるべき内容のみが値のみが配列として格納されています。</p>
<p>これはですね、data.phpの全データを$listとして読み出して、これを元に条件に該当するものを絞って、結果その件数＝検索数というルーチンを用意しました。</p>
<p>その際に、該当する時点の変数だけを$banbanに格納するということなのです。</p>
<p>わかりにくれば検索数のfor文の手前で「print_r($list)」とすると全件表示されますが、for文後に「print_r($banban)」とすると該当するデータのみの表示となります。</p>
<p>これこそが本日、表示すべきデータそのものということなのです。</p>
<p>ではデータを書き出してみましょう。</p>
<p>for($i= ０;$i&lt;検索数;$i++){</p>
<p>print $banban[i]["id"];</p>
<p>print $banban[i]["price"];</p>
<p>print $banban[i]["comment"];</p>
<p>}</p>
<p>こうすると該当i番目の連想配列のkeyを呼び出しめでたく表示されます。</p>
<p>あとは表示させたい形にphpを書き出すようにしてあげればOKです。</p>
<p>htmlの形成は完成ファイルを参照してください。</p>
<p>ポイントは前回の検索数を表示するルーチンに$banban（変数はなんでもいい）を仕組んでおく。あとはそれを表示するという”よい意味での手抜き”です。</p>
<p>今日のデータはこちらから<a href="../../kashiko_work/search/index_4.zip">ダウンロード</a>できます。</p>
<p>さてさて、検索シリーズは今回で完成ということで、終了です。</p>
<p>ただし、ページングの解説は飛ばしてますし、実際は並べ替えも必要になるでしょうが・・・今回のシリーズはあくまでも検索ルーチンの構築なのでまた違う機会にでも紹介・解説できればなーっと。</p>
<p>というわけで無駄に記事の更新を続けた検索システムをつくってみようぜ！はいかがでしたでしょうか。</p>
<p>難易度は☆☆★★★・・・こんなもんでしょうか。</p>
<p>初見でわかるアナタはステキです。わかないアナタも完成形のソースからきっかけをつかんでもらえばOKです。</p>
<p>ということでバイババーイ！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/1685/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>【夏休み企画】検索システムつくってみようぜ！④</title>
		<link>http://www.kiteretsu-so.com/archives/1638</link>
		<comments>http://www.kiteretsu-so.com/archives/1638#comments</comments>
		<pubDate>Thu, 20 Aug 2009 15:35:21 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=1638</guid>
		<description><![CDATA[今年は冷夏だそうですが皆様いかがお過ごしでしょうか。 韓国の友人に荷物を送ったら韓国の税関で検疫をうけたと連絡を受けたかしこです。 【４、条件による検索結果数の表示】 ・検索条件に何件ヒットとしたか。 というルーチンの概 [...]]]></description>
			<content:encoded><![CDATA[<p>今年は冷夏だそうですが皆様いかがお過ごしでしょうか。</p>
<p>韓国の友人に荷物を送ったら韓国の税関で検疫をうけたと連絡を受けたかしこです。</p>
<p>【４、条件による検索結果数の表示】</p>
<p>・検索条件に何件ヒットとしたか。</p>
<p>というルーチンの概要説明となります。</p>
<p>指定した条件に対してdata.phpの中身を精査して何件該当するのか。ここをクリアすれば検索は余裕です。</p>
<p>実際の完成形はこちら⇒「<a href="../../kashiko_work/search/index.php" target="_blank">キテ荘的検索ってみよ</a>」</p>
<p>スターターキットは<a href="../../kashiko_work/search/starter_kit.zip" target="_blank">こちら</a>。</p>
<p><span id="more-1638"></span></p>
<p>では、ルーチンを考えてみます。</p>
<p>Getで受信した変数とdata.phpに連想配列として格納されている商品データをif文で選別する。</p>
<p>？なのことだ・・・とお思いのアナタ。</p>
<p>このシリーズの一回目にやった”print_r($list);”でデータを確認してみてください。</p>
<p>[cat]=&gt;&#8221;1&#8243; とかという表記があったはず。それとGetで受信した変数（$cat）を付きあわせて該当するファイルをカウントする。</p>
<p>それを条件の数だけチェックしていけば残った配列数が該当件数、しいては該当ファイルということになります。</p>
<p>あとはそのルーチンをプログラムしてやればOK！</p>
<p>ということで下をご覧ください。<br />
=========================================</p>
<p>&lt;?<br />
include &#8216;data.php&#8217;;</p>
<p>if($_GET["cat"]){<br />
$cat = $_GET["cat"];<br />
}else{<br />
$cat = &#8220;&#8221; ;<br />
}<br />
if($_GET["catd"]){<br />
$catd = $_GET["catd"];<br />
}else{<br />
$catd = &#8220;&#8221; ;<br />
}<br />
if($_GET["new"]){<br />
$new = $_GET["new"];<br />
}else{<br />
$new = &#8220;&#8221; ;<br />
}<br />
$snum = $cat.&#8221;-&#8221;.$catd.&#8221;-&#8221;.$new;<br />
?&gt;</p>
<p>&lt;?</p>
<p>$num = count($list);<br />
$searchnum = 0;<br />
if($list){<br />
for($i= 0;$i&lt;$num;$i++){<br />
if($cat){<br />
$a = $list[$i]["cat"];<br />
}<br />
if($catd){<br />
$b = $list[$i]["cat_detail"];<br />
}<br />
if($new){<br />
$c = $list[$i]["new"];<br />
}<br />
$dnum = $a.&#8221;-&#8221;.$b.&#8221;-&#8221;.$c;<br />
if($snum == $dnum){<br />
$searchnum++;<br />
$banban[] = $list[$i];<br />
}<br />
}<br />
}</p>
<p>?&gt;</p>
<p>&lt;?=$searchnum?&gt;<br />
=========================================</p>
<p>前半ブロックでGetで受信した変数を付きあわせしやすくするために”$snum”という変数にまとめています。</p>
<p>さてさて、本日のメイン解説となる後半ブロックです。</p>
<p>まずdata.phpから読み込んだデータをcount関数で何件（何個の配列数が）あるかどうかを調べて$numに格納します。</p>
<p>これはその下のfor文を何回まわすのかという数を調べているわけです。そう、$numの数だけまわします。</p>
<p>$searchnumは検索該当数をカウントするために用意。forでまわる度にカウントが１つずつ増えていきます。これが「○○ヒット」の数になるわけです。</p>
<p>ただし、このままですと$listが全部表示されてしまいますのでfor文の中で精査していきます。</p>
<p>$a=$list[$i]["cat"]・・・＄listの中のforのi番目の連想配列キーcat　を変数$aに格納</p>
<p>$b = $list[$i]["cat_detail"]・・・＄listの中のforのi番目の連想配列キーcat_detail　を変数$bに格納</p>
<p>$ｃ = $list[$i]["new"]・・・＄listの中のforのi番目の連想配列キーnew　を変数$cに格納</p>
<p>これを変数$dnumにまとめて格納・・・そう、これが所謂、精査の条件になります。</p>
<p>あとはGetした$snumとforの中の$dnumのイコールのときだけ$searchnumにプラス１してやります。</p>
<p>これで検索数がはじき出されます。</p>
<p>ここからは補足ですが・・・</p>
<p>$banban[] = $list[$i];は次回、実際のデータを吐き出す際に使用する項目です。これは該当したi番目の配列を$banbanに配列として格納してゆけよ！という命令です。</p>
<p>ここは次回に使うのでまた改めて解説しますが、要はヒットした配列だけを$banbanに入れるということなのです。</p>
<p>ということで本日はここまでです。（どんどん複雑になっていくなぁ・・・）</p>
<p>今日のデータはこちらから<a href="../../kashiko_work/search/index_3.zip">ダウンロード</a>できます。</p>
<p>さてさて、次回は最終回です。実際にデータを吐き出すルーチンをやりますが、ポイントは$banbanですｗ</p>
<p>【予定】</p>
<p>・５、条件による検索結果の表示（完成）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/1638/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>【夏休み企画】検索システムつくってみようぜ！③</title>
		<link>http://www.kiteretsu-so.com/archives/1634</link>
		<comments>http://www.kiteretsu-so.com/archives/1634#comments</comments>
		<pubDate>Wed, 19 Aug 2009 15:11:41 +0000</pubDate>
		<dc:creator>かしこ</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://www.kiteretsu-so.com/?p=1634</guid>
		<description><![CDATA[キテレツ荘のデザインがリュニューアルされた様ですが皆様いかがお過ごしでしょうか。 さてさて、そろそろ脱力し始めそうな気配がプンプンしているかしこです。 【３、Getによるform内のphp化】 ・Getで受信するルーチン [...]]]></description>
			<content:encoded><![CDATA[<p>キテレツ荘のデザインがリュニューアルされた様ですが皆様いかがお過ごしでしょうか。</p>
<p>さてさて、そろそろ脱力し始めそうな気配がプンプンしているかしこです。</p>
<p>【３、Getによるform内のphp化】</p>
<p>・Getで受信するルーチン</p>
<p>・Getで受信した内容をフォームに反映させる</p>
<p>この2つで参ります。が、えー、恐らくこのシリーズのキーポイント１です。</p>
<p>そのため、ボリュームもヤバイかも。</p>
<p>実際の完成形はこちら⇒「<a href="../../kashiko_work/search/index.php" target="_blank">キテ荘的検索ってみよ</a>」</p>
<p>スターターキットは<a href="../../kashiko_work/search/starter_kit.zip" target="_blank">こちら</a>。</p>
<p><span id="more-1634"></span></p>
<p>まずはGet、Postや書き方などを<a href="http://nyx.pu1.net/practice/external_var/" target="_blank">こちら</a>で予習することをオススメします。</p>
<p>■Getで受信するルーチン</p>
<p>フォームのメゾットをGetとして送信するとURLが「index.php?cat=1」のような形になります。</p>
<p>これを受信するには「$_GET["cat"];」と書いてあげれば受信できます。</p>
<p>ではでは、今回のシステムもcatを受信するので次のようにします。</p>
<p>=========================================</p>
<p>if($_GET["cat"]){<br />
$cat = $_GET["cat"];<br />
}else{<br />
$cat = &#8220;&#8221; ;<br />
}</p>
<p>=========================================</p>
<p>なにをしているのかといえば『$_GET["cat"]』があれば変数$catに代入。</p>
<p>なければNull（空に）という処理をしています。</p>
<p>今回のシステムではcat、catd、price、new、typeの5つを受信しますが、type以外は上のルーチンで対応可能です。</p>
<p>typeについてはﾁｪｯｸボックスを利用しているので扱いが少し異なります。</p>
<p>=========================================</p>
<p>if($_GET["type"]){<br />
$type = $_GET['type'];<br />
}else{<br />
$type = array(1,2,3,4,5,6);<br />
}</p>
<p>=========================================</p>
<p>$_GETがあれば変数$typeへ、なければ$typeに配列として1,2,3,4,5,6を代入しています。</p>
<p>何故、ここだけ処理が違うのか・・・といいますと、</p>
<p>受信した際のURLが「index.php?type[]=1&amp;type[]=2&amp;type[]=3」というように受信して変数typeに配列として格納しています。</p>
<p>で、チェックボックスが全て空で検索するという矛盾対策のために空で受信した場合は全てにチェックを入れて受信するという処理を行っています。</p>
<p>ま、このあたりの処理はあまり深く追求しなくてもよいと思います。配列の受信はこんなものだ！的でよいでしょう。</p>
<p>■Getで受信した内容をフォームに反映させる</p>
<p>なんのことかといいますと、form内のselectbox等で検索をしますわね。</p>
<p>結果が呼びだされた時にこの処理をしないとイチイチselectbox達が初期状態に戻ります。</p>
<p>そうなると自分が何を検索したのかがわからなくなるという事態が発生します。またその状態で再度検索をすると先の条件がどこかにいってしまいます。これはユーザービリティ云々の前に検索システムとしては致命的な欠陥といってもいいでしょう。</p>
<p>ここからはそうならない処理を行ってみたいと思います。</p>
<p>では、具体的にどうするのか？</p>
<p>要はselectの中身に”checked”をつけてやれればよいのです。</p>
<p>下は新着か否かという項目をいじってみた例です。</p>
<p>=========================================<br />
&lt;select name=&#8221;new&#8221; style=&#8221;width:160px;&#8221;&gt;<br />
&lt;option value=&#8221;0&#8243;<br />
&lt;?<br />
if($new == 0){<br />
print &#8220;selected&#8221;;<br />
}<br />
?&gt;<br />
&gt;こだわらない&lt;/option&gt;<br />
&lt;option value=&#8221;1&#8243;<br />
&lt;?<br />
if($new == 1){<br />
print &#8220;selected&#8221;;<br />
}<br />
?&gt;<br />
&gt;新着で探す&lt;/option&gt;<br />
&lt;/select&gt;<br />
=========================================<br />
この例でいくとGetで$newを取得していれば０か１の値が入っているのでselectの間にphpをねじ込んでいます。で、 もし０（null）なら「こだわらない」に”checked”が、１なら「新着で探す」に”checked”が入るので、めでたく選択項目がキープされるわけです。</p>
<p>他の項目もこれと同じルーチンでOKですがやはりチェックボックスの項目だけは別になります。<br />
=========================================</p>
<p>&lt;input type=&#8221;checkbox&#8221; id=&#8221;type1&#8243; name=&#8221;type[]&#8221; value=&#8221;1&#8243;<br />
&lt;?<br />
if($type[0]==1){<br />
print &#8220;checked&#8221;;<br />
}<br />
?&gt;<br />
/&gt;</p>
<p>&lt;input type=&#8221;checkbox&#8221; id=&#8221;type2&#8243; name=&#8221;type[]&#8221; value=&#8221;2&#8243;<br />
&lt;?<br />
if($type[0]==2||$type[1]==2){<br />
print &#8220;checked&#8221;;<br />
}<br />
?&gt;<br />
/&gt;</p>
<p>&lt;input type=&#8221;checkbox&#8221; id=&#8221;type3&#8243; name=&#8221;type[]&#8221; value=&#8221;3&#8243;<br />
&lt;?<br />
if($type[0]==3||$type[1]==3||$type[2]==3){<br />
print &#8220;checked&#8221;;<br />
}<br />
?&gt;<br />
/&gt;</p>
<p>=========================================<br />
これも理屈は同じで”checked”をつけるかつけないかっていう処理なのですがif文の条件が少し複雑で$typeの配列の何番目に格納されているかが送信時のチェックボックスのチェック数によってことなるので想定される配列の順番だけ条件を用意しておるわけです。</p>
<p>このあたりは少し複雑で、基礎的な知識がないと苦しいです。勉強会があるようなので、解説してもいいかと思っています。</p>
<p>詳しくは今日の完成データを参照してくだることを期待しています。</p>
<p>ということで本日はここまでです。（だいぶ長くなりましたよ・・・）</p>
<p>今日のデータはこちらから<a href="../../kashiko_work/search/index_2.zip">ダウンロード</a>できます。</p>
<p>さてさて、次回は実際の検索ルーチンが絡んでくる検索結果数の表示にチャンレンジしましょう。</p>
<p>【予定】</p>
<p>・４、条件による検索結果数の表示</p>
<p>・５、条件による検索結果の表示（完成）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kiteretsu-so.com/archives/1634/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

