self memo

<   2008年 12月 ( 4 )   > この月の画像一覧

「一日一選」というサービスを作ってみた

先週から今週にかけての間で、「一日一選」というサービスを作ってみた。
一日一選
モバイル向けのみだけど、何とか動くようになったかと。

このサービスの主な機能は、モバイルから画像をメール投稿出来るだけだ。
ただそれだけ。
しかも、1日に投稿できる画像は1枚のみっす。
※同日に再投稿すれば、上書きされる

元はといえば、このサービスは奥さんの企画だ。
珍しく奥さんと意見が一致した、記念すべきサービスなのである。
これぞ正しく、"初めての共同作業"。

私のように、携帯のカメラ機能を全く使えていないような人がもしいたら、お気軽に使ってみて頂けるとありがたいっす。

継続してみると、面白い物が出来るはず!と信じて、まずは自分だけでも使ってみようと思います。
[PR]
by aratafuji | 2008-12-17 00:31 | つぶやき

日本人受けするWebサービスの要素

前職の上司だった方と、日本人受けするWebサービスの要素って何だろうと話した機会があったので、その時に考えた事のメモ。

個人的に、以下の3要素ではないかと考えた。
1.習慣化
2.匿名性
3.ゆるい繋がり

1.習慣化
個人的に、ここ1年ほどの間で習慣化した事として、"体重、体脂肪測定"、"家計簿"がある。
"体重、体脂肪測定"は毎回の結果をカレンダーに記述しており、一日でも忘れる(カレンダーに穴が開く)と、とても残念な気持ちになる。
"家計簿"はフリーのソフトウェアを使って付けているが、こちらは1日忘れると、翌日がかなり面倒になるので、極力その日の収支はその日中に入力するようにしている。
これらの作業は、始めた頃こそ意識しないと忘れてしまっていたが、頑張って続けていくうちに、夜風呂からあがったら"体重、体脂肪測定"⇒カレンダーに記述、寝る前⇒"家計簿"という行動が習慣化され、今では決して忘れる事は無くなった。
※覚えていても、面倒だからパスする日もあるが…

上記の例のように、一度習慣化させ、後は無意識に行動させる事が重要ではないだろうか。

自分が関わったWebサービスの中で、この習慣化がうまく働いたと思われる例が2つほどあった。
一つはモバイル向けの懸賞サイトである。
そのサービスはただ単に一日一回リンクが着いたメールが携帯宛に送信されるだけのものだ。
リンクを押すと、何のエフェクトも無しに、98%ぐらいの確率で"はずれ"とだけ表示されるのだが、そのサービスのCTRは70%近くあったと記憶している。
私自身、システム確認用に登録していたのだが、毎日大体決まった時間にメールが届き、リンクを押し、はずれを見て携帯を閉じるという行動が、習慣化されていた。
※時たま"当たり"が出ても、いつもの習慣で携帯を閉じてしまう

もう一つはレシピサイトだ。
こちらのサービスは、毎週月曜日に一週間分のレシピが更新されるのだが、他の日に比べて月曜日のアクセス数は群を抜いていた。
きっと、月曜日にそのレシピサイトにアクセスして、その週の献立を考えるという行動が習慣化されたユーザーの方々が多かったのではないだろうか。

ちなみに、この"習慣化"と"日本人向き"との関連性は不明…。


2.匿名性
個人的には"実名"のメリットを感じているのでとても残念なのだが、やはり日本では"匿名性"を前面に押し出していかないと流行らないのだろうと感じている。
犯罪予告でもしない限りは身元がばれないような安心感を出していった方が、やはりユーザーに受け入れられるのであろう。


3.ゆるい繋がり
多くの人がmixiのガッツリとした繋がりに疲れているのではないだろうか。
mixiで日記を書いているユーザーは、この日記を誰が読んでいて、それを読んだらどう思うかを、多少なりとも考えていると思う。
だからこそtwitterのように、基本は誰も見てないだろうというようなミニブログがある程度受け入れられたのではないだろうか。
2chでいうならば、"この速さなら言える!"というノリである。

twitterのような、自分の友人関係でグルーピングするようなミニブログは腐るほどあるからもう需要は無いかと思うが、他の切り口でグルーピングするようなミニブログはまだいけるのではないだろうか。
※スレッドという要素でグルーピングしたのが2ch、動画コンテンツという要素でグルーピングしたのがニコニコ動画というイメージ
そのグルーピング要素の一つとして位置情報があるかなと考えている。

結論として、上記3要素を満たす、最も日本人向きのWebサービスは、やっぱり2chだったか。


書いているうちに、何だかとっても当たり前の事を書いている事に気付いた。

しかしながら、何か新しいサービスを考える際に、とっても当たり前の事をすっ飛ばして、"こんなサービス面白いかも"、"こんなサービスがあれば便利かも"などと考えてしまう事が多々あるので、自分への戒めの意味で投稿しておく。
[PR]
by aratafuji | 2008-12-09 05:37 | つぶやき

CakePHPでのサービス開発

今日からCakePHP(1.2)を使って、新しいサービスを作り始めてみた。

今日やった事のメモ。

Net_UserAgent_MobileをcakePHP1.2RC2で使う
[cakePHP1.2]モバイルサイトとPCの切り分け その2
CakePHP 1.2で携帯用ビューを表示する
CakePHP 携帯専用サイトを作成する
上記の記事を参考にして、以下のコンポーネントを作成。
app/controllers/components/mobile.php

App::import('Vendor', 'pear_ini');
App::import('Vendor', 'Net/UserAgent/Mobile',
array('file' => 'Net' . DS . 'UserAgent' . DS . 'Mobile.php'));

class MobileComponent extends Object {
function startup(&$controller) {
$this->controller = $controller;
$mobile = &Net_UserAgent_Mobile::factory();
// 非モバイル
if ($mobile->isNonMobile()) {
// PCからモバイル用のURLにアクセスがあった場合は、PCのURLにリダイレクト
if(preg_match("/^m\//", $this->controller->params['url']['url'])){
$url = '/'.preg_replace("/^m\//", "", $this->controller->params['url']['url']);
$this->controller->redirect($url);
}
// モバイル
}else{
// モバイルからPC用のURLにアクセスがあった場合は、モバイルのURLにリダイレクト
if(!preg_match("/^m\//", $this->controller->params['url']['url'])){
$url = '/m/'.$this->controller->params['url']['url'];
$this->controller->redirect($url);
}
// Docomoでguid=ONが付いていなかったら付ける
if ($mobile->isDoCoMo()) {
if(!isset($this->controller->params['url']['guid']) or
$this->controller->params['url']['guid'] != 'ON'){
$url = '/'.$this->controller->params['url']['url'].'?guid=ON';
$this->controller->redirect($url);
}
// 全てのリンクに、guid=ONを付ける処理
output_add_rewrite_var('guid', 'ON');
}
// UID取得
$this->controller->uid = $mobile->getUID();
// SoftBankは下15桁を使う
if ($mobile->isSoftBank()) {
$this->controller->uid = substr($this->controller->uid, 1, 15);
}
}
}
}
?>

このコンポーネントを、app/app_controller.phpで読み込むようにした。
app/app_controller.php
class AppController extends Controller {
// 共通コンポーネント
var $components = array('Mobile');

// 共通ヘルパー
var $helpers = array('Html', 'Xml');

// UID
var $uid;

function beforeFilter() {
}
function beforeRender() {
if (isset($this->params['prefix']) or isset($this->uid)){
// モバイル用レイアウト設定
$this->layout = 'mobile';
// モバイル用ヘルパー設定
array_push($this->helpers, 'Mobile');
}else{
// PC用レイアウト設定
$this->layout = 'pc';
}
}
}
?>

prefixの設定は、以下の通り。
app/config/routes.php
    Router::connect('/m/', array('controller' => 'pages', 
'action' => 'index', 'prefix' => 'mobile'));
Router::connect('/m/:controller', array('prefix' => 'mobile'));
Router::connect('/m/:controller/:action', array('prefix' => 'mobile'));
Router::connect('/', array('controller' => 'pages', 'action' => 'index'));

※本来は下2行だけで良いはずなのだが、それだとモバイルのTOP(/m/)にアクセスすると、うまく動かなかったため、暫定的に上2行も記述。こちらは引き続き調査する。

後は、各コントローラーにPC用のアクション(index)とモバイル用のアクション(mobile_index)を実装し、各ビューも、PC用のビュー(index.ctp)とモバイル用のビュー(mobile_index.ctp)を作成。

ここまでで、PC、モバイルのアクション、ビューの切り分け、モバイルの場合はUID取得まで出来るようになった。

一番はまったのは、エラー(404とか)用ビューの切り分け。
上記prefixの設定で、PCでの404はapp/views/errors/error404.ctp、モバイルでの404はapp/views/errors/mobile_error404.ctpが呼び出される事を期待したが、うまくいかず…。
携帯サイトの404ページの作成方法
こちらを参考にしてみても、
$this->viewVars['code']
には何もセットされない…。
[php][CakePHP]viewVarsって使っていいの?
これとか見ると、そもそもviewVarsは参照しちゃダメっぽかったので、結局はエラー用のビューを以下のようにして、PCとモバイルを切り分けた。
app/views/errors/error404.ctp

if(isset($this->params['prefix'])){
echo $this->renderElement("mobile_header");
}else{
echo $this->renderElement("header");
}
?>
ページが見つかりません
if(isset($this->params['prefix'])){
echo $this->renderElement("mobile_footer");
}else{
echo $this->renderElement("footer");
}
?>


今までCakePHPはチュートリアル見てサンプル程度しか書いた事無かったけど、いざ使い始めてみるとかなり楽しい!

明日からも没頭して、今週中にサービスを立ち上げたいと思う。
[PR]
by aratafuji | 2008-12-09 02:38 | レポート

はてラボの新サービス

はてラボに新サービスが追加された。
はてラボに3つの新サービスを追加しました
サラっとしか見てないけど、かなりの脱力感を感じた。

・全く面白いと思えない。
・全く便利だと思えない。
・全く先が見えない。

これらのサービスをラボで試してみたフィードバックを、一体何に活かしていこうと考えているんだろう?
はてラボって、はてな社員の砂場なのか?
はてなカウンティングの受けが良かったら、ブログパーツでも量産するのか?
はてなニュースのターゲットは、bogusnewsなのか?

gooラボペパボカヤックEDGEえがちゃん.netなどの試みの方が全然面白いし、興味深い。

勝手にはてなを特別扱いしてたけど、サービスの企画力という面では全然大した事ないのかもしれないと思った。
[PR]
by aratafuji | 2008-12-04 20:39 | つぶやき