Webアプリケーションフレームワークとしての Drupalの可能性

Webアプリケーションフレームワークとしての
Drupalの可能性
Nov 16th 2018 / Developers Festa Sapporo 2018
ANNAI Inc. CTO Yoshikazu Aoyama
about me
青山 義万(あおやま よしかず)
ANNAI Inc CTO
Drupal Japan User Group
Drupalさっぽろ
Twitter: @blauerberg
3
● Founded in 2007
● Started with Drupal 5
● HQ in Kyoto, Japan
● Team of 6 people working
remotely
is a Drupal development agency
Webアプリケーションフレームワークとしての Drupalの可能性
Drupalとは
• PHPで実装されたオープンソースのCMS
• Initial release: May 18 2000 (18 years ago)
• drupal.org 上で開発やコミュニティ活動が行われ
ている
https://en.wikipedia.org/wiki/Drupal
https://www.drupal.org/
drupal.org
• 47,736 people with Git accounts
• 1,780 Git commits this week
• 1,360,212 users on drupal.org
• 1,153,239 sites running Drupal
• 7,473,937 comments and issue followups
https://www.drupal.org/getting-involved
drupal.org
drupal.org
• 非常に大きなコミュニティで開発も活発
• コアだけなくモジュール(プラグイン)も含めた開
発情報が全てdrupal.orgで管理されている
• コアだけではなくモジュールも含め、専属のセ
キュリティチームによりセキュリティ更新を提
供している
drupal.org
Drupalコアだけでなく、全モジュールのバ
グや開発情報が一元管理されている
Drupalの特徴
• 多数のモジュールによる拡張性の高さ?
• 多言語対応?
• セキュリティ?
• エンタープライズ向け?
Drupalの特徴
https://www.drupal.com/product/web-content-management
https://www.drupal.com/product/web-content-management
Drupalの特徴
Flexible Content Architecture
Create the right content architecture using the
Admin Interface or do it programatically.
要するに…
システムで管理するモデルを「コードで定義」す
るだけでなく「管理UIから定義」(自動生成)するこ
ともできる。
Drupalを使ってシンプルなWeb
アプリを実際に作ってみる
• モデルの定義とCRUD機能の実装
• 検索機能付きのモデルの一覧の実装
• REST API
Drupalの始め方
最低限必要なもの
php
composer
SQLite
Drupalで新しいプロジェクトを
作成して立ち上げる
$ composer create-project drupal-composer/drupal-project:8.x-dev
my_drupal_project --stability dev --no-interaction
$ cd my_drupal_project
$ vendor/bin/drupal site:install standard --db-type="sqlite" --no-interaction
$ vendor/bin/drupal server
$ open http://127.0.0.1:8088/
https://github.com/drupal-composer/drupal-project
Hello Drupal!
モデルの定義と
CRUD機能の実装
Entity
Drupalで管理するデータの基本クラス
https://www.drupal.org/docs/8/api/entity-api
Drupal内のほぼ全てのデータは
Entity
https://www.drupal.org/files/classDrupal_Entities.png
Entity
ベースとなる2種類のEntity
• ContentEntity (ContentEntityBase)
モデルのデータを管理するためのEntity
• ConfigurationEntity (ConfigEntityBase)
システムの設定情報を管理するためのEntity
独自のモデルを作成するため
のステップ
1. カスタムモジュールを作成する
2. ContentEntityBaseのサブクラスを作る
3. baseFieldDefinitionsメソッドでモデルのフィー
ルドを定義する
カスタムモジュールを作成する
自動生成 (scaffolding) できます。
$ vendor/bin/drupal generate:module --module="my_custom_module"
https://www.drupal.org/docs/8/creating-custom-modules/let-drupal-8-know-about-your-module-with-an-infoyml-file
ContentEntityBaseの
サブクラスを作る
自動生成 (scaffolding) できます。
$ vendor/bin/drupal generate:entity:content --module="my_custom_module” --
entity-class="BookEntity"
ContentEntityBaseの
サブクラスを作る
Scaffoldingで自動生成されたbook entity
Entityの派生クラスのnamespaceを
Drupal{module_name}Entity にすることで、
独自のEntityがフレームワークに自動検出され、
様々な機能をコードの実装や設定をせずに利用できる
ようになる。
ContentEntityBaseの
サブクラスを作る
baseFieldDefinitionsメソッドで
モデルのフィールドを定義する
public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
$fields = parent::baseFieldDefinitions($entity_type);
// (snip)
$fields['isbn'] = BaseFieldDefinition::create('string’)
->setLabel(t('ISBN’))
->setDisplayConfigurable('form', TRUE)
->setDisplayConfigurable('view', TRUE);
https://www.drupal.org/docs/8/api/entity-api/defining-and-using-content-entity-field-definitions
baseFieldDefinitionsメソッドで
モデルのフィールドを定義する
baseFieldDefinitionsメソッドで追加したフィールド
baseFieldDefinitionsメソッドで
モデルのフィールドを定義する
baseFieldDefinitionsメソッドの実装とデータベースの
スキーマを同期する。
$ vendor/bin/drush -y entity:updates --cache-clear
コードを書かずに管理UIから
モデルのフィールドを定義する
コードを書かずに管理UIから
モデルのフィールドを定義する
コードを書かずに管理UIから
モデルのフィールドを定義する
管理UIから追加したフィールド
CRUD機能のコード
https://www.drupal.org/files/classDrupal_Entities.png
save(), load(), delete()
preSave(), postLoad()などの
インターフェース定義
save(), load(), delete()などの実装
必要に応じてpreSave(), postLoad()
などを実装
コード実装 vs 管理UIでの定義
• どちらもできることは変わらない
• 併用できる
• ホットモックやPoCを作る際は管理UIで定義すると
素早く作り込むことができる
• 管理UIで定義した内容はConfigurationEntityとして
ymlフォーマットでコード化することも可能
検索機能付きのモデルの
一覧の実装
よくある実装例
コントローラーのindexメソッドでデータのコレク
ションを取得し、データをテンプレートに渡して
一覧でリスト表示する。
Drupalの場合
「Views」で管理UIから全てを自動生成することが
できる。
Viewsとは
• 管理UIからデータの抽出条件や出力フォーマッ
トを指定し、Drupal内のデータを取得・出力す
るモジュール
Viewsの典型的なユースケース
(ユーザーの一覧)
ユーザー(UserEntity)の一覧と検索フォーム
Viewsを使いモデルの一覧を
自動生成する
Viewsを使いモデルの一覧を
自動生成する
出力フォーマット 出力するデータ
フィルター条件
Viewsを使いモデルの一覧を
自動生成する
独自のモデルで
Viewsの機能を使うには
EntityViewsData のサブクラスを実装する。
モデルのクラスがContentEntityBaseのサブクラ
スの場合は、サブクラス側で特に追加で実装し
なければならないロジックはない。
EntityViewsData
namespace Drupalmy_custom_moduleEntity;
use DrupalviewsEntityViewsData;
class BookEntityViewsData extends EntityViewsData {
public function getViewsData() {
$data = parent::getViewsData();
// Additional information for Views integration,
// such as table joins, can be put here.
return $data;
}
}
Viewsでできること
• 典型的なユースケースとしては「検索機能付き
の一覧」の作成
• コードを書かずに全てを管理UIから自動生成で
きる
• モデルの定義の変更も自動的に認識する
• 複数のモデルを結合して取り出すことも可能
REST API
REST APIを提供する2つの方法
• 1. RESTful Web Service モジュール
• 2. JSON API モジュール
RESTful Web Service
• Drupal 8.0からコアに含まれているモジュール
• APIの定義自体の変更はできない
RESTful Web Service
JSON API
• Drupal 8.7からコアに入る予定
• APIの定義自体を管理UIから変更できる(with
JSON API Extras)
• 今後はこちらが主流になると思われる
JSON APIでできること
• APIの有効化・無効化
• エンドポイントURLの変更
• モデルの各プロパティのフィルタ
• プロパティのキー変換 (Alias)
• プロパティの値の変換 (Enhancer)
• OpenAPI Spec準拠のドキュメント生成
JSON API (管理UI)
JSON API (管理UI)
独自のモデルで
JSON APIを使う
モデルをContentEntityBaseのサブクラスとして
定義すれば、JSON API向けにインターフェース
等を追加で実装する必要はない。
独自のエンティティで
JSON APIを使う
OpenAPI準拠の
APIドキュメントの自動生成が可能
Thank you!
1 of 58

Recommended

JSON:APIについてざっくり入門 by
JSON:APIについてざっくり入門JSON:APIについてざっくり入門
JSON:APIについてざっくり入門iPride Co., Ltd.
1.9K views11 slides
Infrastructure as Code自身のテストを考える by
Infrastructure as Code自身のテストを考えるInfrastructure as Code自身のテストを考える
Infrastructure as Code自身のテストを考える辰徳 斎藤
2.7K views35 slides
Linked Dataの基本原則 -LODを公開するときに知っておきたい基本技術- by
Linked Dataの基本原則-LODを公開するときに知っておきたい基本技術-Linked Dataの基本原則-LODを公開するときに知っておきたい基本技術-
Linked Dataの基本原則 -LODを公開するときに知っておきたい基本技術-Kouji Kozaki
3.7K views42 slides
チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・ by
チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・
チームで1番弱い子がアジャイルレトロスペクティブやってみたら ・・・Rakuten Group, Inc.
14.3K views48 slides
OCI GoldenGate Overview 2021年4月版 by
OCI GoldenGate Overview 2021年4月版OCI GoldenGate Overview 2021年4月版
OCI GoldenGate Overview 2021年4月版オラクルエンジニア通信
1.3K views20 slides
実環境にTerraform導入したら驚いた by
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いたAkihiro Kuwano
28.3K views35 slides

More Related Content

What's hot

GraphQLのsubscriptionで出来ること by
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ることShingo Fukui
9.1K views29 slides
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部) by
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)増田 亨
14.5K views79 slides
Oracle Analytics Cloud のご紹介【2021年3月版】 by
Oracle Analytics Cloud のご紹介【2021年3月版】Oracle Analytics Cloud のご紹介【2021年3月版】
Oracle Analytics Cloud のご紹介【2021年3月版】オラクルエンジニア通信
1.9K views56 slides
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 - by
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -Tier_IV
11.6K views74 slides
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発 by
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発日本マイクロソフト株式会社
1.5K views35 slides
Hadoopの概念と基本的知識 by
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Ken SASAKI
56.1K views60 slides

What's hot(20)

GraphQLのsubscriptionで出来ること by Shingo Fukui
GraphQLのsubscriptionで出来ることGraphQLのsubscriptionで出来ること
GraphQLのsubscriptionで出来ること
Shingo Fukui9.1K views
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部) by 増田 亨
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
増田 亨14.5K views
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 - by Tier_IV
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier_IV11.6K views
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発 by 日本マイクロソフト株式会社
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
Hadoopの概念と基本的知識 by Ken SASAKI
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
Ken SASAKI56.1K views
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~ by Takunori Minamisawa
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
Azure DevOps ハンズオン Vo.2 ~Azure DevOps Wiki を用いたドキュメントの作成~
グラフデータベース入門 by Masaya Dake
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
Masaya Dake20.8K views
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best... by Holden Karau
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
Holden Karau824 views
マイクロサービスっぽい感じの話 by Makoto Haruyama
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
Makoto Haruyama3.5K views
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料) by NTT DATA Technology & Innovation
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
Oracle常駐接続プーリング(DRCP)を導入した話 by Kentaro Kitagawa
Oracle常駐接続プーリング(DRCP)を導入した話Oracle常駐接続プーリング(DRCP)を導入した話
Oracle常駐接続プーリング(DRCP)を導入した話
Kentaro Kitagawa5.8K views
Sonar qubeでちょっと楽しい静的解析 by 政雄 金森
Sonar qubeでちょっと楽しい静的解析Sonar qubeでちょっと楽しい静的解析
Sonar qubeでちょっと楽しい静的解析
政雄 金森24K views
Apache Hadoop YARNとマルチテナントにおけるリソース管理 by Cloudera Japan
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan11.7K views
App013 ここはあえて紙と by Tech Summit 2016
App013 ここはあえて紙とApp013 ここはあえて紙と
App013 ここはあえて紙と
Tech Summit 201649.4K views

Similar to Webアプリケーションフレームワークとしての Drupalの可能性

新時代のエンタープライズデータマネジメント Drupal expo2017 by
新時代のエンタープライズデータマネジメント� Drupal expo2017新時代のエンタープライズデータマネジメント� Drupal expo2017
新時代のエンタープライズデータマネジメント Drupal expo2017惠 紀野
937 views29 slides
Osc2010 Slide by
Osc2010 SlideOsc2010 Slide
Osc2010 SlideKaoru NAKAMURA
336 views7 slides
Drupal ISV 20160630 by
Drupal ISV 20160630Drupal ISV 20160630
Drupal ISV 20160630Hidekazu Ikeda
381 views25 slides
Together drupal case study 20160622 by
Together drupal case study 20160622Together drupal case study 20160622
Together drupal case study 20160622Hidekazu Ikeda
468 views9 slides
Devsumi2013 fumi by
Devsumi2013 fumiDevsumi2013 fumi
Devsumi2013 fumiFumi Yamazaki
1.7K views15 slides
楽天の中のわたしと勉強会 by
楽天の中のわたしと勉強会楽天の中のわたしと勉強会
楽天の中のわたしと勉強会Rakuten Group, Inc.
3K views29 slides

Similar to Webアプリケーションフレームワークとしての Drupalの可能性(20)

新時代のエンタープライズデータマネジメント Drupal expo2017 by 惠 紀野
新時代のエンタープライズデータマネジメント� Drupal expo2017新時代のエンタープライズデータマネジメント� Drupal expo2017
新時代のエンタープライズデータマネジメント Drupal expo2017
惠 紀野937 views
Together drupal case study 20160622 by Hidekazu Ikeda
Together drupal case study 20160622Together drupal case study 20160622
Together drupal case study 20160622
Hidekazu Ikeda468 views
CKAN日本語コミュニティミートアップ by Fumihiro Kato
CKAN日本語コミュニティミートアップCKAN日本語コミュニティミートアップ
CKAN日本語コミュニティミートアップ
Fumihiro Kato2.8K views
CKAN日本語コミュニティの現状と課題 by Fumihiro Kato
CKAN日本語コミュニティの現状と課題CKAN日本語コミュニティの現状と課題
CKAN日本語コミュニティの現状と課題
Fumihiro Kato3.1K views
今時のオンプレなgithubクローン環境構築 by You&I
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I197 views
Drupal business consortiam in Japan:DBCJ 20140909 by Hidekazu Ikeda
Drupal business consortiam in Japan:DBCJ  20140909Drupal business consortiam in Japan:DBCJ  20140909
Drupal business consortiam in Japan:DBCJ 20140909
Hidekazu Ikeda4.7K views
Drupalを活用した Linked Open Dataの 実践的試行環境の構築 by Takanori Hayashi
Drupalを活用した Linked Open Dataの実践的試行環境の構築Drupalを活用した Linked Open Dataの実践的試行環境の構築
Drupalを活用した Linked Open Dataの 実践的試行環境の構築
Takanori Hayashi2K views
インドのインターネット環境 との戦い方 by 健一 辰濱
インドのインターネット環境との戦い方インドのインターネット環境との戦い方
インドのインターネット環境 との戦い方
健一 辰濱2.6K views
dkanのご紹介-150704CMSどうでしょう夏の陣 by Kyoko Ohtagaki
dkanのご紹介-150704CMSどうでしょう夏の陣dkanのご紹介-150704CMSどうでしょう夏の陣
dkanのご紹介-150704CMSどうでしょう夏の陣
Kyoko Ohtagaki1.2K views
メンバーズのFacebookサービスのご紹介 by Members_corp
メンバーズのFacebookサービスのご紹介メンバーズのFacebookサービスのご紹介
メンバーズのFacebookサービスのご紹介
Members_corp1.3K views
Facebook事例&サービス紹介(2010.9.16セミナープレゼン資料) by Hiroshi Tsukamoto
Facebook事例&サービス紹介(2010.9.16セミナープレゼン資料)Facebook事例&サービス紹介(2010.9.16セミナープレゼン資料)
Facebook事例&サービス紹介(2010.9.16セミナープレゼン資料)

More from Yoshikazu Aoyama

大規模サイトにおけるユーザーレベルのキャッシュ活用によるパフォーマンスチューニング by
大規模サイトにおけるユーザーレベルのキャッシュ活用によるパフォーマンスチューニング大規模サイトにおけるユーザーレベルのキャッシュ活用によるパフォーマンスチューニング
大規模サイトにおけるユーザーレベルのキャッシュ活用によるパフォーマンスチューニングYoshikazu Aoyama
1.6K views49 slides
APIを利用したMauticと他システムとの連携について by
APIを利用したMauticと他システムとの連携についてAPIを利用したMauticと他システムとの連携について
APIを利用したMauticと他システムとの連携についてYoshikazu Aoyama
4.4K views37 slides
Mauticをリバースプロキシの下で使うときに気をつけること by
Mauticをリバースプロキシの下で使うときに気をつけることMauticをリバースプロキシの下で使うときに気をつけること
Mauticをリバースプロキシの下で使うときに気をつけることYoshikazu Aoyama
920 views29 slides
日本語ではじめるDrupal Console in Sapporo by
日本語ではじめるDrupal Console in Sapporo日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in SapporoYoshikazu Aoyama
929 views49 slides
日本語ではじめるDrupal Console by
日本語ではじめるDrupal Console日本語ではじめるDrupal Console
日本語ではじめるDrupal ConsoleYoshikazu Aoyama
1.3K views27 slides
Drupal ONSEN 2015 by
Drupal ONSEN 2015Drupal ONSEN 2015
Drupal ONSEN 2015Yoshikazu Aoyama
1.1K views12 slides

More from Yoshikazu Aoyama(8)

大規模サイトにおけるユーザーレベルのキャッシュ活用によるパフォーマンスチューニング by Yoshikazu Aoyama
大規模サイトにおけるユーザーレベルのキャッシュ活用によるパフォーマンスチューニング大規模サイトにおけるユーザーレベルのキャッシュ活用によるパフォーマンスチューニング
大規模サイトにおけるユーザーレベルのキャッシュ活用によるパフォーマンスチューニング
Yoshikazu Aoyama1.6K views
APIを利用したMauticと他システムとの連携について by Yoshikazu Aoyama
APIを利用したMauticと他システムとの連携についてAPIを利用したMauticと他システムとの連携について
APIを利用したMauticと他システムとの連携について
Yoshikazu Aoyama4.4K views
Mauticをリバースプロキシの下で使うときに気をつけること by Yoshikazu Aoyama
Mauticをリバースプロキシの下で使うときに気をつけることMauticをリバースプロキシの下で使うときに気をつけること
Mauticをリバースプロキシの下で使うときに気をつけること
Yoshikazu Aoyama920 views
日本語ではじめるDrupal Console in Sapporo by Yoshikazu Aoyama
日本語ではじめるDrupal Console in Sapporo日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo
Yoshikazu Aoyama929 views
日本語ではじめるDrupal Console by Yoshikazu Aoyama
日本語ではじめるDrupal Console日本語ではじめるDrupal Console
日本語ではじめるDrupal Console
Yoshikazu Aoyama1.3K views
DrupalCafe Vol.35 - Dockerで始めるDrupal by Yoshikazu Aoyama
DrupalCafe Vol.35 - Dockerで始めるDrupalDrupalCafe Vol.35 - Dockerで始めるDrupal
DrupalCafe Vol.35 - Dockerで始めるDrupal
Yoshikazu Aoyama2.7K views
Drupalサイトをセキュアに運用するには(入門編) by Yoshikazu Aoyama
Drupalサイトをセキュアに運用するには(入門編)Drupalサイトをセキュアに運用するには(入門編)
Drupalサイトをセキュアに運用するには(入門編)
Yoshikazu Aoyama7.6K views

Webアプリケーションフレームワークとしての Drupalの可能性