シックス・アパート・フレームワーク シックス・アパート株式会社 YAPC::Asia 2009
自己紹介  
重田崇嗣  (Takatsugu Shigeta) <ul><li>TypePad 開発 シニアマネージャー </li></ul><ul><li>2005 年 5 月 シックス・アパート株式会社入社  -> TypePad 開発エンジニア </...
TypePad Profiles http://www.typepad.com/profiles/
http://profile.typepad.com/comewalk  
 
Where is TypeKey?
&quot; TypeKey is now part of TypePad    TypeKey has evolved, and is now part of TypePad.&quot; http://www.typepad.com/pro...
Get started right away ! http://www.typepad.com/profiles/
会社紹介
会社概要 <ul><li>シックス・アパート株式会社  ( 英文 : Six Apart KK) </li></ul><ul><li>米国  Six Apart  の日本法人 </li></ul><ul><li>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 <ul><li>2003 Released Movable Type 2.6 2003 Launched TypePad 2005 Acquired LiveJournal 2006 Released Movab...
MT  フレームワーク   ArcheType
MT フレームワーク
Product History <ul><li>2003 Released  Movable Type  2.6 2003 Launched TypePad 2005 Acquired LiveJournal 2006 Released  Mo...
 
http://conferences.yapcasia.org/ya2008/talk/1005
use base qw( MT );
Movable Type Directory Tree : / <ul><li>+--addons +--alt-tmpl +--default_templates +--extlib +--import </li></ul><ul><li>+...
Movable Type Directory Tree: lib/MT <ul><li>+--MT |  +--App |  |  +--Search |  +--ArchiveType |  +--Asset |  +--Auth |  +-...
(Show Class Tree)
Model: MT::Object
 
( 例 ) MT::Entry <ul><li>package MT::Entry; use strict; </li></ul><ul><li>use base qw( MT::Object  MT::Taggable MT::Scorabl...
Create / Read <ul><li># create new  </li></ul><ul><li>my $entry = MT->model('entry')->new; </li></ul><ul><li>$entry-> save...
Update / Delete <ul><li>my $entry = MT->model('entry')-> load ($entry_id); </li></ul><ul><li>  </li></ul><ul><li># update ...
View: MT::Template
$app->load_tmpl( 'list_blog.tmpl', param );
<ul><li>     require MT::Template;     my $tmpl =  MT::Template->new ( </li></ul><ul><li>         ( 中略 )     ); </li></ul>...
Controller: MT::App
<ul><li>1     mt.cgi?__mode=list_blog にアクセス </li></ul><ul><li>1.1   MT::CMS::Blog->list  へディスパッチ </li></ul><ul><li>   use ...
Plugins / Addons Callbacks
Product History <ul><li>2003 Released Movable Type 2.6 2003 Launched  TypePad 2005 Acquired LiveJournal 2006 Released Mova...
Model: TypePad::Object
 
<ul><li>Create </li></ul><ul><li>   my $entry = MT::Entry->new; $entry->save; </li></ul><ul><li>Read </li></ul><ul><li>   ...
View: HTML::Template
Controller: MT::App
Plugins Callbacks  / Hooks Portal
Product History <ul><li>2003 Released Movable Type 2.6 2003 Launched TypePad 2005 Acquired LiveJournal 2006 Released Movab...
Why Open Matters [It Pro Challenge 2008] http://www.slideshare.net/miyagawa/why-open-matters-it-pro-challenge-2008-present...
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 ...
ArcheType
 
 
package TypePad::App ; <ul><li>use Catalyst  qw( ArcheType                  ArcheType::Analytics                  ArcheTyp...
ArcheType の位置づけ Catalyst ArcheType Vox TypePad
We are using Catalyst 5.7x
ArcheType Directories <ul><li>+-- archetype </li></ul><ul><li>|  +--lib </li></ul><ul><li>|  |  +-- ArcheType </li></ul><u...
Model <ul><li>my $user = ArcheType::M::User->lookup_by_email(  </li></ul><ul><li>     'ben@sixapart.com’  </li></ul><ul><l...
View <ul><li>typepad/lib/TypePad/App/V/JSON.pm: </li></ul><ul><li>use base qw( Catalyst::View::JSON ); </li></ul><ul><li>t...
Controller <ul><li>package TypePad::App::C::Dashboard; </li></ul><ul><li>package ArcheType::C::Asset; </li></ul>
  <ul><li># Access to http://www.typepad.com/site/blogs/<id>/dashboard </li></ul><ul><li>sub dashboard : PathPart Chained(...
forwarding
Why did you adopt Catalyst? <ul><li>we wanted to move away from managing our own application framework  (MT::App, in MT an...
開発関連  
ドキュメント 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/
ご清聴ありがとうございました!
Upcoming SlideShare
Loading in...5
×

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

5,537

Published on

0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,537
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

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

  1. 1. シックス・アパート・フレームワーク シックス・アパート株式会社 YAPC::Asia 2009
  2. 2. 自己紹介  
  3. 3. 重田崇嗣 (Takatsugu Shigeta) <ul><li>TypePad 開発 シニアマネージャー </li></ul><ul><li>2005 年 5 月 シックス・アパート株式会社入社 -> TypePad 開発エンジニア </li></ul><ul><li>2007 年 11 月 TypePad 開発 シニアマネージャー </li></ul><ul><li>現在に至る </li></ul>
  4. 4. TypePad Profiles http://www.typepad.com/profiles/
  5. 5. http://profile.typepad.com/comewalk  
  6. 7. Where is TypeKey?
  7. 8. &quot; TypeKey is now part of TypePad    TypeKey has evolved, and is now part of TypePad.&quot; http://www.typepad.com/profiles/typekey-faq.html
  8. 9. Get started right away ! http://www.typepad.com/profiles/
  9. 10. 会社紹介
  10. 11. 会社概要 <ul><li>シックス・アパート株式会社 ( 英文 : Six Apart KK) </li></ul><ul><li>米国 Six Apart の日本法人 </li></ul><ul><li>SAKK と呼ばれることもあります。 </li></ul>
  11. 12. http://www.sixapart.jp/anniversary/history.html
  12. 13. http://www.sixapart.jp/anniversary/history.html
  13. 14. http://www.sixapart.jp/anniversary/history.html
  14. 15. http://www.sixapart.jp/anniversary/history.html
  15. 16. http://www.sixapart.jp/anniversary/history.html
  16. 17. twitter.com/sixapartkk twitter.com/sixapart
  17. 18. 製品紹介
  18. 19. Movable Type TypePad Vox
  19. 20. http://blogs.com/
  20. 21. http://jp.blogs.com/
  21. 23. シックス・アパート・フレームワーク
  22. 24. Product History <ul><li>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 </li></ul><ul><li>2009 Movable Type 5 </li></ul>
  23. 25. MT フレームワーク   ArcheType
  24. 26. MT フレームワーク
  25. 27. Product History <ul><li>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 </li></ul><ul><li>2009 Movable Type 5 </li></ul>
  26. 29. http://conferences.yapcasia.org/ya2008/talk/1005
  27. 30. use base qw( MT );
  28. 31. Movable Type Directory Tree : / <ul><li>+--addons +--alt-tmpl +--default_templates +--extlib +--import </li></ul><ul><li>+-- lib +--mt-static +--php +--plugins +--search_templates +--themes +--tmpl +--tools </li></ul><ul><li>  </li></ul>
  29. 32. Movable Type Directory Tree: lib/MT <ul><li>+--MT |  +--App |  |  +--Search |  +--ArchiveType |  +--Asset |  +--Auth |  +--BackupRestore |  +--Cache |  +--CMS |  +--Compat |  +--FileMgr |  +--I18N |  +--L10N </li></ul><ul><li>|  +--Meta |  +--Object |  +--ObjectDriver |  |  +--DDL |  |  +--Driver |  |  |  +--Cache |  |  |  +--DBD |  |  +--SQL |  +--Plugin |  +--Revisable |  +--Summary </li></ul>|  +--Template |  |  +--Context |  |  +--Tags |  +--Theme |  +--TheSchwartz |  +--Upgrade |  +--Util |  |  +--Archive |  |  +--YAML |  +--Worker
  30. 33. (Show Class Tree)
  31. 34. Model: MT::Object
  32. 36. ( 例 ) MT::Entry <ul><li>package MT::Entry; use strict; </li></ul><ul><li>use base qw( MT::Object MT::Taggable MT::Scorable MT::Summarizable MT::Revisable ); </li></ul><ul><li>__PACKAGE__->install_properties({     column_defs => {         'id' => 'integer not null auto_increme </li></ul>
  33. 37. Create / Read <ul><li># create new </li></ul><ul><li>my $entry = MT->model('entry')->new; </li></ul><ul><li>$entry-> save ; </li></ul><ul><li># read one </li></ul><ul><li>my $entry = MT->model('entry')-> load ($entryid); </li></ul><ul><li># use iterator </li></ul><ul><li>my $iter = MT::Tag-> load_iter ( { id => @tag_ids } ); </li></ul><ul><li>while (my $tag = $iter->()) { </li></ul><ul><li>    print $tag->name; </li></ul><ul><li>} </li></ul>
  34. 38. Update / Delete <ul><li>my $entry = MT->model('entry')-> load ($entry_id); </li></ul><ul><li>  </li></ul><ul><li># update </li></ul><ul><li>$entry->title('YAPC::Asia 2009'); </li></ul><ul><li>$entry-> save ; </li></ul><ul><li># delete </li></ul><ul><li>$entry-> remove ; </li></ul>
  35. 39. View: MT::Template
  36. 40. $app->load_tmpl( 'list_blog.tmpl', param );
  37. 41. <ul><li>    require MT::Template;     my $tmpl = MT::Template->new ( </li></ul><ul><li>        ( 中略 )     ); </li></ul>MT::Component->load_tmpl
  38. 42. Controller: MT::App
  39. 43. <ul><li>1     mt.cgi?__mode=list_blog にアクセス </li></ul><ul><li>1.1   MT::CMS::Blog->list へディスパッチ </li></ul><ul><li>  use MT::Bootstrap App => 'MT::App::CMS'; </li></ul><ul><li>1.1.1 ページ作成 </li></ul><ul><li>  sub list { </li></ul><ul><li>  ( 中略 ) </li></ul><ul><li>    return $app->load_tmpl( 'list_blog.tmpl', param ); </li></ul><ul><li>  } </li></ul>
  40. 44. Plugins / Addons Callbacks
  41. 45. Product History <ul><li>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 </li></ul><ul><li>2009 Movable Type 5 </li></ul>
  42. 46. Model: TypePad::Object
  43. 48. <ul><li>Create </li></ul><ul><li>  my $entry = MT::Entry->new; $entry->save; </li></ul><ul><li>Read </li></ul><ul><li>  my $entry = MT::Entry->lookup($id); </li></ul><ul><li>  </li></ul><ul><li>  my $iter = MT::Entry->search({domain=>'help.typepad.jp'}); </li></ul><ul><li>  my $entry = $iter->(); </li></ul><ul><li>Update </li></ul><ul><li>  my $entry = MT::Entry->lookup($id); $entry->save; </li></ul><ul><li>Delete </li></ul><ul><li>  my $entry = MT::Entry->lookup($id); $entry->delete; </li></ul>
  44. 49. View: HTML::Template
  45. 50. Controller: MT::App
  46. 51. Plugins Callbacks / Hooks Portal
  47. 52. Product History <ul><li>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 </li></ul><ul><li>2009 Movable Type 5 </li></ul>
  48. 53. Why Open Matters [It Pro Challenge 2008] http://www.slideshare.net/miyagawa/why-open-matters-it-pro-challenge-2008-presentation
  49. 54. YAPC::Asia 2008 - ArcheType room
  50. 55. “ 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
  51. 56. ArcheType
  52. 59. package TypePad::App ; <ul><li>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                ); </li></ul>
  53. 60. ArcheType の位置づけ Catalyst ArcheType Vox TypePad
  54. 61. We are using Catalyst 5.7x
  55. 62. ArcheType Directories <ul><li>+-- archetype </li></ul><ul><li>|  +--lib </li></ul><ul><li>|  |  +-- ArcheType </li></ul><ul><li>|  |  |  +-- Assets </li></ul><ul><li>|  |  +-- Catalyst </li></ul><ul><li>|  |  |  +-- Plugin </li></ul><ul><li>| </li></ul><ul><li>+-- typepad </li></ul><ul><li>|  +-- lib </li></ul><ul><li>|  |  +-- ArcheType </li></ul><ul><li>|  |  |  +-- Assets </li></ul><ul><li>|  |  +-- Catalyst </li></ul><ul><li>|  |  |  +-- Plugin </li></ul><ul><li>|  +-- templates </li></ul>
  56. 63. Model <ul><li>my $user = ArcheType::M::User->lookup_by_email( </li></ul><ul><li>    'ben@sixapart.com’ </li></ul><ul><li>);  </li></ul><ul><li>  </li></ul><ul><li>  </li></ul><ul><li>How we build Vox </li></ul><ul><li>http://www.slideshare.net/miyagawa/how-we-build-vox </li></ul>
  57. 64. View <ul><li>typepad/lib/TypePad/App/V/JSON.pm: </li></ul><ul><li>use base qw( Catalyst::View::JSON ); </li></ul><ul><li>typepad/lib/TypePad/App/V/TT.pm: </li></ul><ul><li>use base qw( TypeCore::Catalyst::View::TT ); </li></ul><ul><li>typepad/lib/TypePad/App/V/Atom.pm: </li></ul><ul><li>use base qw( Catalyst::View::Atom::XML );   </li></ul><ul><li>typepad/lib/TypePad/App/V/XML.pm: </li></ul><ul><li>use base qw( Catalyst::View ); </li></ul>
  58. 65. Controller <ul><li>package TypePad::App::C::Dashboard; </li></ul><ul><li>package ArcheType::C::Asset; </li></ul>
  59. 66.   <ul><li># Access to http://www.typepad.com/site/blogs/<id>/dashboard </li></ul><ul><li>sub dashboard : PathPart Chained( 'blog' ) </li></ul><ul><li># Access to http://www.typepad.com/site/blogs/<id>/comment/<id>/ </li></ul><ul><li>sub comment : PathPart( 'comment' ) Chained( 'blog' ) CaptureArgs( 1 ) </li></ul>
  60. 67. forwarding
  61. 68. Why did you adopt Catalyst? <ul><li>we wanted to move away from managing our own application framework (MT::App, in MT and TP) </li></ul><ul><li>we liked the API that Catalyst provided (Request/Response objects, etc) </li></ul><ul><li>we liked the dispatching mechanism </li></ul><ul><li>Catalyst was the first such framework for Perl that felt like a good fit for us </li></ul>
  62. 69. 開発関連  
  63. 70. ドキュメント MediaWiki Kwiki  
  64. 71. ソースコード管理 Subversion Trac  
  65. 72. 110000+ (end of Aug 2009) since 1 Dec 2007
  66. 73. バグトラッキング FogBugz  
  67. 74. http://www.fogcreek.com/FogBugz/
  68. 75. ソースコードレビュー Review Board  
  69. 76. http://www.review-board.org/
  70. 77. コミュニケーション IRC/Jabber/ メール /Polycom  
  71. 78. オープンソース  
  72. 79. http://code.sixapart.com/
  73. 80. http://www.sixapart.com/labs/
  74. 81. http://github.com/sixapart
  75. 82. http://conferences.yapcasia.org/ya2008/
  76. 83. http://conferences.yapcasia.org/ya2008/talk/1005
  77. 84. http://movabletype.org/
  78. 85.  
  79. 86. http://conferences.yapcasia.org/ya2008/talk/1145
  80. 87. http://start.typepad.jp/typecast/#typecast
  81. 88. http://start.typepad.jp/typecast/#emoji-about
  82. 89.  
  83. 90. http://www.sixapart.jp/ http://www.sixapart.com/
  84. 91. ご清聴ありがとうございました!

×