シックス・アパート・フレームワーク シックス・アパート株式会社 YAPC::Asia 2009
自己紹介  
重田崇嗣  (Takatsugu Shigeta) TypePad 開発 シニアマネージャー 2005 年 5 月 シックス・アパート株式会社入社  -> TypePad 開発エンジニア 2007 年 11 月  TypePad 開発 シニアマネージャー 現在に至る
TypePad Profiles http://www.typepad.com/profiles/
http://profile.typepad.com/comewalk  
 
Where is TypeKey?
" TypeKey is now part of TypePad    TypeKey has evolved, and is now part of TypePad." http://www.typepad.com/profiles/typekey-faq.html
Get started right away ! http://www.typepad.com/profiles/
会社紹介
会社概要 シックス・アパート株式会社  ( 英文 : Six Apart KK) 米国  Six Apart  の日本法人 SAKK  と呼ばれることもあります。
http://www.sixapart.jp/anniversary/history.html
http://www.sixapart.jp/anniversary/history.html
http://www.sixapart.jp/anniversary/history.html
http://www.sixapart.jp/anniversary/history.html
http://www.sixapart.jp/anniversary/history.html
twitter.com/sixapartkk twitter.com/sixapart
製品紹介
Movable Type TypePad Vox
http://blogs.com/
http://jp.blogs.com/
 
シックス・アパート・フレームワーク
Product History 2003 Released Movable Type 2.6 2003 Launched TypePad 2005 Acquired LiveJournal 2006 Released Movable Type 3.3 2006 Launched Vox 2007 Released Movable Type 4 2009 New TypePad 2009 Movable Type 5
MT  フレームワーク   ArcheType
MT フレームワーク
Product History 2003 Released  Movable Type  2.6 2003 Launched TypePad 2005 Acquired LiveJournal 2006 Released  Movable Type  3.3 2006 Launched Vox 2007 Released  Movable Type  4 2009 New TypePad 2009  Movable Type  5
 
http://conferences.yapcasia.org/ya2008/talk/1005
use base qw( MT );
Movable Type Directory Tree : / +--addons +--alt-tmpl +--default_templates +--extlib +--import +-- lib +--mt-static +--php +--plugins +--search_templates +--themes +--tmpl +--tools  
Movable Type Directory Tree: lib/MT +--MT |  +--App |  |  +--Search |  +--ArchiveType |  +--Asset |  +--Auth |  +--BackupRestore |  +--Cache |  +--CMS |  +--Compat |  +--FileMgr |  +--I18N |  +--L10N |  +--Meta |  +--Object |  +--ObjectDriver |  |  +--DDL |  |  +--Driver |  |  |  +--Cache |  |  |  +--DBD |  |  +--SQL |  +--Plugin |  +--Revisable |  +--Summary |  +--Template |  |  +--Context |  |  +--Tags |  +--Theme |  +--TheSchwartz |  +--Upgrade |  +--Util |  |  +--Archive |  |  +--YAML |  +--Worker
(Show Class Tree)
Model: MT::Object
 
( 例 ) MT::Entry package MT::Entry; use strict; use base qw( MT::Object  MT::Taggable MT::Scorable MT::Summarizable MT::Revisable  ); __PACKAGE__->install_properties({     column_defs => {         'id' => 'integer not null auto_increme
Create / Read # create new  my $entry = MT->model('entry')->new; $entry-> save ; # read one my $entry = MT->model('entry')-> load ($entryid); # use iterator my $iter = MT::Tag-> load_iter ( { id => \@tag_ids } ); while (my $tag = $iter->()) {      print $tag->name;  }
Update / Delete my $entry = MT->model('entry')-> load ($entry_id);   # update $entry->title('YAPC::Asia 2009'); $entry-> save ; # delete $entry-> remove ;
View: MT::Template
$app->load_tmpl( 'list_blog.tmpl', \%param );
     require MT::Template;     my $tmpl =  MT::Template->new (          ( 中略 )     ); MT::Component->load_tmpl
Controller: MT::App
1     mt.cgi?__mode=list_blog にアクセス 1.1   MT::CMS::Blog->list  へディスパッチ    use MT::Bootstrap App => 'MT::App::CMS';  1.1.1  ページ作成     sub list {    ( 中略 )      return $app->load_tmpl( 'list_blog.tmpl', \%param );     }
Plugins / Addons Callbacks
Product History 2003 Released Movable Type 2.6 2003 Launched  TypePad 2005 Acquired LiveJournal 2006 Released Movable Type 3.3 2006 Launched Vox 2007 Released Movable Type 4 2009 New TypePad 2009 Movable Type 5
Model: TypePad::Object
 
Create    my $entry = MT::Entry->new; $entry->save; Read    my $entry = MT::Entry->lookup($id);      my $iter = MT::Entry->search({domain=>'help.typepad.jp'});    my $entry = $iter->(); Update    my $entry = MT::Entry->lookup($id); $entry->save;  Delete    my $entry = MT::Entry->lookup($id); $entry->delete;
View: HTML::Template
Controller: MT::App
Plugins Callbacks  / Hooks Portal
Product History 2003 Released Movable Type 2.6 2003 Launched TypePad 2005 Acquired LiveJournal 2006 Released Movable Type 3.3 2006 Launched  Vox 2007 Released Movable Type 4 2009 New  TypePad 2009 Movable Type 5
Why Open Matters [It Pro Challenge 2008] http://www.slideshare.net/miyagawa/why-open-matters-it-pro-challenge-2008-presentation
YAPC::Asia 2008  - ArcheType room
“ We’re migrating TypePad to a next-generation platform, essentially a new infrastructure based on the best of what we’ve learned from Vox, Movable Type and over five years of development on TypePad” July 31, 2008 Building A Bright New TypePad http://everything.typepad.com/blog/2008/07/building-a-br-1.html
ArcheType
 
 
package TypePad::App ; use Catalyst  qw( ArcheType                  ArcheType::Analytics                  ArcheType::Data                  ArcheType::I18N                  ArcheType::iPhone                  ArcheType::JSONRPC                  ArcheType::Mobile                  ArcheType::TokenValidation                  Authentication::TypeCore                  AtomServer                  XMLRPC                  Compress::Gzip                  MortalForward                  PathFilters                );
ArcheType の位置づけ Catalyst ArcheType Vox TypePad
We are using Catalyst 5.7x
ArcheType Directories +-- archetype |  +--lib |  |  +-- ArcheType |  |  |  +-- Assets |  |  +-- Catalyst |  |  |  +-- Plugin | +-- typepad |  +-- lib |  |  +-- ArcheType |  |  |  +-- Assets |  |  +-- Catalyst |  |  |  +-- Plugin |  +-- templates
Model my $user = ArcheType::M::User->lookup_by_email(       'ben@sixapart.com’  );      How we build Vox  http://www.slideshare.net/miyagawa/how-we-build-vox
View typepad/lib/TypePad/App/V/JSON.pm: use base qw( Catalyst::View::JSON ); typepad/lib/TypePad/App/V/TT.pm: use base qw( TypeCore::Catalyst::View::TT ); typepad/lib/TypePad/App/V/Atom.pm: use base qw( Catalyst::View::Atom::XML );   typepad/lib/TypePad/App/V/XML.pm: use base qw( Catalyst::View );
Controller package TypePad::App::C::Dashboard; package ArcheType::C::Asset;
  # Access to http://www.typepad.com/site/blogs/<id>/dashboard sub dashboard : PathPart Chained( 'blog' )  # Access to http://www.typepad.com/site/blogs/<id>/comment/<id>/ sub comment : PathPart( 'comment' ) Chained( 'blog' ) CaptureArgs( 1 )
forwarding
Why did you adopt Catalyst? we wanted to move away from managing our own application framework  (MT::App, in MT and TP) we liked the API that Catalyst provided (Request/Response objects,  etc) we liked the dispatching mechanism Catalyst was the first such framework for Perl that felt like a good  fit for us
開発関連  
ドキュメント MediaWiki Kwiki  
ソースコード管理 Subversion Trac  
110000+ (end of Aug 2009)  since 1 Dec 2007
バグトラッキング  FogBugz  
http://www.fogcreek.com/FogBugz/
ソースコードレビュー Review Board  
http://www.review-board.org/
コミュニケーション IRC/Jabber/ メール /Polycom  
オープンソース  
http://code.sixapart.com/
http://www.sixapart.com/labs/
http://github.com/sixapart
http://conferences.yapcasia.org/ya2008/
http://conferences.yapcasia.org/ya2008/talk/1005
http://movabletype.org/
 
http://conferences.yapcasia.org/ya2008/talk/1145
http://start.typepad.jp/typecast/#typecast
http://start.typepad.jp/typecast/#emoji-about
 
http://www.sixapart.jp/ http://www.sixapart.com/
ご清聴ありがとうございました!

シックス・アパート・フレームワーク