Open Source Type Pad Mobile - Presentation Transcript
OpenSource TypePad Mobile
Hiroshi Sakai
Six Apart K.K.
id:ziguzagu
TypePad
What's TypePad ?
● ブログホスティングサービス
● Since 2003
● ASP / ライセンス
● Movable Type のコードを元に開発
– それぞれ別の方向に進化したので、似たような部分
はあるにせよ基本的に別物
What becomes OpenSource?
PC 携帯
管理
閲覧 ココ
TypeCast
Overview
● ウェブサービスに Mobile 用の閲覧機能を作る
ためのアプリケーション
● フレームワークとしてMovable Type Open
Source を利用
● 各携帯キャリアごとに最適化されたHTML
● データソースとして Atom API 経由で取得し
た Atom を利用
Generic Processing
● Atom / Atom API
● 共通のHTML生成
● 各キャリア向けHTML変換
Atom / Atom API
Atom as DataSource
● XML::Atom::Client
– 今のところ API の URL は MT にマッチしたもの
● 取得した Atom から、MT::Blog /
MT::Entry / MT::Comment オブジェクトも
どきを生成
● Atom Server 側では UserAgent を判別して
meta / link を追加したりも
Generate
Common HTML
How to generate
● MTOS のテンプレートエンジンを利用
– MTタグを使ったテンプレート
● コンテンツ中の a / img タグのURL変換
– TypeCast 経由で表示するための URL に変換
● コンテンツ(HTML)の分割
– 複数ページに分割してサイズ制限をクリア
● TypePad 絵文字記法のフィルタ
– 本来ここでやるべきではないので一旦実装外し
HTML::Split
● HTML を指定文字数で分割
● HTML タグを壊さない
– HTMLタグ途中で分割したりしない
● 改ページしても DOM ツリーを壊さない
● A 要素は終了タグまでをまとめてだす
– テキストノード、子ノードがページ分割文字数を超
えない限りは途中で分割しない
HTML::Split Example
my $html = <<HTML;
<div class=\"pkg\">
<h1>HTML::Split</h1>
<p>Splitting HTML by number of
characters.</p>
</div>
HTML;
my @pages = HTML::Split->split(
html => $html, length => 50,
);
HTML::Split Example
Part1:
<div class=\"pkg\">
<h1>HTML::Split</h1>
<p>Splittin</p></div>
Part2:
<div class=\"pkg\">
<p>g HTML by number of characters.</p></
div>
We love Emoticons !!
● TypePad の絵文字画像を GPL2 / CC で公開
Performance Tuning
Where is bottleneck ?
● Atom サーバーに負荷がかかる
– Atom をキャッシュ(in memcached)して Atom
API へのアクセス数を減らす
● HTML生成時に負荷がかかる
– 共通HTMLをキャッシュ(in memcached)して、
HTML生成にかかる処理時間を半分以下に
The Goal
of
TypeCast
We heading...
● Atom API を持つサービスを広く Mobile 対
応できるように
– Atom API へのアクセス、Atom からのオブジェ
クト生成を抽象化
– More configurable
● Open な Mobile 開発を
How to get the TypeCast ?
● Project in Google Code
– http://code.google.com/p/typecastmobile/
● Google Group
– http://groups.google.co.jp/group/typecastmobile
0 comments
Post a comment