drupal 8 - モダンなアーキテクチャのphpベースoss cms

84
モダンなアーキテクチャのPHPベース OSS CMS デジタルサーカス(株)長谷川智希

Upload: tomoki-hasegawa

Post on 14-Jan-2017

15.400 views

Category:

Software


1 download

TRANSCRIPT

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

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

デジタルサーカス(株)長谷川智希

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

#phpcon2015_6

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

#phpcon2015_6

!

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

長谷川智希とも き

@tomzohとむぞう

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

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

TOMZOH

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

Facebook CakePHP iOS

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

デジタルサーカス(株)

・Webサイト開発

・スマホアプリ開発

・自社サービス

( )

(iOS, Android)

(http://appbuilder.jp)

Twitter: @tomzoh

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

Twitter: @tomzoh

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

Twitter: @tomzoh

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

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

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

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

OSS

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

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

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

CMS

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

Page 11: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 12: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS

って?

Page 13: Drupal 8 - モダンなアーキテクチャの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 14: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 15: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 16: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 17: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS

?

Page 18: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 19: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS

today

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

増えてた…

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

の概要

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

Drupal8の機能

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

$ %検索 テーマ

& '多⾔語 モバイルファースト

( )拡張性 コメント

*+ フォーム RSS などなど

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

Drupal8の特徴

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

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

Drupal8の特徴

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

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

Drupal8の特徴

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

Page 27: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 28: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS

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

コメントタイプ コメント

ボキャブラリー

ターム

ビュー

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

コンテンツタイプ

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

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

コンテンツタイプ

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

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

フィールド

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

フィールド

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

コンテンツタイプ

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

コンテンツ

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

コンテンツ

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

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

コメントタイプ コメント

ボキャブラリー

ターム

ビュー

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

ボキャブラリー

ターム

• 一般的なCMSでのカテゴリやタグ • コンテンツタイプのフィールドとして使える。 • 択一 / 複数選択

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

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

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

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

コメントタイプ コメント

ボキャブラリー

ターム

ビュー

Page 39: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 40: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS

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

コメントタイプ コメント

ボキャブラリー

ターム

ビュー

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

ビューコンテンツの出⼒⽅法を定義できる

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

ビューコンテンツの出⼒⽅法を定義できる

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

ビューコンテンツの出⼒⽅法を定義できる

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

ビューコンテンツの出⼒⽅法を定義できる

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

ビューコンテンツの出⼒⽅法を定義できる

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

ビューコンテンツの出⼒⽅法を定義できる

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

ビュー

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

Drupal8の拡張性• モジュール … Drupalの機能をカスタマイズする • drupal.orgで集中管理されている。

• “17,712 Modules match your search”😍

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

• ディストリビューション … モジュールとテーマのパッケージ • EC用, SNS用など、モジュールとテーマをパッケージしたもの

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

EC

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

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

ネットニュース

政府・公共機関

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

のアーキテクチャ

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

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

Symfony1, CakePHP2, Mojavi, Ethna …

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

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせたプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

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

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

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

Symfony1, CakePHP2, Mojavi, Ethna …

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

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせたプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

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

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

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

Symfony1, CakePHP2, Mojavi, Ethna …

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

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせたプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

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

なぜ外部のライブラリを使える様になったのか

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

PSR-4

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

PSR-4

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

PSR-4

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

PSR-4

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

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

Symfony1, CakePHP2, Mojavi, Ethna …

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

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせたプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

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

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

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

Symfony1, CakePHP2, Mojavi, Ethna …

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

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせたプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

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

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

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

Symfony1, CakePHP2, Mojavi, Ethna …

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

• マイクロフレームワーク • 最近のPHPフレームワークはプロジェクト内外のライブラリを組み合わせたプロダクトになっている。 Symfony, CakePHP3, Laravel, CodeIgniter …

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

Page 61: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 62: Drupal 8 - モダンなアーキテクチャの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: Drupal 8 - モダンなアーキテクチャの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: Drupal 8 - モダンなアーキテクチャの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: Drupal 8 - モダンなアーキテクチャの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: Drupal 8 - モダンなアーキテクチャの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 67: Drupal 8 - モダンなアーキテクチャの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 68: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS

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

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

• Drupal7 • PHP5.2.4

• Drupal8 • PHP5.5.9

Drupalが要求するPHP

!

!

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

• Drupal7 • PHP5.2.4

• Drupal8 • PHP5.5.9

Drupalが要求するPHP

!

! PHP 5.3.0PHP 5.4.0

名前空間クロージャ

トレイトarray() → []

Page 71: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 72: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS

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

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

ありがとうございました

@tomzoh

デジタルサーカス(株)

Drupalエンジニア

絶賛 募集中!

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

ありがとうございました

@tomzoh

デジタルサーカス(株)

Drupalエンジニア

絶賛 募集中!

懇親会出ます。声かけてください!

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

のモジュール開発

おまけ1

Page 76: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 77: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS

のモジュール構成

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

のモジュール構成

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

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

のモジュール構成

モジュール内でMVC

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

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

のモジュール構成

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

モジュール内でMVC

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

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

のアプリケーション開発

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

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

のコーディング規約

おまけ2

Page 83: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Page 84: Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS