Webサービスを作るときに考えたこと(PetaTube)

PetaTubeをリリースしてみて感じたことや考えていたことを自分のためにメモしておきます。


http://d.hatena.ne.jp/koba04/20121002/1349103920


長いので先に結論だけ書いてしまうと、多くの人に使ってもらうサービスを作るためにはyusukebeさんによるYAPC::ASIA2012のベストトーク「「新しい」を生み出すためのWebアプリ開発とその周辺」で語られているようなことをしっかりやっておかないとダメだなと思いました。

書籍も楽しみです!


考える

イデア
  • イデアはいつも考えています。
    • 自分は音楽が好きでいい音楽に出会うと人に勧めたくなるので、そういった思考がサービスを考える際にも大きく影響しています。
  • 基本的には「自分が欲しいサービス」という点で考えています。自分の他に数人でも欲しいと思っている人がいるんじゃないかと思った時にサービスに出来ないかを考えます。つまり基本的には自己満足です。もっと多くの人に使ってもらうためにはここでもっとしっかりと考えないとダメなんじゃないかと思っています。
    • 今回のPetaTubeでは、あるNaverまとめの動画が全部見たいと思ったけどこれ再生終わるたびに埋め込まれている動画をクリックして再生させるの面倒だなぁと思い、これIDだけ抽出できればJavaScriptで連続再生させられるんじゃないかと思ったのがきっかけです。
機能
  • 基本的には「最低限の機能」は何か、「あったらいい機能」は何かを分けて考えます。そして基本的には最低限の機能だけの実装を目指します。理由としては仕様が膨らむと途中で投げ出す可能性が高くなるからです。また、出来ることを単純な形で見せたいということがあります。
    • PetaTubeの場合はURLから動画を抽出して連続再生することが最低限の機能だと考えていました。あとブックマークレットも使われるかわかりませんが、あると相当便利なので最低限の機能として考えていました。
運用
  • ここでリリースした後の運用のイメージについても考えています。コンテンツを運営者が追加し続ける必要があるモデルを選択する場合はそれが実際に可能なのかということや、ユーザーが集まらないと成り立たないサービスの場合どうやって最低限の人数を集めて運用が可能なところまで持っていくかということです。
  • 個人的には、放置していても更新性があるようなサービスにしたいなと思っています。
    • LastFMが毎週作ってくれるランキングを活用しているCountDown LastFM Rankingもそうなっています
    • PetaTubeの場合は、ユーザーが動画がいっぱい貼ってあるウェブページを探して来てくれることを想定しているのでここは心配していませんでした。

名前

  • これはとても大事だと思っていて、後々のモチベーションにも関わってくるので作る前の段階で決めておくのがいいと思っています。(途中で変更してもいいとおもいますが)
    • PetaTubeという名前は正直これだ!という感じではないのですが、コンセプトを考えた時に「ペタ」っと簡単にYou「Tube」の動画を楽しめるということでこの名前にしました。YouTubeの動画ということをわかりやすくしたいなぁと思うとどうしても「〜Tube」なサービス名になるんですよね。。。

実装

技術の選択
  • ここは人それぞれだと思いますが、自分は「早く実装出来る」ことか「使いたい技術」であることを基準に考えています。どちらも楽しく開発をするためということが目的で、早く実装出来たほうが早く形に出来て楽しいですし使いたい技術だと実装自体を楽しむことが出来ます。そこまで大規模なアプリは想定していないので仕事の時のような基準では選択しません。ここは個人でサービスを作る醍醐味の一つかなと思っています。
    • 注意点としては、考え過ぎないということでしょうか。無駄にアクセスがいっぱい来る時のこととか色々考えすぎて大きなシステムにしないことは重要だと思います。そこはヒットしてから悩めばいいと思っています。
    • PetaTubeの場合は、早く実装出来るものとして「Amon2::Lite」、使いたい技術ということで「Backbone.js」と「Compass」を使っています。
デザイン(PC)
  • レイアウトだけは最初に考えて、色の調整などは機能の実装後に行いました。ホントはよくないのですが確認はChromeだけで行なっていました。変なことをしなければこれでまぁFirefoxSafariはなんとかなるかなと思い。I.Eは...対象ユーザーの中に少ないかなと思ったので気にしていませんでした。I.E10だとマシなんじゃないかという期待も込めて...
    • PetaTubeのデザインはとあるサイトを参考にさせてもらいました。分かる人には分かると思いますが。。色は自分で色々試して決めました。
    • 細かい点ですが、オススメなどをモーダルで実装したのはビデオの再生を止めないためという意図があったりします。
  • 実装については、Compassを使っていたので楽しく出来ました。
    • ネスト出来るのでプログラマブルに書けたりするのは気持ちいいし、変数にベースになる色を設定できるので色の調整などはかなり簡単に出来ました。
    • CSSをresetした状態からはじめたので最初はちょっと途方に暮れましたが、シンプルなデザインなのでなんとかなりました。(なってない?)
  • favicon.icoはあったほうがいいと指摘をもらったので、それはGIMPでなんとか作ってみました。。
デザイン(スマートフォン)
  • 正直そこまでは気にしなかったです。想定している使い方としてはPCで作業している時のBGM(V)だし3Gだとツラいだろうなということもあって。
    • ただiPadは使われるシーンがあるかなと思ったのでちょっと気にしました。
    • Androidはなかったのでリリースまで確認はしてませんでした。リリース後ちらっと借りて見てみましたが。
    • まぁでもiPhone使っているのですがサービス作るならAndroidも持っておかないとなぁとは思いました。今ならNexus7とか?スマートフォンで使われることを想定するサービスならスマートフォン用のデザインをどうするかは時間を掛けるべきだとは思います。
開発
  • ここでの最大の注意点は無理しないということでしょうか。個人でウェブサービスを作るときはどうしてもムラが出てしまうので、のらないときはやらないほうがいいと思います。逆にのってくるととにかく実装したくてたまらない状態になったりするので、そのときにガッとやったほうが進みも早いしいいものが出来ると思います。無理してヤル気が0になって放置というのが一番避けたいというところです。誰もがそんな放置されたリポジトリを持っているのではないでしょうか。
  • あとはとにかくプロトタイプを早く作ることを心掛けていました。デザインが全くされていない状態で動作を試すことでイメージ通り使いたいサービスになりそうかを考えていました。この段階で動いたのでしばらく自分だけで遊んでましたw。
作業する時間
  • 私事ですが、家族がいて休日は家族のためにほとんど時間を使うのでなかなかまとまった時間が取れません。これに対する自分の答えは寝る時間を削るしかないということです。といっても最低限の睡眠時間は確保すべきですが。これは他の方がどうやっているのか是非教えて欲しいです。
    • PetaTubeも基本的には仕事帰ってきてから寝るまでのちょっとした時間で実装していました。タスクの管理などはしていなくて、今日はここまでやりたいなぁという目安を作ってそこまで実装して寝るという感じでやってました。ハッカソンとかでまとまった時間とれたらよかったんですが。。ただその分考える時間は多かったのはいい部分でもあったなと思いました。
  • Web Application Framework(WAF)
    • 最近のWAFはよくできているので、setupするだけでデザインもそこそこされている状態になります。この段階で満足してちょっといじって放置ということがよくあるので注意。
    • あと、無駄にWAFの機能の拡張を始めたり、どういうアーキテクチャにするかを複雑に考え過ぎるとサービスを作るという目的を見失ったりしがちです。素直にWAFに従うといいんじゃないかなと思います。
  • Twitter Bootstrap
    • これホント便利なんですが、ツールや管理画面などでないなら使う際は注意が必要かなと思います。というのもBootstrapっぽいサイトになってしまいそこをカスタマイズしていくのは結構面倒だなという印象があるからです。まぁBootstrapっぽい感じでいいなら問題無いですが違うデザインにしたい場合は使わないという選択肢も考えていいいのかなと思います。便利なんですけどね。

環境の準備

  • よっぽど自信のあるサービスならサービス用のドメインを取得することも考えたのですが、今回はサブドメインで設定しました。
  • ミドルウェアの設定については、考えだすとそれだけでかなり時間を取られるので、最低限しか設定しません。ここまで来ると早くリリースしたくなるのと、これもヒットしてから考えればいいと思っているからです。
    • ちなみに環境構築はYAPCの間にやってましたw

リリース

  • Twitterとかブログ使って公開しましたと書いただけなのでもうちょっと色々出来たかなと思います。
  • リリース後はTwitterはてブなどで反応を見て改善できる点はなるべくするように心掛けています。便利とか欲しかったみたいなことを言ってもらえると本当リリースしてよかったなと思いますし、もっとよくしていこうと思いました。
    • とりあえず動画が表示されていない場合のトップページによく見られているサイトを表示しようかなとは思っています。
  • あと、可能ならソースは公開するといいんじゃないかなと思います。見られるという意識があるかないかでコードの質が変わる部分もあると思いますので。

ウェブサービスを作るのは楽しい

  • とまぁ色々書きましたが、ウェブサービスを作るのは楽しいです。
  • 自分は面白いものを作りたくてウェブの勉強を始めたので、簡単に自分の作ったものをみんなに見てもらえてTwitterなどでリアクションをもらえる今の環境はとても素晴らしいなと思っています。
  • とりあえず最低限のところまで作って後々機能追加していく方法は、モチベーションを高めるという意味でも効果的だなと思います。
  • リリースすると色々意見をもらえるのでとても勉強になります。Petatubeでも途中からtitleに再生中のビデオのタイトルを表示するようにした方が便利だと教えてもらい実装しました。これをすることでタブを選択して開かなくても再生中のビデオが何か確認することが出来るようになり便利になりました。この発想は自分にはなかったものなのでとても勉強になりました。

おまけ

  • 自分がウェブの世界面白いなと思ったきっかけはPerlのコミュニティに出会ったのがきっかけなので、何かPerlに恩返し出来ないかなと考えています。
  • その時に自分が出来るのは便利なモジュール作ったりなどというよりは、Perlを使って面白いものを作りアピールしていくことかなと思っていたりします。なのでAmon2::Liteで作っているというのをfooterに入れていたりブログでPerlで作っていると書いたりしています。
  • それでPerlで何か作ってみようと思ったり*.pmに参加してみようと思う人が1人でも増えればいいなと思っています。

というわけで自分用のメモですが、最後まで読んでくださりありがとうございました。
まぁ個人でウェブサービスを作るのは、好きに出来るしリアクションももらえて楽しいという話でした。