RedcarエディタでRubyMotionの入力補完

ここ最近RubyMotionをいじってるんだけど、一番不便なのはXcodeのあのサクサクなオートコンプリートの恩恵を受けられないこと。
iOSのAPIは命名規則的に超長くなりがちなので空で打つのとか絶対無理。

そんな中、

RubyMotion Autocompletion – kattrali’s library

なるものを発見。これは使うっきゃない。

Redcar?


RedcarはRuby製のTextMate風テキストエディタらしい。(GPLなオープンソース)
JRubyで動作し、クロスプラットフォームなのがウリ。

早速入れてみよう。
installはgemで。
試した環境はrvmなruby1.9.2。

redcarコマンドでRubyMotionのプロジェクトとかを指定して開けばOK。

な感じ。

Redcar+RubyMotion


次に当初の目的であったRubyMotionのプラグインを入れる。

Redcar+RubyMotion by kattrali

redcarを終了して、

すればOK。
READMEに書いてある、rm ~/.redcar/cache/textmate-bundles.cache は不要だった。

これで、Redcarにcocoaメニューが追加される。

これは良い!


  • Save時にsyntaxエラーを表示してくれる
  • Control + Shift + Spaceで入力補完
  • Command+Rで実行(他にもいろんなrakeコマンドが実行できる)

などなど…。

Javaなので起動がちょっと重いけど、十分なメリットがある。

しばらくこれで開発しよう。

My First RubyMotion App: Very Simple Web Browser

Japanese Version

I try to development my fisrt RubyMotion App.
It’s a very simple web browser.

The following is snapshot of finished product.

Let’s start.

Creating Project


Create and Run “Browser” project.
Still blank, black background app.

No problem.

White Background ViewController


Next, add white background ViewController.
Wrap by NavigationController for easy using NavigationBar.

Here is AppDelegate.

Here is BrowserViewController.
Now, only setting backgroundColor.

Showing Toolbar and NavigationBar


NavigationBar is displayed by default.
So, I just set Toolbar’s hidden to false in BrowserViewController#viewDidLoad.

Loading Google by WebView


Adding UIWebView.
And defining “loadRequest” method for loading webpage.

delegate is set to self.

OK.

Adding LocationBar


Creating TextField for inputting URL.
Adding to NavigationBar and call “loadRequest” in textFieldShouldReturn.
(delegate is self)

Ref: NavigationBarにテキスト欄を表示させる | nk-z.memo

Forward, Back, Refresh, Stop


Adding buttons to toolbar, and set action for calling webView’s methods.

Ref: ツールバーのボタン (UIBarButtonItem) の隠し API – 24/7 twenty-four seven

Adjustment for Usability


Showing indicator when loading, and switch Enable/Disable buttons in Delegate methods of webView.

Ref: UIWebView下で、UIButtonの活性/不活性にする: iPhoneアプリ開発備忘録

Conclusion


That’s all. Did you have fun?

Full source code is available on GitHub.
I’ll add other samples soon.
RubyMotionApps/Browser at master · tnantoka/RubyMotionApps · GitHub

Enjoy iOS Development by Ruby :-)

Sorry for my English.

初めてのRubyMotionアプリ:超シンプルなWeb Browser

English Version

ようやく自分で何か作ってみる。

文字表示するだけ、とかつまらないのでWebViewを使ったシンプルなウェブブラウザを作ってみよう。

完成品はこんなの。

では、さっそく。

プロジェクトの作成


まずはプロジェクトを作成して動かしてみるところまで。

うん、特に何も問題ないですね。

真っ白なViewController


お次は、カスタムViewControllerを作って背景を白にするところまで。
ViewControllerを直接RootViewControllerにはせず、NavigationControllerでWrapします。(NavigationBarを使いたいだけ)

AppDelegateはこんな感じ。

BrowserViewControllerは背景色の設定のみ。

ToolbarとNavigationBarを表示


ナビゲーションバーはデフォルトで出ているはずなのでツールバーのHiddenをfalseにすればOK。

BrowserViewControllerのviewDidLoadでやります。

WebViewでGoogleを読み込む


UIWebViewを追加。loadRequestというメソッドを定義してGoogleを読み込んでみます。
delegateはselfにしておきます。

OKですね。

ロケーションバー


URL入力欄をつくります。

NavigationBarにテキスト欄を表示させる | nk-z.memo を参考にNavigationBarに埋め込みました。
Enterされた時にloadRequestを実行するため、selfをdelegateに設定し、textFieldShouldReturnメソッドを定義しています。
(以下のコード内のViewDidLoadは抜粋)

進む、戻る、更新、中止


ツールバーにそれぞれのボタンを追加し、対応するWebVIewのメソッドをアクションに設定します。
ViewDidLoadに以下を追加。

参考
ツールバーのボタン (UIBarButtonItem) の隠し API – 24/7 twenty-four seven

最後に微調整


ローディング中にIndicatorを表示したり、ボタンを押せる時だけ有効にしたりします。
BrowserViewControllerで以下のようなWebViewのDelegateメソッドを追加すればOK。

参考
UIWebView下で、UIButtonの活性/不活性にする: iPhoneアプリ開発備忘録

おしまい


ちょっと眠くてやっつけ感がでましたが、思ったよりはまらず動きました。
(IBじゃなく)コーディングベースでiOS開発したことある人なら、難なくいけるでしょう。

ただ、この程度だとXCodeの方がはるかにお手軽ですねー。
テキストとか配列とか日付とかバリバリ処理するようなアプリになるとRubyのメリットが生きてくるのかな?

ソースはGitHubで公開しています。
RubyMotionApps/Browser at master · tnantoka/RubyMotionApps · GitHub

しばらくはいじるので、サンプルは適宜追加されるはずです。

 

1 21 22 23 24 25 27  Scroll to top