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

<channel>
	<title>R-Labs</title>
	<atom:link href="http://blog.r-learning.co.jp/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.r-learning.co.jp</link>
	<description>RubyやRails、Android、iPhone系の話題を中心にr-learningで開発しているサービスや研究中の技術を話していきます</description>
	<lastBuildDate>Mon, 07 Nov 2011 09:31:01 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/feed" />
		<item>
		<title>TitaniumMobile開発Tipsその１ ～JSファイルの分割～</title>
		<link>http://blog.r-learning.co.jp/archives/768</link>
		<comments>http://blog.r-learning.co.jp/archives/768#comments</comments>
		<pubDate>Mon, 07 Nov 2011 09:31:01 +0000</pubDate>
		<dc:creator>m-sano</dc:creator>
				<category><![CDATA[Titanium]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=768</guid>
		<description><![CDATA[こんにちは。モバイル事業部の佐野です。
今回はJSファイルの分割とコンテキストについて説明したいと思います。
TitaniumStudio等で新規にプロジェクトを作成すると、すべてapp.jsにコードが書かれていると思い [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/768&amp;text=TitaniumMobile開発Tipsその１ ～JSファイルの分割～&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<p>こんにちは。モバイル事業部の佐野です。<br />
今回はJSファイルの分割とコンテキストについて説明したいと思います。<br />
TitaniumStudio等で新規にプロジェクトを作成すると、すべてapp.jsにコードが書かれていると思います。<br />
<br />
ここからアプリを作っていく場合に全てをapp.jsに書くのはコードが読みづらいし、<br />
機能別とか画面単位に分けたいと感じると思います。<br />
<br />
解決策としては以下の方法があります。<br />
<strong>①createWindowのurlプロパティに処理ファイルを指定する方法</strong><br />
<strong>②ファイルをincludeする方法</strong><br />
<br />
この2つの方法において以下のような違いがあります。<br />
<strong>①ソース間の変数参照が出来ない(別コンテキストのため、変数スコープが別になっている)</strong><br />
<strong>②ソース間の変数参照出来る(同一コンテキストのため、変数スコープが同一になっている)</strong><br />
<br />
各機能間等で変数参照を行うことが多いので②の方法が推奨されています。<br />
今回は②ファイルをincludeする方法についてソースを見ながら簡単に説明したいと思います。<br />
<br />
今回使用するのは<strong><span style="color: #FF0000;">Titanium.include</span></strong>メソッドになります。<br />
<strong>Titanium.includeメソッド【API Reference】</strong><br />
<a href="http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.include-method.html">http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.include-method.html</a><br />
<br />
パラメタに読み込みたいJSファイルを指定するだけです。<br />
これを以下のソースからincludeメソッドを修正します。<br />
<br />
【app.js】</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//win1を生成し、ラベルを設定する部分を別ソースにしたい</span>
var win1 <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">UI</span>.<span style="color: #006633;">createWindow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    title<span style="color: #339933;">:</span><span style="color: #0000ff;">'Win 1'</span>,
    backgroundColor<span style="color: #339933;">:</span><span style="color: #0000ff;">'#fff'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
var label1 <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">UI</span>.<span style="color: #006633;">createLabel</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
    color<span style="color: #339933;">:</span><span style="color: #0000ff;">'#999'</span>,
    text<span style="color: #339933;">:</span><span style="color: #0000ff;">'I am Window'</span>,
    font<span style="color: #339933;">:</span><span style="color: #009900;">&#123;</span>fontSize<span style="color: #339933;">:</span><span style="color: #cc66cc;">20</span>,fontFamily<span style="color: #339933;">:</span><span style="color: #0000ff;">'Helvetica Neue'</span><span style="color: #009900;">&#125;</span>,
    textAlign<span style="color: #339933;">:</span><span style="color: #0000ff;">'center'</span>,
    width<span style="color: #339933;">:</span><span style="color: #0000ff;">'auto'</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
win1.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>label1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
win1.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>
上記のソースでUI部分を②の方法でファイル分割すると下記の通りになります。<br />
<br />
【app.js】</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//名前空間を定義</span>
var test <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//別ソースを読み込む</span>
Titanium.<span style="color: #006633;">include</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ui.js'</span><span style="color: #009900;">&#41;</span>
<span style="color: #666666; font-style: italic;">//別ソースで定義したWindowオブジェクト生成メソッドを呼び出す</span>
var win1 <span style="color: #339933;">=</span> test.<span style="color: #006633;">ui</span>.<span style="color: #006633;">createWindow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
win1.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>【ui.js】</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #009900;">&#40;</span>function<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">//UI用の名前空間を定義</span>
    test.<span style="color: #006633;">ui</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//Windowオブジェクト生成メソッドを定義</span>
    test.<span style="color: #006633;">ui</span>.<span style="color: #006633;">createWindow</span> <span style="color: #339933;">=</span> function<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//Windowsオブジェクトの生成</span>
        var win <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">UI</span>.<span style="color: #006633;">createWindow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
            title<span style="color: #339933;">:</span><span style="color: #0000ff;">'Win 1'</span>,
            backgroundColor<span style="color: #339933;">:</span><span style="color: #0000ff;">'#fff'</span>
        <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//Labelオブジェクトの生成</span>
        var label <span style="color: #339933;">=</span> Titanium.<span style="color: #006633;">UI</span>.<span style="color: #006633;">createLabel</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
            color<span style="color: #339933;">:</span><span style="color: #0000ff;">'#999'</span>,
            text<span style="color: #339933;">:</span><span style="color: #0000ff;">'I am Window'</span>,
            font<span style="color: #339933;">:</span><span style="color: #009900;">&#123;</span>fontSize<span style="color: #339933;">:</span><span style="color: #cc66cc;">20</span>,fontFamily<span style="color: #339933;">:</span><span style="color: #0000ff;">'Helvetica Neue'</span><span style="color: #009900;">&#125;</span>,
            textAlign<span style="color: #339933;">:</span><span style="color: #0000ff;">'center'</span>,
            width<span style="color: #339933;">:</span><span style="color: #0000ff;">'auto'</span>
        <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//labelをwinに設定</span>
        win.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>label<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">return</span> win<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>
Titanium.includeでは指定したJSファイルをそのまま置換するのと同じです。<br />
上記のように分割することが出来るので、UIだけでなく、ネットワーク処理、DB処理も同様に分割することで<br />
読みやすく、メンテしやすいソースになると思います。</p>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/768&amp;text=TitaniumMobile開発Tipsその１ ～JSファイルの分割～&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F768&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/768/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/768" />
	</item>
		<item>
		<title>マルチOS開発プラットフォーム「Titanium Mobile」のご紹介</title>
		<link>http://blog.r-learning.co.jp/archives/752</link>
		<comments>http://blog.r-learning.co.jp/archives/752#comments</comments>
		<pubDate>Tue, 11 Oct 2011 10:46:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=752</guid>
		<description><![CDATA[こんにちは。モバイル事業部の佐野です。

現在弊社ではマルチOS開発プラットフォーム、「Titanium Mobile」に関連する事業を展開しています。
http://www.r-learning.co.jp/titan [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/752&amp;text=マルチOS開発プラットフォーム「Titanium Mobile」のご紹介&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<p>こんにちは。モバイル事業部の佐野です。<br />
<br/><br />
現在弊社ではマルチOS開発プラットフォーム、「Titanium Mobile」に関連する事業を展開しています。<br />
<a href="http://www.r-learning.co.jp/titaniummobile/">http://www.r-learning.co.jp/titaniummobile/</a><br />
<br/><br />
今回はAndroid開発者視点で見たTitanium Mobile(以下Ti)について簡単に説明したいと思います。<br />
<br/></p>
<h2>・開発環境について</h2>
<p>基本はAppcelerator社から提供されているEclipseベースのIDEであるTitaniumStudioを利用します。<br />
Eclipseベースということもあり、Android開発をやってきている方にとっては扱いやすいと思います。<br />
iPhone、iPad向けのアプリ開発をする場合はMacが必須となります。<br />
<a href="https://my.appcelerator.com/auth/signup/offer/community">https://my.appcelerator.com/auth/signup/offer/community</a><br />
<br/><br />
【画面イメージ】<br />
<img height="300" src="http://blog.r-learning.co.jp/wp-content/upload/2011/10/TitaniumStudio.png" alt="TitaniumStudio画面イメージ" /  width="500"><br />
<br/></p>
<h2>・マルチOS対応のプラットフォームについて</h2>
<p>iPhone、およびiPadについては基本的なUIやデバイス機能はもとよりアニメーション等にも対応されています。<br />
AndroidについてはネイティブUI、デバイス機能についてはある程度対応していますが、<br />
アニメーション等は一部対応しておらず、カメラ機能では、一部機種で例外が発生しアプリが<br />
終了してしまう事があるので注意が必要です。<br />
また、TiはネイティブのAPIを実行できるモジュールを作成して機能を拡張することができるので、<br />
Android向けにリッチなアプリを作るのであればこの方法を利用して開発することが多くなります。<br />
<br/></p>
<h2>・コーティングについて</h2>
<p>基本はWebエンジニアにおなじみのHTML+JavaScript(+CSS)でコーディングしていきます。<br />
自分はTiの開発で初めてJavaScriptを使うことになり四苦八苦していますが、Web技術の基礎があればコーディングについては難しくないと思います。<br />
<br/></p>
<h2>・UIオブジェクトとイベントについて</h2>
<p>基本は各Viewを生成し、そのViewに対してボタンや画像コントローラを配置し、<br />
それらに対してクリック等のイベント処理を追加していく感じです。<br />
このあたりは違和感は無いと思います。<br />
<br/></p>
<h2>・多機種対応について</h2>
<p>iPhone、およびiPadについては問題ありませんが、Androidの多解像度の対応は<br />
各機種ごとにUIのレイアウト調整が必要な場合があり、処理が煩雑になってしまうので、<br />
対応範囲を予め明確にしておかないと後が大変になります。<br />
<br/><br />
次回以降は実際に開発をしていく際のTipsを簡単に紹介していきたいと思います。</p>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/752&amp;text=マルチOS開発プラットフォーム「Titanium Mobile」のご紹介&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F752&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/752/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/752" />
	</item>
		<item>
		<title>Google App Engine ～ TaskQueue</title>
		<link>http://blog.r-learning.co.jp/archives/730</link>
		<comments>http://blog.r-learning.co.jp/archives/730#comments</comments>
		<pubDate>Mon, 04 Jul 2011 15:38:29 +0000</pubDate>
		<dc:creator>佐々木 康幸</dc:creator>
				<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=730</guid>
		<description><![CDATA[こんばんは。システム部の佐々木です。
前回から少し日が空いてしまいましたが、本日はTaskQueueについて書きます。
読んで字の如く、Task(タスク)Queue(キュー)なのでできることはタスクのキューイングです。
 [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/730&amp;text=Google App Engine ～ TaskQueue&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<p>こんばんは。システム部の佐々木です。</p>
<p>前回から少し日が空いてしまいましたが、本日はTaskQueueについて書きます。</p>
<p>読んで字の如く、Task(タスク)Queue(キュー)なのでできることはタスクのキューイングです。<br />
簡単に説明すると非同期処理なのですが、前回説明したCronとは別の非同期処理になります。</p>
<p><strong><span style="color: #800080;">Cron…</span></strong>実行タイミングがスケジューリングされている。<br />
<strong><span style="color: #800080;"> TaskQueue…</span></strong>キューイングはプログラムで行い、実行タイミングはGoogle App Engineが判断します。</p>
<p>Google App Engineでは<span style="color: #ff0000;">Http(s)は30秒でタイムアウトする</span>仕様になっています。<br />
リクエスト時に大量データ登録などが発生してサーバの処理時間が30秒を超えた場合、<br />
Google App Engineはエラーを返します。<br />
極力重いアクセスを避けるのがよいのですが、そういう訳にはいかない場合もあるでしょう。</p>
<p>という訳なので重い処理を行う場合はTaskQueueを使用します。</p>
<p>使い方は至って簡単。</p>
<h2><span style="color: #ff6600;">１．サーブレットを作る</span></h2>
<p>前回のcronの時のようにサーブレットを一つ作ります。<br />
ここではAsyncTaskControllerということにしましょう。(slim-genで自動生成)<br />
Slim3の規約に従って&lt;Slim3RootPackage&gt;.queue.AsyncTaskControllerには&#8221;/queue/asyncTask&#8221;というURLでアクセスすることができます。<br />
通例ですがcronと同様に&#8221;/queue/*&#8221;には管理者以外アクセスできないようにしましょう。</p>
<h2><span style="color: #ff6600;">２．TaskQueueを呼びだす</span></h2>
<p>最もシンプルなTaskQueueの呼び出しは次のようになります。</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">Queue queue <span style="color: #339933;">=</span> QueueFactory.<span style="color: #006633;">getDefaultQueue</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
queue.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>TaskOptions.<span style="color: #006633;">Builder</span>.<span style="color: #006633;">withUrl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/queue/asyncTask&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>こうすることによってGoogle App Engineが/queue/asyncTaskに非同期でリクエストを送信してくれます。</p>
<p>上記は最も簡単な例ですが、GETまたはPOSTでTaskQueueにパラメータを渡すこともできます。</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// GET</span>
queue.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>TaskOptions.<span style="color: #006633;">Builder</span>.<span style="color: #006633;">withUrl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/queue/asynkTask?p1=aaa&amp;amp;p2=bbb&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">method</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Method</span>.<span style="color: #006633;">GET</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// POST</span>
queue.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>TaskOptions.<span style="color: #006633;">Builder</span>.<span style="color: #006633;">withUrl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/queue/asynkTask&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">param</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;p1&quot;</span>, <span style="color: #0000ff;">&quot;aaa&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">param</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;p2&quot;</span>, <span style="color: #0000ff;">&quot;bbb&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">method</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Method</span>.<span style="color: #006633;">POST</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// オブジェクトも渡せる(未検証)</span>
<span style="color: #666666; font-style: italic;">// Serializeインターフェースを実装してるオブジェクトかつPOSTである必要がある</span>
<span style="color: #003399;">List</span> strList <span style="color: #339933;">=</span> <span style="color: #003399;">Arrays</span>.<span style="color: #006633;">asList</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;1&quot;</span>,<span style="color: #0000ff;">&quot;2&quot;</span>,<span style="color: #0000ff;">&quot;3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">ByteArrayOutputStream</span> baos <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">ByteArrayOutputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">ObjectOutputStream</span> oos <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">ObjectOutputStream</span><span style="color: #009900;">&#40;</span>baos<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
oos.<span style="color: #006633;">writeObject</span><span style="color: #009900;">&#40;</span>strList<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// サーブレット側ではバイト配列からオブジェクトをデシリアライズする</span>
queue.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>TaskOptions.<span style="color: #006633;">Builder</span>.<span style="color: #006633;">withUrl</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/queue/asynkTask&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">param</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;p1&quot;</span>, baos.<span style="color: #006633;">toByteArray</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">method</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Method</span>.<span style="color: #006633;">POST</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong><span style="color: #800080;">・デフォルトキュー</span></strong><br />
デフォルトキューはWEB-INF/queue.xmlの存在を必要としません。<br />
queue.xmlが存在しない場合のデフォルトキューは毎秒5件でキューに積まれた処理を実行します。<br />
もしデフォルトキューの設定を変更する場合はqueue.xmlを作成してname要素を&#8221;default&#8221;にします。</p>
<p><strong><span style="color: #800080;">・設定値の詳細</span></strong><br />
queue.xmlで設定できる内容です。<br />
<span style="color: #ff00ff;"> name…</span>キューの名称。QueueFactoryからキューを取得するときのキー名を設定します。<br />
<span style="color: #ff00ff;"> rate…</span>10/sの場合だと1秒間に10回タスクが実行されます。<br />
<span style="color: #ff00ff;"> bucket-size…</span>タスクを溜めておける量です。bucket-sizeを超過したタスクは、bucketに空きが出るまで待ち状態になります。<br />
<span style="color: #ff00ff;"> retry-parameter…</span>タスクが失敗した際のリトライ回数を設定できます。</p>
<p>下記のサイトにてとても親切に和訳されていました。<br />
<a href="http://elekmole.blogspot.com/2011/02/java-task-queue-configuration.html"> http://elekmole.blogspot.com/2011/02/java-task-queue-configuration.html</a></p>
<p><strong><span style="color: #ff6600;">・Google App Engine SDK1.5から追加された機能</span></strong></p>
<p><strong><span style="color: #800080;">プルキュー…</span></strong>今まではGoogleAppEngineがキューの制御(タスクのレート制御)を行っていましたが、<br />
プログラムで任意にキューの実行を制御できるようになりました。<br />
<a href="http://code.google.com/intl/en/appengine/docs/java/taskqueue/overview-pull.html"> http://code.google.com/intl/en/appengine/docs/java/taskqueue/overview-pull.html</a><br />
<span style="color: #800080;"><strong> REST-API…</strong></span>TaskQueueにRESTでアクセスできるようになりました。<br />
<a href="http://code.google.com/intl/en/appengine/docs/java/taskqueue/rest.html#method_taskqueue_tasks_list"> http://code.google.com/intl/en/appengine/docs/java/taskqueue/rest.html#method_taskqueue_tasks_list</a><br />
<strong><span style="color: #800080;"> その他…</span></strong>Cronも含めたバックグランド処理は上限時間が24hになったそうです。</p>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/730&amp;text=Google App Engine ～ TaskQueue&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F730&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/730/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/730" />
	</item>
		<item>
		<title>Androidタブレット比較その２</title>
		<link>http://blog.r-learning.co.jp/archives/631</link>
		<comments>http://blog.r-learning.co.jp/archives/631#comments</comments>
		<pubDate>Mon, 04 Jul 2011 12:10:48 +0000</pubDate>
		<dc:creator>f-okutsu</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=631</guid>
		<description><![CDATA[こんにちは。モバイル事業部の門別です。
androidタブレット比較の第２回目です。
今回はHDMI、ストレージの転送速度等の比較を行っていきたいと思います。

・HDMI接続
OptimusPad、XOOM共にHDMI [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/631&amp;text=Androidタブレット比較その２&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<p>こんにちは。モバイル事業部の門別です。<br />
androidタブレット比較の第２回目です。<br />
今回はHDMI、ストレージの転送速度等の比較を行っていきたいと思います。<br />
<br />
・HDMI接続<br />
OptimusPad、XOOM共にHDMI接続に対応していますがケーブルの規格が違います。<br />
OptimusPadはtypeC、XOOMはtypeDとなっています。<br />
<a href="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0075.jpg"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0075-300x224.jpg" alt="" title="IMG_0075" width="300" height="224" class="alignnone size-medium wp-image-698" /></a><span>左がtypeC、右がtypeD</span><br />
<br />
HDMI接続用に24インチのモニタを使用しています、720pなので1280*720の解像度で表示しています。<br />
<a href="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0073.jpg"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0073-300x224.jpg" alt="" title="IMG_0073" width="300" height="224" class="alignnone size-medium wp-image-702" /></a><span>XOOMでHDMI接続</span><br />
<a href="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0076.jpg"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0076-300x224.jpg" alt="" title="IMG_0076" width="300" height="224" class="alignnone size-medium wp-image-703" /></a><span>OptimusPadでHDMI接続</span><br />
若干横表示が切れています、調整次第で直るとは思いますが設定は初期設定としています。<br />
<br />
ちなみに横に傾けても双方とも表示は変わりません。<br />
<a href="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0078.jpg"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0078-300x224.jpg" alt="" title="IMG_0078" width="300" height="224" class="alignnone size-medium wp-image-706" /></a><span>OptimusPadを横にしてみました</span><br />
ケーブルが若干ジャマですがプレゼン等にも使えそうです。<br />
<br />
・サウンド<br />
OptimusPadはスピーカが横に有るため聞こえやすいです、XOOMはスピーカが後ろに有るため、膝などに置きながらだと音が小さくなってしまいます。<br />
HDMI接続で双方ともモニタ側からちゃんと音も出ます。<br />
会社の中のテストなので大音量でのテストは残念ながらできません。<br />
<br />
・ストレージの転送速度<br />
Overall perfomance Markというアプリで計測してみました<br />
OptimusPadがリード 25.18MB/s　ライト 6.105MB/s、XOOMがリード 27.089MB/s　ライト 5.438MB/s<br />
リード、ライト共に若干の差が出ていますが誤差の範囲です。<br />
内部ではUSB2.0接続のはずなので妥当な数字なのかなと思います。<br />
<br />
・カメラ機能(シャッターボタンの反応速度等)<br />
OptimusPadの特徴に3Dカメラが有ります、写真で説明するのはちょっとつらいので割愛します。<br />
カメラ機能としては差は感じられません、シャッター音はXOOMの方が小さく聞こえます。<br />
<br />
・通信<br />
OptimusPadはドコモ端末として購入するので単体での3G通信が可能です。<br />
XOOMはauの店舗やオンラインショップで端末のみの購入が可能ですが通信機器は別途用意する必要があります。<br />
<br />
２回に渡って比較をしてきましたが性能差は感じられなかったので画面の大きさと通信機能が付いているかの差になると思います。<br />
モバイル用途としては単体で通信できるOptimusPad、WIFIの環境が整っていて家の中での利用が多い場合はXOOMがおすすめです。</p>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/631&amp;text=Androidタブレット比較その２&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F631&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/631/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/631" />
	</item>
		<item>
		<title>androidタブレット比較</title>
		<link>http://blog.r-learning.co.jp/archives/626</link>
		<comments>http://blog.r-learning.co.jp/archives/626#comments</comments>
		<pubDate>Sun, 03 Jul 2011 05:28:59 +0000</pubDate>
		<dc:creator>f-okutsu</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=626</guid>
		<description><![CDATA[こんにちは。モバイル事業部の門別です。
本日はandroid3.0搭載のタブレットであるドコモのOptimusPadとauのXOOMの２機種を
実際に使用してみて使用感等を２回に渡って比較していきたいと思います(写真はi [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/626&amp;text=androidタブレット比較&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<p>こんにちは。モバイル事業部の門別です。<br />
本日はandroid3.0搭載のタブレットであるドコモのOptimusPadとauのXOOMの２機種を<br />
実際に使用してみて使用感等を２回に渡って比較していきたいと思います(写真はiPhone4で撮影)。<br />
<br />
・外観<br />
外観ですが、まず大きさが違いますOptimusPadは8.9インチに対してXOOMは10.1インチとXOOMの方が一回り大きくなっています。<br />
<a href="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0060.jpg"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0060-300x224.jpg" title="IMG_0060" width="300" height="224" class="alignnone size-medium wp-image-632" /></a><span>一番上からOptimusPad、XOOM、MacBook Pro15インチ</span><br />
<br />
・重さ<br />
OptimusPadが620g、XOOMが730gと110gXOOMの方が重いです、<br />
110gの重量差は、手に持って操作する時間が長いと実感できます。<br />
私は手持ちで寝転がって映画を見たりしますが、そんな時は特に感じます。<br />
手に持ったときの質感はOptimusPadはプラスチックマットな感じで手にフィットし、XOOMの方はアルミで少しつるつるします、歩きながらだとちょっと落としそうです。<br />
重心については両方ともバランスが良く、上下左右どのように持っても違和感はありません。<br />
<br />
・画面<br />
OptimusPad、XOOMともにグレア加工の画面で映り込みは激しいです(モバイル端末はほとんどそうだとは思いますが)、気になる方は保護シートをつけた方が良いと思います。<br />
<a href="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0068.jpg"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_0068-300x224.jpg" title="IMG_0068" width="300" height="224" class="alignnone size-medium wp-image-633" /></a><span>左がXOOM、右がOptimusPad</span><br />
<br />
・起動時間<br />
最後に電源ONからロック画面までの速さを計測してみました、OptimusPadが30秒、XOOMが42秒となっています。<br />
XOOMが結構時間かかってますね、アプリを結構入れていたのでその差かな？<br />
ちなみに電源ボタンはOptimusPadが横側、XOOMが後ろに付いています。<br />
<a href="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_00712.jpg"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_00712-300x224.jpg" alt="" title="IMG_0071" width="300" height="224" class="alignnone size-medium wp-image-692" /></a><span>XOOMの後ろ側丸い凹みが電源ボタン</span><br />
<a href="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_00721.jpg"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/07/IMG_00721-300x224.jpg" alt="" title="IMG_0072" width="300" height="224" class="alignnone size-medium wp-image-693" /></a><span>OptimusPad横側の細長いボタンが電源ボタン</span><br />
<br />
今回の比較では大きさ、重さと起動時間に差が出ましたが気になるのはやはり重さでしょうか。<br />
画面が大きく見やすいXOOM、小さくて軽いOptimusPadと好みが分かれると思います。<br />
<br />
後半はHDMI出力の使用感覚、音の聞こえ方等を書いていきます。</p>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/626&amp;text=androidタブレット比較&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F626&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/626/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/626" />
	</item>
		<item>
		<title>[Piece of RoR]DRYなコードを書くために・・・</title>
		<link>http://blog.r-learning.co.jp/archives/615</link>
		<comments>http://blog.r-learning.co.jp/archives/615#comments</comments>
		<pubDate>Sat, 18 Jun 2011 07:14:42 +0000</pubDate>
		<dc:creator>t-tokuda</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=615</guid>
		<description><![CDATA[こんにちは！システム部の徳田です。
前回はDRYなコードを書くために、sendメソッドの紹介を・・・といったのですが、ちょっとその前にもっと基本的なメソッドの紹介をさせていただきます。
inject 
これは、rubyの [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/615&amp;text=[Piece of RoR]DRYなコードを書くために・・・&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<p>こんにちは！システム部の徳田です。</p>
<p>前回はDRYなコードを書くために、sendメソッドの紹介を・・・といったのですが、ちょっとその前にもっと基本的なメソッドの紹介をさせていただきます。</p>
<h2><span style="color: #3366ff;"><strong>inject </strong></span></h2>
<p>これは、rubyの基本的なメソッドです。</p>
<p>１～５の合計を求めるコードを書くとしたら、</p>
<p>eachを用いることにより下記のように書けます。</p>
<pre>result = 0
(1..5).each {|v| result += v }
p result</pre>
<p>これでも十分DRYだと思っていたのですが、injectメソッドを用いることによりさらにDRYに書けます。</p>
<pre>p (1..5).inject(0) {|result, item| result + item }</pre>
<p>３行が１行になりましたね。すごく便利なメソッドです。</p>
<p>ちなみに、～.inject(0)の0は、result = 0と同じことを示しています。</p>
<p>0で初期化をするという意味です。</p>
<p>また上記のinjectメソッドはRubyのメソッドですが、<span style="color: #ff6600;"><strong>Railsのsumメソッド</strong></span>を使用することもできます。</p>
<pre>p (1..5).sum</pre>
<p>すごいすっきりしますね～。用途によっては使い得ない場合もありますが、知っておいて損はないメソッドですね。</p>
<p>ここで、RubyとRailsでそれぞれメソッドを紹介させていただきましたが、先日上司にごっちゃにならないように！とアドバイスを頂きました。</p>
<p>便利なメソッドはどんどん覚えていったほうがいいのですが、使い方と同時にRailsのメソッドなのか、Rubyのメソッドなのか。。きちんと理解して使用することが大切のようです。</p>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/615&amp;text=[Piece of RoR]DRYなコードを書くために・・・&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F615&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/615/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/615" />
	</item>
		<item>
		<title>ガラケーFlashコンテンツをAndroidへ載せ替える『ガラっと！』リリース！！</title>
		<link>http://blog.r-learning.co.jp/archives/598</link>
		<comments>http://blog.r-learning.co.jp/archives/598#comments</comments>
		<pubDate>Mon, 13 Jun 2011 09:43:23 +0000</pubDate>
		<dc:creator>f-okutsu</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=598</guid>
		<description><![CDATA[
弊社Androidデベロッパーチームで『ガラっと！』というサービスをはじめました。
Android市場が盛り上げるなか、ガラケー（フィーチャーフォン）の
『FlashコンテンツをAndroid端末に載せ替えたい！』
と [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/598&amp;text=ガラケーFlashコンテンツをAndroidへ載せ替える『ガラっと！』リリース！！&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">
<div id="_mcePaste">弊社Androidデベロッパーチームで『ガラっと！』というサービスをはじめました。</div>
<div id="_mcePaste">Android市場が盛り上げるなか、ガラケー（フィーチャーフォン）の</div>
<div>『FlashコンテンツをAndroid端末に載せ替えたい！』</div>
<div>というお話しを多く伺います。</div>
<div id="_mcePaste">そんなニーズにお答えするため、素早く手間がかからず、低コストで</div>
<div id="_mcePaste">載せ替えサービスを開発いたしました。</div>
<div>＜通常の移植＞</div>
<div id="_mcePaste">■発生作業</div>
<div id="_mcePaste">・ActionScript1.0/2.0の場合3.0に書き直しが必要</div>
<div id="_mcePaste">・ソフトウェアの軽量化</div>
<div id="_mcePaste">・スマートフォン固有操作の対応</div>
<div id="_mcePaste">・ガラケーに固有キーがある場合、全ての修正が必要</div>
<div id="_mcePaste">・ユーザー端末に「Abode AIR」のインストールが必要</div>
<div id="_mcePaste">■発生コスト</div>
<div id="_mcePaste">1本／3,000円～200,000円</div>
<div id="_mcePaste">■作業期間</div>
<div id="_mcePaste">1本／1日～1週間程度</div>
<div>★＜ガラっとをご利用した場合＞★</div>
<div id="_mcePaste">■発生作業</div>
<div id="_mcePaste">・Flashコンテンツのご用意（送付）</div>
<div id="_mcePaste">・ガラっと！載せ替え</div>
<div id="_mcePaste">■発生コスト</div>
<div id="_mcePaste">1本／8,000円～（ボリュームディスカウントあり）</div>
<div id="_mcePaste">■作業期間</div>
<div id="_mcePaste">1本／最短1時間</div>
<div id="_mcePaste">価格、期間共に大幅なダウンを可能にしました。</div>
<div id="_mcePaste">更にお客様の手間が省けるよう開発中なので随時ご報告をさせて頂きます。</div>
<div id="_mcePaste">ご興味ある方はお気軽にご連絡ください。</div>
<div>★<a href="http://www.r-learning.co.jp/android_garatto/">詳細はコチラ</a>★</div>
</div>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/598&amp;text=ガラケーFlashコンテンツをAndroidへ載せ替える『ガラっと！』リリース！！&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F598&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/598/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/598" />
	</item>
		<item>
		<title>Google App Engine ～ Cronでメール配信</title>
		<link>http://blog.r-learning.co.jp/archives/572</link>
		<comments>http://blog.r-learning.co.jp/archives/572#comments</comments>
		<pubDate>Sat, 04 Jun 2011 17:19:45 +0000</pubDate>
		<dc:creator>佐々木 康幸</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Slim3]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=572</guid>
		<description><![CDATA[ご無沙汰してましたm(_ _)m
先月１児のパパになったシステム部の佐々木です。
本日はGoogle App EngineのCronサービスとメール配信についてつらつらと書いていきたいと思います。
Unix/Linuxを [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/572&amp;text=Google App Engine ～ Cronでメール配信&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<p>ご無沙汰してましたm(_ _)m</p>
<p>先月１児のパパになったシステム部の佐々木です。</p>
<p>本日はGoogle App EngineのCronサービスとメール配信についてつらつらと書いていきたいと思います。</p>
<p>Unix/Linuxをご存じの方には説明不要かと思われますが、そうです。あのCronです。</p>
<p>データベースの定期監視を行う場合など、非クラウド環境のJavaアプリケーションでは非同期スレッドを生成してsleepしながらデータベースを監視するというのが定石だったかと思いますが、GAEではそもそもスレッドの生成ができません。</p>
<p>これの代わりにGoogle App EngineではCronサービスを使用します。</p>
<p>それではCronサービスを使用して、定期的にメールを送信する方法を説明していきます。</p>
<h2><span style="color: #ff6600;">１．ジョブの作成</span></h2>
<p>まずは定時実行されるジョブを作ります。とはいっても作るのは単なるサーブレットです。<br />
Google App EngineのCronサービスはURLに対してHttpGETリクエストを放ることでジョブの実行を行っているので「ジョブ＝サーブレット」ということになります。</p>
<p>Pureサーブレットでもよいのですが、筆者がSlim3を使用しているので、build.xmlの&#8221;gen-controller-without-view&#8221;からコントローラを生成します。<br />
ここではURL&#8221;/cron/cronTest&#8221;としてCronTestController.javaを生成しました。</p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; white-space: pre;">package com.sample.controller.cron;</span></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Date</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Enumeration</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.logging.Logger</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.slim3.controller.Controller</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.slim3.controller.Navigation</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.appengine.api.mail.MailService</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.appengine.api.mail.MailServiceFactory</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.google.appengine.api.mail.MailService.Message</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CronTestController <span style="color: #000000; font-weight: bold;">extends</span> Controller <span style="color: #009900;">&#123;</span>
&nbsp;
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> Navigation run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// MailService</span>
        MailService service <span style="color: #339933;">=</span> MailServiceFactory.<span style="color: #006633;">getMailService</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// Message</span>
        Message message <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Message<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// 送信者は必ずアプリケーション管理者</span>
        message.<span style="color: #006633;">setSender</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;rl.ysasaki@gmail.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// to</span>
        message.<span style="color: #006633;">setTo</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;y-sasaki@r-learning.co.jp&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// タイトル</span>
        message.<span style="color: #006633;">setSubject</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Cronテスト&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// 本文</span>
        message.<span style="color: #006633;">setTextBody</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;メール送信テスト:&quot;</span> <span style="color: #339933;">+</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// 送信</span>
        service.<span style="color: #006633;">send</span><span style="color: #009900;">&#40;</span>message<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>処理中では低レベルのメールAPIを使用してメール送信を行っています。<br />
ネット上で公開されているサンプルはjavax.mailを使用したサンプルが多いですが、低レベルAPIの方が簡単なのでこっちで書いてます。<br />
<a href="http://code.google.com/intl/ja/appengine/docs/java/javadoc/com/google/appengine/api/mail/package-summary.html" target="_blank">http://code.google.com/intl/ja/appengine/docs/java/javadoc/com/google/appengine/api/mail/package-summary.html</a></p>
<h2><span style="color: #ff6600;">２．ジョブのテスト</span></h2>
<p>まずは作ったジョブが動くかどうかですね。メール送信はローカルでは確認できないのでGoogle App Engineにアプリケーションをデプロイします。<br />
デプロイ後、ブラウザからhttp://アプリケーションホスト/cron/cronTestにアクセスし、メールが送信されればテストは完了・・・・・<br />
とはいかないのです。<br />
このままでは一般ユーザがURLにアクセスした場合に、不正なジョブの実行になってしまいます。<br />
これを回避するために、adminユーザ以外のアクセスを禁止する必要があります。<br />
一般ユーザのアクセスを禁止するにはwar/WEB-INF/web.xmlに以下の記述を追加します。</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;security-constraint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;web-resource-collection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/cron/*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/web-resource-collection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;auth-constraint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;role-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>admin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/role-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/auth-constraint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/security-constraint<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>これで管理者以外は&#8221;/cron/*&#8221;のURLにアクセスできなくなりました。</p>
<h2><span style="color: #ff6600;">３．ジョブの登録</span></h2>
<p>ジョブの登録はwar/WEB-INF/cron.xmlに以下の内容を記述し、デプロイしたら完了です。</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cronentries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cron<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/cron/cronTest<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>CronTest And MailService<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;schedule<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>every 1 minutes<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/schedule<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;timezone<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Asia/Tokyo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/timezone<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cron<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cronentries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<ul>
<li>url・・・実行するジョブのURL</li>
<li>schedule・・・ジョブの起動タイミング(例は毎分)</li>
<li>timezone・・・デフォルトはUTCなので日本時間でジョブ実行する場合は&#8221;Asia/Tokyo&#8221;を指定</li>
</ul>
<p>Scheduleの書き方<br />
<a href="http://code.google.com/intl/ja/appengine/docs/java/config/cron.html#The_Schedule_Format" target="_blank">http://code.google.com/intl/ja/appengine/docs/java/config/cron.html#The_Schedule_Format</a></p>
<p>Timezone<br />
<a href="http://en.wikipedia.org/wiki/List_of_zoneinfo_time_zones" target="_blank">http://en.wikipedia.org/wiki/List_of_zoneinfo_time_zones</a></p>
<h2><span style="color: #ff6600;">４．ジョブの解除</span></h2>
<p>cron.xmlの&lt;cron&gt;要素を消してデプロイし直せばジョブは解除されます。<br />
また、Google App Engineの管理コンソールから、登録されているCronの状態(Cron Jobs)を確認することもできます。</p>
<p>次回はTaskQueueについて書きます。</p>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/572&amp;text=Google App Engine ～ Cronでメール配信&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F572&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/572/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/572" />
	</item>
		<item>
		<title>Titanium Certified Application Developerになってきた！</title>
		<link>http://blog.r-learning.co.jp/archives/560</link>
		<comments>http://blog.r-learning.co.jp/archives/560#comments</comments>
		<pubDate>Sun, 29 May 2011 16:09:32 +0000</pubDate>
		<dc:creator>t-suzuki</dc:creator>
				<category><![CDATA[Titanium]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=560</guid>
		<description><![CDATA[最近何かと名前を聞くようになってきたTitaniumという開発環境の資格を取ってきました！

↑その時にもらってきたシャツとUSBメモリ
とってきたのは&#8221;Titanium Certified Applicat [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/560&amp;text=Titanium Certified Application Developerになってきた！&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<p>最近何かと名前を聞くようになってきたTitaniumという開発環境の資格を取ってきました！</p>
<p><a href="http://blog.r-learning.co.jp/wp-content/upload/2011/05/IMG_0285.jpg"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/05/IMG_0285-225x300.jpg" title="IMG_0285" width="225" height="300" class="alignnone size-medium wp-image-561" /></a></p>
<p>↑その時にもらってきたシャツとUSBメモリ</p>
<p>とってきたのは&#8221;Titanium Certified Application Developer&#8221;というものなのでこの資格はモバイル(iPhone/Android)限定ですが、Titanium自体は他にもDesktopやWebのアプリケーションがJavascriptで作れたり作れるようになったりして、いいかんじです。</p>
<p>ということでほんの少しだけ、ほかのスマートフォン向けJavascriptフレームワークとTitanium Mobileの利点を紹介したいと思います。</p>
<div style="margin-top: 5em;">
<h2>各環境に合わせた見た目にしてくれる</h2>
<p>同じコードでiPhone向けにはiPhoneっぽく、Android向けにはAndroidっぽくしてくれます。</p>
<p><a href="http://blog.r-learning.co.jp/wp-content/upload/2011/05/titanium.png"><img src="http://blog.r-learning.co.jp/wp-content/upload/2011/05/titanium-300x223.png" title="titanium" width="300" height="223" class="alignnone size-medium wp-image-562" /></a></p>
<p>新規プロジェクトを作成するとはいってるタブでウィンドウを切り替えるコードです。タブが上下違っていたり、タイトルの有無なんかはTitaniumが自動でやってくれます。</p>
<p>スマートフォン向けJavascriptフレームワークでWebアプリを作るときにこれを実現しようとすると、iPhoneかAndoroidかで処理を分岐させ、それぞれの画面を別々に作ってあげないとならないのでめんどくさいです。</p>
</div>
<div style="margin-top: 5em;">
<h2>デバイスにアクセスできる</h2>
<p>SenchaTouchやjQueryMobileと違い、TitaniumMobileで作成したアプリはネイティブアプリになるのでカメラやGPSなど、携帯端末固有の機能を使ったアプリケーションを作ることもできます。Webアプリ用のJavascriptフレームワークとの違いですね。(逆に、比較すると手軽にリリースできないあたりが玉に瑕)</p>
</div>
<p>・・・と、簡単ですがこんな感じです。</p>
<p>他になにか知りたければ<a href="https://twitter.com/#!/appcelerator_ja" target="_blank">@appcelerator_ja</a>とか追いかけるといいと思うよ！</p>
<p>そいじゃ！</p>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/560&amp;text=Titanium Certified Application Developerになってきた！&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F560&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/560/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/560" />
	</item>
		<item>
		<title>[Piece of RoR]はじめまして！</title>
		<link>http://blog.r-learning.co.jp/archives/549</link>
		<comments>http://blog.r-learning.co.jp/archives/549#comments</comments>
		<pubDate>Mon, 23 May 2011 12:08:13 +0000</pubDate>
		<dc:creator>t-tokuda</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.r-learning.co.jp/?p=549</guid>
		<description><![CDATA[はじめまして、こんにちは。
入社２年目のシステム部の徳田と申しますm(_ _  )m今、Ruby on RailsのプロジェクトにTEとして携わらせてもらっています。私自身もRoRを日々勉強中です。自分が学んだ、Ruby [...]
<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/549&amp;text=[Piece of RoR]はじめまして！&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">はじめまして、こんにちは。</div>
<div id="_mcePaste">入社２年目のシステム部の徳田と申しますm(_ _  )m今、Ruby on RailsのプロジェクトにTEとして携わらせてもらっています。私自身もRoRを日々勉強中です。自分が学んだ、RubyやRailsのことをつらつら書かせていただきます。Ruby on Railsの欠片を少しずつ紹介していくという意味で、タイトルをPiece Of RoRっていう名前にします・・・！内容的には入門レベルになってしまいますが、よりレベルの高い記事を書いていけるよう、これから頑張ります。</div>
<div id="_mcePaste"></div>
<div>今日は、Railsの原則の一つであるDRYについて書きます。知っている方も多いと思いますが、DRYとは・・・</div>
<blockquote>
<div><span style="line-height: 20px; font-size: small;"><span style="color: #3366ff;">Don’t Repeat Yourself、つまり「重複を排除する」「同じ作業を繰り返さない」という意味です。</span></span></div>
</blockquote>
<div>私もよくあるのですが・・・同じような処理を繰り返さなくてはいけないとき、プログラミングを覚えたばかりのエンジニアは、ひたすらガシガシとコードを書きがちです＾＾；しかし、共通化・部品化できるような部分はできるだけそうしないと、後からソースを改修したりするときにバグを生んでしまう可能性を高めてしまいます。</div>
<div>いざコードを改修するときに・・・直すところが少ない方が楽ですし、テストも簡単ですみますよね。</div>
<div>そんなコードをDRYにするために、次回の記事では、私が最近覚えたRubyのsendメソッドについてご紹介しますm(_ _  )m</div>
<div></div>
<div></div>
<div></div>

<div style="float: left; padding-right: 5px;" class="twitterbutton"><a href="http://twitter.com/share?url=http://blog.r-learning.co.jp/archives/549&amp;text=[Piece of RoR]はじめまして！&amp;via=&amp;related=wpglamour"><img align="left" src="http://blog.r-learning.co.jp/wp-content/plugins//easy-twitter-button/i/buttons/en/tweetn.png" style="border: none;" alt="" /></a></div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.r-learning.co.jp%2Farchives%2F549&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.r-learning.co.jp/archives/549/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.r-learning.co.jp/archives/549" />
	</item>
	</channel>
</rss>

