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

<channel>
	<title>Churadesign</title>
	<atom:link href="http://www.churadesign.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.churadesign.com</link>
	<description>system &#38; web design</description>
	<pubDate>Sat, 27 Sep 2008 02:00:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>ja</language>
			<item>
		<title>GoogleAppEngineOil 0.1安定板 0.2アップデート</title>
		<link>http://www.churadesign.com/2008/09/27/googleappengineoil%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88/</link>
		<comments>http://www.churadesign.com/2008/09/27/googleappengineoil%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 01:58:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Article (記事)]]></category>

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

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

		<guid isPermaLink="false">http://www.churadesign.com/?p=78</guid>
		<description><![CDATA[ようやくベータが外れ、GoogleAppEngineOil(GAEO)のバージョン0.1の安定板リリースされています。
更に進行中の0.2には次のような機能が追加されています。
1. respond_toサポート
ルーティングルールに r.connect(&#8217;:controller/:action/:id.:format&#8217;)と書くことで、次のようにrespond_toメソッドを利用できます。

self.respond_to(
html=lambda: self.render(&#039;&#38;amp;amp;amp;amp;lt;h1&#38;amp;amp;amp;amp;gt;Hello World&#38;amp;amp;amp;amp;lt;/h1&#38;amp;amp;amp;amp;gt;&#039;),
js=lambda: self.render(script=&#039;alert(&#34;hello, world&#34;)&#039;)
)

http://www.example.com/foo/bar.htmlの場合は&#60;h1&#62;Hello World&#60;/h1&#62;の行をhttp://example.com/foo/bar.jsの場合はjavascriptの行を実行させることができます。
2. XHRリクエスト判別
GAEOはX-Requested-WithをつかってXMLHttpRequestオブジェクトによってリクエストされたか調べます。
self._is_xhrでTRUE/FALSEを判別できます。
3. renderメソッドにscriptタイプ追加
self.render(script=&#8221;alert(&#8217;!'&#8221;)のようにして、text/javascriptデータを送信できます。
4. RESTメソッド
self._request_methodを使用して&#8217;get&#8217;, &#8216;put&#8217;, &#8216;head&#8217;などのリクエストメソッドを判別できます。
Railsにできるだけ近づこうとしているのでしょうか。今後ともGAEO楽しみです。
]]></description>
			<content:encoded><![CDATA[<p>ようやくベータが外れ、GoogleAppEngineOil(GAEO)のバージョン0.1の安定板リリースされています。</p>
<p>更に進行中の0.2には次のような機能が追加されています。</p>
<h3>1. respond_toサポート</h3>
<p>ルーティングルールに r.connect(&#8217;:controller/:action/:id.:format&#8217;)と書くことで、次のようにrespond_toメソッドを利用できます。</p>
<pre class="syntax-highlight:php">
self.respond_to(
html=lambda: self.render(&#039;&amp;amp;amp;amp;amp;lt;h1&amp;amp;amp;amp;amp;gt;Hello World&amp;amp;amp;amp;amp;lt;/h1&amp;amp;amp;amp;amp;gt;&#039;),
js=lambda: self.render(script=&#039;alert(&quot;hello, world&quot;)&#039;)
)
</pre>
<p>http://www.example.com/foo/bar.htmlの場合は&lt;h1&gt;Hello World&lt;/h1&gt;の行をhttp://example.com/foo/bar.jsの場合はjavascriptの行を実行させることができます。</p>
<h3>2. XHRリクエスト判別</h3>
<p>GAEOはX-Requested-WithをつかってXMLHttpRequestオブジェクトによってリクエストされたか調べます。</p>
<p>self._is_xhrでTRUE/FALSEを判別できます。</p>
<h3>3. renderメソッドにscriptタイプ追加</h3>
<p>self.render(script=&#8221;alert(&#8217;!'&#8221;)のようにして、text/javascriptデータを送信できます。</p>
<h3>4. RESTメソッド</h3>
<p>self._request_methodを使用して&#8217;get&#8217;, &#8216;put&#8217;, &#8216;head&#8217;などのリクエストメソッドを判別できます。</p>
<p>Railsにできるだけ近づこうとしているのでしょうか。今後ともGAEO楽しみです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.churadesign.com/2008/09/27/googleappengineoil%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google App Engineで予約管理アプリケーションを作ってみた</title>
		<link>http://www.churadesign.com/2008/09/15/google-app-engine%e3%81%a7%e4%ba%88%e7%b4%84%e7%ae%a1%e7%90%86%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f/</link>
		<comments>http://www.churadesign.com/2008/09/15/google-app-engine%e3%81%a7%e4%ba%88%e7%b4%84%e7%ae%a1%e7%90%86%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 04:54:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Article (記事)]]></category>

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

		<guid isPermaLink="false">http://www.churadesign.com/?p=69</guid>
		<description><![CDATA[GoogleAppEngine(GAE)とGoogleAppEngineOil(GAEO)がだいたいわかったところで、簡単な顧客&#38;予約管理アプリケーションを作ってみました。
RubyonRailsになれていると、ちょっとしたことに詰まったりしてしまいます。RoRとGAEOの対応表なんかがあればよいな。
リレーションモデルではないとされているGAEのデータストレージもGAEOのBaseModel.belongs_to()を使うことで、RoRっぽく簡単にリレーションを利用できました。
最後にjQueryをつかって使いやすいUIにしてみました。
GoogleAppEngineかなり使えます。
]]></description>
			<content:encoded><![CDATA[<p>GoogleAppEngine(GAE)とGoogleAppEngineOil(GAEO)がだいたいわかったところで、簡単な顧客&amp;予約管理アプリケーションを作ってみました。</p>
<p>RubyonRailsになれていると、ちょっとしたことに詰まったりしてしまいます。RoRとGAEOの対応表なんかがあればよいな。<br />
リレーションモデルではないとされているGAEのデータストレージもGAEOの<strong>BaseModel.belongs_to()</strong>を使うことで、RoRっぽく簡単にリレーションを利用できました。</p>
<p>最後にjQueryをつかって使いやすいUIにしてみました。</p>
<p>GoogleAppEngineかなり使えます。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.churadesign.com/2008/09/15/google-app-engine%e3%81%a7%e4%ba%88%e7%b4%84%e7%ae%a1%e7%90%86%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%81%9f/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google App Engine Oil入門1</title>
		<link>http://www.churadesign.com/2008/09/02/googleappengineoil%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab/</link>
		<comments>http://www.churadesign.com/2008/09/02/googleappengineoil%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 07:44:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Article (記事)]]></category>

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

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

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

		<guid isPermaLink="false">http://www.churadesign.com/?p=60</guid>
		<description><![CDATA[GoogleAppEngineを使い始めたらぜひGoogleAppEigineOilを導入してみましょう。
このオイルはGoogleAppEngineをより簡単に利用するためのMVCフレームワークを提供してくれるため、より少ない設定、コーディングでアプリケーションを作成できるようになります。
Google App Engine Oilのサイトにチュートリアル基本編が用意されているので、それに従ってすすめてみます。
Google App Engine Oilインストール
まずはGoogle App Engine Oilのサイトからgaeo-trunk-rxx.zipファイルをダウンロードし、適当なディレクトリに配置します。私は ~/sdk/gaeoに配置しました。
実行権限を付加します。

chmod +x ~/sdk/gaeo/bin/*

環境変数設定
~/.bashrcを開いて次のようにパスを設定します。

export GAEO_HOME=&#039;/home/ericsk/sdk/gaeo&#039;  # put your installation directory here.
export PATH=&#039;${GAEO_HOME}/bin:${PATH}&#039;

ターミナルを開いて変更を反映します。

source ~/.bashrc

gaeo.pyとタイプして、実行してみましょう。次のように表示されたら正常にインストールできています。エラーが発生した場合は、Pythonのバージョンが2.5以上か確認してみてください。

Usage: /home/ericsk/sdk/gaeo/bin/gaeo.py &#38;amp;amp;amp;amp;amp;amp;amp;amp;lt;project name&#38;amp;amp;amp;amp;amp;amp;amp;amp;gt;

ハローワールド
新しいアプリケーションを早速作成してみましょう。ワーキングディレクトリに移動し、gaeo.py helloとタイプします。

&#38;amp;amp;amp;amp;amp;amp;amp;amp;gt;gaeo.py hello

The &#38;amp;amp;amp;amp;amp;amp;amp;amp;quot;hello&#38;amp;amp;amp;amp;amp;amp;amp;amp;quot; project has been created.

これだけで基本的なアプリケーションが準備されています。
自動生成されたファイル
app.yaml, favicon.ico, main.py
app.yamlとmain.pyがApp Engineアプリケーションのメインファイルとなります。app.yamlとmain.pyを編集してアプリケーションの設定を変更することができます。 favicon.icoは〜のファイルです。ブラウザによって最初にfavicon.icoを取得しようとするので、エラーにログが残るのを防ぐために作成されています。
application/
アプリケーションコード(コントローラー、モデル、テンプレート)がこのディレクトリに配置されます。
assets/
app.yaml内で、画像、スタイルシート、Javascriptファイルのような静的なファイルをそれぞれ、assets/img、assets/css、and assets/js
ディレクトリに配置すると設定しています。foo.pngをassets/imgディレクトリに配置したら、http:///img/foo.pngでアクセスすることができます。スタイルシートやJavascriptファイルも同様です。
gaeo/
Google App Engine Oil(GAEO)のコアライブラリです。新しいGAEOがリリースされれば、このディレクトリを新しいものに置き換えるだけでアップデートすることができます。SVNをつかって常に最新版を利用することもできます。
最新のGAEOライブラリはhttp://google-app-engine-oil.googlecode.com/svn/trunk/gaeo にあります。
GoogleAppEngineLuncherでこのhelloアプリケーションを指定して実行します。
http://localhost:8080/ にアクセスし、正しく動作している事が確認できます。
初期画面に表示されているファイルは/application/template/welcome/index.htmlに置かれています。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.churadesign.com/2008/08/31/osx%E3%81%A7googleappengine%E3%82%92%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B/">GoogleAppEngineを使い始めたら</a>ぜひ<a href="http://code.google.com/p/google-app-engine-oil/">GoogleAppEigineOil</a>を導入してみましょう。</p>
<p>このオイルはGoogleAppEngineをより簡単に利用するためのMVCフレームワークを提供してくれるため、より少ない設定、コーディングでアプリケーションを作成できるようになります。</p>
<p>Google App Engine Oilのサイトに<a href="http://code.google.com/docreader/#p=google-app-engine-oil-doc&amp;s=google-app-engine-oil-doc&amp;t=GettingStartedBasics">チュートリアル基本編</a>が用意されているので、それに従ってすすめてみます。</p>
<h2>Google App Engine Oilインストール</h2>
<p>まずは<a href="http://code.google.com/p/google-app-engine-oil/">Google App Engine Oil</a>のサイトから<strong>gaeo-trunk-rxx.zip</strong>ファイルをダウンロードし、適当なディレクトリに配置します。私は <strong>~/sdk/gaeo</strong>に配置しました。</p>
<p>実行権限を付加します。</p>
<pre class="syntax-highlight:php">
chmod +x ~/sdk/gaeo/bin/*
</pre>
<h3>環境変数設定</h3>
<p><strong>~/.bashrc</strong>を開いて次のようにパスを設定します。</p>
<pre class="syntax-highlight:php">
export GAEO_HOME=&#039;/home/ericsk/sdk/gaeo&#039;  # put your installation directory here.
export PATH=&#039;${GAEO_HOME}/bin:${PATH}&#039;
</pre>
<p>ターミナルを開いて変更を反映します。</p>
<pre class="syntax-highlight:php">
source ~/.bashrc
</pre>
<p><strong>gaeo.py</strong>とタイプして、実行してみましょう。次のように表示されたら正常にインストールできています。エラーが発生した場合は、Pythonのバージョンが2.5以上か確認してみてください。</p>
<pre class="syntax-highlight:php">
Usage: /home/ericsk/sdk/gaeo/bin/gaeo.py &amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;project name&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;
</pre>
<h2>ハローワールド</h2>
<p>新しいアプリケーションを早速作成してみましょう。ワーキングディレクトリに移動し、gaeo.py helloとタイプします。</p>
<pre class="syntax-highlight:php">
&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;gaeo.py hello

The &amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;hello&amp;amp;amp;amp;amp;amp;amp;amp;amp;quot; project has been created.
</pre>
<p>これだけで基本的なアプリケーションが準備されています。</p>
<h3>自動生成されたファイル</h3>
<p>app.yaml, favicon.ico, main.py</p>
<p>app.yamlとmain.pyがApp Engineアプリケーションのメインファイルとなります。<strong>app.yaml</strong>と<strong>main.py</strong>を編集してアプリケーションの設定を変更することができます。 favicon.icoは〜のファイルです。ブラウザによって最初にfavicon.icoを取得しようとするので、エラーにログが残るのを防ぐために作成されています。</p>
<p>application/</p>
<p>アプリケーションコード(コントローラー、モデル、テンプレート)がこのディレクトリに配置されます。</p>
<p>assets/</p>
<p>app.yaml内で、画像、スタイルシート、Javascriptファイルのような静的なファイルをそれぞれ、assets/img、assets/css、and assets/js<br />
ディレクトリに配置すると設定しています。foo.pngをassets/imgディレクトリに配置したら、http:///img/foo.pngでアクセスすることができます。スタイルシートやJavascriptファイルも同様です。</p>
<p>gaeo/</p>
<p>Google App Engine Oil(GAEO)のコアライブラリです。新しいGAEOがリリースされれば、このディレクトリを新しいものに置き換えるだけでアップデートすることができます。SVNをつかって常に最新版を利用することもできます。<br />
最新のGAEOライブラリはhttp://google-app-engine-oil.googlecode.com/svn/trunk/gaeo にあります。</p>
<p>GoogleAppEngineLuncherでこのhelloアプリケーションを指定して実行します。</p>
<p>http://localhost:8080/ にアクセスし、正しく動作している事が確認できます。</p>
<p>初期画面に表示されているファイルは<strong>/application/template/welcome/index.html</strong>に置かれています。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.churadesign.com/2008/09/02/googleappengineoil%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OSXでGoogle App Engineをはじめる</title>
		<link>http://www.churadesign.com/2008/08/31/osx%e3%81%a7googleappengine%e3%82%92%e3%81%af%e3%81%98%e3%82%81%e3%82%8b/</link>
		<comments>http://www.churadesign.com/2008/08/31/osx%e3%81%a7googleappengine%e3%82%92%e3%81%af%e3%81%98%e3%82%81%e3%82%8b/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 04:47:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Article (記事)]]></category>

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

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

		<guid isPermaLink="false">http://www.churadesign.com/?p=55</guid>
		<description><![CDATA[GoogleAppEngineとはGoogle社拡張性に飛んだサーバーを利用してアプリケーションを配置することのできるサービスで、非常に簡単にwebアプリケーションを数百万規模のユーザーへ提供することができます。
現在はPythonを使ってアプリケーションを開発することができます。
早速OSXに開発環境を用意してみます。
開発環境
OSX LeopardであればPython2.5が標準でインストールされてます。
ターミナルを立ち上げ

python

と入力。

Python 2.5.1 (r251:54863, Mar  7 2008, 03:19:34)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type &#38;quot;help&#38;quot;, &#38;quot;copyright&#38;quot;, &#38;quot;credits&#38;quot; or &#38;quot;license&#38;quot; for more information.

と表示されればOK。GoogleAppEngineにはPython2.5以上が必要ですので、2.4以下であればpythonのウェブサイトから最新版をダウンロードしてインストールしてください。
GoogleAppEngineのインストール
http://code.google.com/intl/ja/appengine/downloads.html
GoogleAppEngineサイトからOSX版をダウンロードし、dmgを開いてGoogleAppEngineLuncherをApplicationsフォルダに移動します。GUIのランチャーを起動して簡単に、ローカルサーバーの起動、停止、appspotに配置できるようになっています。
本家のチュートリアルがわかりやすいので、これに従って進みましょう。
helloworldディレクトリは ~/appengine/helloworldとしました。
GoogleAppEngineLuncherの＋アイコンをクリックして、作成したディレクトリを指定します。RunボタンとStopボタンでローカルサーバーを起動してアプリケーションをテストすることができます。
ローカルでテストが終われば、Deployボタンを押すだけでアプリケーションをインターネット上に公開することができます。
公開されているAPIの中でしかプログラムを作成できませんが、ユーザー管理、データ管理、画像編集、メール送信など基本的なAPIは用意されており、これほど簡単にGoogleのサーバーインフラを利用できるのはとても魅力的です。
]]></description>
			<content:encoded><![CDATA[<p>GoogleAppEngineとはGoogle社拡張性に飛んだサーバーを利用してアプリケーションを配置することのできるサービスで、非常に簡単にwebアプリケーションを数百万規模のユーザーへ提供することができます。</p>
<p>現在はPythonを使ってアプリケーションを開発することができます。</p>
<p>早速OSXに開発環境を用意してみます。</p>
<h2>開発環境</h2>
<p>OSX LeopardであればPython2.5が標準でインストールされてます。</p>
<p>ターミナルを立ち上げ</p>
<pre class="syntax-highlight:php">
python
</pre>
<p>と入力。</p>
<pre class="syntax-highlight:php">
Python 2.5.1 (r251:54863, Mar  7 2008, 03:19:34)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type &amp;quot;help&amp;quot;, &amp;quot;copyright&amp;quot;, &amp;quot;credits&amp;quot; or &amp;quot;license&amp;quot; for more information.
</pre>
<p>と表示されればOK。GoogleAppEngineにはPython2.5以上が必要ですので、2.4以下であればpythonのウェブサイトから<a href="http://www.python.jp/Zope/download/pythoncore">最新版をダウンロード</a>してインストールしてください。</p>
<h2>GoogleAppEngineのインストール</h2>
<p>http://code.google.com/intl/ja/appengine/downloads.html</p>
<p><a href="http://code.google.com/intl/ja/appengine/downloads.html">GoogleAppEngineサイト</a>からOSX版をダウンロードし、dmgを開いて<strong>GoogleAppEngineLuncher</strong>をApplicationsフォルダに移動します。GUIのランチャーを起動して簡単に、ローカルサーバーの起動、停止、appspotに配置できるようになっています。</p>
<p><a href="http://code.google.com/intl/ja/appengine/downloads.html">本家のチュートリアル</a>がわかりやすいので、これに従って進みましょう。</p>
<p>helloworldディレクトリは ~/appengine/helloworldとしました。</p>
<p>GoogleAppEngineLuncherの＋アイコンをクリックして、作成したディレクトリを指定します。RunボタンとStopボタンでローカルサーバーを起動してアプリケーションをテストすることができます。</p>
<p>ローカルでテストが終われば、Deployボタンを押すだけでアプリケーションをインターネット上に公開することができます。</p>
<p>公開されているAPIの中でしかプログラムを作成できませんが、ユーザー管理、データ管理、画像編集、メール送信など基本的なAPIは用意されており、これほど簡単にGoogleのサーバーインフラを利用できるのはとても魅力的です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.churadesign.com/2008/08/31/osx%e3%81%a7googleappengine%e3%82%92%e3%81%af%e3%81%98%e3%82%81%e3%82%8b/feed/</wfw:commentRss>
		</item>
		<item>
		<title>あなたのコードに使うべき21のRubyトリック</title>
		<link>http://www.churadesign.com/2008/06/03/%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e3%82%b3%e3%83%bc%e3%83%89%e3%81%ab%e4%bd%bf%e3%81%86%e3%81%b9%e3%81%8d21%e3%81%aeruby%e3%83%88%e3%83%aa%e3%83%83%e3%82%af/</link>
		<comments>http://www.churadesign.com/2008/06/03/%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e3%82%b3%e3%83%bc%e3%83%89%e3%81%ab%e4%bd%bf%e3%81%86%e3%81%b9%e3%81%8d21%e3%81%aeruby%e3%83%88%e3%83%aa%e3%83%83%e3%82%af/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 23:17:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Article (記事)]]></category>

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

		<guid isPermaLink="false">http://www.churadesign.com/2008/06/03/%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e3%82%b3%e3%83%bc%e3%83%89%e3%81%ab%e4%bd%bf%e3%81%86%e3%81%b9%e3%81%8d21%e3%81%aeruby%e3%83%88%e3%83%aa%e3%83%83%e3%82%af/</guid>
		<description><![CDATA[rubyinside.comに 21 Ruby Tricks You Should Be Using In Your Own Codeという記事が掲載されていました。
よりRubyコードをシンプルに読みやすくするために覚えておいて損はないですね。
勉強になりましたので抄訳しました。
1 - 正規表現にマッチした文字を抜き出す簡単な方法
文字列から正規表現にマッチした文字を抜き出す場合、通常はmatchもソッドを使いますが、次のようなショートカット方法もあります。

email = "Fred Bloggs &#60;fred@bloggs.com&#62;"email.match(/&#60;(.*?)&#62;/)[1]            # =&#62; “fred@bloggs.com”email[/&#60;(.*?)&#62;/, 1]                  # =&#62; “fred@bloggs.com”email.match(/(x)/)[1]   [...]]]></description>
			<content:encoded><![CDATA[<p>rubyinside.comに <a href="http://www.rubyinside.com/21-ruby-tricks-902.html">21 Ruby Tricks You Should Be Using In Your Own Code</a>という記事が掲載されていました。</p>
<p>よりRubyコードをシンプルに読みやすくするために覚えておいて損はないですね。</p>
<p>勉強になりましたので抄訳しました。</p>
<h2>1 - 正規表現にマッチした文字を抜き出す簡単な方法</h2>
<p>文字列から正規表現にマッチした文字を抜き出す場合、通常はmatchもソッドを使いますが、次のようなショートカット方法もあります。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">email</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">Fred Bloggs &lt;fred@bloggs.com&gt;</span><span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="ident" style="color: #000044;">email</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">match</span><span class="punct" style="color: #444477; font-weight: bold;">(/</span><span class="regex" style="color: #BB6666; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFEEFF; background-position: initial initial;">&lt;(.*?)&gt;</span><span class="punct" style="color: #444477; font-weight: bold;">/)[</span><span class="number" style="color: #FF9999;">1</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>            <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “fred@bloggs.com”</span><span class="ident" style="color: #000044;">email</span><span class="punct" style="color: #444477; font-weight: bold;">[/</span><span class="regex" style="color: #BB6666; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFEEFF; background-position: initial initial;">&lt;(.*?)&gt;</span><span class="punct" style="color: #444477; font-weight: bold;">/,</span> <span class="number" style="color: #FF9999;">1</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>                  <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “fred@bloggs.com”</span><span class="ident" style="color: #000044;">email</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">match</span><span class="punct" style="color: #444477; font-weight: bold;">(/</span><span class="regex" style="color: #BB6666; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFEEFF; background-position: initial initial;">(x)</span><span class="punct" style="color: #444477; font-weight: bold;">/)[</span><span class="number" style="color: #FF9999;">1</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>                <span class="comment" style="color: #000055; font-style: italic;"># =&gt; NoMethodError [:(]</span><span class="ident" style="color: #000044;">email</span><span class="punct" style="color: #444477; font-weight: bold;">[/</span><span class="regex" style="color: #BB6666; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFEEFF; background-position: initial initial;">(x)</span><span class="punct" style="color: #444477; font-weight: bold;">/,</span> <span class="number" style="color: #FF9999;">1</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>                      <span class="comment" style="color: #000055; font-style: italic;"># =&gt; nil</span><span class="ident" style="color: #000044;">email</span><span class="punct" style="color: #444477; font-weight: bold;">[/</span><span class="regex" style="color: #BB6666; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFEEFF; background-position: initial initial;">([bcd]).*?([fgh])</span><span class="punct" style="color: #444477; font-weight: bold;">/,</span> <span class="number" style="color: #FF9999;">2</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>        <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “g”</span></span>
</pre>
<p></p>
<h2>2 - Array#joinのショートカット</h2>
<p>配列に数値を渡し、要素を複製するArray#*メソッドはよく知られていますが、Array#*に文字を渡すことで、文字列を結合させる方法はあまり知られていないようです。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="punct" style="color: #444477; font-weight: bold;">%w{</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">this is a test</span><span class="punct" style="color: #444477; font-weight: bold;">}</span> <span class="punct" style="color: #444477; font-weight: bold;">*</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">, </span><span class="punct" style="color: #444477; font-weight: bold;">"</span>                 <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “this, is, a, test”</span><span class="ident" style="color: #000044;">h</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">{</span> <span class="symbol" style="color: #009999;">:name</span> <span class="punct" style="color: #444477; font-weight: bold;">=&gt;</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">Fred</span><span class="punct" style="color: #444477; font-weight: bold;">“,</span> <span class="symbol" style="color: #009999;">:age</span> <span class="punct" style="color: #444477; font-weight: bold;">=&gt;</span> <span class="number" style="color: #FF9999;">77</span> <span class="punct" style="color: #444477; font-weight: bold;">}</span><span class="ident" style="color: #000044;">h</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">map</span> <span class="punct" style="color: #444477; font-weight: bold;">{</span> <span class="punct" style="color: #444477; font-weight: bold;">|</span><span class="ident" style="color: #000044;">i</span><span class="punct" style="color: #444477; font-weight: bold;">|</span> <span class="ident" style="color: #000044;">i</span> <span class="punct" style="color: #444477; font-weight: bold;">*</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">=</span><span class="punct" style="color: #444477; font-weight: bold;">"</span> <span class="punct" style="color: #444477; font-weight: bold;">}</span> <span class="punct" style="color: #444477; font-weight: bold;">*</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;"><span class="escape" style="color: #227777;">\n</span></span><span class="punct" style="color: #444477; font-weight: bold;">"</span>              <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “age=77\nname=Fred”</span></span>
</pre>
<p></p>
<h2>3- 小数の簡単なフォーマット方法</h2>
<p>価格の表示に小数点のフォーマットをそろえるにはsprintfの代わりに次の方法を使うことができます。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">oney</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="number" style="color: #FF9999;">9.5</span><span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">%.2f</span><span class="punct" style="color: #444477; font-weight: bold;">"</span> <span class="punct" style="color: #444477; font-weight: bold;">%</span> <span class="ident" style="color: #000044;">money</span>                       <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “9.50″</span></span>
</pre>
<p></p>
<h2>4 - テキストを囲む簡単な方法</h2>
<p>#3のフォーマットテクニックと同様に文字列を他の文字列の中に差し込むことができます。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">[%s]</span><span class="punct" style="color: #444477; font-weight: bold;">"</span> <span class="punct" style="color: #444477; font-weight: bold;">%</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">same old drag</span><span class="punct" style="color: #444477; font-weight: bold;">"</span>             <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “[same old drag]”</span></span>
</pre>
<p>配列をつかうこともできます。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">x</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">%w{</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">p hello p</span><span class="punct" style="color: #444477; font-weight: bold;">}</span><span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">&lt;%s&gt;%s&lt;/%s&gt;</span><span class="punct" style="color: #444477; font-weight: bold;">"</span> <span class="punct" style="color: #444477; font-weight: bold;">%</span> <span class="ident" style="color: #000044;">x</span>                    <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “&lt;p&gt;hello&lt;/p&gt;"</span></span>
</pre>
<p></p>
<h2>5 - ファイルツリーを削除</h2>
<p>簡単にShellを使ってはいけません。Rubyは使いやすい<a href="http://www.noobkit.com/show/ruby/ruby/standard-library/fileutils.html">ファイルユーティリティライブラリ</a>を持っています。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">require</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">fileutils</span><span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="constant" style="color: #0077FF;">FileUtils</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">rm_r</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">somedir</span><span class="punct" style="color: #444477; font-weight: bold;">'</span></span>
</pre>
<p>このメソッドを使う時は十分ご注意を！</p>
<h2>6 - Enum要素を爆破</h2>
<p>*はArrayやHashのようなEnum要素を*爆破*することができます。なんの事をいっているかは次の例をみてください。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">a</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">%w{</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">a b</span><span class="punct" style="color: #444477; font-weight: bold;">}</span><span class="ident" style="color: #000044;">b</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">%w{</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">c d</span><span class="punct" style="color: #444477; font-weight: bold;">}</span><span class="punct" style="color: #444477; font-weight: bold;">[</span><span class="ident" style="color: #000044;">a</span> <span class="punct" style="color: #444477; font-weight: bold;">+</span> <span class="ident" style="color: #000044;">b</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>                              <span class="comment" style="color: #000055; font-style: italic;"># =&gt; [[”a”, “b”, “c”, “d”]]</span><span class="punct" style="color: #444477; font-weight: bold;">[*</span><span class="ident" style="color: #000044;">a</span> <span class="punct" style="color: #444477; font-weight: bold;">+</span> <span class="ident" style="color: #000044;">b</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>                             <span class="comment" style="color: #000055; font-style: italic;"># =&gt; [”a”, “b”, “c”, “d”]</span></span>
</pre>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">a</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">{</span> <span class="symbol" style="color: #009999;">:name</span> <span class="punct" style="color: #444477; font-weight: bold;">=&gt;</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">Fred</span><span class="punct" style="color: #444477; font-weight: bold;">“,</span> <span class="symbol" style="color: #009999;">:age</span> <span class="punct" style="color: #444477; font-weight: bold;">=&gt;</span> <span class="number" style="color: #FF9999;">93</span> <span class="punct" style="color: #444477; font-weight: bold;">}</span><span class="punct" style="color: #444477; font-weight: bold;">[</span><span class="ident" style="color: #000044;">a</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>                                  <span class="comment" style="color: #000055; font-style: italic;"># =&gt; [{:name =&gt; “Fred”, :age =&gt;93}]</span><span class="punct" style="color: #444477; font-weight: bold;">[*</span><span class="ident" style="color: #000044;">a</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>                                 <span class="comment" style="color: #000055; font-style: italic;"># =&gt; [[:name, “Fred”], [:age, 93]]</span></span>
</pre>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">a</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">%w{</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">a b c d e f g h</span><span class="punct" style="color: #444477; font-weight: bold;">}</span><span class="ident" style="color: #000044;">b</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">[</span><span class="number" style="color: #FF9999;">0</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="number" style="color: #FF9999;">5</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="number" style="color: #FF9999;">6</span><span class="punct" style="color: #444477; font-weight: bold;">]</span><span class="ident" style="color: #000044;">a</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">values_at</span><span class="punct" style="color: #444477; font-weight: bold;">(*</span><span class="ident" style="color: #000044;">b</span><span class="punct" style="color: #444477; font-weight: bold;">).</span><span class="ident" style="color: #000044;">inspect</span>              <span class="comment" style="color: #000055; font-style: italic;"># =&gt; [”a”, “f”, “g”]</span></span>
</pre>
<p></p>
<h2>7 - ローカル値の定義をやめる</h2>
<p>空のHashやArray でローカル値の定義する代わりに、次のように定義と同時に使うことができます。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="punct" style="color: #444477; font-weight: bold;">(</span><span class="ident" style="color: #000044;">z</span> <span class="punct" style="color: #444477; font-weight: bold;">||=</span> <span class="punct" style="color: #444477; font-weight: bold;">[])</span> <span class="punct" style="color: #444477; font-weight: bold;">&lt;&lt;</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">test</span><span class="punct" style="color: #444477; font-weight: bold;">'</span></span>
</pre>
<p></p>
<h2>8 - ハッシュキーに文字やシンボルじゃないものをつかう</h2>
<p>シンボルや文字列以外のものをハッシュキーに使っているのをみることはほとんどありませんが、つかうことができ、時に使いやすいでしょう（次の例はあまりよい例ではないですが）。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">does</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="ident" style="color: #000044;">is</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">{</span> <span class="constant" style="color: #0077FF;">true</span> <span class="punct" style="color: #444477; font-weight: bold;">=&gt;</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">Yes</span><span class="punct" style="color: #444477; font-weight: bold;">',</span> <span class="constant" style="color: #0077FF;">false</span> <span class="punct" style="color: #444477; font-weight: bold;">=&gt;</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">No</span><span class="punct" style="color: #444477; font-weight: bold;">'</span> <span class="punct" style="color: #444477; font-weight: bold;">}</span><span class="ident" style="color: #000044;">does</span><span class="punct" style="color: #444477; font-weight: bold;">[</span><span class="number" style="color: #FF9999;">10</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="number" style="color: #FF9999;">50</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>                       <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “No”</span><span class="ident" style="color: #000044;">is</span><span class="punct" style="color: #444477; font-weight: bold;">[</span><span class="number" style="color: #FF9999;">10</span> <span class="punct" style="color: #444477; font-weight: bold;">&gt;</span> <span class="number" style="color: #FF9999;">5</span><span class="punct" style="color: #444477; font-weight: bold;">]</span>                           <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “Yes”</span></span>
</pre>
<p></p>
<h2>9 - &#8216;and&#8217; と&#8217;or&#8217;を使って一行に処理をまとめる</h2>
<p>より自信のあるRuby開発者がコードを短くして、ifやunlessなど短い複数行を省くためのトリックです。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">queue</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">[]</span><span class="punct" style="color: #444477; font-weight: bold;">%w{</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">hello x world</span><span class="punct" style="color: #444477; font-weight: bold;">}.</span><span class="ident" style="color: #000044;">each</span> <span class="keyword" style="color: #AA0000; font-weight: bold;">do</span> <span class="punct" style="color: #444477; font-weight: bold;">|</span><span class="ident" style="color: #000044;">word</span><span class="punct" style="color: #444477; font-weight: bold;">|</span><span class="ident" style="color: #000044;">queue</span> <span class="punct" style="color: #444477; font-weight: bold;">&lt;&lt;</span> <span class="ident" style="color: #000044;">word</span> <span class="keyword" style="color: #AA0000; font-weight: bold;">and</span> <span class="ident" style="color: #000044;">puts</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">Added to queue</span><span class="punct" style="color: #444477; font-weight: bold;">"</span> <span class="keyword" style="color: #AA0000; font-weight: bold;">unless</span> <span class="ident" style="color: #000044;">word</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">length</span> <span class="punct" style="color: #444477; font-weight: bold;">&lt; </span> <span class="number" style="color: #FF9999;">2</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span><span class="ident" style="color: #000044;">puts</span> <span class="ident" style="color: #000044;">queue</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">inspect</span><span class="comment" style="color: #000055; font-style: italic;"># Output:</span><span class="comment" style="color: #000055; font-style: italic;">#   Added to queue</span><span class="comment" style="color: #000055; font-style: italic;">#   Added to queue</span><span class="comment" style="color: #000055; font-style: italic;">#   [”hello”, “world”]</span></span>
</pre>
<p></p>
<h2>10 - requireされた時ではなく直接実行されていた場合に何かを行う</h2>
<p>このパターンは上級Ruby開発者にはよく使われています。ライブラリとしてや、コマンドラインからディレクトリの下から呼ばれているのではなく、直接rubyコードが呼ばれている場合のみ処理を行います。</p>
<pre style="background-color: #F1F1F3; color: rgb(17, 17, 34); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="keyword" style="color: #AA0000; font-weight: bold;">if</span> <span class="constant" style="color: #0077FF;">__FILE__</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="global" style="color: #77FFBB;">$0</span>
  <span class="comment" style="color: #000055; font-style: italic;"># Do something.. run tests, call a method, etc. We're direct.</span>
<span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<h2>11 - 複数データの簡単割り当て</h2>
<p>複数データの割当はRuby開発者が早期に学ぶことですが、簡単な割にほとんど使われていないのには驚きです。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">a</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="ident" style="color: #000044;">b</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="ident" style="color: #000044;">c</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="ident" style="color: #000044;">d</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="number" style="color: #FF9999;">1</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="number" style="color: #FF9999;">2</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="number" style="color: #FF9999;">3</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="number" style="color: #FF9999;">4</span></span>
</pre>
<p>要素数の指定がないメソッドの引数として配列を*でバンドルするのは特に役立ちます。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="keyword" style="color: #AA0000; font-weight: bold;">def </span><span class="method" style="color: #007777;">my_method</span><span class="punct" style="color: #444477; font-weight: bold;">(*</span><span class="ident" style="color: #000044;">args</span><span class="punct" style="color: #444477; font-weight: bold;">)</span><span class="ident" style="color: #000044;">a</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="ident" style="color: #000044;">b</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="ident" style="color: #000044;">c</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="ident" style="color: #000044;">d</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="ident" style="color: #000044;">args</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<p>つぎのような賢い使い方も</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="keyword" style="color: #AA0000; font-weight: bold;">def </span><span class="method" style="color: #007777;">initialize</span><span class="punct" style="color: #444477; font-weight: bold;">(</span><span class="ident" style="color: #000044;">args</span><span class="punct" style="color: #444477; font-weight: bold;">)</span><span class="ident" style="color: #000044;">args</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">keys</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">each</span> <span class="punct" style="color: #444477; font-weight: bold;">{</span> <span class="punct" style="color: #444477; font-weight: bold;">|</span><span class="ident" style="color: #000044;">name</span><span class="punct" style="color: #444477; font-weight: bold;">|</span> <span class="ident" style="color: #000044;">instance_variable_set</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">@</span><span class="punct" style="color: #444477; font-weight: bold;">"</span> <span class="punct" style="color: #444477; font-weight: bold;">+</span> <span class="ident" style="color: #000044;">name</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">to_s</span><span class="punct" style="color: #444477; font-weight: bold;">,</span> <span class="ident" style="color: #000044;">args</span><span class="punct" style="color: #444477; font-weight: bold;">[</span><span class="ident" style="color: #000044;">name</span><span class="punct" style="color: #444477; font-weight: bold;">]</span> <span class="punct" style="color: #444477; font-weight: bold;">}</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<p></p>
<h2>12 - 数値の比較に複数の比較ではなくrangeインスタンスを使う</h2>
<p>もう<span style="font-style: italic;">i</span><span style="font-style: italic;">f x &gt; 1000 &amp;&amp; x &lt; 2000</span> を使わないで次のコードをつかいましょう。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">year</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="number" style="color: #FF9999;">1972</span><span class="ident" style="color: #000044;">puts</span>  <span class="keyword" style="color: #AA0000; font-weight: bold;">case</span> <span class="ident" style="color: #000044;">year</span><span class="keyword" style="color: #AA0000; font-weight: bold;">when</span> <span class="number" style="color: #FF9999;">1970</span><span class="punct" style="color: #444477; font-weight: bold;">..</span><span class="number" style="color: #FF9999;">1979</span><span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">Seventies</span><span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="keyword" style="color: #AA0000; font-weight: bold;">when</span> <span class="number" style="color: #FF9999;">1980</span><span class="punct" style="color: #444477; font-weight: bold;">..</span><span class="number" style="color: #FF9999;">1989</span><span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">Eighties</span><span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="keyword" style="color: #AA0000; font-weight: bold;">when</span> <span class="number" style="color: #FF9999;">1990</span><span class="punct" style="color: #444477; font-weight: bold;">..</span><span class="number" style="color: #FF9999;">1999</span><span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">Nineties</span><span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<p></p>
<h2>13 - 配列をつかって重複したコードをカット</h2>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="punct" style="color: #444477; font-weight: bold;">%w{</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">rubygems daemons eventmachine</span><span class="punct" style="color: #444477; font-weight: bold;">}.</span><span class="ident" style="color: #000044;">each</span> <span class="punct" style="color: #444477; font-weight: bold;">{</span> <span class="punct" style="color: #444477; font-weight: bold;">|</span><span class="ident" style="color: #000044;">x</span><span class="punct" style="color: #444477; font-weight: bold;">|</span> <span class="ident" style="color: #000044;">require</span> <span class="ident" style="color: #000044;">x</span> <span class="punct" style="color: #444477; font-weight: bold;">}</span></span>
</pre>
<p></p>
<h2>14 - 比較演算子</h2>
<p>比較演算子もまた、Ruby開発者が早期に学ぶトリックですが、ほとんどみることがありません。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">puts</span> <span class="ident" style="color: #000044;">x</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="number" style="color: #FF9999;">10</span> <span class="punct" style="color: #444477; font-weight: bold;">?</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">x is ten</span><span class="punct" style="color: #444477; font-weight: bold;">"</span> <span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">x is not ten</span><span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="comment" style="color: #000055; font-style: italic;"># Or.. an assignment based on the results of a ternary operation:</span><span class="constant" style="color: #0077FF;">LOG</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">sev_threshold</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="constant" style="color: #0077FF;">ENVIRONMENT</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="symbol" style="color: #009999;">:development</span> <span class="punct" style="color: #444477; font-weight: bold;">?</span> <span class="constant" style="color: #0077FF;">Logger</span><span class="punct" style="color: #444477; font-weight: bold;">::</span><span class="constant" style="color: #0077FF;">DEBUG</span> <span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="constant" style="color: #0077FF;">Logger</span><span class="punct" style="color: #444477; font-weight: bold;">::</span><span class="constant" style="color: #0077FF;">INFO</span></span>
</pre>
<p></p>
<h2>15 - ネストされた比較演算子</h2>
<p>トラブルを引き起こすでしょうが、比較演算子はネストすることができます。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">qty</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="number" style="color: #FF9999;">1</span><span class="ident" style="color: #000044;">qty</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="number" style="color: #FF9999;">0</span> <span class="punct" style="color: #444477; font-weight: bold;">?</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">none</span><span class="punct" style="color: #444477; font-weight: bold;">'</span> <span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="ident" style="color: #000044;">qty</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="number" style="color: #FF9999;">1</span> <span class="punct" style="color: #444477; font-weight: bold;">?</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">one</span><span class="punct" style="color: #444477; font-weight: bold;">'</span> <span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">many</span><span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="comment" style="color: #000055; font-style: italic;"># Just to illustrate, in case of confusion:</span><span class="punct" style="color: #444477; font-weight: bold;">(</span><span class="ident" style="color: #000044;">qty</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="number" style="color: #FF9999;">0</span> <span class="punct" style="color: #444477; font-weight: bold;">?</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">none</span><span class="punct" style="color: #444477; font-weight: bold;">'</span> <span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="punct" style="color: #444477; font-weight: bold;">(</span><span class="ident" style="color: #000044;">qty</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="number" style="color: #FF9999;">1</span> <span class="punct" style="color: #444477; font-weight: bold;">?</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">one</span><span class="punct" style="color: #444477; font-weight: bold;">'</span> <span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="punct" style="color: #444477; font-weight: bold;">'</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">many</span><span class="punct" style="color: #444477; font-weight: bold;">'))</span></span>
</pre>
<p></p>
<h2>16 - Rubyの論理式を簡素に</h2>
<p>よくつぎのようなメソッドパターンをみますが、</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="keyword" style="color: #AA0000; font-weight: bold;">def </span><span class="method" style="color: #007777;">is_odd</span><span class="punct" style="color: #444477; font-weight: bold;">(</span><span class="ident" style="color: #000044;">x</span><span class="punct" style="color: #444477; font-weight: bold;">)</span><span class="comment" style="color: #000055; font-style: italic;"># Wayyyy too long..</span><span class="keyword" style="color: #AA0000; font-weight: bold;">  if</span> <span class="ident" style="color: #000044;">x</span> <span class="punct" style="color: #444477; font-weight: bold;">%</span> <span class="number" style="color: #FF9999;">2</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="number" style="color: #FF9999;">0</span><span class="keyword" style="color: #AA0000; font-weight: bold;">    return</span> <span class="constant" style="color: #0077FF;">false</span><span class="keyword" style="color: #AA0000; font-weight: bold;">  else</span><span class="keyword" style="color: #AA0000; font-weight: bold;">    return</span> <span class="constant" style="color: #0077FF;">true</span><span class="keyword" style="color: #AA0000; font-weight: bold;">  end</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<p>おそらく次のように比較演算子を使って、よい短くできるのでは？</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="keyword" style="color: #AA0000; font-weight: bold;">def </span><span class="method" style="color: #007777;">is_odd</span><span class="punct" style="color: #444477; font-weight: bold;">(</span><span class="ident" style="color: #000044;">x</span><span class="punct" style="color: #444477; font-weight: bold;">)</span><span class="comment" style="color: #000055; font-style: italic;"># Don't EVER put false and true in a ternary operator!!</span><span class="ident" style="color: #000044;">x</span> <span class="punct" style="color: #444477; font-weight: bold;">%</span> <span class="number" style="color: #FF9999;">2</span> <span class="punct" style="color: #444477; font-weight: bold;">==</span> <span class="number" style="color: #FF9999;">0</span> <span class="punct" style="color: #444477; font-weight: bold;">?</span> <span class="constant" style="color: #0077FF;">false</span> <span class="punct" style="color: #444477; font-weight: bold;">:</span> <span class="constant" style="color: #0077FF;">true</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<p>確かに。このパターンはよく見ますが、もう一歩すすめてください。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="keyword" style="color: #AA0000; font-weight: bold;">def </span><span class="method" style="color: #007777;">is_odd</span><span class="punct" style="color: #444477; font-weight: bold;">(</span><span class="ident" style="color: #000044;">x</span><span class="punct" style="color: #444477; font-weight: bold;">)</span><span class="comment" style="color: #000055; font-style: italic;"># Use the logical results provided to you by Ruby already..</span><span class="ident" style="color: #000044;">x</span> <span class="punct" style="color: #444477; font-weight: bold;">%</span> <span class="number" style="color: #FF9999;">2</span> <span class="punct" style="color: #444477; font-weight: bold;">!=</span> <span class="number" style="color: #FF9999;">0</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<p></p>
<h2>17　-　例外のバックトレースのすべてをみる</h2>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="keyword" style="color: #AA0000; font-weight: bold;">def </span><span class="method" style="color: #007777;">do_division_by_zero</span><span class="punct" style="color: #444477; font-weight: bold;">;</span> <span class="number" style="color: #FF9999;">5</span> <span class="punct" style="color: #444477; font-weight: bold;">/</span> <span class="number" style="color: #FF9999;">0</span><span class="punct" style="color: #444477; font-weight: bold;">;</span> <span class="keyword" style="color: #AA0000; font-weight: bold;">end</span><span class="keyword" style="color: #AA0000; font-weight: bold;">  begin</span><span class="ident" style="color: #000044;">    do_division_by_zero</span><span class="keyword" style="color: #AA0000; font-weight: bold;">  rescue</span> <span class="punct" style="color: #444477; font-weight: bold;">=&gt;</span> <span class="ident" style="color: #000044;">exception</span><span class="ident" style="color: #000044;">    puts</span> <span class="ident" style="color: #000044;">exception</span><span class="punct" style="color: #444477; font-weight: bold;">.</span><span class="ident" style="color: #000044;">backtrace</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<p></p>
<h2>18 - 配列とシングルオブジェクト両方で繰り返し処理</h2>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="comment" style="color: #000055; font-style: italic;"># [*items] はシングルオブジェクトを配列に置き換えます。</span><span class="punct" style="color: #444477; font-weight: bold;">[*</span><span class="ident" style="color: #000044;">items</span><span class="punct" style="color: #444477; font-weight: bold;">].</span><span class="ident" style="color: #000044;">each</span> <span class="keyword" style="color: #AA0000; font-weight: bold;">do</span> <span class="punct" style="color: #444477; font-weight: bold;">|</span><span class="ident" style="color: #000044;">item</span><span class="punct" style="color: #444477; font-weight: bold;">|</span><span class="comment" style="color: #000055; font-style: italic;"># …</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<p></p>
<h2>19 - Rescueブロックはbeginでくくる必要はない</h2>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="keyword" style="color: #AA0000; font-weight: bold;">def </span><span class="method" style="color: #007777;">x</span><span class="keyword" style="color: #AA0000; font-weight: bold;">  begin</span><span class="comment" style="color: #000055; font-style: italic;">    # …</span><span class="keyword" style="color: #AA0000; font-weight: bold;">  rescue</span><span class="comment" style="color: #000055; font-style: italic;">    # …</span><span class="keyword" style="color: #AA0000; font-weight: bold;">  end</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span></span>
</pre>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span class="keyword" style="color: #AA0000; font-weight: bold;">def </span><span class="method" style="color: #007777;">x</span><span class="comment" style="color: #000055; font-style: italic;">  # …</span><span class="keyword" style="color: #AA0000; font-weight: bold;">  rescue</span><span class="comment" style="color: #000055; font-style: italic;">    # …</span><span class="keyword" style="color: #AA0000; font-weight: bold;">end</span>
</pre>
<p></p>
<h2>20 - ブロックコメント</h2>
<p>これは古いRuby学校のコードでよくみますが、あまりつかわれていないようです。ポンドマークのついた巨大な行よりも見やすいのでは？</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">puts</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">x</span><span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="comment" style="color: #000055; font-style: italic;">=beginthis is a block commentYou can put anything you like here!puts “y”=end</span><span class="ident" style="color: #000044;">puts</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">z</span><span class="punct" style="color: #444477; font-weight: bold;">"</span></span>
</pre>
<p></p>
<h2>21 - rescueの救出</h2>
<p>一行でrescueを使う事で例外が発生した場合に値を返すことができます。</p>
<pre style="background-color: #F1F1F3; color: #111122; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-size: 13px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; width: 97%; overflow-x: auto; overflow-y: hidden; margin-top: 12px;">
<span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 21px;"><span class="ident" style="color: #000044;">h</span> <span class="punct" style="color: #444477; font-weight: bold;">=</span> <span class="punct" style="color: #444477; font-weight: bold;">{</span> <span class="symbol" style="color: #009999;">:age</span> <span class="punct" style="color: #444477; font-weight: bold;">=&gt;</span> <span class="number" style="color: #FF9999;">10</span> <span class="punct" style="color: #444477; font-weight: bold;">}</span><span class="ident" style="color: #000044;">h</span><span class="punct" style="color: #444477; font-weight: bold;">[</span><span class="symbol" style="color: #009999;">:name</span><span class="punct" style="color: #444477; font-weight: bold;">].</span><span class="ident" style="color: #000044;">downcase</span>                         <span class="comment" style="color: #000055; font-style: italic;"># ERROR</span><span class="ident" style="color: #000044;">h</span><span class="punct" style="color: #444477; font-weight: bold;">[</span><span class="symbol" style="color: #009999;">:name</span><span class="punct" style="color: #444477; font-weight: bold;">].</span><span class="ident" style="color: #000044;">downcase</span> <span class="keyword" style="color: #AA0000; font-weight: bold;">rescue</span> <span class="punct" style="color: #444477; font-weight: bold;">"</span><span class="string" style="color: #994444; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #FFFFEE; background-position: initial initial;">No name</span><span class="punct" style="color: #444477; font-weight: bold;">"</span>        <span class="comment" style="color: #000055; font-style: italic;"># =&gt; “No name”</span></span>
</pre>
<p><a href="http://www.rubyinside.com/21-ruby-tricks-902.html">原文</a>のコメント欄にも他のTipsや意見等が投稿されていました。</p>
<h2>おまけ1 - 6と11を組み合わせるとこんな風にかけます。特にArray#splitと一緒に使うと特に便利です。</h2>
<p style="font-weight: normal; line-height: 1.5em; text-transform: none; margin-top: 10px; margin-right: 5px; margin-bottom: 10px; margin-left: 0px;"><span style="color: #333333; font-family: 'Lucida Grande'; font-weight: bold;">&gt; a, b, *c = 1, 2, 3, 4, 5, 6<br />
a =&gt; 1<br />
b =&gt; 2<br />
c =&gt; [3, 4, 5, 6]</span></p>
<h2>おまけ2 - 最初から12個のフォボナッチ数を求める</h2>
<p style="font-weight: normal; line-height: 1.5em; text-transform: none; margin-top: 10px; margin-right: 5px; margin-bottom: 10px; margin-left: 0px;"><span style="color: #333333; font-family: 'Lucida Grande'; font-weight: bold;"><span style="line-height: 17px;">10.times { (fib ||= [1, 1]) &lt;&lt; fib[-1] + fib[-2] }</span><br /></span></p>
<p>他にもRubyコードのTipsがあれば知りたいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.churadesign.com/2008/06/03/%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e3%82%b3%e3%83%bc%e3%83%89%e3%81%ab%e4%bd%bf%e3%81%86%e3%81%b9%e3%81%8d21%e3%81%aeruby%e3%83%88%e3%83%aa%e3%83%83%e3%82%af/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Arduinoコンテスト2008</title>
		<link>http://www.churadesign.com/2008/06/02/arduino%e3%82%b3%e3%83%b3%e3%83%86%e3%82%b9%e3%83%882008/</link>
		<comments>http://www.churadesign.com/2008/06/02/arduino%e3%82%b3%e3%83%b3%e3%83%86%e3%82%b9%e3%83%882008/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 04:17:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Article (記事)]]></category>

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

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

		<guid isPermaLink="false">http://www.churadesign.com/2008/06/02/arduino%e3%82%b3%e3%83%b3%e3%83%86%e3%82%b9%e3%83%882008/</guid>
		<description><![CDATA[Arduinoをつかった各種ハードウェアのコンテスト結果優勝者の映像が公開されています。
Arduinoを使ったドアのロックシステムやGPSと連動した方向指示機、ロボットなどおもしろいソリューションが公開されています。
]]></description>
			<content:encoded><![CDATA[<p>Arduinoをつかった各種ハードウェアのコンテスト結果優勝者の<a href="http://www.libelium.com/tienda/catalog/contest.php">映像が公開</a>されています。</p>
<p>Arduinoを使ったドアのロックシステムやGPSと連動した方向指示機、ロボットなどおもしろいソリューションが公開されています。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.churadesign.com/2008/06/02/arduino%e3%82%b3%e3%83%b3%e3%83%86%e3%82%b9%e3%83%882008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AIR SDKとFlex SDKではじめてのAIRアプリケーションを作る</title>
		<link>http://www.churadesign.com/2008/05/29/air-sdk%e3%81%a8flex-sdk%e3%81%a7%e3%81%af%e3%81%98%e3%82%81%e3%81%a6%e3%81%aeair%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e4%bd%9c%e3%82%8b/</link>
		<comments>http://www.churadesign.com/2008/05/29/air-sdk%e3%81%a8flex-sdk%e3%81%a7%e3%81%af%e3%81%98%e3%82%81%e3%81%a6%e3%81%aeair%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e4%bd%9c%e3%82%8b/#comments</comments>
		<pubDate>Thu, 29 May 2008 07:04:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Article (記事)]]></category>

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

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

		<guid isPermaLink="false">http://www.churadesign.com/?p=38</guid>
		<description><![CDATA[はじめに
OSXとテキストエディタを使ってはじめてのAIRアプリケーションを作成してみましょう。AirとはFlashやAjaxなどweb技術を用いてデスクトップ用のアプリケーションを作成するためのフレームワークです。
Airの特徴として、ブラウザ上で動作しているアプリケーションで実現するには難しい、デスクトップからファイルをDrag&#38;Dropしたり、ローカルファイルシステムへのアクセスなどOSの機能を利用することもできます。
またAirで作成されたアプリケーションはWindows、OSX、Linuxで動作するためより幅広いクライアント環境で動作させることができます。
Airを作成するためのSDKはadobeが無料で公開しており、Flashアプリケーションを作成するためのFlexもオープンソース化されたことにより無料で開発環境が用意できます。
さらにFlexBuilderという有料のIDEも用意されているためVisualStudioやEclipseに慣れた開発者の方はこちらを購入するとよいと思います。
今回はIDEは使用せずにテキストエディタとコマンドラインで開発しています。
ここではAdobeのドキュメントに従って半透明なウィンドウにHelloWorldと表示させるアプリケーションを作りながらFlexとAirのSDKの使い方とアプリケーション開発の流れを紹介しています。
完成アプリケーションはこのようになります。
開発環境を準備する
ここではOSX環境で説明していますが、WindowsやLinuxでも基本は同じです。
FlexSDKとAIR SDKをダウンロードします。
AIR_SDKディレクトリとflex_sdk_3ディレクトリをそれぞれ/Applicationsディレクトリにコピーします。
Pathに各ディレクトリのbinを設定します。
ここでは.bashrcに次のように追加しました。
export PATH="........
/Applications/flex_sdk_3/bin:\
/Applications/AIR_SDK/bin/"
ターミナルを立ち上げコマンドラインから
&#62;adl -help
&#62;amxmlc -help
が実行できればAIRとFlexの開発環境が整いました。
AIRアプリケーション記述ファイル作成
HelloWorld-app.xmlというファイル名で、次のようなアプリケーション記述ファイルを作成します。

&#60;pre&#62;&#60;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&#62;
&#60;application xmlns=&#34;http://ns.adobe.com/air/application/1.0&#34;&#62;
    &#60;id&#62;samples.flex.HelloWorld&#60;/id&#62;
    &#60;version&#62;0.1&#60;/version&#62;
    &#60;filename&#62;HelloWorld&#60;/filename&#62;
    &#60;initialWindow&#62;
        &#60;content&#62;HelloWorld.swf&#60;/content&#62;
        &#60;visible&#62;true&#60;/visible&#62;
        &#60;systemChrome&#62;none&#60;/systemChrome&#62;
        [...]]]></description>
			<content:encoded><![CDATA[<h3>はじめに</h3>
<p>OSXとテキストエディタを使ってはじめてのAIRアプリケーションを作成してみましょう。AirとはFlashやAjaxなどweb技術を用いてデスクトップ用のアプリケーションを作成するためのフレームワークです。</p>
<p>Airの特徴として、ブラウザ上で動作しているアプリケーションで実現するには難しい、デスクトップからファイルをDrag&amp;Dropしたり、ローカルファイルシステムへのアクセスなどOSの機能を利用することもできます。</p>
<p>またAirで作成されたアプリケーションはWindows、OSX、Linuxで動作するためより幅広いクライアント環境で動作させることができます。</p>
<p>Airを作成するためのSDKはadobeが無料で公開しており、Flashアプリケーションを作成するためのFlexもオープンソース化されたことにより無料で開発環境が用意できます。</p>
<p>さらにFlexBuilderという有料のIDEも用意されているためVisualStudioやEclipseに慣れた開発者の方はこちらを購入するとよいと思います。</p>
<p>今回はIDEは使用せずにテキストエディタとコマンドラインで開発しています。</p>
<p>ここでは<a href="http://livedocs.adobe.com/flex/3/html/help.html?content=SDKHelloWorld_1.html">Adobeのドキュメント</a>に従って半透明なウィンドウに<strong>HelloWorld</strong>と表示させるアプリケーションを作りながらFlexとAirのSDKの使い方とアプリケーション開発の流れを紹介しています。</p>
<p>完成アプリケーションはこのようになります。<a href="http://www.churadesign.com/wp-content/uploads/2008/05/first_air_app.png"><img class="alignnone size-medium wp-image-39" title="first_air_app" src="http://www.churadesign.com/wp-content/uploads/2008/05/first_air_app.png" alt="AIRアプリケーションサンプル" width="527" height="308" /></a></p>
<h3>開発環境を準備する</h3>
<p>ここではOSX環境で説明していますが、WindowsやLinuxでも基本は同じです。</p>
<p><a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3">FlexSDK</a>と<a href="http://www.adobe.com/products/air/tools/sdk/">AIR SDK</a>をダウンロードします。<br />
<strong>AIR_SDK</strong>ディレクトリと<strong>flex_sdk_3</strong>ディレクトリをそれぞれ<strong>/Applications</strong>ディレクトリにコピーします。</p>
<p><strong>Path</strong>に各ディレクトリの<strong>bin</strong>を設定します。<br />
ここでは<strong>.bashrc</strong>に次のように追加しました。</p>
<pre class="command">export PATH="........
/Applications/flex_sdk_3/bin:\
/Applications/AIR_SDK/bin/"</pre>
<p>ターミナルを立ち上げコマンドラインから</p>
<pre class="command">&gt;adl -help
&gt;amxmlc -help</pre>
<p>が実行できれば<strong>AIR</strong>と<strong>Flex</strong>の開発環境が整いました。</p>
<h3>AIRアプリケーション記述ファイル作成</h3>
<p><em>HelloWorld-app.xml</em>というファイル名で、次のようなアプリケーション記述ファイルを作成します。</p>
<pre class="syntax-highlight:xml">
&lt;pre&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;application xmlns=&quot;http://ns.adobe.com/air/application/1.0&quot;&gt;
    &lt;id&gt;samples.flex.HelloWorld&lt;/id&gt;
    &lt;version&gt;0.1&lt;/version&gt;
    &lt;filename&gt;HelloWorld&lt;/filename&gt;
    &lt;initialWindow&gt;
        &lt;content&gt;HelloWorld.swf&lt;/content&gt;
        &lt;visible&gt;true&lt;/visible&gt;
        &lt;systemChrome&gt;none&lt;/systemChrome&gt;
        &lt;transparent&gt;true&lt;/transparent&gt;
        &lt;width&gt;400&lt;/width&gt;
        &lt;height&gt;200&lt;/height&gt;
    &lt;/initialWindow&gt;
&lt;/application&gt;&lt;/pre&gt;
</pre>
<p>この例ではいくつかの設定しか記述していません。透明度やアイコン、ディフォルトのインストール先など、数多くの設定可能なすべてのプロパティは<a href="http://livedocs.adobe.com/flex/3/html/help.html?content=File_formats_1.html#1043413">ドキュメントを参照</a>してください。</p>
<h3>アプリケーションのコードを書く</h3>
<p>SWFベースのAIRアプリケーションはMXMLを使ってもActionScriptを使っても作成できますが、ここではFlexSDKとMXMLを使っています。</p>
<p>1. テキストエディタを開き<em>HelloWorld.mxml</em>という名前で次のコードを入力します。</p>
<pre class="syntax-highlight:xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;pre&gt;&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; title=&quot;Hello World&quot;&gt;
    &lt;mx:Style&gt;
        WindowedApplication
        {
            background-color:&quot;0x999999&quot;;
            background-alpha:&quot;0.5&quot;;
        }
    &lt;/mx:Style&gt;
    &lt;mx:Label text=&quot;Hello World&quot; horizontalCenter=&quot;0&quot; verticalCenter=&quot;0&quot;/&gt;
&lt;/mx:WindowedApplication&gt;&lt;/pre&gt;
</pre>
<p><em>mx:Label</em>で中央に<strong>HelloWorld</strong>を表示し、<em>mx:Style</em>で背景色と透明度の設定をしています。</p>
<h3>アプリケーションをコンパイルする</h3>
<p><strong>amxmlc</strong>コンパイラを使ってMXMLファイルをSWFファイルにコンパイルします。</p>
<p>HelloWorld.mxmlのディレクトリに移動し、次のコマンドでコンパイルします。正常にコンパイルできれば、HelloWorld.swfが作成されます。</p>
<pre class="command"> amxmlc HelloWorld.mxml</pre>
<h3>アプリケーションのテスト</h3>
<p><strong>AIRデバッガーランチャー(ADL)</strong>を使い、アプリケーション記述ファイルを指定してAIRアプリをデバッグ実行することができます。</p>
<p> コマンドラインから次のコマンドを入力するとアプリケーションが起動します。</p>
<pre class="command">&gt;adl HelloWorld-app.xml</pre>
<h3>AIRインストーラーファイルの作成</h3>
<p>アプリケーションが完成したらADTユーティリティを使用してAIRインストーラーファイルにパッケージ化します。<br />
アプリケーションの安全のため、すべてのAIRアプリケーションはデジタル署名が必要となっています。ここでは開発用の自己証明書を使ってインストーラーファイルを作成します。自己証明書の場合インストール時に表示される配布者アイデンティティがUnknownとなります。</p>
<p>製品向けにアプリケーションを配布する場合は VeriSignやThawteからキーを購入することができます。</p>
<p>1.自己証明書を作成する<br />
次のコマンドを実行します。</p>
<pre class="command">
adt -certificate -cn SelfSigned 1024-RSA sampleCert.pfx samplePassword
</pre>
<p>2.インストーラーの作成<br />
次のコマンドを実行します。（実際は一行です）<br />
パスワード入力が求められるので上で入力したsamplePassowrdを入力してください。</p>
<pre class="command">
adt -package -storetype pkcs12 -keystore sampleCert.pfx HelloWorld.air
HelloWorld-app.xml HelloWorld.swf
</pre>
<p>これで<i>HelloWorld.air</i>が作成されました。このファイルをダブルクリックすることで、アプリケーションをインストールし、実行することができます。</p>
<p>簡単ですね。実際にはMXMLでより複雑なアプリケーションを作成していくことでしょう。または、SWFのかわりに、HTMLとJavascriptを用いてもAIRアプリケーションを作成することができます。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.churadesign.com/2008/05/29/air-sdk%e3%81%a8flex-sdk%e3%81%a7%e3%81%af%e3%81%98%e3%82%81%e3%81%a6%e3%81%aeair%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e4%bd%9c%e3%82%8b/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NextGENギャラリー 0.96日本語化</title>
		<link>http://www.churadesign.com/2008/05/19/nextgen%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc-096%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%8c%96/</link>
		<comments>http://www.churadesign.com/2008/05/19/nextgen%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc-096%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%8c%96/#comments</comments>
		<pubDate>Mon, 19 May 2008 13:33:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Article (記事)]]></category>

		<category><![CDATA[nextgen gallery]]></category>

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

		<guid isPermaLink="false">http://www.churadesign.com/?p=18</guid>
		<description><![CDATA[WordpressプラグインのNextGENギャラリーを日本語化しました。

NextGENGalleryのバージョン0.96をベースにしています。
ダウンロードしたファイルを解凍した出てきたファイルnggallery-ja.moをwp-content/plugins/nextgen-gallery/langにコピーするだけです。
さくっと翻訳しているので分かりにくい部分や間違った翻訳がある可能性があります。できるだけ最新版にフォローしていきたいと考えていますので、間違いなどがあればどうぞコメントお願い致します。
 NextGEN Gallery 日本語ファイル (34.07 KB)
ライセンスはNextGENGarallyと同じGNU GPLです。
nggallery-ja.poは翻訳の元になっているファイルです。
poからmoを作成するにはLinux、OSXではコマンドラインから。
&#62;msgfmt nggallery-ja.po -o nggallery-ja.mo
を実行します。
]]></description>
			<content:encoded><![CDATA[<p>WordpressプラグインのNextGENギャラリーを日本語化しました。</p>
<p><img class="alignnone size-medium wp-image-22" title="gallery" src="http://www.churadesign.com/wp-content/uploads/2008/05/gallery.png" alt="NextGEN Gallery日本語化" width="594" height="406" /></p>
<p>NextGENGalleryのバージョン0.96をベースにしています。</p>
<p>ダウンロードしたファイルを解凍した出てきたファイル<strong>nggallery-ja.mo</strong>を<strong>wp-content/plugins/nextgen-gallery/lang</strong>にコピーするだけです。</p>
<p>さくっと翻訳しているので分かりにくい部分や間違った翻訳がある可能性があります。できるだけ最新版にフォローしていきたいと考えていますので、間違いなどがあればどうぞコメントお願い致します。</p>
<p> <a href="http://www.churadesign.com/wp-content/plugins/download-monitor/download.php?id=1" title="Version 0.9.6 downloaded 480 times" >NextGEN Gallery 日本語ファイル (34.07 KB)</a></p>
<p>ライセンスはNextGENGarallyと同じGNU GPLです。</p>
<p>nggallery-ja.poは翻訳の元になっているファイルです。</p>
<p>poからmoを作成するにはLinux、OSXではコマンドラインから。</p>
<p>&gt;msgfmt nggallery-ja.po -o nggallery-ja.mo</p>
<p>を実行します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.churadesign.com/2008/05/19/nextgen%e3%82%ae%e3%83%a3%e3%83%a9%e3%83%aa%e3%83%bc-096%e6%97%a5%e6%9c%ac%e8%aa%9e%e5%8c%96/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ArduinoでFonとシリアル通信(DD-WRT化)</title>
		<link>http://www.churadesign.com/2008/05/19/arduino%e3%81%a7fon%e3%81%a8%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%ab%e9%80%9a%e4%bf%a1dd-wrt%e5%8c%96/</link>
		<comments>http://www.churadesign.com/2008/05/19/arduino%e3%81%a7fon%e3%81%a8%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%ab%e9%80%9a%e4%bf%a1dd-wrt%e5%8c%96/#comments</comments>
		<pubDate>Mon, 19 May 2008 06:39:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Article (記事)]]></category>

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

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

		<guid isPermaLink="false">http://www.churadesign.com/2008/05/19/arduino%e3%81%a7fon%e3%81%a8%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%ab%e9%80%9a%e4%bf%a1dd-wrt%e5%8c%96/</guid>
		<description><![CDATA[
しばらくFonとして運用していましたが、MyPlace、FON_APともあまりにも遅く、接続が頻繁に途切れるなどトラブルが多かったので物置に眠っていたのですが、DD-WRT化の実験のために取り出してきました。
OSX + Arduino + Fonで正常に書き換えできましたのでメモしておきます。
コネクタケーブル作成
材料

Fon
Arduino
ケーブル
1&#215;6メスコネクタ

コネクタへケーブルを次のようにはんだづけします。

黒: GND - 1pin
緑: TX - 3pin
黄: RX - 4pin

 
Fon、Arduinoと接続
 
FonにはGND（黒）を箱側にして2列のIC側に接続します。Arduinoには黒-GND、緑-TX-6ピン、黄-RX-7ピンに接続します。
ソフトウェア
AF_SoftSerial libraryをダウンロードし、Arduinoのディレクトリのhardware/libraryにコピーします。
Arduinoに次のコードを入力し転送します。

#include &#60;AFSoftSerial.h&#62;

AFSoftSerial mySerial =  AFSoftSerial(6, 7);

void setup()  {
pinMode(13, OUTPUT);
Serial.begin(9600);
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
}

void loop()                     [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.churadesign.com/wp-content/uploads/2008/05/arduino-and-fon.jpg" alt="arduino_and_fon" width="480" height="360" /></p>
<p>しばらくFonとして運用していましたが、MyPlace、FON_APともあまりにも遅く、接続が頻繁に途切れるなどトラブルが多かったので物置に眠っていたのですが、DD-WRT化の実験のために取り出してきました。</p>
<p>OSX + Arduino + Fonで正常に書き換えできましたのでメモしておきます。</p>
<h2>コネクタケーブル作成</h2>
<p>材料</p>
<ul>
<li>Fon</li>
<li>Arduino</li>
<li>ケーブル</li>
<li>1&#215;6メスコネクタ</li>
</ul>
<p>コネクタへケーブルを次のようにはんだづけします。</p>
<ul>
<li>黒: GND - 1pin</li>
<li>緑: TX - 3pin</li>
<li>黄: RX - 4pin</li>
</ul>
<p> </p>
<h2>Fon、Arduinoと接続</h2>
<p><img style="float:left;" src="http://www.churadesign.com/wp-content/uploads/2008/05/img-0519.jpg" alt="IMG_0519.JPG" width="480" height="360" /> <img src="http://www.churadesign.com/wp-content/uploads/2008/05/img-0521.jpg" alt="IMG_0521.JPG" width="480" height="360" /></p>
<p>FonにはGND（黒）を箱側にして2列のIC側に接続します。Arduinoには黒-GND、緑-TX-6ピン、黄-RX-7ピンに接続します。</p>
<h2>ソフトウェア</h2>
<p><a href="http://www.ladyada.net/make/eshield/AFSoftSerial.zip">AF_SoftSerial library</a>をダウンロードし、Arduinoのディレクトリの<strong>hardware/library</strong>にコピーします。</p>
<p>Arduinoに次のコードを入力し転送します。</p>
<pre class="syntax-highlight:c">
#include &lt;AFSoftSerial.h&gt;

AFSoftSerial mySerial =  AFSoftSerial(6, 7);

void setup()  {
pinMode(13, OUTPUT);
Serial.begin(9600);
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
}

void loop()                     // run over and over again
{
if (mySerial.available()) {
Serial.print((char)mySerial.read());
}
if (Serial.available()) {
mySerial.print((char)Serial.read());
}
}
</pre>
<h2>接続</h2>
<p>Fonの電源を入れるとシリアルコンソールに起動画面が表示されるはずです。</p>
<p>OSXでは</p>
<p>ターミナルを立ち上げ</p>
<p class="terminal">screen /dev/tty.usbserial-A4001sLW</p>
<p>とすることで、Fonと接続できます。接続ができたら<a title="こちらの手順" href="http://www.dd-wrt.com/wiki/index.php/LaFonera_Software_Flashing">こちらの手順</a>にそってDD-DRT化することができます。</p>
<h2>備考</h2>
<p>FonのRXを接続したままでは電源を入れても起動しない場合があります。その場合はArduinoから黄色のケーブルを抜いておいて起動メッセージが表示された後にケーブルを接続します。</p>
<h2>参考:</h2>
<p>http://www.ladyada.net/make/eshield/download.html<br />
http://www.dd-wrt.com/wiki/index.php/LaFonera_Software_Flashing<br />
http://jauzsi.hu/2006/10/13/inside-of-the-fonera<br />
http://www.easy2design.de/bla/?page_id=98<br />
http://labs.echoditto.com/hacking-la-fonera-2<br />
http://www.mariomix.net/mariomix-blog/2006/11/hacking-la-fonera-parte-3/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.churadesign.com/2008/05/19/arduino%e3%81%a7fon%e3%81%a8%e3%82%b7%e3%83%aa%e3%82%a2%e3%83%ab%e9%80%9a%e4%bf%a1dd-wrt%e5%8c%96/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
