Upload
tomoki-hasegawa
View
727
Download
2
Embed Size (px)
Citation preview
長谷川智希とも き
@tomzohとむぞう
趣味 Webサイト開発, iOSアプリ開発
レンタルカートレース, ビール, 電子工作 (mbed), …
TOMZOH
デジタルサーカス㈱ 副団長CTO
Facebook CakePHP iOS
オープンソースとは、ソフトウェアの設計図にあたるソースコードを、インターネットなどを通じて無償で公開し、誰でもそのソフトウェアの改良、再配布が行えるようにすること。また、そのようなソフトウェア。
OSS
出展: http://e-words.jp
CMSとは、Webコンテンツを構成するテキストや画像、レイアウト情報などを一元的に保存・管理し、サイトを構築したり編集したりするソフトウェアのこと。広義には、(Webサイトに限らず)デジタルコンテンツの管理を行うシステムの総称。
CMS
出展: http://e-words.jp
Come for the software, stay for the community
Drupal is an open source content management platform powering millions of websites and applications. It’s built, used, and supported by an active and diverse community of people around the world.
• 一般的なCMSでのカテゴリやタグ
• コンテンツタイプのフィールドとして使える。 • 択一 / 複数選択
• 選択UI(テキスト入力 / ドロップダウン)
• 択一にすればカテゴリ的に、複数選択にすればタグ的に使える。
ボキャブラリー
ターム
Drupal8の拡張性
• モジュール … Drupalの機能をカスタマイズする • drupal.orgで集中管理されている。 • “17,712 Modules match your search”😍
• テーマ … Drupalの外観をカスタマイズする • drupal.orgで管理されている。 • drupal.org外にも沢山ある。
• ディストリビューション … モジュールとテーマのパッケージ
• EC用, SNS用など、モジュールとテーマをパッケージしたもの
PHPフレームワーク
• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。
Symfony1, CakePHP2, Mojavi, Ethna …
• フレームワークの一部の機能だけを使う、ということが難しかった。
PHPフレームワーク
• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。
Symfony1, CakePHP2, Mojavi, Ethna …
• フレームワークの一部の機能だけを使う、ということが難しかった。
PHPフレームワーク
• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。
Symfony1, CakePHP2, Mojavi, Ethna …
• フレームワークの一部の機能だけを使う、ということが難しかった。
• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ
たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …
• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。
PHPフレームワーク
• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。
Symfony1, CakePHP2, Mojavi, Ethna …
• フレームワークの一部の機能だけを使う、ということが難しかった。
• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ
たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …
• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。
PHPフレームワーク
• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。
Symfony1, CakePHP2, Mojavi, Ethna …
• フレームワークの一部の機能だけを使う、ということが難しかった。
• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ
たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …
• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。
PHPフレームワーク
• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。
Symfony1, CakePHP2, Mojavi, Ethna …
• フレームワークの一部の機能だけを使う、ということが難しかった。
• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ
たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …
• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。
PHPフレームワーク• モノリシックフレームワーク
• 昔のPHPフレームワークは巨大な1つのプロダクトだった。 Symfony1, CakePHP2, Mojavi, Ethna …
• フレームワークの一部の機能だけを使う、ということが難しかった。
• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ
たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …
• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。
が使う外部ライブラリ{ "name": "drupal/core", "description": "Drupal is an open source content management platform powering millions of websites and applications.", "type": "drupal-core", "license": "GPL-2.0+", "require": { "php": ">=5.5.9", "symfony/class-loader": "2.7.*", "symfony/console": "2.7.*", "symfony/css-selector": "2.7.*", "symfony/dependency-injection": "2.7.*", "symfony/event-dispatcher": "2.7.*", "symfony/http-foundation": "2.7.*", "symfony/http-kernel": "2.7.*", "symfony/routing": "2.7.*", "symfony/serializer": "2.7.*", "symfony/translation": "2.7.*", "symfony/validator": "2.7.*",
"symfony/process": "2.7.*", "symfony/yaml": “2.7.*", "twig/twig": "1.20.*", "doctrine/common": "~2.4.2", "doctrine/annotations": "1.2.*", "guzzlehttp/guzzle": “dev-master#1879fbe8… "symfony-cmf/routing": "1.3.*", "easyrdf/easyrdf": "0.9.*", "phpunit/phpunit": "4.6.*", "zendframework/zend-feed": "2.4.*", "mikey179/vfsStream": "~1.2", "stack/builder": "1.0.*", "egulias/email-validator": "1.2.*", "behat/mink": "~1.6", "behat/mink-goutte-driver": “dev-master#c… "fabpot/goutte": "~3.1", "masterminds/html5": "~2.1", "symfony/psr-http-message-bridge": "v0.2", "zendframework/zend-diactoros": "1.1.0" },
が使う外部ライブラリ{ "name": "drupal/core", "description": "Drupal is an open source content management platform powering millions of websites and applications.", "type": "drupal-core", "license": "GPL-2.0+", "require": { "php": ">=5.5.9", "symfony/class-loader": "2.7.*", "symfony/console": "2.7.*", "symfony/css-selector": "2.7.*", "symfony/dependency-injection": "2.7.*", "symfony/event-dispatcher": "2.7.*", "symfony/http-foundation": "2.7.*", "symfony/http-kernel": "2.7.*", "symfony/routing": "2.7.*", "symfony/serializer": "2.7.*", "symfony/translation": "2.7.*", "symfony/validator": "2.7.*",
"symfony/process": "2.7.*", "symfony/yaml": “2.7.*", "twig/twig": "1.20.*", "doctrine/common": "~2.4.2", "doctrine/annotations": "1.2.*", "guzzlehttp/guzzle": “dev-master#1879fbe8… "symfony-cmf/routing": "1.3.*", "easyrdf/easyrdf": "0.9.*", "phpunit/phpunit": "4.6.*", "zendframework/zend-feed": "2.4.*", "mikey179/vfsStream": "~1.2", "stack/builder": "1.0.*", "egulias/email-validator": "1.2.*", "behat/mink": "~1.6", "behat/mink-goutte-driver": “dev-master#c… "fabpot/goutte": "~3.1", "masterminds/html5": "~2.1", "symfony/psr-http-message-bridge": "v0.2", "zendframework/zend-diactoros": "1.1.0" },
が使う外部ライブラリ{ "name": "drupal/core", "description": "Drupal is an open source content management platform powering millions of websites and applications.", "type": "drupal-core", "license": "GPL-2.0+", "require": { "php": ">=5.5.9", "symfony/class-loader": "2.7.*", "symfony/console": "2.7.*", "symfony/css-selector": "2.7.*", "symfony/dependency-injection": "2.7.*", "symfony/event-dispatcher": "2.7.*", "symfony/http-foundation": "2.7.*", "symfony/http-kernel": "2.7.*", "symfony/routing": "2.7.*", "symfony/serializer": "2.7.*", "symfony/translation": "2.7.*", "symfony/validator": "2.7.*",
"symfony/process": "2.7.*", "symfony/yaml": “2.7.*", "twig/twig": "1.20.*", "doctrine/common": "~2.4.2", "doctrine/annotations": "1.2.*", "guzzlehttp/guzzle": “dev-master#1879fbe8… "symfony-cmf/routing": "1.3.*", "easyrdf/easyrdf": "0.9.*", "phpunit/phpunit": "4.6.*", "zendframework/zend-feed": "2.4.*", "mikey179/vfsStream": "~1.2", "stack/builder": "1.0.*", "egulias/email-validator": "1.2.*", "behat/mink": "~1.6", "behat/mink-goutte-driver": “dev-master#c… "fabpot/goutte": "~3.1", "masterminds/html5": "~2.1", "symfony/psr-http-message-bridge": "v0.2", "zendframework/zend-diactoros": "1.1.0" },
が使う外部ライブラリ{ "name": "drupal/core", "description": "Drupal is an open source content management platform powering millions of websites and applications.", "type": "drupal-core", "license": "GPL-2.0+", "require": { "php": ">=5.5.9", "symfony/class-loader": "2.7.*", "symfony/console": "2.7.*", "symfony/css-selector": "2.7.*", "symfony/dependency-injection": "2.7.*", "symfony/event-dispatcher": "2.7.*", "symfony/http-foundation": "2.7.*", "symfony/http-kernel": "2.7.*", "symfony/routing": "2.7.*", "symfony/serializer": "2.7.*", "symfony/translation": "2.7.*", "symfony/validator": "2.7.*",
"symfony/process": "2.7.*", "symfony/yaml": “2.7.*", "twig/twig": "1.20.*", "doctrine/common": "~2.4.2", "doctrine/annotations": "1.2.*", "guzzlehttp/guzzle": “dev-master#1879fbe8… "symfony-cmf/routing": "1.3.*", "easyrdf/easyrdf": "0.9.*", "phpunit/phpunit": "4.6.*", "zendframework/zend-feed": "2.4.*", "mikey179/vfsStream": "~1.2", "stack/builder": "1.0.*", "egulias/email-validator": "1.2.*", "behat/mink": "~1.6", "behat/mink-goutte-driver": “dev-master#c… "fabpot/goutte": "~3.1", "masterminds/html5": "~2.1", "symfony/psr-http-message-bridge": "v0.2", "zendframework/zend-diactoros": "1.1.0" },
が使う外部ライブラリ{ "name": "drupal/core", "description": "Drupal is an open source content management platform powering millions of websites and applications.", "type": "drupal-core", "license": "GPL-2.0+", "require": { "php": ">=5.5.9", "symfony/class-loader": "2.7.*", "symfony/console": "2.7.*", "symfony/css-selector": "2.7.*", "symfony/dependency-injection": "2.7.*", "symfony/event-dispatcher": "2.7.*", "symfony/http-foundation": "2.7.*", "symfony/http-kernel": "2.7.*", "symfony/routing": "2.7.*", "symfony/serializer": "2.7.*", "symfony/translation": "2.7.*", "symfony/validator": "2.7.*",
"symfony/process": "2.7.*", "symfony/yaml": “2.7.*", "twig/twig": "1.20.*", "doctrine/common": "~2.4.2", "doctrine/annotations": "1.2.*", "guzzlehttp/guzzle": “dev-master#1879fbe8… "symfony-cmf/routing": "1.3.*", "easyrdf/easyrdf": "0.9.*", "phpunit/phpunit": "4.6.*", "zendframework/zend-feed": "2.4.*", "mikey179/vfsStream": "~1.2", "stack/builder": "1.0.*", "egulias/email-validator": "1.2.*", "behat/mink": "~1.6", "behat/mink-goutte-driver": “dev-master#c… "fabpot/goutte": "~3.1", "masterminds/html5": "~2.1", "symfony/psr-http-message-bridge": "v0.2", "zendframework/zend-diactoros": "1.1.0" },
が使う外部ライブラリ{ "name": "drupal/core", "description": "Drupal is an open source content management platform powering millions of websites and applications.", "type": "drupal-core", "license": "GPL-2.0+", "require": { "php": ">=5.5.9", "symfony/class-loader": "2.7.*", "symfony/console": "2.7.*", "symfony/css-selector": "2.7.*", "symfony/dependency-injection": "2.7.*", "symfony/event-dispatcher": "2.7.*", "symfony/http-foundation": "2.7.*", "symfony/http-kernel": "2.7.*", "symfony/routing": "2.7.*", "symfony/serializer": "2.7.*", "symfony/translation": "2.7.*", "symfony/validator": "2.7.*",
"symfony/process": "2.7.*", "symfony/yaml": “2.7.*", "twig/twig": "1.20.*", "doctrine/common": "~2.4.2", "doctrine/annotations": "1.2.*", "guzzlehttp/guzzle": “dev-master#1879fbe8… "symfony-cmf/routing": "1.3.*", "easyrdf/easyrdf": "0.9.*", "phpunit/phpunit": "4.6.*", "zendframework/zend-feed": "2.4.*", "mikey179/vfsStream": "~1.2", "stack/builder": "1.0.*", "egulias/email-validator": "1.2.*", "behat/mink": "~1.6", "behat/mink-goutte-driver": “dev-master#c… "fabpot/goutte": "~3.1", "masterminds/html5": "~2.1", "symfony/psr-http-message-bridge": "v0.2", "zendframework/zend-diactoros": "1.1.0" },
• Drupal7 • PHP5.2.4 or later
• Drupal8 • PHP5.5.9 or later
Drupalが要求するPHP
PHP 5.3.0
PHP 5.4.0
名前空間クロージャ
トレイトarray() → []
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉ PHP 5.3.0
3⽉ PHP 5.4.0 2012
6⽉ PHP 5.5.0
8⽉ PHP 5.6.0
PHP5.2.4+
名前空間クロージャ
トレイトarray() → []
7⽉ PHP 4.4.0
7⽉ PHP 5.0.0
11⽉ PHP 5.1.0
12⽉ PHP 5.2.0
7⽉ 12⽉でPHP4サポート終了発表
Composer 1.0.0-alpha1
PSR−4
PHP Standard Recommendation
5⽉ Drupal 7
2016
9⽉ code freeze for Drupal 7
2⽉ Drupal 6 PHP5+
1⽉ Drupal 5 PHP4.x.x
PSR-2
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉ PHP 5.3.0
3⽉ PHP 5.4.0 2012
6⽉ PHP 5.5.0
8⽉ PHP 5.6.0
PHP5.2.4+
名前空間クロージャ
トレイトarray() → []
7⽉ PHP 4.4.0
7⽉ PHP 5.0.0
11⽉ PHP 5.1.0
12⽉ PHP 5.2.0
7⽉ 12⽉でPHP4サポート終了発表
Composer 1.0.0-alpha1
PSR−4
PHP Standard Recommendation
5⽉ Drupal 7
2016
9⽉ code freeze for Drupal 7
2⽉ Drupal 6 PHP5+
11⽉ Drupal 8🎉
1⽉ Drupal 5 PHP4.x.x
PSR-2
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉ PHP 5.3.0
3⽉ PHP 5.4.0 2012
6⽉ PHP 5.5.0
8⽉ PHP 5.6.0
PHP5.2.4+
PHP5.5.9+
名前空間クロージャ
トレイトarray() → []
7⽉ PHP 4.4.0
7⽉ PHP 5.0.0
11⽉ PHP 5.1.0
12⽉ PHP 5.2.0
7⽉ 12⽉でPHP4サポート終了発表
Composer 1.0.0-alpha1
PSR−4
PHP Standard Recommendation
5⽉ Drupal 7
2016
9⽉ code freeze for Drupal 7
2⽉ Drupal 6 PHP5+
11⽉ Drupal 8🎉
1⽉ Drupal 5 PHP4.x.x
PSR-2
2005
2007
2009
2010
2011
2015
2014
2006
2013
2008
2004
6⽉ PHP 5.3.0
3⽉ PHP 5.4.0 2012
6⽉ PHP 5.5.0
8⽉ PHP 5.6.0
PHP5.2.4+
PHP5.5.9+
名前空間クロージャ
トレイトarray() → []
7⽉ PHP 4.4.0
7⽉ PHP 5.0.0
11⽉ PHP 5.1.0
12⽉ PHP 5.2.0
7⽉ 12⽉でPHP4サポート終了発表
Composer 1.0.0-alpha1
PSR−4
PHP Standard Recommendation
5⽉ Drupal 7
2016
9⽉ code freeze for Drupal 7
2⽉ Drupal 6 PHP5+
11⽉ Drupal 8🎉
12⽉ PHP 7🎉
1⽉ Drupal 5 PHP4.x.x
PSR-2
のアプリケーション開発
• 管理画面からの設定とモジュール開発 • 層の厚いフレームワークを使っているイメージ。 • iOS/Android開発の感覚とも近い。 • 初期の学習コストは高いが習得すると速い。