サービスの時代が来た! と思ったサービス「Copycopter」
こんにちは、@IT編集部の西村です。画面の前で思わず「サービスの時代が来た!」と叫びそうになったサービスが登場しました。Ruby関連で有名なThoughtbot社の「Copycopter」(コピーコプター)です。
Copycopterは、ヒトコトでいえば、Webサイト(Webアプリ)で使われている各種文字列(コピー)のリソースを、そのアプリの外側にあるCopycopterのWeb UIを使って編集できるようにするだけのものです。Railsに元々あるi18nのAPIを流用することで、プロダクション環境のコードに変更を加えることなくダイナミックにWebサイトに反映できる「gemライブラリ+サービス」のサービスです。Railsであれば、gemを入れて初期化時にAPIキーを設定すれば、後はビューの中でメッセージを国際化するのと同様に「t」メソッドを呼ぶだけのようです。
(Gemfileに追加) gem "copycopter_client"
(初期化でAPIキーを設定) CopycopterClient.configure do |config| config.api_key = "81caded18444fc3b60e56622f927bcce" end
(ビューでは国際化APIで文字列をリソース名で呼び出し) <%= link_to t(".sign_up", :default => "Sign Up") %>
Copycopterのサービスをアナウンスするブログのストーリーが冴えています。
開発者:はい、サインアップページはできましたよ。「サインアップ」をクリックするだけです。
クライアント:いい感じですね。でも「今すぐサインアップ」に変えてもらえます?
ここで開発者はテキストを変更し、もしかしたらCucumberのシナリオも修正する必要があるかもしれません。で、ステージングサーバにデプロイして……、となるわけですが、これには続きがあります。
開発者:はい、「今すぐサインアップ」にしました。
クライアント:でもね、やっぱり元に戻すべきだと思うんですよ。
そして、さらに1カ月後に……。
開発者:よしっ、サインアップページはプロダクション環境にデプロイできましたよ。
クライアント:そういえばサインアップといえば、何人かの人と話をして、やっぱり「今すぐサインアップ」とするのが結局いいのかなって思うようになったんですよね。
私はコピー(文字列)をああでもないこうでもないと考える側なので、クライアントの気持ちはよく分かります。雑誌編集者時代には何度も何度も修正して、ページのレイアウト担当に「最終的に決まったものを教えてください!」とよくムッとされたものです。最終的に印刷されたページを見てみないと、分からないことってあるんですよね……。
こうした修正作業は、それ自体は単純でも、五月雨式に修正依頼が来たり、「結局、元のままかよ!」と手戻り感があったりすると、「もう自分でやれっ!」と言いたくなりますよね、きっと。同様に、開発者の方々も、そういう気持ちになるんじゃないかと想像しています。開発者にしてみれば、文字列リソースなんか周辺視野にかろうじて入っているぐらいで、本質的ではないのだからとThoughbotの人もブログに書いています。でも、Webサイトを作る側にしてみれば、メッセージの言葉選びはとても重要です。恐縮しながら修正依頼をするのではなく、納得がいくまで自分でいじっていたいものでしょう。それを可能にするのがCopycopterでしょう。以下の画面は編集向けUIと、それが反映されたWebアプリの結果です。
Copycopterのクライアントは300秒置きにサーバをポーリングしていて、変更があればローカルのリソースファイル(YAML)を更新するだけのようです。クライアント側もWeb側も、特別すごいハックという感じではないでしょう。でも、これって、世界中で同じ小さな問題を抱えているプロジェクトがあって、それを解決する今風のアプローチで、歓迎されるのじゃないかと思います。それを月額9ドル(3プロジェクト、4ユーザーまで)から月額49ドル(30プロジェクト、60ユーザーまで)で打ち出して来る、というところに個人的には新しい潮流を感じます。お客さんに対価をいただけるのは技術や実装というよりも、それによってどんな問題が解決するかということだ、というのが、よりハッキリ示されているように思うからです。そして、これまでプロジェクト単位だった「サービス=対価」の粒度が下がってきているということかと思います。以下、価格表です。
Copycopterが解決する問題は、自分たちでも解決できるものかもしれませんし、利用すべきソフトウェアもオープンソースでそろうでしょう。Herokuを使えば無償プランで十分でしょう。でも、実装のリードタイムやコスト、運用の手間を考えたら、こうしたサービスを選ぶ方が合理的というケースも多いのではないでしょうか。可用性の上がったサーバ(ネット)によって水平分業しているといってもいいかもしれません。誰もが同じ実装やインテグレーションを繰り返すのはムダです。gemだけ出して、「サーバの方は各自お好きにどうぞ」というのでは、世界中で同じ単調作業が発生します。
KVSやNoSQLなどのストレージ技術が顕著ですが、ミドルウェアをどう使っていくかというときに、同一データセンター内でサービスとして提供・利用するという「Middleware as a Service」というべきもの(スミマセン、またXaaS用語を勝手に作っちゃいました)が注目ですよね。HerokuのアドオンやAWSの各種サービスですね。さらに、パフォーマンスがボトルネックとならないような、cronサービス、captcha代行サービスなどは、ふつうのWeb APIサービスとしていろいろ登場しています。gem+サービスで開発者の「かゆいところをかいてあげる」ような有料サービスは、まだまだ開拓すべきフロンティアがあるのかもしれません。