Webサービスのヒアリングとリリース後のプロセスで大事なこと

4月 5th, 2012

昨日、Onlabでデザイン系のセミナーがあったようで。
Pirikaのkojimaさんがブログにまとめていて、すごく参考になったので転載させていただきます。

デザイン戦略

1.人から始める時にこの3つを考える事
①自分の周りにいる人達が意識していることを観察できているか
②ユーザーがこのプロセスがあったとして、そのプロセスを終えている理由とモチベーションは何なのか
③ユーザーがこの課題にあたっている時にどういうステップを踏んでいるか
2.話すのをやめ、作り出すこと
①プロトタイプを通して何を学びたいか
②一番早く学びたい事を学べるように何をすればいいか
③明日早く自分のチームとプロトタイプをつくるために今何ができるか
3.たくさんのプロトタイプを作ってそのほとんどを捨てる覚悟を持つ
4.できる限りの時間をスタートアップをやっていない人達と話す事に使う
①スタートアップ界隈以外の誰と会話しているか
②自分の持っているイメージ(家庭とは○○である、とか)が正確かどうかの検証をしているか
③文化にとけ込んでいるか
5.あなたの物語を人間味のあるものにすること

http://kojimafujio.tumblr.com/post/20464162723/elle-luna

ローンチ後の戦略

【ゴール設定】
ローンチする時に問いかける質問「なぜ僕はローンチするのか」
ローンチする時に、ローンチする目標を明確にしないといけない
「○○の数の人が○○をアップロードするプラットフォームを作る」というような目標
設定したゴールは大きな世界を変えるぞみたいなゴールではなく、小さくシンプルなゴールを作る
【KPIの設定】
自分の目標を達成できているかどうかのKPI設定
3〜5のKPIに集中すること、30個もあってはいけない
【ローンチ後のプロモーション】
TechCrunchに載る事を重視しない
大事なのは自分のサービスのターゲットユーザーが読んでるニュースサイトに載る事
【フィードバック】
サインアップするとパーソナルなメールが届く、スペルミスとかわざと入れる
onesheetの場合はonesheetにサインアップしてでもonesheetを作らなかった人に、アカウント作ったのに、onesheetをつくらなかったのはなんで?というメールを送った
こうすることで、凄く返信率が高く1/3の人が返信してくれた
ユーザーからフィードバックを取る時はシンプルにユーザーに問いかける
【QA資金調達について】
資金調達はできるだけあと
物を作って、そのアイデアが検済みの状態で資金を調達する
事業を展開している中でボトルネックが明らかになった時にVCから調達すべき

http://kojimafujio.tumblr.com/post/20463996322/brenden-mulligan

また、今ライフネットの岩瀬さんの著書、『ネットで生保を売ろう!』を読んでいて、事業計画を立てるための調査分析プロセスが面白かったです。

・「ネットで生保が売れるか?」という問題を「どういう属性の人なら買ってくれるか?」という問いに置き換えて、ペルソナを設定した
・海外の人脈をフル活用して、米国や英国のネット生保販売の事例を調査した
・個人ブログで協力を呼びかけ100名弱を対象としたネットアンケートを実施し、面白い回答をした人たちに個別で電話でフォローのインタビューを行った
・さらに何名か会議室に集まってもらい、かなり掘り下げたフォーカスグループインタビュー
・洞察が得られるためにホワイトボードに書き出して議論、整理した

特にB2Cのサービスにおいて、「ユーザーを大事に」と言うけれども、具体的なアクションがあまり出回っていない気がしますが、こういう当たり前の事を淡々とこなすだけなんだなー、と感じました。

ちなみに、最近身内で耳にするあすかアセットの谷屋さんの話がはじめ出てきていて、新鮮でした。

8maki IT, proposal, デザイン

Makeで知った電子工作産業の4つの事実

12月 5th, 2011

Make Tokyo Meeting

 
先週末、東京工業大学でMake Tokyo Meeting 07という、電子工作の祭典が行われていました。
もともとハード分野にも興味があって、前々から行きたかったのですが、Muji Note岩井さんが行かれるとTwitterで発見し、急遽合流することに。
会場でも終始、案内してもらいながら解説もしてもらったり、ものすごく参考&&楽しかったです!

ずっとWeb業界にいると知らない電子工作の世界を垣間見たので、驚きポイントをまとめます。

オープンソースハードウェアのArduino、5人で12億円の売上

arduino
イタリアから端を発したオープンソースハードウェアのArduino(アルドゥイーノ)ですが、そのコミッターの一人がMakeで講演されてました。
なんとほぼほぼ5人のチームで、40万台も販売されたとのことです。
だいたい1ユニット3000円とすると12億円の売上に。
すごい。。
実際、Makeの出店者の半数以上はArduinoを使ったものっぽかったです。
» Arduino Official

なお、Wikipediaによると、開発環境はProcessingベースで、開発言語はC/C++に風の言語を使用しているとのこと。

Arduinoなどのパーツを扱うショップが伸びているらしい

Makeでも多くの人が、展示と同時にマイコン、開発キットの販売を行っていました。
ある意味でソフトウェアのオープンソース配布に近いか。
その中でもアグレッシブな面白いパーツを取り扱う大手のショップSwitch Scienceが注目とのこと。
たしかに本当に多くの種類のパーツがある。。
Arduinoだけで175種類売ってますね。
» Switch Science

ちなみにロボット工学で一番先端をいっているらしい、千葉工大の人たちもマイコンを売ってました。
このスペックで安い!みたいな話をしてくれたのに、事前知識がなくてすごさがわからなかったf^^;
» Furo 千葉工業大学 未来ロボット技術研究センター

見た目に重要な箱の外注を、1,000円くらいからできちゃう

emrge-plus
いわゆる外側というか、マイコンを格納する箱の部分を作るのが大変そう、というイメージがあったのですが、かなり安価に柔軟なものが作れると知って目からウロコ。
その造形方法も3種類あるとのこと。

・レーザー加工
アクリル板や木材などの平面材をレーザー加工して、部品を組み合わせて箱にする手法(上記写真)。
emerge+なら家の表札くらいの大きさなら300 1,000円くらいからやってくれるとのこと。
しかもイラレで加工データを作って納入するというお手軽さ。
[追記]ご指摘いただき最低価格の部分を修正しました。
» emerge+

・3Dプリンタ
0.1mm単位の細かい粒子を吹きつけて造形する手法。
Inter Cultureならデータをアップロードすると自動で見積もってくれて、最短7日で納品してくれる模様。
お値段は容積に比例しますが、4500円〜というプライシング。
» Inter Culture

・金型
とはいえ量産するには、上記二つの方法だと限界がありそう。
そんなときには金型を作って量産する方が安上がりとのこと。
金型作成は今protolabsがあついらしい。自動見積付き。
» protolabs

マネタイズできているプロジェクトはまだまだ少ない

Arduinoの登場でハードウェアプロジェクトが増えてきているように思えますが、まだまだマネタイズ出来てるプロジェクトは少ないようです。
そんな中、最近注目のハードウェアスタートアップをご紹介。

sassor
elp_lite1
コンセントにつなぐとその消費電力を見える化してくれるデバイス。
スマートグリッド。

Cerevo
pic_cerevocam_top2
最近はUstream配信のためのデバイスにも力をいれているCerevo。
デジカメの会社です。

ガラポンTV
garaopon-tv
テレビにつないで1ヶ月分の番組を録画し、携帯やiPadからワンセグ視聴できるHDレコーダー。
最近は、テレビの規格が同じのブラジル展開も狙ってる模様。

 
これを機会に来年のMakeに展示できるような新しい何かをあなたも作ってみては?

8maki survey, テクノロジー , ,

Bloomberg.comに見る、メディアを変える機能とビジネスモデル

11月 18th, 2011

スクリーンショット(2011-11-17 23.29.20)
最近、金融メディアの開発を行っていて、BloombergWallstreet Journal日経などのWebビジネスメディアを研究しています。
そんな中、ペーパープロトタイピングの練習に、BloombergのWebを模写していたら、中々気づかない様々な細かい試みが垣間見えてきました。
コンテンツの充実から新しいビジネスモデルの構築まで、日本のメディアでは中々見られないチャレンジをまとめてみました。
ちなみに、媒体資料によると、月間UUは1400万人。(日経は総訪問者数:1566万人/月)

  • あと読みできるQueueという機能
  • 各コンテンツ毎にスポンサーを募る
  • 読者からのFeedbackを積極的に受け入れる
  • ニュースを見ている人に直接求人
  • 簡単なテキスト広告も直接出稿
  • 関連動画を自動で表示

あと読みできるQueueという機能

bloomberg-queue
Topページを見ると、全ての記事タイトルの右側に+というアイコンがついています。
これ、押すと■アイコンに変わります。
+アイコンを押された記事は、あと読みリストに追加されて、右側のBボタンから開くパネルからチェックすることができるようになっています。
bloomberg-queue2
InstapaperRead it later といったあと読みアプリはありますが、メディア側がこういう機能を実装するのは斬新。

各コンテンツ毎にスポンサーを募る

bloomberg-sponcered1
bloomberg-sponcered2
昨今、メディアはいかにPVを増やしていかに広告収入を増やすか?ということに躍起になっていると聞きますが、BloombergはWebメディアの新しいビジネスモデルを提案しています。
それは為替コーナーや起業家向けカテゴリ等、各コンテンツ毎にスポンサーを募るというモデル。
たしかに、確実にそのコンテンツに興味がある人に訴求できるという意味では効率的なのかも。
これらのコンテンツの詳細ページに飛ぶと、これらのスポンサーのディスプレイ広告が出てきたりします。

読者からのFeedbackを積極的に受け入れる

スクリーンショット(2011-11-17 22.28.29)
Topページの下部に、[+] という表記があります。
それをクリックすると、こんなポップアップが出てきて、詳細にFeedbackを送ることができます。
このポップアップ、OpinionLab という会社が提供している模様。
ユーザーを見ているっていうのも好印象ですが、積極的に外部のプロダクトを取り入れてみるっていう姿勢がいいな〜

ニュースを見ている人に直接求人

bloomberg-indeed
メディアと求人は昔から相性が良いようで、よくブログでも求人欄を見たりしますが、BloombergではIndeedの求人プラットフォームツールを利用しているようです。
これ、その場で求人情報を検索できるだけでなく、求人を出すこともできます。
30日で$250ということで、かなり割安。
Bloombergを読んでいるかなりコアなリーダーにアプローチできる効率的な求人方法かも。
現在、25000件もの求人がPostされてます。これはすごい。

簡単なテキスト広告も直接出稿

bloomberg-payperclick
求人だけでなく、テキスト広告もその場で出稿できるようです。
industrybrain という会社を使っている模様。

関連動画を自動で表示

bloomberg-taboola
最近、日本のメディアでもPVアップのために「関連ニュース」を出すエンジンを利用していたりしますが、関連動画の自動生成ははじめて。
たしかに関連ニュースってテキストだけで中々クリックされにくいイメージがあったのですが、動画であればよりクリックされやすそう。
Taboolaという会社がそのエンジンを提供しているようです。

以上、Bloombergの様々な試みを紹介してきましたが、これからメディアも大変革を迎える時代。

既存のビジネスモデルの脱却から、コンテンツの充実など課題は多そう。
そんな中、チャレンジをし続けるBloombergはどういったイノベーションを出してくるのか、今後が楽しみなメディア企業です。

※もちろん、本業のBloomberg端末事業がうまくいっているという点も、他のメディアと一線を画している気がします。

8maki Web, survey

Quick Zsh Tip: ディレクトリのブックマーク

2月 20th, 2011

Y CombinatorのHacker Newsを見てたら、Bashにおけるディレクトリのブックマーク方法について書かれてました。
これでcdの手間がすごい省ける!
» Quick Bash Tip : Directory Bookmarks

そのzsh版もコメント欄に書かれていたのですが、コピペするだけじゃ動かなかったので、修正版をUP。

# ZSH Directory Bookmarks
alias m1='alias g1="cd `pwd`"'
alias m2='alias g2="cd `pwd`"'
alias m3='alias g3="cd `pwd`"'
alias m4='alias g4="cd `pwd`"'
alias m5='alias g5="cd `pwd`"'
alias m6='alias g6="cd `pwd`"'
alias m7='alias g7="cd `pwd`"'
alias m8='alias g8="cd `pwd`"'
alias m9='alias g9="cd `pwd`"'
alias mdump='alias | grep -e "g[0-9]=" | grep -v "m[0-9]" | sed "s/^g/alias g/g" > ~/.bookmarks'
alias lma='alias | grep -e "g[0-9]=" | grep -v "m[0-9]" | sed "s/^g/alias g/g"'
touch ~/.bookmarks
source ~/.bookmarks

こうするとブックマークされて↓

# This will create a bookmark for the /var/www directory
/var/www% m1

こうするとブックマークしたディレクトリに移動できます↓

# This will cd into /var/www
/var/www% g1

`lma`コマンドで今のブックマーク状況をチェックできます。

/var/www% lma
alias g1='cd /var/www/'
alias g2='cd /etc/httpd/conf.d'

8maki IT, proposal, エンジニア

マニアックな金融系サイトをnode.jsとMongoDBで実装してみた(実装編)

1月 19th, 2011

さて、前回の記事「マニアックな金融系サイトをnode.jsとMongoDBで実装してみた(概要編)」に続き、実装の詳細を書こうと思うのですが、こちらはどうせ技術者しか見ないので手っ取り早く、コードとシェルを中心にします。

この記事では、開発から運営まで一連の流れを示して、node.jsとMongoDBである程度のWebサービスを提供できるようになること、を目的としています。

SakuraのVPSにMongoDBとnode.jsをインストール

以前、別のサーバーにMongoDBを入れてアクセス解析をしようとしたのですが、どうやら32bit版だと1つのDBは2GB以上入れられないらしく。
しかたなしにSakruaのVPS(CentOS64bit)に64bit版のMongoDBをソースコードから入れました。
※32bitだとyumとかapt-getとかで入ったのにー

wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.5.tgz
tar xvzf mongodb-linux-x86_64-1.6.5.tgz
sudo mv mongodb-linux-x86_64-1.6.5 /usr/local/bin # どっか適当に
sudo mv /usr/local/bin/mongodb-linux-x86_64-1.4.3 /usr/local/bin/mongodb
useradd mongodb
mkdir /var/lib/mongodb  # 中身を入れるディレクトリ
chown -R mongodb:mongodb /var/lib/mongodb
mkdir /var/log/mongod
chown -R mongodb:mongodb /var/log/mongod
sudo /sbin/chkconfig --add mongod
/sbin/chkconfig mongod on
/sbin/chkconfig --list |grep mongod
sudo /etc/init.d/mongod # 起動スクリプト
sudo /etc/init.d/mongod start
sudo easy_install pymongo # ついでにpythonから使うのでライブラリインストール

ちなみに、デーモン化したかったので簡単な起動シェルをこちらから拝借してきました。
» 技術メモ
(こちら、公開してなかったらゴメンナサイ。そしたら別にファイル作ります。)

試しにmongoのシェルから動いてるのを確認してみてください。

mongo
----
MongoDB shell version: 1.6.5
connecting to: test
> show dbs
admin
local
test

次にnode.jsを入れます。
安定版の0.2.6をインストール。ssl使う場合はもっと大変そう。

wget http://nodejs.org/dist/node-v0.2.6.tar.gz
tar zxvf node-v0.2.6.tar.gz
cd node-v0.2.6
./configure --without-ssl
make
sudo make install

また、node.jsはライブラリのパッケージ管理にnpmというものを使っていて、こちらもインストール。

ここまできて、npmは/usrとか/usr/localにroot権限で入れるのではなく、$HOME/.npmrcを設定して一般ユーザーの権限で入れるのがベストプラクティスなのだと理解した。
» npmをインストールする – スコトプリゴニエフスク通信

とのことで、おとなしくそれに従う。ってか実際rootで入れると、sudo npm install xxxするときに怒られます。

wget https://download.github.com/isaacs-npm-v0.2.14-6-14-g0cec5bf.tar.gz
cat >>~/.npmrc <<NPMRC
root = $HOME/.node_libraries
binroot = $HOME/bin
manroot = $HOME/share/man
NPMRC
tar -zxvf isaacs-npm-v0.2.14-6-14-g0cec5bf.tar.gz
cd isaacs-npm-v0.2.14-6-14-g0cec5bf
make install

で、必要なライブラリをインストール。

npm install express # これは古いらしく結局ソースから読み込み・・・
npm install mongodb
npm install ejs
npm install spark # 結局使わず・・・
npm install forever

node.jsでwebサーバーを書く

これで一通り環境が整ったので、適当なフォルダにapp.jsかなんかのファイル名でごりごり書いていきます。
前提として、mongoDBに既に必要なデータは入ってるものとします。
詳しくはmongoDBの日本語マニュアルを参照。@doryokujin君に感謝!

ちなみにnode.jsコミュでは一番メジャーっぽい、express.jsっていうフレームワークを使っています。
githubにサンプルコードがたくさん載っていて、特にmvcがとても参考になりました。

なお、フォルダ構成はこんな感じです。
/service
 /public・・・cssとかimgとか静的ファイル
 /express・・・expressの本体
 /views・・・テンプレートファイル
  body.html
  layout.html
  header.html
 app.js

app.js

var express = require('./express'),
	phpjs = require('./php');

var app = module.exports = express.createServer(),
	Db = require('mongodb/db').Db,
	ObjectID = require('mongodb/bson/bson').ObjectID,
	Server = require('mongodb/connection').Server,
	db = new Db('dbname', new Server('localhost', 27017, {}));

app.set('views', __dirname + '/views');
app.register('.html', require('ejs'));
# express.jsはテンプレートエンジンにjadeを使ってるがキモいのでejs
app.set('view engine', 'html');
app.use(express.staticProvider(__dirname + '/public'));
# 静的フォルダの指定
app.use(express.logger('\x1b[33m:method\x1b[0m :date :status \x1b[32m:url\x1b[0m :response-time :remote-addr :referrer'));
# loggerはnode.jsが使っているConnectのformatに対応
app.helpers({ # テンプレートから呼び出せるヘルパー関数群
  helper1: function(){ return false; },
  helper2: functoin(){ return true; }
});
# routingの部分。 / にアクセスしたらこれが実行される
app.get('/', function(req, res){
	getCollection1(function(result1){
		getCollection2(function(result2){
			res.render('body', { # layout.htmlを使ったbody.htmlを描画
				layout:'layout',
				result1: result1,
				result2: result2
			});
		});
	});
});

db.open(function(){}); # dbをオープン。これしないと接続できなかった。。。
function getCollection1(callback) {
	db.collection('collection1', function(error, stock_info) {
		if( error ) console.log(error);
		else {
			stock_info.find({}, function(error, cursor){
				if( error ) console.log(error)
				else{
					cursor.toArray(function(error, results) {
						if( error ) console.log(error)
						else callback(results);
					})
				};
			})
		}
	});
}
function getCollection2(callback) { /* 以下同文 */ }

console.log('Express app started');
app.listen(3000);

layout.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
	<div id="header"><%- partial('header') %></div><!-- こういう風にヘッダも分けれる -->
	<div id="body"><%- body %></div><!-- 中身がここに書かれる -->
</body>
</html>

開発のポイントとしては、
php.jsが便利すぎる!
 phpの関数をjavascriptでどう書くか?というスニペット集。
 上記コードでは必要な関数を外部モジュール化して使ってます。
loggerのformatが不明だった
 node.jsが使っているConnectのサイトにAPIが!
DBへのアクセス毎にcallbackが入れ子していくので、とにかくアクセスは少なく!
 いやはやMongoDB使ってて正解でした。
 これがMySQLだったらどれだけ入れ子していったことか。
 もちろんjsdeferredとか使って同期処理させることはできますが。

これでモノは揃ったので、実際に実行してみます。

cd /path/to/service
node app.js

すると”Express app started”と出るので、実際に http://localhost:3000/ から確認してください。
ポートは自由に変えられます。

nodeのデーモン化を行う

一応以上までで実装は完了してるのですが、これをちゃんとサービスとして運営するにはあともろもろ必要ですよね。

一番てこずったのが、デーモン化。
なんかエラー出して止まっちゃったときに、自動で再起動してくれないと困る。
結論から言うと、npmでインストールできるforeverというライブラリを使っているのですが、右余曲折ありまして。

1. どうやらspark(configの設定、マルチコア対策)+upstart(デーモン化)+monit(監視)がテッパンらしい。
» Deploying Node Apps with Spark – How To Node – NodeJS
» Deploying Node.js With Upstart and Monit
2. sparkはすんなり入った。
3. upstartが動かん・・・ってrequirementがpython2.5以上で他にもCentOS5向けじゃなさそう・・・
» What are the requirements for building Upstart?
4. じゃあmonitから直でspark呼ぶか、ってnpmとか諸々$HOMEに入れてるから、monitから起動できない模様・・・
5. なんか他にも、spark2とかdaemon.nodeとかforeverとか色々あるな~
6. daemon.nodeは割と有名っぽいけど、作者が同じforeverが簡単そう!

cd /path/to/service
forever start app.js

7. 動いた!←イマココ

これで何とかデーモン化ができました。

実際にデプロイする

ちょっとポートを空けてうんぬんとか面倒くさかったので、ApacheからProxyさせました。
これだとloggerの:remote-addressにIPが出ないんですけどね・・・
近々改善予定。
» mitukiii.jp | Ubuntuにnode.js入れてApacheからProxyさせてみた

ついでにMongoDBの状況をmuninでチェックできるように、mongo-muninとやらを導入しました。

sudo ln -s /usr/share/munin/plugins/mongo_ops /etc/munin/plugins/mongo_ops
sudo /etc/init.d/munin-node restart

まとめ

いやいや、MongoDBもnode.jsも初めてだったので四苦八苦しました。
しかもnode.jsに関しては、まとまった日本語ドキュメントが無いという・・・
ていうか全体的にドキュメントが不足がち。
しかもまだ安定運営周りの方法が確立していないようで、色々議論されてました。
node servers, npm scripts, spark2 and monit
たしかにnpm start app.jsで管理できたら便利やなー

でもこれで、一通りnode.js周りのことが勉強できたし、足りないとこだらけなので貢献していければなーと思います。
久々の長文ありがとうございました。

今回リリースしたサイト↓
http://marketgeek.net/ja/

8maki IT, proposal, エンジニア, サービス , ,

マニアックな金融系サイトをnode.jsとMongoDBで実装してみた(概要編)

1月 19th, 2011

ちょっと半分趣味で、Marketgeekなるマニアックなファイナンス系のサイトを、意味もなくnode.jsとMongoDBで実装、リリースしました。

ただ、node.jsとMongoDBは結構はやりな割に、運用実績がすごく少ないようで、その技術の背景など含めてまとめてみました。
※なお、開発回りのことだけ知りたい方はこちらへどうぞ↓
» マニアックな金融系サイトをnode.jsとMongoDBで実装してみた(実装編)

node.jsとは何か?

node.jsは、サーバーサイドJavascriptのフレームワークで、簡単にWebサーバー等を実装することができます。

サーバサイドJavascriptは昔から注目されていましたが、node.jsの登場で一気にその流れが加速。
理由といえば、こういう類のモノにしては、びっくりするくらい速い!こと。
Google Chromeで採用していたV8をJavascrptエンジンに使っており、スピードUPが測れたとのこと。
いわゆる”Pythonより速い”らしいw

加えて、昨今HTML5も騒がれていますが、そうなるとサーバーへのリクエストが細分化されますよね?
そうすると非同期で処理するnode.jsはうってつけかも!という流れもあり(WebSocketとか)、今年はnode.jsの年!と言われるようになったのかも。

node.jsに関してはこの記事が詳しいです↓
» 2011年はサーバサイドJavaScriptの年になる - Publickey

MongoDBとは何か?

MongoDBとは、いわゆるNoSQL系のDBで、最新DBの中では一番注目されているオープンソースです。
今まで主流のDBであるRDBは、いわゆるExcelのようにまず列を決めてその属性群(スキーマと言う)をもったデータを行として入れていく、というスタイルのものでしたが、NoSQL系のDBではkey(IDのようなもの)でデータを管理し、そのデータの属性(スキーマ)は一定に決めなくてもよい、という柔軟なデータ構造を取れるため各所で使われ始めています。
スキーマレスDBとも言われています。

中でもMongoDBは、KVS(Key Value Store)だけでなく、複雑な検索を行ったり、インデックス張ったり、簡単にスケールさせられたり(サーバー増やしやすい)と、実用にかなった機能をもっているため広まってきています。

ちなみに実用実績としては、ForsquareがMongoDBを採用してるようです。
MongoDBと他のDBとの比較はこの記事が詳しいです↓
» MongoDB’s performance as compared to others

また、3月頭にMongoDBの商用サポートを行っている10genのイベントが東京であるらしいので興味ある方はどうぞ。
» Mongo Tokyo

なぜnode.js+MongoDBを使って実装したのか?

柔軟に金融情報を管理しようとするとスキーマ決めるのって難しいよねーっていう感じと、今後もっとリッチなVisualizationを作っていくためにAjaxとかWebSocketに適してるっぽいのがいいという勘で、MongoDBとnode.jsを選んでみました。

。。。正直あんま理由とかはないですけどねf^^;
ていうか、もともとこういうサイトを作る気合いはあったのですが、ただ技術的には何も新しい・難しいことはないので、だったら勉強がてらやってみよう!というノリでw

あと、オープンソースコミュニティにもそろそろ絡んでいきたいなーと思っていて、発展途上のnode.jsとMongoDBは最適だ思ったので。
開発して分かったのですが、まだまだ色々な問題点があるので、随時コミットしていきたい。

なぜMarketgeekを作ったのか?

日本のベンチャー界隈も「世界へ出ろ!英語化しろ!」とはやし立てられてますけど、実際世界と日本の違いをまともに話せる人、まともに比較できるリソースがあまりにも少なすぎるかなー、と。
それだと「とりあえず英語化して、海外視察して、ちょっと英語でプレゼンしてみて。」っていう感じで終わってしまう気がする。
そこで、具体的に何を目標にどうアプローチしていけばよいのか、思考のネタになるものを作ってみたかったとです。

加えて、逆に英語圏の人からアジアのベンチャーとかって、中々見えにくいのではないでしょうか?
2バイト文字ばっかだし。
もちろん中国とかシンガポールとかにたくさんVCは進出してきてある程度情報が海を越えてるかもしれませんが、英語で書かれた米メディアに比べて、アジアの英語メディアって圧倒的に少ない。
特に東南アジア。
これからはアジアの時代になると言われていますし、思った以上にニーズがありそうで、かつそれなりのポジションを築けそうだったのでホイホイ作ってみました。

まぁなにより作ってて単純に楽しかったです。
最先端の技術使って、興味のあるマニアックなもの作ってw
Naspersって2兆円もあるのか!フヒヒヒヒヒっwwwみたいなw

あ、ちなみにNaspersは@anritさんが作ったこの図が凄く分かりやすい。
Zynga、Groupon、Facebookの金の供給元ってすごいですよね。
naspers

とりあえず見てみてください。随時機能拡張予定です。
http://marketgeek.net/ja/

あと、要望とかコメントとかあったらtwitterへどうぞ⇒@marketgeek_net

技術編はこちら↓
» マニアックな金融系サイトをnode.jsとmongoDBで実装してみた(実装編)

8maki IT, proposal, エンジニア, サービス, 金融 , , , ,

GAE専用のフレームワーク「Kay Framework」のチュートリアルを試す

9月 5th, 2010

ちょっと大量のデータをやりとりするようなWebアプリケーションのプロトタイプを作って、色々データ分析したくなった。
そこで、ちょちょっとTwitterの分析系アプリを作ろうと思い立って、大量のデータを安価に、簡単にスケールさせられることからGAE(Google App Engine)に手を出した。

実は結構前からGAEを色々いじくってるんだが、いつもpythonのWebフレームワークとして使っているdjango(正式にはジャンゴと読むらしい)がGAEだと結構めんどくさそう。
バージョンも0.9と古いということでうまいやり方を探していいたところ、友人にKay FrameworkなるGAE専用の日本人作フレームワークを教えてもらったので使ってみた。

結論:かなり使いやすい!

Twitter OAuthとの繋ぎこみあたりなんか、デフォルトで仕組みが組み込まれてて、5分くらいで実装できた。
そこまで行くのに、チュートリアルとかいじりつつ、4時間ぐらいか。

» 1. Kay チュートリアル — Kay v0.10.0 documentation

日本人の方が作っているということで日本語ドキュメントもそれなりに整備されていて、かなり扱いやすかったのだが、manage.pyを使わず、Google App Engine Launcherを主に使って嵌った点があったのでまとめる。

1.2.4. GAE にアップロードする

デプロイしてwebを確認したら、下記のようなエラーが出た。
TemplateNotFound: myapp/index.html
どうやら、tenplateファイルをコンパイルする必要があるらしい。
実際、下記のコマンドを実行するとエラーは消えた。

python manage.py preparse_apps

1.7.2. 管理用スクリプト

データベースのマスタデータの挿入などの管理スクリプトの実行をどうするのか迷ったが、普通に下記のようにコマンドを打てば大丈夫。

python manage.py create_categories -h localhost:8080 --no-secure

これは、本番環境でも使える。
localhost:8080 -> xxx.appspot.com

OAuth

さて、実際にTwitter OAuthと連携させる段階。
どうやらKay FrameworkはOpenIDやOAuthにも既に対応しているらしい。

» Kay Framework で認証に Twitter の OAuth を使う方法

この通りにやったら本当にできてしまった。
一瞬。

これから簡単なTwitterアプリを作ろうって人は、Kay Frameworkが激しくオススメ!!
» kay-framework – Project Hosting on Google Code

※今までメディアブログを意識して文体は丁寧語でしたが、もっと気軽にブログを書きたいと思ったので、ゆるい感じの文体に戻そうかと。

8maki IT, proposal, エンジニア

DropboxのYCombinator応募フォームに見るハッカー達の起業感

5月 30th, 2010

以前、@hrjn がtwitterで言及していたのですが、2007年夏のDropbox創業者:Drew Houston(当時24歳)のYCombinatorに応募するときの応募フォームが公開されていました。
読んでみると向こうのハッカー達の起業感がにじみ出てたので、気付きをまとめます。
個人的にDropboxは、自分が起業する場合のロールモデルかな~と思ったり。

» Y Combinator Funding Application – Dropbox

印象的な質問はこの5つ。

# Please tell us in one or two sentences something about each founder that shows a high level of ability.
(それぞれの創業者はどんなハイレベル能力を持っていますか?)
よく起業は、「何をするか?」よりも「誰とするか?」が重要だ、という話を聞きます。
もちろん「何をするのか?」も重要で、フォームの中でも1番目の質問はこの手の質問なのですが、2,3番目に創業メンバーに関する問いが続いている当たり、日本よりも細かく創業メンバーのスキル・人柄が見られている気がします。

# For founders who are hackers: what cool things have you built? (Include urls if possible.)
(創業者にハッカーがいたら、彼はどんなクールなモノを今までに作りましたか?)
生粋のハッカーであるPaul Grahamが創立したYCombinator”らしさ”が出る質問。
これ対してDrewの答えがまたSVチックw

Programming since age 5; startups since age 14;
(5歳の時のプログラミングを初めて、14歳のときに起業した。)

# How long will it take before you have a prototype? A beta? A version you can charge for?
(プロトタイプを作るまでにどのくらいの期間がかかりましたか?)
Paul Grahamは、サービスを作るときは3ヵ月で作れ、と言っていますが、スタートアップはスピード感が命。
個人的にも、ほとんどのサービスはそんなに時間かけずに出来てしまう印象があって、一つのことにフォーカスできるエネルギーが起業には最も重要なのかも。
Dropboxのプロトタイプは、別の会社で働きながらも8週間でできたそうです。

ちなみに伊藤譲一は1ヶ月半で作れ、と言っていたようなw

# Which companies would be most likely to buy you?
(もしあなたの会社を買収するとしたらどの会社?)
# If one wanted to buy you three months in (August 2007), what’s the lowest offer you’d take?
(もし3ヵ月以内で買い手が現れたら、最低いくらで応じますか?)
これは向こうならではの問いですよね。
M&Aマーケットが盛んなシリコンバレーでは、Exitとしてバイアウトは自然に出てくる発想。
日本では中々難しい選択肢ですが、グローバルに打って出る!という気概のある日本のテクノロジーベンチャーであれば、むしろバイアウト狙いの方が現実的な選択肢のような気がします。

そして、Drewの解答の中にも面白いセンテンスがいくつか。

My friend and roommate (redacted) from MIT is helping out too, but he works with me at Bit9, and a non-solicit clause in my employment contract prevents me from recruiting him (and the VP Eng explicitly told me not to recruit him.)
(私のMITからの友人とルームメイトも助けてくれていて、彼は今Bit9で私と働いていますが、私と会社との雇用契約から彼を雇うことができません。)

契約で引き抜きとかが禁止されているんですね。
起業が盛んなシリコンバレーでは当然なのでしょうか。(あるいは、ただの雇用契約をきっちり決めるという向こうのやり方なのか。)

In any case, I have several leads, have been networking aggressively, and fully intend to get someone else on board — either another good hacker or a more sales-oriented guy (e.g. the role Matt fills at Xobni). I’m aware that the odds aren’t good for single founders, and would rather work with other people anyway.
(とにかく、積極的にネットワークを広げて、他の人に加わってほしいと思っています。できれば優秀なハッカーかビジネス系の人(XobniのMattのような)が。私は一人で起業することは不利だと思っており、とにもかくにも他の人と一緒に創業したい。)

私も一人で起業するよりも、数人で役割分担しながら起業した方が良い気がします。
もちろん他のメンツが入れ替わっても一人でもやりぬく、という強靭な意志も必要ですが、互いに切磋琢磨でき、質の高いモノを作るための議論が行え、何より気の合う仲間と働くのは楽しい。

Paul Grahamも下記3つの理由からSingle Founderは勧めていません。
・自信の無さの表れだから。自信があるなら他の人を巻き込みなさい。
・一人で会社を運営するのは大変だし、自分の判断をチェックできるシステムが無い。
・結束力が起業を強くする。
» The 18 Mistakes Than Kill Startups

ちょくちょく向こうの起業家話を聞いたり、読んだりするとテンションが上がります。
下のFacebookの本もすげー生々しくて面白かったです。

8maki proposal, シリコンバレー, ベンチャー ,

Web系企業の従業員一人当たり売上高ランキング

5月 25th, 2010

最近、「小さなチーム、大きな仕事―37シグナルズ成功の法則」という本で話題の、37signalsのブログで、Web系ハイテク企業の従業員一人当たりの売上高ランキングを出していました。

rev_emp_graph

» Ranking tech companies by revenue per employee – (37signals)

The Calacanis/DHH discussion touched on the idea that web companies should pay more attention to unique visitors per employee. The theory: That ratio forces you to get away from talking sheer size/traffic and instead focus on efficiency.

この記事で、Web企業はもっと従業員一人当たりのユニークユーザー数に注意を払うべきだ、という提案がされています。
はじめはAlexaのランキング順位で比較していたみたいですが、AmazonとGoogleのトラフィックはそもそも中身が異なるということで、年間売上を比較していました。

よく自分の給料の4倍は稼げ、と言われたりしますが、Craigslistは神としても、一人当たり1億円くらい稼いでいるGoogleやAmazon、Facebookは非常に効率のよい体質なのが分かります。

では、日本企業はどうなのか?

日本企業は事業効率が悪いという印象があったのですが、実際のところどうなのか、同じ指標を用いて調べてみました。

日本のWeb企業の従業員一人当たり売上高ランキング

revenue-rank

No. 企業名 従業員数(人) 売上高(百万円) 一人当たり売上高(百万円)
1 グリー(株) 118 13,945 118.17
2 (株)ディー・エヌ・エー 442 39,030 88.30
3 (株)CHINTAI 108 9,244 85.59
4 ヤフー(株) 3,560 250,240 70.29
5 (株)ザッパラス 149 9,612 64.51
6 (株)ファンコミュニケーションズ 129 8,016 62.13
7 (株)一休 47 2,790 59.36
8 (株)サイバーエージェント 760 42,442 55.84
9 (株)ミクシィ 247 13,600 55.06
10 (株)カカクコム 229 12,067 52.69
13 楽天(株) 2,625 113,555 43.25
19 クックパッド(株) 58 1,083 18.67

(売上高や従業員数はYahoo!ファイナンスから抜粋)

時価総額が100億円を超えるWeb系企業の、従業員一人当たりの売上高ランキングをグラフ化しました。
(理想的には営業利益で比較すべきですが、上記米国企業と比較するために売上高でランキングをしています。)

示唆

・グリー、DeNA当たりは、最近のびっくり決算から見ても当然のように思えたが、意外にヤフーが健闘、一休が少ない従業員ながら大手に引けを取らない売上を上げる良い企業体質っぽい。

・たまにGoogleが「一人当たり1億稼いでる!」というのをニュースやブログで目にするが、日本企業と比較してもそこまで非現実的な数値ではない。
(Googleのすごいところは、従業員が19,835人もいる、ということかもしれません。)

・向こうのYahoo!やebayと比較しても、圧倒的に日本企業が劣っているというわけではない。
もちろん業界の平均を比較してみないと結論は出ませんが、向こうのメジャーな企業と比較してもトントンな企業も多いというわけです。

・とは言え、Craigslistのような一人3億円稼ぐようなバケモノ企業は、今のところ日本には無い。
上場していない企業もあると思いますが、さすがに数十億稼いでいて従業員数が1桁、っていうのはあまり見たことがありません。
※ngi groupが従業員を8人としていることもあり、数値上そのような構造になっていましたが、売り上げの多くが投資から来ていそうな点と、一気に従業員を減らした点から例外だと思われます。

8maki survey, 企業 ,

今のiPadでできること・できないこと2

5月 20th, 2010

先日の記事、「今のiPadでできること・できないこと」が割と好評だったので、書き漏らしを追記します。

なんか半分以上、アプリの紹介になってしまいましたが・・・f^^;

画面の向き固定
デュアルディスプレイ化
日本の雑誌の購読
リモートデスクトップ/Linuxへのアクセス

画面の向きの固定

ipad2-hold

地味に知ってる人が少ない画面の向きの固定機能。
右側の側面に、音量調節スイッチの上にHOLDスイッチが付いてます。
iPhoneではHOLDができないため、寝転がると向きを変えてしまってすげー不便、と言う声は良く聞いていたのですが、iPadでは解決しています。

デュアルディスプレイ化

ipad2-dual

iPadをディスプレイとして使っちゃおうという使い方。
iDisplayというアプリを使えば、PCとWifiを通じて外部ディスプレイとして使うことができるようです。
Gizmodeで詳細なレビューがされています。
4月初旬段階ではまだまだバグが多いようですが、今ならもう直ってるかな?
あと、AirDisplayという拡張ディスプレイ用のアプリも、今週中くらいに登場予定。

日本の雑誌の購読

ipad2-maga

ちょうど昨日リリースされたマガストアというアプリが凄いです。
日本の雑誌をiPadでダウンロードして、読むことができます。
値段はだいたい、本誌の100円引きくらい。
AERA週刊NewsweekF1速報というマニアックな雑誌も扱っています。

中身はというと、雑誌のデータをまんま画像データとして入れた感じ。
見開きなどは見れませんが、いちいち本屋に行かずに買え、どこでも読むことができるので重宝しそうです。

リモートデスクトップ/Linuxへのアクセス

ipad2-remote

LogMeIn Ignitionというアプリを使えば、会社や家のPCのデスクトップにアクセスできるようになります。
¥3,500と割高ですが、かなり人気のアプリのようです。

また、iSSHというアプリは、LinuxへのSSH接続機能を提供しています。
これらを使えば、開発関連のタスクをすべてiPadで行うことができるようになるかもしれませんね。
もちろん、iPadのキータッチ入力だとプログラミングはしにくいので、BlueToothの外付けキーボードの接続をオススメしますが!

8maki IT, proposal, サービス