2011/02/27

[memo] Livedoor Technical Seminar #5

http://blog.livedoor.jp/techblog/archives/65434269.html

昨日ライブドア主催の技術セミナーに行ってきた。遅刻してしまったので途中からではあるが以下にSummaryのメモを置いておく。自分のための超適当メモなんで、詳細はのちに公開されるであろう動画をちゃんと見てくださいね(はぁと

ソーシャルアプリは参入障壁が低いなりにちゃんと考えて作らないといけないんだなということと、スピード感と新技術の採用という部分のバランスが重要なんだなと勝手に思いました。まる。

****

- HTML5 でFlash Playerを作ってみた(途中から)

- SVG
-- 描画速度が遅いのが問題
-- 最適化することがプログラムから指示しずらい
-- 2fps -> 8fps だったが断念 (iPhone 3GSの環境)

-- canvas をキャッシュ
--- ラビン/カーブ検索 で描画した配列の一致した部分のみをキャッシュする
--- 15 fps

****

- 新進気鋭のSAPに聞いたソーシャルアプリ現場事情

1. 登壇者について

- 株式会社オルトプラス 石井さん
(ブラウザ三国志の製作を指揮。現在はダービーズキングの伝説というゲームをグリーでリリース)

2. ダービーズキングの伝説 について

- ダービーズキングの伝説は登録者数100万人突破、アクティブユーザーが10万人
-- オンラインゲーム登録者数 -> 10000〜15000が相場
-- ソーシャルゲームの登録者数、アクティブユーザー数は右肩上がりののち、下がる一方なのが普通だが、ダービーズキングの伝説は右肩上がりを維持している
-- 小さく産んで大きく育てる
--- やめられないようにするためには、比較的課金を早いタイミングでやって、タイトルを覚えてもらうこと。これはゲームタイトルがどんどん出てくるので、スイッチングコストが低いから。
--- PC市場に比べてモバイル(ガラケー)は課金障壁が非常に低い
--- 一方でPCに比べて伝えられる情報が非常に少ない。検索してたどり着くよりはバイラルで広まることが前提になる。友達が始めたから始めた、的なやり方が多い。10万〜20万くらいの人数があればバイラルが聞くが、そこまでいけるかどうかが成功するまでの一つの壁

3. 開発コストについて

- 開発コストの点でいくと、十数人の人数が6ヶ月動いた>ブラウザ三国志。
- ダービーズキングの伝説は4名で1ヶ月-> 開発コストはかなり安い ファミコン時代に似た感じ。当たれば大きい。- コンソールゲーム(ゲーム機用に製作されたゲーム)は桁がひとつか二つくらい開発費が上になる

4. なぜ競馬ゲームなのか?

- なぜ競馬ゲームかというと、外国等で既にあるものを日本に持ってくるのはやめようと考えたから。日本のよさが出せるものを。

5. ガラケーとスマートフォンの違いは?

- ガラケー -> flash lite 1.1 -> 枯れている
- Android -> ユーザに若い男性が比較的多い
--作って見ないと判らない部分がある
-- 端末依存が大きい
-- 移植に手間がかかることがある
- iOS (ダービーズキングの伝説はまだ未対応)
-- 一度覚えれば作法が一つなので一度覚えてしまえばやりやすい。-> ユーザに若い女性が比較的多い
-- iOS については、4割がユーザに占めていて、lostしている状況 -> 是非人を採用したい

*****

- GREEのスマートフォンアプリ開発の現在(伊藤直也さん)

1. スマートフォンビジネスのトレンド

- 今年の年末はスマフォ向けでもクアッドコアで2GHz超え -> 性能がどんどんあがっていく
- 1億スマートフォン (9200万PCを超えた)
- PC利用時間は -20%
- 世界的にスマフォの普及スピードは凄く早い
-- 日本国内では2年後には6000万台を契約ベースで超える予想がある。その2年後にはiOSでなくてAndroidがその半分以上を占める予想もある
- スマフォ需要により3年ぶりに出荷台数がプラス
-- スマフォによりデータARPUが上昇するから
- 女性向けへのマーケも活発

2. スマートフォンアクティビィティの実際

- すべての時間のうち、電話、Webサーフィンが半分
- 残りはアプリ、ゲーム -> アプリ開発者には有利な状況
- コンソールゲーム市場は後退している
- ソーシャルゲームの売上は右肩上がり -> シリコンバレーでもソーシャルゲームバトル
- Facebook Mobile -> 現在アクティブユーザ2億人(2年間で4倍に増加)
- Twitter -> アクティブユーザの半分がモバイルアクセス、新規ユーザーの16%がモバイルから
- アプリ内課金が本格化(android, iphoneともに)
-- 急成長。50%が In App. 有料DLからIn-App課金へ
-- Android が 既に iPhoneを超え始めている Android 2.1, 2.2 が支配的

3. NFC(Near Field Communication)

- Android 2.3で対応。iPhone 5, iPad 2にも搭載か
-- taglet というサービス -> Android 2.3 +NFCによる情報共有サービス。taglet で mixiチェックイン

4. GREEのスマートフォン開発

- HTML5 and CSS3 and Javascript
-- Webkit ベースブラウザ、新技術を積極的に採用できる
-- ローカルセキュリティの関係で、カメラ等に直接アクセスできない
-- HTML5 + css + javascript だけでできないことをネイティブが補うというアーキテクチャ
-- UIの拡張の方もアプリで

- アーキテクチャ比較
-- HTML5
-- ネイティブ
-- JSミドルウェア(Titanium等) => 動的更新の点で難あり
-- ハイブリッド -> HTML5 and CSS3 + javascript + ネイティブ

※ Javascript で アニメーション GIFを再生するのに悩む -> dataスキームでgifデータを連続して送り、settimeoutで再生していくライブラリを作った

5. クロスモバイルプラットフォーム開発のトレンド

- 急発展の最中
- まだデファクトは決まらず
- 長期的には HTML5へ。短期的にはネイティブアプリ

- ミドルウェア

-- Titanium mobile, 開発例:MogSnap
--- JSで書いたものがネイティブアプリになる
--- iPhoneはよくできているが、Android向けはまだまだ発展途上

-- PhoneGap
--- ハイブリッドモデル(HTML5 + native)のアプリを作るためのフレームワーク
--- 中身がWebViewでよければこれ

-- Unreal Engine -> 3Dゲーム開発ミドルウェアの大御所
--- C, C++, Android はこれから

-- Corona SDK
--- Lua で 2D開発。ActionScriptライクに開発

-- Airplay SDK
--- C/C++ で write once -> Android, iPhone, コンソールゲーム機もサポート

-- Unity : Game Development Tool
--- JavaScript, C#, Lua etc で 3D可いつ。ActionScript用に。
--- これが本命? スマフォの世界で台頭してくると思われる
--- True Multiple Development

- HTML5 Webアプリフレームワーク
-- jQuery Mobile
-- Sencha Touch
-- JQTouch

6. まとめ

スマートフォン&Androidはじまったな
-> GREEもフィーチャーフォンからスマートフォンへ
Mobile = Global

海外では3Gの回線普及率がまだまだなので、回線がつながっている前提で
作るとおかしなことになる。-> Nativeアプリ中心。通信が必要になったときだけ通信する
--> 速い回線が整えばHTML5で作っていくモデルがはやっていくのではないか

2011/02/23

binary exponentiation

任意の数の累乗を計算する時には、for文で累乗する回数だけ数を掛け合わせる、というのは小学生でも思いつく。だが、累乗する回数が大きくなったとき、例えば1億乗とかやられたときには極端に遅くなるのは明らかだ。

二進累乗法というやり方がある。これは2の累乗に乗数を展開することで、掛ける回数をビット数+数回に抑えるという考え方だ。累乗する数を1ビットシフトして掛けることで、x^2, x^4, x^8, x^16 ... といった具合で累乗する回数を2の累乗倍に増やしていくことで、累乗する回数を減らすことができる。

累乗する回数を減らすことは、累乗する対象の値が double だった場合に誤差を減らす効果をもたらす。
.... って、言葉で言ってもわけわかんないすよね(´ー`; )



[ Update September 11th 2012 06:32 JST by m ]

べき乗のアルゴリズムのうち、上位桁から計算する方法 を上記はコードにしたものだ。これの計算量は 最大でも 2 * logN (N は累乗する回数) なので、O(logN) となる。

2011/02/14

% operator

http://0xcc.net/blog/archives/000083.html

剰余を求める % 演算子はプログラムの世界では非常によく用いられる。特に一定の範囲の数値があった場合に、剰余が同じ値で数値をグループ化する用途に役立つのは皆様ご存知でしょう。

たまたま2つの値の最大公約数を求める関数を再発明する機会があり、コードを書いていた。この問題に対して、この世界でよくある解法が「ユークリッドの互除法」である。これは以下の手順(※)で成り立つ

1. 2つの値のうち大きなものから小さなものを引く
2. 1. の結果と、値の小さなものについて、上記 1. を繰り返す
3. 1. の結果が0になったとき、その時に引いた小さい値が最大公約数である

上記 2. を繰り返すことは、最終的には値の小さなもので割ったときの余りを求めることと同義なので、この手順は剰余で代用することで速度向上を図るのが普通だ。これをコードにすると以下のような感じである。

b = b % a;

このときに、b と a のどちらか(もしくはいずれか)が負の数値だったらどうなるか。このコードをレビューしていた pascaljp から「オペランドが負の場合、結果も負の場合があるよ」と指摘されてびっくらこいた。

よーく考えると、負の剰余って複数通りの解釈ができる。

7 % -5 -> 余りは -3(商は-2)または 2(商は-1)
-7 % 5 -> 余りは 3(商は-2)または -2(商は-1)
-7 % -5 -> 余りは 3(商は-2)または -2(商は1)

これについては処理系によってまちまちのようで、それを詳しく示したのが上記の高林さんのエントリである。

実際、剰余演算子を使う場合、「余りの値については殆どの場合興味がなく、グループ化する用途には役立ってればいい」という考え方もあるだろうが、今回の場合みたく問題になることもあるんだなと再認識した次第である。

よく考えたら、2つの値の最大公約数を求める場合に、片方または両方が負であっても最大公約数は同じことがわかったのでそれを用いて書き下したのが以下のコードである。



(※) これは A, B の最大公約数をGとすると、B と A - B の最大公約数もGとなるという考え方に基づく。その証明は ここ あたりでもどうぞ。

2011/02/05

Safari Books Online account reactivation

かつて自分は Safari Books Online を1年単位で購読していて、年5万近い代金を払っていた。
このコストを一時期負担に感じたことがあって、一度アカウントを無効化した。

----

昨日久々に Safari Books Online を見ると Monthly(月単位購読) プランとか言うのが出来ていて割とお手頃であったため、そっちを購読しようと思った。しかし、、

1. かつて年単位購読していたためか、月単位のプランに移行できなかった。
2. 別アカウントを作ろうとしたが、同じクレジットカードだと登録を拒まれた
3. FAQ にはプランを downgrade する方法が書いてあるが、必要な操作をしろ、としか書いてない

業を煮やしてサポートに問い合わせたら、明後日を請求日として月単位アカウントを設定しておいた(!)(※)から、今は Reactivate できるよと返事が来た。この謎仕様はなんなんだ(´ー`; )

ともあれ、実際過去に年単位購読をしていた人は月単位購読には移行できないらしい。
決済の都合もあるだろうから、アカウントが有効な人に対してこの仕様を適用するなら話はわかるが、一度アカウントを無効にして購読期限も切れているユーザにこれを適用する理由はないと思うぞ(´ー`; )

----

Thank you for contacting Safari Books Online

I appreciate your interest about reactivating your Safari subscription and I’m sorry to see
you with trouble in get going with it.

Since you had an annual subscription, you were unable to see the option to reactivate it with
monthly billing. However, I have set your account as monthly subscription with billing date as
02/07/2011, so that you can now activate your 10 slot subscription with monthly charge of $22.99
per month.

Please let me know if you have any other questions, I’ll be happy to help you.

Regards
Customer Support
Safari Books Online, LLC

--- Included ---

Hi,

In the past, I subscribed yearly safari library account and deactivated it. Now I try to
reactivate my account and change the subscription plan to monthly 10-Slot Bookshelf plan
($22.99/Month).

But I cannot select the plan in "Reactivate Account" page. What can I do next?
----

※ おいまだ Reactivate してないのに請求日を設定すなよ!

2011/02/04

introspection(3)

思考停止しないのも大事。努力することも大事。人と話をするのも大事。けど一番大事なのは前を向くことである。(一行独白