<?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>BPS株式会社 開発ブログ Beyond Perspective Solutions LTD.</title>
	<atom:link href="http://www.bpsinc.jp/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.bpsinc.jp/blog</link>
	<description>BPS株式会社（Beyond Perspective Solutions）のプログラマによる技術・開発などに関してのブログです</description>
	<lastBuildDate>Thu, 02 Sep 2010 08:49:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CakePHP Containableビヘイビア</title>
		<link>http://www.bpsinc.jp/blog/archives/2299</link>
		<comments>http://www.bpsinc.jp/blog/archives/2299#comments</comments>
		<pubDate>Thu, 02 Sep 2010 08:49:08 +0000</pubDate>
		<dc:creator>shibachan</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[芝原]]></category>
		<category><![CDATA[Behavior]]></category>
		<category><![CDATA[Containable]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2299</guid>
		<description><![CDATA[Containableビヘイビアをご存知でしょうか？
もし、使用していならばこれを機にぜひ導入してみてください。
公式ページによると
ContainableBehavior は CakePHP のコアの新機能です。このビ [...]]]></description>
			<content:encoded><![CDATA[<p>Containableビヘイビアをご存知でしょうか？<br />
もし、使用していならばこれを機にぜひ導入してみてください。</p>
<p><a href="http://book.cakephp.org/ja/view/474/Containable">公式ページ</a>によると</p>
<blockquote><p>ContainableBehavior は CakePHP のコアの新機能です。このビヘイビアは find を実行するときに関連したモデルを選別したり限定したりするために使用します。コンテイナブル(<em>Containable</em>)は、データベース中の不要なものを削減し、アプリケーションの速度やパフォーマンスを改善します。このクラスを使うと、ユーザに対するデータの検索とフィルタを、美しく一貫した方法で行うこともできます。</p></blockquote>
<p>と、魅力的に説明されています。</p>
<p>使用方法や動作は、公式ページをみるのが手っ取り早いので割愛しますm(_ _)m<br />
#ググってください</p>
<p>このビヘイビアのメリットはたくさんあるのですが、<br />
特に便利だと思う点が</p>
<ul>
<li> recursiveやbindModelやunbindModelの記述がなくなって、<strong>ソースコードがきれいでわかりやすくなる</strong></li>
<li> あとで関連を選別できるからモデルの<strong>関連をモリモリの最大</strong>で書いておくことができる</li>
</ul>
<p>の２点で、とにかく便利です。</p>
<p>さらに以下のサンプルのようにモデルのrecursiveのデフォルト値を-1としておけば、<br />
何をcontainすればいいのか、しているのかがソースコードからわかりやすくなってお勧めです。</p>
<pre class="brush:php">class UserModel extends AppModel {

    public $recursive = -1;
    public $actsAs = array('Containable');
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2299/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JQuery UI Tabsでタブ表示</title>
		<link>http://www.bpsinc.jp/blog/archives/2289</link>
		<comments>http://www.bpsinc.jp/blog/archives/2289#comments</comments>
		<pubDate>Fri, 27 Aug 2010 09:34:48 +0000</pubDate>
		<dc:creator>shibachan</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Tabs]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2289</guid>
		<description><![CDATA[こんにちわ芝原です。
始めてのJavascript関連の投稿です。
お手柔らかにどうぞ。
たくさんのコンテンツをすっきり表示させるための方法として、タブという手法がよくつかわれると思います。
今回は、この便利なタブ表示を [...]]]></description>
			<content:encoded><![CDATA[<p>こんにちわ芝原です。</p>
<p>始めてのJavascript関連の投稿です。<br />
お手柔らかにどうぞ。</p>
<p>たくさんのコンテンツをすっきり表示させるための方法として、タブという手法がよくつかわれると思います。<br />
今回は、この便利なタブ表示をJQueryを使って実現する方法を解説します。<br />
動作はこんな感じになります。<br />
<a href="http://jqueryui.com/demos/tabs/default.html">http://jqueryui.com/demos/tabs/default.html</a></p>
<h3>必要なファイルのダウンロード</h3>
<p>jquery本体とui.core.js、ui.tabs.jsが必要です。</p>
<p><a href="http://jqueryui.com/download/jquery-ui-1.8.4.custom.zip">こちら</a>から簡単にダウンロードできますが余計なファイルも多分に入っているので、<a href="http://jqueryui.com/download">こちら</a>からファイルを選択してダウンロードしてもいいと思います。</p>
<h3>スクリプトの読み込み</h3>
<p>必要なファイルを読み込みます。<br />
head内に記述するのが一般的です。</p>
<pre class="brush:html">&#60;script type="text/javascript" src="/path/to/jquery.js"&#62;&#60;/script&#62;
&#60;script type="text/javascript" src="/path/to/ui.core.js"&#62;&#60;/script&#62;
&#60;script type="text/javascript" src="/path/to/ui.tabs.js"&#62;&#60;/script&#62;</pre>
<h3>HTMLの構造</h3>
<pre class="brush:html">&#60;div id="tabs"&#62;
    &#60;ul&#62;
        &#60;li&#62;&#60;a href="#tab1"&#62;タブに表示する文字&#60;/a&#62;&#60;/li&#62;
        &#60;li&#62;&#60;a href="#tab1"&#62;タブに表示する文字&#60;/a&#62;&#60;/li&#62;
        &#60;li&#62;&#60;a href="#tab3"&#62;タブに表示する文字&#60;/a&#62;&#60;/li&#62;
    &#60;/ul&#62;
    &#60;div id="tab1"&#62;
        タブの中身
    &#60;/div&#62;
    &#60;div id="tab2"&#62;
        タブの中身
    &#60;/div&#62;
    &#60;div id="tab3"&#62;
        タブの中身
    &#60;/div&#62;
&#60;/div&#62;</pre>
<h3>タブの設定</h3>
<pre class="brush:html">&#60;script type="text/javascript"&#62;
    var $tabs = $('#tabs').tabs();
    $tabs.tabs('select' 1); // 2番目のタブを選択状態にする
                            // デフォルトでは1番目のタブ
&#60;/script&#62;</pre>
<p>たったこれだけでタブが実装できました。</p>
<p>さらに詳しい情報を知りたい方は、<a href="http://jqueryui.com/demos/tabs/">公式ドキュメント</a>をご覧ください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2289/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>andronavi（アンドロナビ）でMusicFlyが絶対入れたい定番アプリに選ばれました！！</title>
		<link>http://www.bpsinc.jp/blog/archives/2282</link>
		<comments>http://www.bpsinc.jp/blog/archives/2282#comments</comments>
		<pubDate>Thu, 26 Aug 2010 08:31:40 +0000</pubDate>
		<dc:creator>shibachan</dc:creator>
				<category><![CDATA[MusicFly]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[プレスリリース]]></category>
		<category><![CDATA[芝原]]></category>
		<category><![CDATA[andronavi]]></category>
		<category><![CDATA[定番アプリ]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2282</guid>
		<description><![CDATA[Biglobeさんが運営する国内最大級のAndroidアプリ紹介サイトandronaviにて、弊社の音楽試聴AndroidアプリMusicFlyが『絶対入れたい定番アプリ』に選ばれました！
SimejiやIMoNiなどの [...]]]></description>
			<content:encoded><![CDATA[<p>Biglobeさんが運営する国内最大級のAndroidアプリ紹介サイト<a href="http://andronavi.com/">andronavi</a>にて、弊社の<a href="http://www.musicfly.jp">音楽試聴AndroidアプリMusicFly</a>が『絶対入れたい定番アプリ』に選ばれました！</p>
<p>SimejiやIMoNiなどの超有名アプリと並ばせていただき、すごい光栄です。</p>
<p>その影響か週間アクセスランキングでも堂々の第5位となりました！</p>
<p>最近、<a href="http://www.twitter.com/musicfly_jp">Twitter</a>などでも、多くのコメントをいただき多くの方に応援されていることを実感しています。</p>
<p>引き続きよろしくお願いいたします。</p>
<div id="attachment_2283" class="wp-caption alignleft" style="width: 283px"><img class="size-full wp-image-2283" title="andronavi" src="http://www.bpsinc.jp/blog/wp-content/uploads/2010/08/andronavi.png" alt="絶対いれたい定番アプリ" width="273" height="288" /><p class="wp-caption-text">絶対いれたい定番アプリ</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2282/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CakePHP 1.3でのプレフィックスルーティング(Prefix Routing)が簡単になった</title>
		<link>http://www.bpsinc.jp/blog/archives/2276</link>
		<comments>http://www.bpsinc.jp/blog/archives/2276#comments</comments>
		<pubDate>Tue, 24 Aug 2010 11:00:44 +0000</pubDate>
		<dc:creator>shibachan</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[芝原]]></category>
		<category><![CDATA[CakePHP1.3]]></category>
		<category><![CDATA[Prefix]]></category>
		<category><![CDATA[Routing]]></category>
		<category><![CDATA[プレフィックス]]></category>
		<category><![CDATA[ルーティング]]></category>
		<category><![CDATA[変更点]]></category>
		<category><![CDATA[移行]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2276</guid>
		<description><![CDATA[CakePHPのPrefixRoutingは
例えばadmin_editという関数に対して、通常
/:controller/admin_edit
となるURLを
/admin/:controller/edit
とすること [...]]]></description>
			<content:encoded><![CDATA[<p>CakePHPのPrefixRoutingは<br />
例えばadmin_editという関数に対して、通常<br />
/:controller/admin_edit<br />
となるURLを<br />
/admin/:controller/edit<br />
とすることができるもの。</p>
<p>管理画面やWebAPIのために特別なURLを用意することができる。</p>
<p>このPrefixRoutingだが、設定の方法がCakePHP1.3より簡単なものに変更された。</p>
<p>そのやり方とは/app/config/core.phpで</p>
<pre class="brush:php">
Configure::write('Routing.prefixes', array('admin', 'api'));
</pre>
<p>とするだけ。<br />
# サンプルとしてadminとapiというプレフィックスを設定</p>
<p>ね、かんたんでしょ。</p>
<p>CakePHP1.2の時は複数のプレフィックス設定するのはRoutesをいちいち書いて結構めんどくさかったなー</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2276/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter公式ツイートボタンをWordPressに設置するプラグイン</title>
		<link>http://www.bpsinc.jp/blog/archives/2265</link>
		<comments>http://www.bpsinc.jp/blog/archives/2265#comments</comments>
		<pubDate>Fri, 13 Aug 2010 02:36:03 +0000</pubDate>
		<dc:creator>baba</dc:creator>
				<category><![CDATA[馬場]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[プラグイン]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2265</guid>
		<description><![CDATA[Twitter公式のTweet Buttonが公開されたので、WordPressに設置するプラグインを作ってみました。
といっても、設定画面もないしデザインも作っていない、ただ機械的にボタンを入れるだけのものですが・・・ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bpsinc.jp/blog/archives/2255">Twitter公式のTweet Buttonが公開された</a>ので、WordPressに設置するプラグインを作ってみました。</p>
<p>といっても、設定画面もないしデザインも作っていない、ただ機械的にボタンを入れるだけのものですが・・・</p>
<p><a href='http://www.bpsinc.jp/blog/wp-content/uploads/2010/08/bps-tweet-button.txt'>bps-tweet-button</a></p>
<p>【使い方】<br />
1. ダウンロードして拡張子を「.php」に変更する<br />
2. wordpress/wp-content/plugins フォルダに入れる<br />
3. 管理画面から有効化する</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2265/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitterの公式ツイートボタンをブログに入れよう</title>
		<link>http://www.bpsinc.jp/blog/archives/2255</link>
		<comments>http://www.bpsinc.jp/blog/archives/2255#comments</comments>
		<pubDate>Fri, 13 Aug 2010 01:18:16 +0000</pubDate>
		<dc:creator>baba</dc:creator>
				<category><![CDATA[馬場]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2255</guid>
		<description><![CDATA[TweetmemeやTopsyと競合するツイートボタンが、Twitter公式で公開されました。
特長は、
・Tweetmemeなどと同じく、ボタンを押すとツイートできる
・ツイート数の表示は、上・右・無し　の3種類から選 [...]]]></description>
			<content:encoded><![CDATA[<p>TweetmemeやTopsyと競合する<a href="http://twitter.com/goodies/tweetbutton">ツイートボタン</a>が、Twitter公式で公開されました。</p>
<p>特長は、</p>
<p>・Tweetmemeなどと同じく、ボタンを押すとツイートできる<br />
・ツイート数の表示は、上・右・無し　の3種類から選べる<br />
・ツイート後、指定ユーザをフォローするようにおすすめする</p>
<p>といったところですね。</p>
<p>試しに貼ってみました。<a href="http://www.bpsinc.jp/plog">社長</a>用です。</p>
<p><a href="http://twitter.com/share" class="twitter-share-button" data-count="vertical" data-via="piichan1031" data-lang="ja">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></p>
<p><a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="piichan1031" data-lang="ja">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></p>
<div id="attachment_2257" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.bpsinc.jp/blog/wp-content/uploads/2010/08/2.png"><img src="http://www.bpsinc.jp/blog/wp-content/uploads/2010/08/2-300x138.png" alt="ボタンを押すとツイート画面へ" title="2" width="300" height="138" class="size-medium wp-image-2257" /></a><p class="wp-caption-text">ボタンを押すとツイート画面へ</p></div><br />
<div id="attachment_2258" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.bpsinc.jp/blog/wp-content/uploads/2010/08/3.png"><img src="http://www.bpsinc.jp/blog/wp-content/uploads/2010/08/3-300x169.png" alt="ツイート後、piichan1031をフォローしていない人は、フォローするように言われます" title="3" width="300" height="169" class="size-medium wp-image-2258" /></a><p class="wp-caption-text">ツイート後、piichan1031をフォローしていない人は、フォローするように言われます</p></div>
<p>公式らしく、機能はシンプルですが、デザインや動作速度は良い感じですね！</p>
<h3>WordPressに入れる方法</h3>
<p>テーマファイルを編集する場合、single.phpにはそのまま出力されたものを貼り付ければOKです。</p>
<pre class="brush:html">
&#60;a href="http://twitter.com/share" class="twitter-share-button"
data-count="horizontal" data-via="piichan1031" data-lang="ja"&#62;Tweet&#60;/a&#62;
&#60;script type="text/javascript" src="http://platform.twitter.com/widgets.js"&#62;&#60;/script&#62;
</pre>
<p>index.phpにも付けたい場合は、一覧ページではなく記事ページをツイートできるようにするため、以下のようにpermalinkを設定します。</p>
<pre class="brush:html">
&#60;a href="http://twitter.com/share" class="twitter-share-button"
data-count="horizontal" data-via="piichan1031" data-lang="ja"
data-url="&#60;?php echo get_permalink(); ?&#62;"&#62;Tweet&#60;/a&#62;
&#60;script type="text/javascript" src="http://platform.twitter.com/widgets.js"&#62;&#60;/script&#62;
</pre>
<p><a href="http://dev.twitter.com/pages/tweet_button">カスタマイズ方法も公開されています</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2255/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebStationをバージョンアップしました</title>
		<link>http://www.bpsinc.jp/blog/archives/2250</link>
		<comments>http://www.bpsinc.jp/blog/archives/2250#comments</comments>
		<pubDate>Tue, 03 Aug 2010 02:34:22 +0000</pubDate>
		<dc:creator>baba</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[馬場]]></category>
		<category><![CDATA[WebStation]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2250</guid>
		<description><![CDATA[社内にあったWebStationを、バージョンアップしてもらいました。
元々初期バージョンで、AndroidもどきのKatDroidだったため、アップデートのためいったんCamingiに本体を送付していました。
途中何回 [...]]]></description>
			<content:encoded><![CDATA[<p>社内にあった<a href="http://www.camangi.com/jp/product.html">WebStation</a>を、バージョンアップしてもらいました。</p>
<p>元々初期バージョンで、AndroidもどきのKatDroidだったため、アップデートのためいったんCamingiに本体を送付していました。</p>
<p>途中何回か心配になることもありましたが、本日無事戻ってきました！</p>
<div id="attachment_2252" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.bpsinc.jp/blog/wp-content/uploads/2010/08/webstation.jpg"><img src="http://www.bpsinc.jp/blog/wp-content/uploads/2010/08/webstation-300x225.jpg" alt="やっぱり大きいWebStation" title="webstation" width="300" height="225" class="size-medium wp-image-2252" /></a><p class="wp-caption-text">やっぱり大きいWebStation</p></div>
<p>晴れて、Android 1.5に仲間入りです。</p>
<p>やはりこのサイズでメモリ128MBは少ないだろうとか、タッチパネルの感度は相変わらずかなり悪いとか、実用には程遠い感じですが、WiFiが30回に1回しかつながらない問題が直っただけでも御の字です。</p>
<p>そもそもAndroid 1.5でWVGAという無謀な感じなので、動作検証用にはぴったりです。</p>
<p>というより、他の使い道があったら誰か教えて下さい・・・</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2250/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SHARP Androidアプリ開発 テクニカルセッションに参加してきました</title>
		<link>http://www.bpsinc.jp/blog/archives/2247</link>
		<comments>http://www.bpsinc.jp/blog/archives/2247#comments</comments>
		<pubDate>Sun, 01 Aug 2010 01:01:57 +0000</pubDate>
		<dc:creator>baba</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[馬場]]></category>
		<category><![CDATA[Androider]]></category>
		<category><![CDATA[IS01]]></category>
		<category><![CDATA[LYNX]]></category>
		<category><![CDATA[Sharp]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2247</guid>
		<description><![CDATA[7月31日土曜日、秋葉原で開催された、Androidアプリ開発テクニカルセッションに参加してきました！
シャープさん、主催のアンドロイダーさんたちに感謝です。
また例のごとく写真を撮り忘れてしまったのですが、
・SHAR [...]]]></description>
			<content:encoded><![CDATA[<p>7月31日土曜日、秋葉原で開催された、<a href="http://androider.jp/?page_id=13826?ev=sh">Androidアプリ開発テクニカルセッション</a>に参加してきました！</p>
<p>シャープさん、主催のアンドロイダーさんたちに感謝です。</p>
<p>また例のごとく写真を撮り忘れてしまったのですが、</p>
<p>・SHARP端末の特徴<br />
・ヨコ画面、折りたたみ端末ならではの注意点<br />
・IS01とLYNXの違いについて</p>
<p>など、技術的な解説があった後、各人にIS01またはLYNXが配布され、自由にアプリの動作検証を行う、と言った内容でした。</p>
<p>前半のセッションで今まで知らなかった点としては、</p>
<p>・電話帳制限機能を使うと、ContentProviderで取得しようとした際にもnullが返るようになっている<br />
・よく文字のレイアウトが崩れる原因は、モリサワ新ゴフォントの幅だった<br />
・IS01とLYNXで、特にホームスクリーンウィジェットの動作、表示に違いがある<br />
・IS01では、他の端末と違い、端末ID（IMEI）にa-fまでの英字が含まれる</p>
<p>などがあり、短時間でも結構良い情報がもらえました。</p>
<p>後半では、もともとIS01を持っていたので、LYNXをいじって遊び、適当に自作アプリを入れてみました。</p>
<p>LYNXはIS01より格好いいですね！本体も画面も、デザインはこちらのほうが好みです。<br />
ただ、全体的にIS01より動作が遅い、と言うか反応が遅いです。ハードウェアスペックは共通なので、ソフトウェアのチューニングが違うみたいですね。</p>
<p>とりあえず、手元のアプリではLYNXはIS01と同様に動きました。</p>
<p>終わり方が流れ解散みたいな感じだったのが残念でしたが、メーカー開発者の方ともお話しでき、有意義な休日でした。<br />
また参加したいですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2247/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MusicFly v2.2.3リリース XperiaMini対応</title>
		<link>http://www.bpsinc.jp/blog/archives/2243</link>
		<comments>http://www.bpsinc.jp/blog/archives/2243#comments</comments>
		<pubDate>Fri, 30 Jul 2010 09:52:45 +0000</pubDate>
		<dc:creator>shibachan</dc:creator>
				<category><![CDATA[MusicFly]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[プレスリリース]]></category>
		<category><![CDATA[芝原]]></category>
		<category><![CDATA[XperiaMini]]></category>
		<category><![CDATA[アップデート]]></category>
		<category><![CDATA[バグ]]></category>
		<category><![CDATA[低解像度]]></category>
		<category><![CDATA[高解像度]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2243</guid>
		<description><![CDATA[弊社BPSで開発しておりますAndroid端末向け音楽試聴アプリMusicFlyを先ほど１週間ぶりにアップデートしました。
今回のアップデートにより
XperiaMiniに代表される低解像度端末や、反対の高解像度端末など [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bpsinc.jp">弊社BPS</a>で開発しておりますAndroid端末向け音楽試聴アプリ<a href="http://musicfly.jp">MusicFly</a>を先ほど１週間ぶりにアップデートしました。</p>
<p>今回のアップデートにより</p>
<p>XperiaMiniに代表される低解像度端末や、反対の高解像度端末などへの対応を果たし</p>
<p>全スクリーンサイズ対応のアプリケーションとなりました。</p>
<p><a href="http://android.asai24.com/archives/51378321.html">技術者向けの参考情報</a></p>
<p>また、以前より原因が解明できずにいたバグのいくつか解決することができました。</p>
<p>そのうちの一つがAndroid1.5でのみタブを利用した画面で強制終了してしまうクリティカルなバグであり、</p>
<p>今回無事解決しました。<a href="http://www.bpsinc.jp/blog/archives/2224">技術者向けの詳しい話はこちらで。</a></p>
<p>該当端末を利用している方にはご不便おかけしました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2243/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android 1.5でTabHostを使った場合、StackOverflowErrorが発生する</title>
		<link>http://www.bpsinc.jp/blog/archives/2224</link>
		<comments>http://www.bpsinc.jp/blog/archives/2224#comments</comments>
		<pubDate>Fri, 30 Jul 2010 09:10:17 +0000</pubDate>
		<dc:creator>baba</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[馬場]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[エラー]]></category>
		<category><![CDATA[タブ]]></category>
		<category><![CDATA[バグ]]></category>

		<guid isPermaLink="false">http://www.bpsinc.jp/blog/?p=2224</guid>
		<description><![CDATA[Androidで便利な、タブ表示。
これは、TabActivity, TabHost, TabSpecを使って簡単に実現できます。
src/MainActivity.java
package jp.bpsinc.andr [...]]]></description>
			<content:encoded><![CDATA[<p>Androidで便利な、タブ表示。</p>
<div id="attachment_2225" class="wp-caption aligncenter" style="width: 207px"><a href="http://www.bpsinc.jp/blog/wp-content/uploads/2010/07/tab.png"><img class="size-medium wp-image-2225" title="tab" src="http://www.bpsinc.jp/blog/wp-content/uploads/2010/07/tab-197x300.png" alt="タブ表示" width="197" height="300" /></a><p class="wp-caption-text">タブ表示</p></div>
<p>これは、TabActivity, TabHost, TabSpecを使って簡単に実現できます。</p>
<p>src/MainActivity.java</p>
<pre class="brush:java">package jp.bpsinc.android.tabtest;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class MainActivity extends TabActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TabHost tabHost = getTabHost();
    LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true);

    //タブを作る
    TabSpec tab1 = tabHost.newTabSpec("tab1");
    tab1.setIndicator("tab1");
    tab1.setContent(R.id.tab1);

    TabSpec tab2 = tabHost.newTabSpec("tab2");
    tab2.setIndicator("tab2");
    tab2.setContent(R.id.tab2);

    tabHost.addTab(tab1);
    tabHost.addTab(tab2);
  }
}</pre>
<p>res/layout/main.xml</p>
<pre class="brush:xml">&#60;?xml version="1.0" encoding="utf-8"?&#62;
&#60;FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;

  &#60;TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="TAB1" android:id="@+id/tab1" /&#62;
  &#60;TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="TAB2" android:id="@+id/tab2" /&#62;
&#60;/FrameLayout&#62;</pre>
<p>しかし、サンプルでなく複雑なアプリを作ると、<strong>Android 1.5 (SDK Version 3) の時だけ、StackOverflowErrorが発生する</strong>という現象に見舞われることがあります。</p>
<blockquote><p>body : java.lang.StackOverflowError<br />
at android.text.TextUtils#getChars:69<br />
at android.graphics.Canvas#drawText:1278<br />
at android.text.Layout#draw:337<br />
at android.widget.TextView#onDraw:3921<br />
at android.view.View#draw:5838<br />
at android.view.ViewGroup#drawChild:1486<br />
at android.view.ViewGroup#dispatchDraw:1228<br />
at android.view.ViewGroup#drawChild:1484<br />
at android.view.ViewGroup#dispatchDraw:1228<br />
at android.view.ViewGroup#drawChild:1484<br />
at android.view.ViewGroup#dispatchDraw:1228<br />
at android.view.ViewGroup#drawChild:1484<br />
at android.view.ViewGroup#dispatchDraw:1228<br />
at android.widget.AbsListView#dispatchDraw:1319<br />
at android.widget.ListView#dispatchDraw:2820<br />
at android.view.View#draw:5944<br />
&#8230;.</p></blockquote>
<p><a href="http://groups.google.co.jp/group/android-developers/msg/c7472f71aa9e41c5">こちらのGoogleGroupディスカッション</a>でも触れられているようですが、Android 1.5では、タブの中に多重にネストしたコンテンツがあると、StackOverflowErrorが発生します。</p>
<p>手元のエミュレータで試したところ、12回ネストしたところで、エラーになりました。</p>
<pre class="brush:xml">&#60;?xml version="1.0" encoding="utf-8"?&#62;
&#60;FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;

  &#60;TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="TAB1" android:id="@+id/tab1" /&#62;

  &#60;FrameLayout android:id="@+id/tab2" android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
    &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
      &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
        &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
          &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
            &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
              &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
                &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
                  &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
                    &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
                      &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
                        &#60;LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"&#62;
                          &#60;TextView android:text="TAB2" android:layout_width="wrap_content" android:layout_height="wrap_content" /&#62;
                        &#60;/LinearLayout&#62;
                      &#60;/LinearLayout&#62;
                    &#60;/LinearLayout&#62;
                  &#60;/LinearLayout&#62;
                &#60;/LinearLayout&#62;
              &#60;/LinearLayout&#62;
            &#60;/LinearLayout&#62;
          &#60;/LinearLayout&#62;
        &#60;/LinearLayout&#62;
      &#60;/LinearLayout&#62;
    &#60;/LinearLayout&#62;
  &#60;/FrameLayout&#62;
&#60;/FrameLayout&#62;</pre>
<p>XMLをパーツに分けて書いていると、うっかり12回を超えてしまうことがあるので、注意が必要です。<br />
解決策としては、ネスト回数を減らすか、Android 1.5を対象から外すという後ろ向きなものが最適ですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpsinc.jp/blog/archives/2224/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
