読者です 読者をやめる 読者になる 読者になる

Windows Mobile アプリライブラリサイトをRuby on Railsで作る

Dev Mobile Ruby

Giraffe の構想発表以後、いろいろな方からご意見を頂きました。
そこでやはり思ったのは、Webサイト側の機能強化が必要だということ。

うちが最初考えていた方法では、アプリ側やPC側のXML出力がメイン、情報配信サイトはあくまでWebサイトにおいてあるXMLの場所を指し示すだけの補助的な役目になる予定でした。
そして、アプリ側が落ち着いてきたらサイトを強化しようかと思っていました。

ただ、この方法だと配信する側にもWebサーバーが必要になるため、勝手配信やる人は面倒。
そして作者側もアップロードの手間が増えて面倒。

そこで、サイトももっと使いやすくしといた方が良いなと思い、大幅強化することに。
基本的考え方は CakePHP でわかったので、この際 Ruby on Rails へ移行してみることにした。

今作ってる物のだいたいの概要はネタ帳に書きました。

基礎練中につまづいたこと

最初 gem install rails ってやったら 2系の Railsがインストールされた。そのままやってたらblogや本の説明と食い違うことが多くて心が折れた。

初心者はおとなしく 1.2 系使うが吉。

現在の作業状況

モデルの関係はこんな感じ。

Appli
├─has_many─Version (バージョンごとの情報)
├─has_many─RelatedLink (関連リンク)
├─has_many─Comment (コメント)
├─HABTM ──Category (カテゴリ)
├─HABTM ──Platform (対応OS)
└─HABTM ──Compatibility (対応機種)

まずは管理画面。コントローラは階層化するのは script/generate controller Admin::〜 でOK。中身は ActiveScaffold で。

アプリ情報のコントローラを作って表示関連のところはこのあたりまで作った。ネタ帳の画像にあって、こっちにないのは未実装部分。

最新版をとるロジックは、アプリのモデルにこんな感じで定義したけど、なんかちょっと非効率的かなぁ?

def latest_version
  if self.versions
    return self.versions.sort_by{|v| v.version_number}.last
  else
    return nil
  end
end

このあと、アプリ情報の編集画面を作ることになるんですけど、同じ画面でアプリの子にあるバージョン情報も同時に編集できるようにしたいんですが、どうするのがベストなのかなぁ。とりあえず画面デザインするべきですね。

ご意見お待ちしてますよ

もちろん、今作っているサイトにもご意見募集しています。

できれば、多くの人と作っていきたいと思っています。コメント、メール、またはIRCの #伊勢的新常識 までよろしくお願いします。