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

<channel>
	<title>ひげろぐ</title>
	<atom:link href="http://higelog.brassworks.jp/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://higelog.brassworks.jp</link>
	<description>おれはしょうきにもどった！（二度目）</description>
	<lastBuildDate>Tue, 15 May 2012 14:29:04 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/" />
		<item>
		<title>しばらく見ぬ間にXcodeも進歩していた</title>
		<link>http://higelog.brassworks.jp/?p=2120</link>
		<comments>http://higelog.brassworks.jp/?p=2120#comments</comments>
		<pubDate>Tue, 15 May 2012 14:29:04 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[iPhone/iPad開発]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[RubyMotion]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2120</guid>
		<description><![CDATA[このところ昔Xcodeを使ってObjective-Cで書いたアプリをRubyMotionで書き直してみたりしている。とても楽しくて仕方が無い。 一方で長い間Xcodeとはご無沙汰だったので、そちらは今どうなっているのだろ [...]]]></description>
			<content:encoded><![CDATA[<p>このところ昔Xcodeを使ってObjective-Cで書いたアプリをRubyMotionで書き直してみたりしている。とても楽しくて仕方が無い。<br />
一方で長い間Xcodeとはご無沙汰だったので、そちらは今どうなっているのだろうかとRubyMotionと比較する上で気になった。そこで一年ぶりくらいにXcodeをちょっとだけ触ってみたが、どうやらこちらもけっこうよろしくなっている。</p>
<h4>メモリ管理が不要になった</h4>
<p>Xcode 4.2.1以降ではプロジェクト作成時に「Use Automatic Reference Counting (ARC)」にチェックを付けると自前でメモリ管理しなくてもよくなった。</p>
<p>Objective-CをRubyMotionに書き換えるときメモリ管理に由来するコードをバッサリ削るのが楽しかったが、Objective-Cでも今ならバッサリいける。</p>
<p>メモリ管理の煩わしさがなくなると同時にコードの見通しも大分よくなる。<br />
またオブジェクトのリファレンスカウントを気にしなくてよくなったので、メソッドやクラスの抽出が割と気軽にできるようになったのは大きい。</p>
<h4>テストが実行しやすくなった</h4>
<p>以前はユニットテストを実行するのに自分でターゲットを作ったりとかしちめんどくさい手続きが必要だったが、現在ではプロジェクト作成時に自動で環境を整えられるほか、「Command+U」ですぐに実行できるようになっている。</p>
<p>実際に本格的なテストを書き始めたらどんな具合なのかはわからないが、とりあえずテストを走らせるのが簡単になったのはとてもいい。</p>
<h4>Xcode4.4から各種リテラルが導入される</h4>
<p>もうすぐ配列、ハッシュ、数値などが簡単に定義できるようになる。<br />
メモリ管理の件もあってこれら基本的なオブジェクトを使うのも一仕事といったかんじだったが、これで大分気楽になりそう。</p>
<h5>参考</h5>
<ul>
<li><a href="http://cocoaheads.tumblr.com/post/17757846453/objective-c-literals-for-nsdictionary-nsarray-and">CocoaHeads &bull; Objective-C literals for NSDictionary, NSArray, and NSNumber</a></li>
</ul>
<h4>Storyboard</h4>
<p>InterfaceBuilderに画面遷移まで管理できる仕組みが加わってGUIのプロダクトを作るIDEとしての完成度が高まった。<br />
個人的にはコードでUIを組み立てるやり方で不足を感じていないので使う予定はないけれど、かつて自分のようにInterfaceBuilderを投げ捨てた人がStoryboardの登場により戻っている例もあるようなので、もしかするとかなりいいものなのかもしれない。</p>
<p>ちなみにStoryboardはRubyMotionでも1.4でサポートされた。</p>
<h4>まとめ</h4>
<p>変更点を網羅したわけではなくちょっとぐぐったり手を動かしてみただけだけど、Xcodeでの開発も以前に比べてやりやすくなっていると感じた。<br />
特にメモリ管理の負担がなくなったのが大きい。XcodeとObjective-Cを使った開発も苦痛ってほどではなくなったように見える。</p>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2120</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2120" />
	</item>
		<item>
		<title>RubyMotion Weekだった今週</title>
		<link>http://higelog.brassworks.jp/?p=2115</link>
		<comments>http://higelog.brassworks.jp/?p=2115#comments</comments>
		<pubDate>Thu, 10 May 2012 21:38:26 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[iPhone/iPad開発]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyMotion]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2115</guid>
		<description><![CDATA[かなりの盛り上がりでGitHubには雨後の筍のように新しいプロジェクトが次々できている有様。 個人的にも昔Objective-Cで書いたものをRubyで書き直してみたりしていてRubyMotion成分濃い目のエキサイトし [...]]]></description>
			<content:encoded><![CDATA[<p>かなりの盛り上がりでGitHubには雨後の筍のように新しいプロジェクトが次々できている有様。<br />
個人的にも昔Objective-Cで書いたものをRubyで書き直してみたりしていてRubyMotion成分濃い目のエキサイトした週だった。</p>
<p>正直勢いがありすぎて自分では追い切れてないが、公式ブログにリリース後一週間の熱狂が綴られていたので抄訳してみる。</p>
<p><a href="http://blog.rubymotion.com/post/22786128344/what-a-week">RubyMotion&#8217;s Blog — What a week!</a></p>
<h5>コミュニティ</h5>
<ul>
<li>今日までにユーザーによる約55のRubyMotion関連リポジトリがGitHubにできている</li>
<li>GLKit/OpenGL, Facebook, Parse, cocos2d等の特殊なフィーチャーやフレームワークのサンプルデモ</li>
<li>CoreDataやUIKit等の抽象化</li>
<li>Redcar、TextMate、Vimのコード補完を含むRubyMotionサポート</li>
<li>RailsFactoryの人々によるRubyMotionに関連する諸々のトラッキングは素晴らしい仕事だ</li>
</ul>
<h5>アップデート</h5>
<ul>
<li>簡単なバグ修正のために3回のアップデートを行った</li>
<li>4つめのアップデートも週末前に予定している</li>
</ul>
<h5>エデュケーションライセンス</h5>
<ul>
<li>エデュケーションライセンスの問い合わせを多数受けている</li>
<li>学生がRubyMotionを使ってくれるのは喜ばしい</li>
<li>レスポンスが遅れていてすまないが来週から順次連絡させてもらう</li>
</ul>
<h5>メンテナンス更新料</h5>
<ul>
<li>購入から一年の間はアップデートとサポートは無料</li>
<li>それ以降のアップデートとサポートにはメンテナンスプログラムの更新が必要</li>
<li>価格は今のところ新規購入の半額の$99/年を考えている</li>
</ul>
<h5>先行者ディスカウント</h5>
<ul>
<li>現在行っている25%のディスカウントはあと3週間続けようと思っている</li>
</ul>
<p>以上。<br />
各種リンクなどは原文からどうぞ。</p>
<p>メンテナンス更新料の情報なども出ている。価格はまあ妥当なところかな？と思う。<br />
それはさておきRubyMineもRubyMotionサポートはやく！</p>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2115</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2115" />
	</item>
		<item>
		<title>Titanium MobileとRubyMotionの比較</title>
		<link>http://higelog.brassworks.jp/?p=2103</link>
		<comments>http://higelog.brassworks.jp/?p=2103#comments</comments>
		<pubDate>Sun, 06 May 2012 16:01:34 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[iPhone/iPad開発]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Titanium]]></category>
		<category><![CDATA[RubyMotion]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2103</guid>
		<description><![CDATA[双方とも脱Objective-Cを実現してくれるプロダクトだけど性格はけっこう違う。 共通で興味を持っている人が多そうなので思うところをとりとめもなく書いてみる。 取っつきやすさ iOS SDK開発未経験者がとっつきやす [...]]]></description>
			<content:encoded><![CDATA[<p>双方とも脱Objective-Cを実現してくれるプロダクトだけど性格はけっこう違う。<br />
共通で興味を持っている人が多そうなので思うところをとりとめもなく書いてみる。</p>
<h4>取っつきやすさ</h4>
<p>iOS SDK開発未経験者がとっつきやすいのはTitanium。おそらくRuby経験者でも。<br />
逆にiOS SDK経験者ならばRubyMotionの方が入って行きやすいかもしれない。</p>
<p>RubyMotionはiOS SDKのAPIをタイトになぞっているためにiOS SDKのAPIに関する知識が必要だが、iOS SDKのAPIには直感的じゃない部分が多々あって、それに馴染むまでけっこう時間がかかる。その学習コストがけっこう高い。<br />
TitaniumのAPIはTitanium独自のものだが整理されていて扱いやすい。学習コストは皆無ではないがiOS SDKに比べればずっと楽。</p>
<p>またObjective-Cよりマシとは言えRubyMotionで何かを実現するために必要なコード量はTitaniumのそれよりも概して多い。<br />
例えばアラート一つ表示するにしても以下のような差がある。</p>
<h5>Titanium</h5>
<pre class="brush: javascript">alert('HOGEHOGE');</pre>
<h5>RubyMotion</h5>
<pre class="brush: ruby">alert = UIAlertView.new
alert.message = 'HOGEHOGE'
alert.addButtonWithTitle 'OK'
alert.show</pre>
<p>4倍の差ですよ。</p>
<p>ただ書き味はRubyそのものでさくさくプログラミングしていくことができる。<br />
そのためオレオレ仕様のラッパーをどんどん作っていくのも簡単で、例えば上記のアラートの例ではショートカットの定義なども容易にできる。</p>
<pre class="brush: ruby">class Shortcut
  def self.alert(message)
    av = UIAlertView.new
    av.message = message
    av.addButtonWithTitle 'OK'
    av.show
  end
end</pre>
<p>これをアプリケーションコードのどこかに書いておけば、Titaniumには及ばないが以下のごとく大分短く記述できる。</p>
<pre class="brush: ruby">Shortcut.alert('HOGEHOGE')</pre>
<p>こうしたラッパーライブラリのようなものが充実してくれば、RubyMotionのiOS SDKの知識が必須という話は変わってくるかもしれない。<br />
そしてRubyの柔軟性とRubyMotionのパワフルさにはそれを実現する可能性が十分にあると思う。<br />
走りとしてすでに<a href="https://github.com/mattetti/BubbleWrap">BubbleWrap</a>といったものができていたりする。</p>
<h4>機能性</h4>
<p>思い通りのことができるかという意味で。かゆいところに手が届きやすいかどうか。<br />
これはiOS SDKのすべての機能が使えるRubyMotionの方が上。</p>
<p>Titaniumでも通り一遍のことはできるのでほとんどの場合それで不自由を感じないが、今一歩手が届かないというギャップにはまってしまう時もある。モジュールを作ったり生成されたObjective-Cのコードにパッチを当てるといったフォローの手段はあるので、そうしたギャップもだいたいは解決できるが乗り越えるのにちょっと苦労するということで減点。</p>
<h4>パフォーマンス</h4>
<p>これはRubyのコードからバイナリにコンパイルしてしまうRubyMotionの方が上。<br />
TitaniumはJavaScriptをインタプリタで動かしているのでどうしても遅くなり、パフォーマンスが要求されるアプリケーションには対応が難しい。</p>
<h4>ユーザー</h4>
<p>Titaniumはすでにかなりのユーザーがいて日本でのコミュニティ活動も活発。開発実績も揃ってきている。JavaScript自体のユーザー数が多く、今後もJavaScriptで開発できるという特徴は人気を集めそう。</p>
<p>一方でリリースされたばかりのRubyMotionは興味を持っている人はともかくユーザー数はまだ少なそう。有償と言うこともあるし。<br />
見込みユーザー的に言うと既存のRubyプログラマーでiOS開発に強いモチベーションを持っている人間というのはそれほど数がいない気がする。どちらかと言うと現在Objective-CでiOS開発をしていて、Objective-Cにはもううんざりだよ、という人達がターゲットなのかなという気がする。</p>
<h4>ライブラリ</h4>
<p>Titaniumは多くのJavaScriptのライブラリのほか、ネイティブ言語で書かれたモジュールにより機能拡張ができる。そうしたライブラリをマーケットプレイスで売ったり買ったりできる仕組みがあるのも面白い。</p>
<p>RubyMotionはCocoaPodsによってObjective-Cで書かれたライブラリが使えるほか、Rubyで書かれたライブラリもapp以下に設置すればビルド時にコンパイルされる。<br />
ただしRubyの既存のGemはほぼ使えない。例えばRubyMotionはアプリケーションコード内でのrequireをサポートしていないのでrequireが含まれたものは全滅するなど。</p>
<h5>追記</h5>
<p>RubyMotion用のGemが作れると言うけどドキュメントにはないなと思っていたら書き途中と言うことみたい。</p>
<p><a href="https://twitter.com/#!/lrz/status/198781031619379202">https://twitter.com/#!/lrz/status/198781031619379202</a></p>
<h4>TDD</h4>
<p>TitaniumはJavaScriptのテスティングフレームワークが使えるが定番のものはなく、各自それぞれ試行錯誤している模様。<a href="https://github.com/akahigeg/jasmine-titanium">Jasmine Titanium</a>とか作っていた時期が俺にもありました。</p>
<p>RubyMotionは標準で<a href="https://github.com/alloy/MacBacon">MacBacon</a>というRSpecクローンを用いたテストをサポートしている。標準のものがあるというのは大きい。</p>
<h4>デバッグ</h4>
<p>TitaniumはTitanium StudioというIDEがあってデバッガ完備。でも自分はそれを使いこなせないオールドタイプなんだけど。</p>
<p>RubyMotionはコンソールにログがでるだけだけど、クラッシュしたときのエラーメッセージがObjective-Cでの開発に比べると分かりやすく出るようになっていて助かる（それでもたまに黙って死ぬけど）。<br />
それからインタラクティブシェルが面白すぎる。rakeした後のコンソールにプロンプトが表示されるのだけど、ここにコードを打ち込むとシミュレータ上で動いているアプリケーションをいろいろと操作することが可能。iOS SDKのAPIの挙動のテストなどもいちいち再コンパイルすることなくできるの超便利。</p>
<h4>プラットフォーム</h4>
<p>TitaniumはiOSとAndroidのクロスプラットフォーム対応。<br />
RubyMotionはiOSのみ。RubyでAndroid開発したいなら<a href="http://ruboto.org/">Roboto</a>があるよとのこと。</p>
<h4>安定度</h4>
<p>RubyMotionはこのあたりが未知数。個人的に過去に作ったアプリを移植してみて様子を見てみたい。<br />
Titaniumは開発中は様々不思議に出くわすが、出来てしまえば不安定と言うことはない印象。</p>
<h4>将来性</h4>
<p>Titaniumはこの点心配なさそう。</p>
<p>RubyMotionは未知数。有償版のみということでユーザー数の伸びがどうなるのかわからないし、RubyでiOSアプリが作れるということであれば<a href="http://mobiruby.org/">MobiRuby</a>という競合が今夏リリース予定だったりもする。</p>
<p>サンプルコードを眺めるとMobiRubyはRubyそのままというわけでもないようなのでRubyMotionの方が使いやすそうではあるが。</p>
<h4>最後に</h4>
<p>色々比較してみたけど特に結論は無い。<br />
つらつら書いたことが何かの参考になればこれ幸いと行ったところ。</p>
<p>とりあえずすでにObjective-Cで書いてる人にはiOS SDKの壁はないと思うのでRubyMotionマジオススメ。</p>
<p>Rubyが使えるからとRubyMotionを買った人は思ったより簡単じゃないのでちょっとがっかりするかもしれないけど、せっかく買ったんだからお金がもったいないし、がんばってiOS SDKの壁に挑んで欲しい。<br />
ついでにMacRubyに目覚めたりすると世界が広がるかもしれないし。</p>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2103</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2103" />
	</item>
		<item>
		<title>RubyMotionでCocoaPodsを使う</title>
		<link>http://higelog.brassworks.jp/?p=2092</link>
		<comments>http://higelog.brassworks.jp/?p=2092#comments</comments>
		<pubDate>Sun, 06 May 2012 09:06:02 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[iPhone/iPad開発]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyMotion]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2092</guid>
		<description><![CDATA[CocoaPodsはRubyで言うとBundlerみたいなもの。 Objective-Cのプロジェクトにおいてライブラリの依存性を管理して使いやすくしてくれる。 podとして提供されているライブラリの一覧はここにまとまっ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://cocoapods.org/">CocoaPods</a>はRubyで言うとBundlerみたいなもの。<br />
Objective-Cのプロジェクトにおいてライブラリの依存性を管理して使いやすくしてくれる。<br />
podとして提供されているライブラリの一覧は<a href="https://github.com/CocoaPods/Specs">ここ</a>にまとまっている。</p>
<p>RubyMotionでもこのCocoaPodsを利用できる。<br />
以下だいたい<a href="http://www.rubymotion.com/developer-center/articles/cocoapods/">公式のドキュメント</a>通り。</p>
<h4>CocoaPodsのインストール</h4>
<p>まずはCocoaPodsを入れてセットアップする。sudoはRVMを使っているなら不要。</p>
<pre class="brush:shell">$ [sudo] gem install cocoapods
$ pod setup</pre>
<h4>motion-cocoapodsのインストール</h4>
<p>次にRubyMotionからCocoaPodsを使うためのmotion-cocoapodsを入れる。</p>
<pre class="brush:shell">$ [sudo] gem install motion-cocoapods</pre>
<h4>Rakefileの修正</h4>
<p>RubyMotionプロジェクト内のRakefileを修正する。</p>
<pre class="brush:ruby">$:.unshift("/Library/RubyMotion/lib")
require 'motion/project'
require 'motion-cocoapods'

Motion::Project::App.setup do |app|
  # Use `rake config' to see complete project settings.
  app.name = 'Hello'
  app.identifier = 'jp.brassworks.Hello'
  app.pods do
    dependency 'JSONKit'
    dependency 'Reachability'
    dependency 'FMDB'
  end
end</pre>
<p>これで指定したライブラリが使えるようになる。<br />
podはrakeした時に自動的にダウンロードおよびビルドされるので、このほかには何もしなくて良い。</p>
<p>これはいろいろと捗る。</p>
<h4>不具合への対応</h4>
<p>現時点でのmotion-cocoapodsには不具合があってちょっと細工をしないとうまく動かない。<a href="https://github.com/HipByte/motion-cocoapods/issues/1">レポート</a>は上がっているので早晩この問題はなくなると思うが、とりあえずその場しのぎに。</p>
<h5>/Library/RubyMotion/lib/motion/project/vendor.rbの修正</h5>
<p>77行目を以下のように書き換える</p>
<pre class="brush:ruby">- objs = Dir.glob('*/**/*.o')
+ objs = (Dir.glob('*/**/*.o') + Dir.glob("*.o") + Dir.glob("*/*.o")).uniq</pre>
<h5>rake &#8211;traceで実行する</h5>
<p>この状態でrakeしてもなにやらエラーが出てうまくいかないが、rake &#8211;traceで実行するとうまく動く。</p>
<p>とまあ、リリースされたばかりと言うことでちょこちょこ問題はあるが、早くもRubyMotion 1.1が出たりと動きは速いので、こちらも早々の修正を期待したい。</p>
<p>ちなみにいきなり不具合のエントリーを上げてしまったけど、だいたいの部分ではちゃんと動き過ぎて面白いというか驚いてる。</p>
<h4>2012/05/07追記</h4>
<p>不具合はRubyMotion 1.2で修正された。</p>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2092</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2092" />
	</item>
		<item>
		<title>RubyMotionがすごい</title>
		<link>http://higelog.brassworks.jp/?p=2081</link>
		<comments>http://higelog.brassworks.jp/?p=2081#comments</comments>
		<pubDate>Fri, 04 May 2012 14:32:06 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[iPhone/iPad開発]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[RubyMotion]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2081</guid>
		<description><![CDATA[RubyMotionを使うとObjective-Cの代わりにRubyでiOSアプリを作ることができる。 有料版しかなく無償で試したりはできないがRubyMotionのサイトやサンプルコードを見てすぐに購入した。これはいい [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rubymotion.com/">RubyMotion</a>を使うとObjective-Cの代わりにRubyでiOSアプリを作ることができる。<br />
有料版しかなく無償で試したりはできないがRubyMotionのサイトや<a href="https://github.com/HipByte/RubyMotionSamples">サンプルコード</a>を見てすぐに購入した。これはいいものだ。</p>
<p>日本語での概要は以下に良くまとまっている。</p>
<ul>
<li><a href="http://el.jibun.atmarkit.co.jp/rails/2012/05/macrubyiosrubym-7bc3.html">Rails Hub情報局: MacRubyがiOSに来た！RubyでiOSのネイティブアプリ開発ができる「RubyMotion」登場</a></li>
<li><a href="http://watson1978.github.com/blog/2012/05/03/first-step-in-rubymotion_ja/">RubyMotion、はじめの一歩 &#8211; Watson&#8217;s Blog</a></li>
</ul>
<p>一言で言うと今までObjective-Cで我慢して書いていたものをすべてRubyでサクッと書いちゃおうぜ、というノリのものだ。<br />
JavaScriptに対するCoffeeScriptの関係に似ているかもしれない。</p>
<p>個人的には以下の利点だけで値千金。</p>
<ul>
<li>配列や文字列の処理がとてもとても楽ちん</li>
<li>メソッド定義およびメソッド呼び出しが簡単</li>
<li>いちいちヘッダーファイルを書かなくていい</li>
<li>テストが書きやすい（RSpecっぽく書ける）</li>
</ul>
<p>すべてObjective-Cで悩ましかったところだ。<br />
ほかコマンドラインからビルドや実機転送ができる、好きなエディタで書ける（補完が効かないけど）、メモリ管理が不要等々。とにかくフットワークが軽くなる。インタラクティブシェルも面白そう。</p>
<p>RubyMotionは基本的にiOS SDKのAPIを忠実になぞった出来になっていて、iOS SDKのクラス名やメソッド名がRubyのコードの中でそのまま使える。そのためiOS SDKの持つすべての機能を使うことができ、Objective-Cでの開発経験がある開発者なら今までの知識を生かしつつ、Objective-Cの煩わしさを捨ててRubyでサクサク書いていくことができる。<br />
逆に言うとiOS SDKの知識が必須となるのだが、そのあたりはApple公式のAPIドキュメントがよく整理されているのと、既存のサンプルコードなどが参考になるのでそこまで大きな問題ではないと思う。Objective-CのコードをRubyのコードに置き換える応用性が必要になるので全くの初心者にはちょっと厳しいかもしれないが。</p>
<p>まだリリースされたばかりのプロダクトなので安定度（手元のMBPでは実機転送ができなかった。一方でAirちゃんではできたりとか）やプロジェクトの継続性などは未知数だがこれはちょっと面白くて小気味いいのでしばらく使ってみたい。</p>
<h4>その他参考</h4>
<ul>
<li><a href="http://watson1978.github.com/blog/2012/05/03/creating-an-ios-application-using-rubymotion_ja/">RubyMotion で簡単な iOS アプリを作ってみよう &#8211; Watson&#8217;s Blog</a></li>
<li><a href="http://joshsymonds.com/blog/2012/05/04/why-rubymotion-is-better-than-objective-c/">Why RubyMotion Is Better Than Objective-C &#8211; Josh Symonds</a></li>
<li><a href="http://merbist.com/2012/05/04/macruby-on-ios-rubymotion-review/">RubyMotion &#8211; Ruby for iOS review | Matt Aimonetti</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2081</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2081" />
	</item>
		<item>
		<title>Nanoc以外の静的サイト生成ツールを調べてみた</title>
		<link>http://higelog.brassworks.jp/?p=2076</link>
		<comments>http://higelog.brassworks.jp/?p=2076#comments</comments>
		<pubDate>Tue, 10 Apr 2012 17:25:42 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Nanoc]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2076</guid>
		<description><![CDATA[最近自分の中で静的サイト生成ツールが静かなブームを呼んでいるのでNanoc以外にも何かないのかなと他のツールを探してみることにした。ついてはWordPressのバージョンアップが面倒になってきたので運用しているもろもろの [...]]]></description>
			<content:encoded><![CDATA[<p>最近自分の中で静的サイト生成ツールが静かなブームを呼んでいるのでNanoc以外にも何かないのかなと他のツールを探してみることにした。ついてはWordPressのバージョンアップが面倒になってきたので運用しているもろもろのサイトの移行も考えていたりして。</p>
<p>ポピュラーなツールやライブラリを探すにはとりあえず<a href="https://www.ruby-toolbox.com/">The Ruby Toolbox</a>だよね、ということでNanocで検索してNanocの属している<a href="https://www.ruby-toolbox.com/categories/static_website_generation">Static Web Generation</a>をポチ。</p>
<p>けっこうたくさん出て来たが勢いのある上の方のやつだけチェックしてみた。</p>
<ul>
<li>Jekyll</li>
<li>Middleman</li>
<li>High Voltage</li>
<li>Nanoc</li>
<li>Stasis</li>
</ul>
<h4>Jekyll</h4>
<p><a href="https://github.com/mojombo/jekyll">mojombo/jekyll GitHub</a></p>
<p>GitHubで採用されているだけあってダントツのスコア。単にページを作成するほか、ブログ形式でポストを追加していく機能も持っている。WordPress等の他のCMSからの移行ツールが用意されているのは興味深い。試したらイマイチ期待通りに動かなかったけど。</p>
<p>ところで基本のディレクトリ構成を最初に自分で組み立てないといけないのだが、これのせいでちょっと取っつきにくい。自動で作ってくれるようなものはないのだろうか？と思ったら<a href="https://github.com/mojombo/jekyll/pull/461">pull request</a>があった。けど取り込まれてないみたい。ポリシー的にこういう機能を取り込む気はなさげ？</p>
<p>簡単に試す意味ではチュートリアルとして紹介されている<a href="http://jekyllbootstrap.com/">Jekyll Bootstrap</a>はなかなか良かった。テーマの仕組みも作れるとは。ともかくJekyllのスタートにはこれ激しくオススメ。</p>
<p>プラグイン機構も持っていてすでに多くのプラグインがある。このユーザーベースの大きさはメリットかもしれない。</p>
<h5>参考</h5>
<ul>
<li><a href="http://mattn.kaoriya.net/software/lang/ruby/20090409185248.htm">Big Sky :: Jekyllで始める簡単ブログ</a></li>
<li><a href="http://css.studiomohawk.com/jekyll/2011/06/11/jekyll/">Jekyll | CSS Radar | Mini Books For Front End Developers</a></li>
</ul>
<h4>Middleman</h4>
<p><a href="http://middlemanapp.com/">Middleman: Hand-crafted frontend development</a></p>
<p>Sinatraベースの静的サイトジェネレーター。<br />
プログラマブルで柔軟性はありそうだが、これにブログを移行するとしたら逆に自分で書くことが多くなりすぎるぽい。</p>
<p>Dynamic Pagesという仕組みはデータを元に静的ページをたくさん作るには便利そうだ。同じようなことはNanocではDataSource、JekyllならプラグインでGeneratorsを作ればできそうだが。<br />
それと出力の加工にRack Middlewareも使えるのは面白い。要はSinatraということなのかな。</p>
<h5>参考</h5>
<ul>
<li><a href="http://aligach.net/diary/20110810.html">あーありがち &#8211; 最新のfrontend技術を使いまくれる静的サイトジェネレータMiddleman</a></li>
</ul>
<h4>High Voltage</h4>
<p><a href="https://github.com/thoughtbot/high_voltage">thoughtbot/high_voltage GitHub</a></p>
<p>Rails engineということでRailsとの組み合わせで使うようだ。<br />
Railsのバージョンアップに引きずられて面倒なことになりそうなのでパス。</p>
<h4>Nanoc</h4>
<p><a href="http://nanoc.stoneship.org/">nanoc: a Ruby site compiler that generates static HTML &raquo; home</a></p>
<p>昨年から使っている静的サイトジェネレーター。<br />
ヘルパーとフィルターをごりごり書けば割と何でもできてしまうので実は不足を感じていない。</p>
<h4>Statis</h4>
<p><a href="http://stasis.me/">Stasis &#8211; Static Sites Made Powerful</a></p>
<p>基本的な静的ファイル生成に加えて何かフィルター的な処理をしたければプロジェクト直下のcontroller.rbの中でまとめてやるようだ。ある意味シンプル。しかしブログっぽい物を作ろうとしたら相当頑張る必要がありそう。</p>
<h4>さて、どれがいいだろう</h4>
<p>JekyllかNanocかな。<br />
NanocのバックグラウンドがなければJekyllを選択しただろう。しかしNanocを使い慣れているので積極的に移行する必要性を感じない。</p>
<p>要はMarkdownで書けてちょっとプログラムで出力をいじれたらそれでいいってことなんです。<br />
それがNanocより楽できるものがひょっとしてあったりしないかなと思って調べてみたけれど、思い通りのレイアウトやページ構成にするには結局自分で色々書かないといけないようだ。</p>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2076</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2076" />
	</item>
		<item>
		<title>Rubyで短縮URLを展開</title>
		<link>http://higelog.brassworks.jp/?p=2073</link>
		<comments>http://higelog.brassworks.jp/?p=2073#comments</comments>
		<pubDate>Mon, 26 Mar 2012 06:00:11 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2073</guid>
		<description><![CDATA[hugeurl 既存のものがないか探してみるとhugeurlというgemがあった。 shokai/hugeurl · GitHub rubyで短縮URLの展開 &#124; tjun memo しかし中身をちょっとのぞいてみるとT [...]]]></description>
			<content:encoded><![CDATA[<h4>hugeurl</h4>
<p>既存のものがないか探してみるとhugeurlというgemがあった。</p>
<ul>
<li><a href="https://github.com/shokai/hugeurl">shokai/hugeurl · GitHub</a></li>
<li><a href="http://tjun.jp/blog/2011/06/ruby-extend-url/">rubyで短縮URLの展開 | tjun memo</a></li>
</ul>
<p>しかし中身をちょっとのぞいてみるとTwitterのhugeurlを使っているところがなんだか微妙だ。<br />
しかもhugeurl自体が使えなくなってるくさい？APIドキュメントにも載ってないしアクセスするとNot Foundだし。</p>
<h4>Locationヘッダから取得する</h4>
<ul>
<li><a href="http://blog.sorah.jp/2011/01/03/ruby-url-expand-is-strange">RubyでURL短縮展開のコードがきもいです&#8230; &#8211; sorah.blog</a></li>
<li><a href="http://projectzero-swb.blogspot.jp/2010/12/urlruby.html">Schwarze SQ: 短縮URLを展開するRubyスクリプトを作ってみた</a></li>
</ul>
<p>短縮URLに問い合わせてリダイレクト先をLocationから取るというのは分かりやすい。<br />
エラー処理を軽く追加すれば汎用的に使えて良さそうだ。</p>
<h4>更に汎用的なもの</h4>
<p><a href="https://github.com/moski/url_expander">moski/url_expander</a>というgemは以下のような短縮URLにも対応している。</p>
<ul>
<li>ネストされた短縮URL</li>
<li>HTMLのメタタグでリダイレクトする短縮URL</li>
</ul>
<p>ネストされた短縮URLはbit.lyのURLが更にt.coで短縮されている、みたいなもの。これを追いかけて展開するかしないかをオプションで指定できるようになっている。</p>
<p>「HTMLのメタタグでリダイレクトする短縮URL」とは、短縮URLを踏むとリダイレクトサービスのページが表示されて、そこからHTMLのメタタグで本来のURLにリダイレクトする形式のもの。そんなものもあるのだね。</p>
<p>といったかんじで、よりきめ細かく対応してくれるわけだが、該当するクラスのないURL短縮サービスに対してはエラーを返すので新しいサービスが出て来たら都度クラスを追加していかなくてはいけない。</p>
<p>しかし短縮URLサービスも多いね。</p>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2073</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2073" />
	</item>
		<item>
		<title>Adobe Shadowが便利</title>
		<link>http://higelog.brassworks.jp/?p=2069</link>
		<comments>http://higelog.brassworks.jp/?p=2069#comments</comments>
		<pubDate>Sun, 25 Mar 2012 00:58:00 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[Android開発]]></category>
		<category><![CDATA[iPhone/iPad開発]]></category>
		<category><![CDATA[作業環境]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2069</guid>
		<description><![CDATA[PC側のChromeで表示したウェブページがスマフォやタブレット側のShadowにも同期して表示されるというもの。 これは使っていない人がいたら是非使って欲しい。 アドビの新ツール「Shadow」は、モバイル用Webアプ [...]]]></description>
			<content:encoded><![CDATA[<p>PC側のChromeで表示したウェブページがスマフォやタブレット側のShadowにも同期して表示されるというもの。<br />
これは使っていない人がいたら是非使って欲しい。</p>
<ul>
<li><a href="http://www.publickey1.jp/blog/12/shadowweb.html">アドビの新ツール「Shadow」は、モバイル用Webアプリ開発者必須のツール － Publickey</a></li>
<li><a href="http://cuaoar.jp/2012/03/adobe-shadow.html">Adobe Shadow の設定方法と注意点 &#8211; akihiro kamijo</a></li>
</ul>
<p>スマホ用のサイトを作ってる時の確認作業というのはURL入力がけっこうダルいものだったけど、これでそのダルさから開放される。テクノロジーの進歩は素晴らしい。<br />
ちなみにShadowを脳内で思わずスバドウと読んでしまうくらい某MMOの後遺症はまだ残っています＞＜ノ</p>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2069</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2069" />
	</item>
		<item>
		<title>ThinkPad Tabletがけっこういい</title>
		<link>http://higelog.brassworks.jp/?p=2063</link>
		<comments>http://higelog.brassworks.jp/?p=2063#comments</comments>
		<pubDate>Tue, 13 Mar 2012 15:18:46 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[ThinkPad Tablet]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2063</guid>
		<description><![CDATA[三代目iPadの発売直前だけどThinkPad Tabletを手に入れて触っている。自分としては初のAndroidタブレット。 もともとフォトフレーム兼おもちゃとしてどうかなと思って入手したのだけど、オプションのスタイラ [...]]]></description>
			<content:encoded><![CDATA[<p>三代目iPadの発売直前だけど<a href="http://shopap.lenovo.com/jp/products/tablets/thinkpad/" target="_blank">ThinkPad Tablet</a>を手に入れて触っている。自分としては初のAndroidタブレット。<br />
もともとフォトフレーム兼おもちゃとしてどうかなと思って入手したのだけど、オプションのスタイラスを使った手書き入力の快適さにびっくりした。これは実用ツールとしていけるじゃないか。<br />
スタイラスに関してはiPhoneやiPadで定評のあるものを買っても「ダメだろこれ」って代物ばかりだったのでもう諦めていたが、思わぬところで満足のいく手書きデバイスに出会えたという次第。ペン先が鉛筆のように細くて硬いのでペンでスムーズに書く感じが得られる。指先やゴム先じゃダメなんですよやっぱり。ちなみにこのスタイラスがiPadで使えれば無敵だったのだが、それは無理だった。</p>
<p>それにしてもThinkPad TabletのUIの挙動はスムーズで一昔前のAndroid端末にありがちだった動作のひっかかりやフリックしたつもりでアイコンをタップしてしまうといった不愉快さがなくなっている。<br />
iPadに比べるとシンプルさが足りず操作に戸惑うこともあるが、UIレスポンスの快適さに関してはけっこう差を詰めてきた感がある。日頃からAndroid端末をウォッチしているわけではないのでThinkPad Tabletが特別にいいのか最近のAndroidタブレットはみんなこうなのかはわからないが。</p>
<p>で、今は手書きメモアプリを探している。<br />
プリインストールされているものは妙に重かったので削除。それから「そういやEvernoteに手書きメモなかったっけ」と思い当たってとりあえずはEvernote+Skitchに落ち着いた。思わぬところでEvernoteに再入門ですよ。<br />
しかしSkitchの書き味がイマイチ（入力がベクターに変換されて細部がはしょられることがある）なのでまだ探し中。iPadのPenutimateくらいの書き味を持ったものがあればいいんだけど。とは言え現状でも十分に快適です。</p>
<p>ちなみにThinkPad Tabletは5月にAndroid4.0へのアップデートに対応する。Android4.0では筆圧にも対応するということで、もっと快適になるのか？と楽しみなんだけど動作が重くなったら嫌なのでしばらく様子見の予定。</p>
<p>iPadと比べると</p>
<ul>
<li>750gは片手で持ち続けるにはちょっと重い</li>
<li>バッテリーの持ちがiPadの半分以下（実際使った感じで）</li>
<li>いらないものが最初から入りすぎている（消せるのでまあいいけど）</li>
</ul>
<p>といった不満もあるけど快適動作するので許容範囲だ。ストレスなく動くAndroid端末は初めてだったので感動した。</p>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2063</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2063" />
	</item>
		<item>
		<title>Rubyのマジックコメントを自動で付加する</title>
		<link>http://higelog.brassworks.jp/?p=2057</link>
		<comments>http://higelog.brassworks.jp/?p=2057#comments</comments>
		<pubDate>Mon, 16 Jan 2012 05:38:52 +0000</pubDate>
		<dc:creator>akahige</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://higelog.brassworks.jp/?p=2057</guid>
		<description><![CDATA[VimやRubyMine等のエディタやIDEで新しくファイルを作成した時にマジックコメントを付加することはできるが、既存のファイルに対して適用することができないので別途手段を講じる必要に強くかられた。 有り体に言うとRa [...]]]></description>
			<content:encoded><![CDATA[<p>VimやRubyMine等のエディタやIDEで新しくファイルを作成した時にマジックコメントを付加することはできるが、既存のファイルに対して適用することができないので別途手段を講じる必要に強くかられた。<br />
有り体に言うとRailsのジェネレータが作成したファイルに日本語を含めたときにエラーになるという状況を繰り返すのにそろそろ飽きてきたという。</p>
<p>そこでまず自作しようとディレクトリを切ったところで、いやいや誰か作ってるのではないかと思い当たり、検索してみると案の定見つかった。</p>
<ul>
<li><a href="https://github.com/mrsimo/magic-commenter">magic_commenter</a></li>
<li><a href="https://github.com/m-ryan/magic_encoding">magic_encoding</a></li>
</ul>
<p>両方ともコマンドラインツールとして使用する。コマンドを打つとそのディレクトリ以下のRubyファイルを検索してマジックコメントを付加してくれる。<br />
まず最初にmagic_commenterを試してみたが、こちらはマルチバイト文字列が含まれているファイルにしかマジックコメントを付加してくれなかった。うーん、どっちかと言うとこれから日本語が含まれるかもしれないファイルにも付加して欲しいのに。<br />
対して次に試したmagic_encodingは問答無用ですべてのファイルにマジックコメントを付加するようになっていた。個人的にこちらの動作の方が望ましかったのでmagic_encodingを採用。</p>
<p>こうして車輪の再開発は免れた。</p>
<p>Railsに限って言うとカスタムのジェネレータを作成する手もあるのだろうけど、他にもファイルをジェネレートするフレームワークやツールがあることを考えると都度magic_encodingを利用するのが妥当な落としどころかと思う。</p>
]]></content:encoded>
			<wfw:commentRss>http://higelog.brassworks.jp/?feed=rss2&#038;p=2057</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://higelog.brassworks.jp/?p=2057" />
	</item>
	</channel>
</rss>

