Top Banner
モダンなアーキテクチャのPHPベース OSS CMS 長谷川智希
99

Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

Apr 11, 2017

Download

Software

Tomoki Hasegawa
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

モダンなアーキテクチャのPHPベース OSS CMS

長谷川智希

Page 2: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

長谷川智希とも き

@tomzohとむぞう

趣味 Webサイト開発, iOSアプリ開発

レンタルカートレース, ビール, 電子工作 (mbed), …

TOMZOH

デジタルサーカス㈱ 副団長CTO

Facebook CakePHP iOS

Page 3: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

デジタルサーカス(株)

・Webサイト開発

・スマホアプリ開発

・自社サービス

( )

(iOS, Android)

(http://appbuilder.jp)

Twitter: @tomzoh

Page 4: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

Twitter: @tomzoh

Page 5: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

Twitter: @tomzoh

Page 6: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

モダンなアーキテクチャのPHPベース OSS CMS

Page 7: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

オープンソースとは、ソフトウェアの設計図にあたるソースコードを、インターネットなどを通じて無償で公開し、誰でもそのソフトウェアの改良、再配布が行えるようにすること。また、そのようなソフトウェア。

OSS

出展: http://e-words.jp

Page 8: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

CMSとは、Webコンテンツを構成するテキストや画像、レイアウト情報などを一元的に保存・管理し、サイトを構築したり編集したりするソフトウェアのこと。広義には、(Webサイトに限らず)デジタルコンテンツの管理を行うシステムの総称。

CMS

出展: http://e-words.jp

Page 9: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

•Drupalって? •Drupalの概要 •Drupalのアーキテクチャ •Drupalのモジュール開発 •Drupal on PHP7

Page 10: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

って?

•Drupalって? •Drupalの概要 •Drupalのアーキテクチャ •Drupalのモジュール開発 •Drupal on PHP7

Page 11: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

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.

Page 12: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 13: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 14: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

https://www.drupal.org

Page 15: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

の概要

•Drupalって? •Drupalの概要 •Drupalのアーキテクチャ •Drupalのモジュール開発 •Drupal on PHP7

Page 16: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

Drupal8の機能

! "ユーザ管理 コンテンツ管理

# $検索 テーマ

% &多言語 モバイルファースト

' (拡張性 コメント

)* フォーム RSS などなど

Page 17: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

Drupal8の特徴

https://www.drupal.com/product/web-content-management

Page 18: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

Drupal8の特徴

https://www.drupal.com/product/web-content-management

Page 19: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

Drupal8の特徴

https://www.drupal.com/product/web-content-management

Page 20: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 21: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コンテンツタイプ コンテンツ

コメントタイプ コメント

ボキャブラリー

ターム

ビュー

Page 22: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コンテンツタイプ

コンテンツのフォーマットを定義できる

Page 23: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コンテンツタイプ

コンテンツのフォーマットを定義できる

Page 24: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

フィールド

Page 25: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

フィールド

Page 26: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コンテンツタイプ

Page 27: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コンテンツ

Page 28: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コンテンツ

Page 29: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コンテンツタイプ コンテンツ

コメントタイプ コメント

ボキャブラリー

ターム

ビュー

Page 30: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

• 一般的なCMSでのカテゴリやタグ

• コンテンツタイプのフィールドとして使える。 • 択一 / 複数選択

• 選択UI(テキスト入力 / ドロップダウン)

• 択一にすればカテゴリ的に、複数選択にすればタグ的に使える。

ボキャブラリー

ターム

Page 31: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コンテンツタイプ コンテンツ

コメントタイプ コメント

ボキャブラリー

ターム

ビュー

Page 32: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 33: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コンテンツタイプ コンテンツ

コメントタイプ コメント

ボキャブラリー

ターム

ビュー

Page 34: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

ビュー

コンテンツの出力方法を定義できる

Page 35: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

ビュー

コンテンツの出力方法を定義できる

Page 36: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

ビュー

コンテンツの出力方法を定義できる

Page 37: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

ビュー

コンテンツの出力方法を定義できる

Page 38: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

ビュー

コンテンツの出力方法を定義できる

Page 39: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

ビュー

コンテンツの出力方法を定義できる

Page 40: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

ビュー

Page 41: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

Drupal8の拡張性

• モジュール … Drupalの機能をカスタマイズする • drupal.orgで集中管理されている。 • “17,712 Modules match your search”😍

• テーマ … Drupalの外観をカスタマイズする • drupal.orgで管理されている。 • drupal.org外にも沢山ある。

• ディストリビューション … モジュールとテーマのパッケージ

• EC用, SNS用など、モジュールとテーマをパッケージしたもの

Page 42: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

EC

コーポレートサイト コミュニティサイト

人材マッチングサイトグループウェア

ネットニュース

政府・公共機関

Page 43: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

アーキテクチャ

•Drupalって? •Drupalの概要 •Drupalのアーキテクチャ •Drupalのモジュール開発 •Drupal on PHP7

Page 44: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 45: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

その前に…

Page 46: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PHPフレームワーク

Page 47: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PHPフレームワーク

• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。

Symfony1, CakePHP2, Mojavi, Ethna …

• フレームワークの一部の機能だけを使う、ということが難しかった。

Page 48: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PHPフレームワーク

• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。

Symfony1, CakePHP2, Mojavi, Ethna …

• フレームワークの一部の機能だけを使う、ということが難しかった。

Page 49: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PHPフレームワーク

• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。

Symfony1, CakePHP2, Mojavi, Ethna …

• フレームワークの一部の機能だけを使う、ということが難しかった。

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ

たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。

Page 50: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PHPフレームワーク

• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。

Symfony1, CakePHP2, Mojavi, Ethna …

• フレームワークの一部の機能だけを使う、ということが難しかった。

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ

たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。

Page 51: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PSR-4

Page 52: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PSR-4

Page 53: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PSR-4

Page 54: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PSR-4

Page 55: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PHPフレームワーク

• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。

Symfony1, CakePHP2, Mojavi, Ethna …

• フレームワークの一部の機能だけを使う、ということが難しかった。

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ

たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。

Page 56: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PHPフレームワーク

• モノリシックフレームワーク • 昔のPHPフレームワークは巨大な1つのプロダクトだった。

Symfony1, CakePHP2, Mojavi, Ethna …

• フレームワークの一部の機能だけを使う、ということが難しかった。

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ

たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。

Page 57: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

PHPフレームワーク• モノリシックフレームワーク

• 昔のPHPフレームワークは巨大な1つのプロダクトだった。 Symfony1, CakePHP2, Mojavi, Ethna …

• フレームワークの一部の機能だけを使う、ということが難しかった。

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせ

たプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

• すべての機能を自前で用意せず外部のライブラリを積極的に使用。 • フレームワークの一部の機能だけを使うことも可能。

Page 58: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 59: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 60: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

が使う外部ライブラリ{ "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" },

Page 61: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

が使う外部ライブラリ{ "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" },

Page 62: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

が使う外部ライブラリ{ "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" },

Page 63: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

が使う外部ライブラリ{ "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" },

Page 64: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

が使う外部ライブラリ{ "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" },

Page 65: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

が使う外部ライブラリ{ "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" },

Page 66: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

モダンなアーキテクチャのPHPベース OSS CMS

Page 67: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

モダンなアーキテクチャのPHPベース OSS CMS

Page 68: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

• Drupal7 • PHP5.2.4 or later

• Drupal8 • PHP5.5.9 or later

Drupalが要求するPHP

PHP 5.3.0

PHP 5.4.0

名前空間クロージャ

トレイトarray() → []

Page 69: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

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

Page 70: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

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

Page 71: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

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

Page 72: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

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

Page 73: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

モダンなアーキテクチャのPHPベース OSS CMS

Page 74: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

モダンなアーキテクチャのPHPベース OSS CMS

Page 75: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 76: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

モジュール開発

•Drupalって? •Drupalの概要 •Drupalのアーキテクチャ •Drupalのモジュール開発 •Drupal on PHP7

Page 77: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 78: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

のモジュール構成

Page 79: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

のモジュール構成

モジュール単位で名前空間を定義。

Page 80: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

のモジュール構成

モジュール内でMVC

モジュール単位で名前空間を定義。

Page 81: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

のモジュール構成

ymlの設定で出来ることも多い。

モジュール内でMVC

モジュール単位で名前空間を定義。

Page 82: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

のアプリケーション開発

• 管理画面からの設定とモジュール開発 • 層の厚いフレームワークを使っているイメージ。 • iOS/Android開発の感覚とも近い。 • 初期の学習コストは高いが習得すると速い。

Page 83: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

•Drupalって? •Drupalの概要 •Drupalのアーキテクチャ •Drupalのモジュール開発 •Drupal on PHP7

on PHP7

Page 84: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 85: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 86: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

https://www.youtube.com/watch?v=1IiEPF1x95o

Page 87: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 88: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 89: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 90: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

ありがとうございました

@tomzoh

Page 91: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

DrupalCon

おまけ1

Page 92: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 93: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

DrupalCon Asiaレポート有ります

http://blog.livedoor.jp/dgcircus/

Page 94: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 95: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

コーディング規約

おまけ2

Page 96: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 97: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 98: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Page 99: Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS

😢