え? それって昔からあるやり方じゃ・・・とか言うな。傷つきやすいんです。ワタクシ。
RubyMotion 、少しずつ認知が広まってますね。
月1定期開催で自分も何度もお世話になっている RubyMotion もくもく会も初めて ////// のキャンセル待ちがでるとか
RubyMotionJP の方々が翻訳してくれたチュートリアルにはてブがいぱーいつくとか ( 2013/03/04 時点で 200超 )
いあ、自分は単なる RubyMotion のしがない1ユーザでしかないんですけど、嬉しいではないですか、自分の好きなプロダクトが認知されて一般的になっていくのを見てるのは。iOS App の開発 make it easy になってまじ RubyMotion イノベーティブ。やばいわーこのプロダクトやばいわー。
自分が良かれと思うものを作って、売って。で、生活していったらなんだか幸せになる人がいぱーいでてきましたとかね、1つの理想的な働き方なわけで溢れるリスペクトがとまらない訳です。
おれもう中年なのにこの文章、思春期の人が書いてるみたいですね!!
さて、本題の RubyMotion製 アプリから 汎用的な部分を取り出して別リポジトリにしたら頭もコードもスッキリした件 ですが、リポジトリはこちら。
構成はいまのところ ( 2013/03/04 時点 ) 下記の通り
- AMP::InformView
- 非同期処理中にユーザに処理中である旨を通知する View
- AMP::ActivityViewController
- iOS6 で追加された UIActivityViewController の拡張版
- AMP::SmoothTableViewCell
- TableViewCell を addSubView(label) で作るとカクカクしてしまうので drawRect で描画するCell
- AMP::GithubAPI
- GithubAPI の Wrapper クラス
- API の網羅性低いです。。
AMP::InformView
これを show メソッドと hde メソッド で制御します。
続きはWebで!(意訳 : Usage は README を参照してください )
AMP::ActivityViewController
iOS6 で追加された UIActivityViewController は
- ViewController を生成して
- 自分で作った Activity ( Custom Activity ) を追加して
- 使用しない Built-In Activity ( Twitter とか Facebook とか Mail とか ) を指定して
- 表示!
と若干使い勝手が悪いので、Built-In Activity も Custom Activity と一緒に追加できるようにしました。
あと、Open in Safari とか Hatena bookmark とか若干の Custom Activity をバンドルしてます。
なお、 Custom Activity はこちらのライブラリが非常に充実しております。
AMP::SmoothTableViewCell
TableViewCell は スクロールのたびに View の再描画が実行される仕様になっておりまして、その処理が重いとスクロールがカクカクしてしまう問題がありまして。有名どころだと一昔前の Facebook アプリ。
それを 解消するために View に Label を addSubView するのではなく drawRect で全部描画してしまいましょうという Hack があるわけです。
詳しくはこちらの本の 『1-6. UITableView Hacks』
オライリージャパン
売り上げランキング: 31,890
この実装を TableView 作成のたびに書くのはあまりに非効率なので AMP::SmoothTableViewCell を継承して drawRect の内容だけ書けばOK なようにしました。
AMP::GithubAPI
GithubAPI の Wrapper クラス
絶賛開発中です。
I/F 変わるかも(ゴニョゴニョ
最後に
ここまで書いておいてアレな感想ですけど、アプリ作ってそこから汎用化可能な部分をライブラリとしてスピンアウト!というアプローチもいいですが、使えるものは世の中から探し出してどうしても自分で書かねばならぬ部分だけゴリゴリっと、というアプローチが正道であるなと感じました。
ライブラリの作り方アプローチではなく、アプリケーションの作り方の話になってしまいますけども。
スキル的にもモチベーション的にも自分はライブラリよりもアプリケーションの側なのですが、それならば世の中にコミットするために相応しいアプローチというのは前者ではなく後者なのだろうな、と。
昨日だったか一昨日だったかこれ読んだのですよ。
共感しつつも「2年前の私」といまの自分が重なる部分が多くてですね。ちょっとヘコみました。
Github的な開発スタイルが浸透してきて、Twitterでも 『インストールでつまづいたから Pull Req. 送っといたわー』といった発言もちょいちょい目にするようになりました。
つまづいたら内容と解決策まとめて bad know-how としてブログで公開といったスタイルも、もはや悪行と呼ばれても仕方ない世の中になりつつあるのかもしれません。
「なんでこれ、開発者の人に問題を報告しないの?」
ですよ。ええ。
くるくると世の中変わっていっておもしろいですね!
まとめと本文の乖離っぷりはんぱないけど気にしない!