写真 青い空と雲と建物と木々の緑

nishimotzの日記

  • Rails controllerの複数形と単数形

    Ruby on Rails の勉強を始めたころ、なぜここは単数形で名前をつけるのか、なぜここは複数形にするのか、といったことでいちいち悩みました。最近、RESTful routing の勉強をしていて、controller の名前を単数にしてしまった場合の例が見つからず、「名前つけ直そうか」と焦ったのですが。。

    以下、Rails 2.2.2 で確認しました。

    config/routes.rb で

    map.resources :channels
    

    と書くと

    $ rake routes
    channels GET    /channels                        {:controller=>"channels", :action=>"index"}
    formatted_channels GET    /channels.:format                {:controller=>"channels", :action=>"index"}
    POST   /channels                        {:controller=>"channels", :action=>"create"}
    POST   /channels.:format                {:controller=>"channels", :action=>"create"}
    new_channel GET    /channels/new                    {:controller=>"channels", :action=>"new"}
    formatted_new_channel GET    /channels/new.:format            {:controller=>"channels", :action=>"new"}
    edit_channel GET    /channels/:id/edit               {:controller=>"channels", :action=>"edit"}
    formatted_edit_channel GET    /channels/:id/edit.:format       {:controller=>"channels", :action=>"edit"}
    channel GET    /channels/:id                    {:controller=>"channels", :action=>"show"}
    formatted_channel GET    /channels/:id.:format            {:controller=>"channels", :action=>"show"}
    PUT    /channels/:id                    {:controller=>"channels", :action=>"update"}
    PUT    /channels/:id.:format            {:controller=>"channels", :action=>"update"}
    DELETE /channels/:id                    {:controller=>"channels", :action=>"destroy"}
    DELETE /channels/:id.:format            {:controller=>"channels", :action=>"destroy"}
    

    となり、view で <%= link_to “index”, channels_path %> などと書けます。

    たまたま controller を channel のように単数形にしてしまうとどうなるのか、試してみました。

    map.resources :channel
    
    $ rake routes
    channel_index GET    /channel                         {:controller=>"channel", :action=>"index"}
    formatted_channel_index GET    /channel.:format                 {:controller=>"channel", :action=>"index"}
    POST   /channel                         {:controller=>"channel", :action=>"create"}
    POST   /channel.:format                 {:controller=>"channel", :action=>"create"}
    new_channel GET    /channel/new                     {:controller=>"channel", :action=>"new"}
    formatted_new_channel GET    /channel/new.:format             {:controller=>"channel", :action=>"new"}
    edit_channel GET    /channel/:id/edit                {:controller=>"channel", :action=>"edit"}
    formatted_edit_channel GET    /channel/:id/edit.:format        {:controller=>"channel", :action=>"edit"}
    channel GET    /channel/:id                     {:controller=>"channel", :action=>"show"}
    formatted_channel GET    /channel/:id.:format             {:controller=>"channel", :action=>"show"}
    PUT    /channel/:id                     {:controller=>"channel", :action=>"update"}
    PUT    /channel/:id.:format             {:controller=>"channel", :action=>"update"}
    DELETE /channel/:id                     {:controller=>"channel", :action=>"destroy"}
    DELETE /channel/:id.:format             {:controller=>"channel", :action=>"destroy"}
    

    のようになりました。

    link_to ‘xxx’, channels_path が channel_index_path のようになり、多少名前が冗長にはなりますが、無事に RESTful routing に移行できそうです。

    • 2009-07-22 追記:rails 2.x の scaffold が生成するのは「複数形の名前が付けられたコントローラ」なので、scaffold 流に揃えたほうがよさそうですね。
  • IPAX終了

    なんとか2日間の展示を終了できました。オラビーのブースを訪れてくださった方々に感謝します。

    1日目の説明を終えて、どうすればもっと上手に伝わるだろう、と考えたあげく、

    • 放送用のボイスメールシステムです

    ということにしました。昨日よりもうまくご説明できたように思います。

    何人かの方に久しぶりにお会いできて、また「実は個人的にラジオに興味があって」という方がたくさんいらっしゃって、充実した2日間でした。

    誰からもNHK連続ドラマ「つばさ」の話題が出ないなあ、と思っていたのですが、最後の懇親会の場で、IPAの西垣理事長と「つばさ」の話題で盛り上がることができました(笑)

    試してみたいという方がたくさんいらっしゃったので、早くデモサーバを公開できるように努力したいと思います。

    f:id:nishimotz:20090527141951j:image

    手書きの説明を追加しているときに「未踏」を「末路」と書き間違えたのは。。。

  • オラビーを使った放送

    オラビーを使って一人で生放送のラジオ放送を行うためのシステムの一例をお見せします。

    f:id:nishimotz:20090523215102j:image

    写真左側のPCには VMware がインストールされており、ゲストOS(Ubuntu Linux)ではオラビーのサーバ(castserve)が動いています。後日、インターネット上で公開サーバの運用を始めたいと考えています。

    ホストOS である Windows XP では castserve をWebブラウザで操作する画面があります。そのブラウザからワンクリックで caststudio が起動します。

    将来のオラビーでは、投稿音声を扱うだけでなく、音楽を流したりマイクとのミキシングをしたりする機能を実装したいと考えています。しかし、現時点では、これらの目的のためにオーディオミキサーともう一台のPCを使用しています。

    写真右側のPCでは RAZ Studio というフリーウェアが動いています。残念ながら 2005年に公開された 0.55b というバージョンを最後に、メンテナンスがなされていないようですが、私は非常に重宝しています。このソフトひとつで、PC に保存されている MP3 素材を順番に再生しながら、マウスクリックで「音楽のレベルを下げて、PC のマイク入力のレベルを上げる」といった操作ができます。

    音楽とパーソナリティの音声の切り替えは右側のPCで完結します。左側のPCでは投稿音声の再生のみが行われます。これらは中央のオーディオミキサーを経て、FMトランスミッターに送られます。

    すでにラジオ放送に必要な設備が整っているコミュニティ放送局などでは、左側PCだけを追加すればよいことになります。FM Chappy さんではこのように利用していただきました。

    リスナーはFMラジオで番組を聴き、手元の携帯電話から(メールではなく)電話をかけて音声で投稿を行うことができます。ユーザはコンピュータやインターネットの存在を意識することなく、ラジオ番組を通じてパーソナリティやリスナー同士の「ソーシャルネットワーク」に参加することができます。

    なお、今回 IPAX 2009 での展示のために投稿システムを運用します。以下をご了解いただければ、ご自由にお試しいただけます。

    • 電話番号:(2009-05-27 公開を終了しました)
      • 音声投稿専用の電話番号です。
      • 録音された音声は公開を前提として保存され、開発・評価・宣伝のために利用させていただくことがあります。
      • 大阪までの通話料金が必要です。
      • 電話回線とインターネットの接続には(株)ボイスバンクさんの御厚意で Plum Voice Portal(VoiceXML 技術)を使用しています。
      • プッシュ信号を出すことができない、いわゆる「黒電話」でも利用可能です。
      • システムの運用に関する責任は開発者(西本)にあります。公開によって支障が生じると判断した場合は、予告なしに運用を中止します。

    FMトランスミッターの代わりに、ストリーミング放送をエンコーディングするためのPCにつなげば、インターネットラジオの生放送が可能になります。私も過去に「ねとらじ」を使って実験をしました。

    音声投稿には電話が必須というわけではなく、もちろんPCからアップロードしていただくことが可能です。番組制作者がボイスレコーダーで取材をしておき、録音されたMP3素材をアップロードして、電話投稿とあわせて利用する、といった使い方も想定しています。

    今回ご紹介するシステムは放送局としては完結していない不完全なものです。しかし、放送局で必要な機能を1台のPCで完結させるようなシステムは将来実現できるでしょう。

    またリスナー側の機能も、インターネット放送を聞いて音声で投稿するという全ての機能を、スマートフォンのような形で統合できるでしょう。

    にも関わらず、私は今回「リスナーにコンピュータの存在を見せず、既存のメディア環境のなかで、新しいラジオ番組の作り方を提案する」予定です。

    ラジオに興味をお持ちの方であれば、ラジオの歴史が「リスナーの参加方法」の歴史であることがおわかりだと思います。ハガキ、ファックス、電子メール、しかし、いまだに「音声投稿」がラジオ(特に生番組)で一般化していないことは、リスナーの都合ではなく、番組制作の現場に適切なツールが存在しなかったから、だと私は考えています。

    今回、オラビーの存在意義を、展示を見に来られる方々と一緒に考えていきたいと思っています。