Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
改めて振り返るDrupalの モジュール_テーマのデバッグ方法
Search
otofu
November 17, 2025
Programming
69
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
改めて振り返るDrupalの モジュール_テーマのデバッグ方法
DrupalConNara 2025 で発表した。「改めて振り返るDrupalの モジュール_テーマのデバッグ方法」についてのスライドです。
otofu
November 17, 2025
Other Decks in Programming
See All in Programming
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
710
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
110
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.5k
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
430
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
260
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
630
R8 の設定見直しでアプリサイズ削減
andpad
0
220
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
280
Featured
See All Featured
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Rails Girls Zürich Keynote
gr2m
96
14k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Being A Developer After 40
akosma
92
590k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Balancing Empowerment & Direction
lara
6
1.3k
Technical Leadership for Architectural Decision Making
baasie
3
600
Exploring anti-patterns in Rails
aemeredith
4
540
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
改めて振り返る Drupalの モジュール /テーマのデバッグ方 法 Kobayashi Motoki (@otofu)
自己紹介 Kobayashi Motoki • スタジオ・ウミ株式会社 • バックエンド担当 • Drupal歴: 2016〜
(Drupal7-) • https://www.drupal.org/u/otofu
[email protected]
https://www.studio-umi.jp Revision No. 00250602 © 2025 STUDIO UMI PROPRIETARY
& CONFIDENTIAL.
スタジオ・ウミ株式会社 小林 泰平 〒104-0033 東京都中央区新川1丁目3-21 BIZ SMART 茅場町 6F Tel.03-6868-8247
Webサイト開発 Webアプリケーション開発 Drupal導入支援 10名 会社概要 商号 代表取締役 所在地 電話番号 事業内容 従業員数
Drupalサイト開発のエキスパートチーム スタジオ‧ウミは、Drupal 4.7 の時代から約18年にわたり、 “ Drupal専⾨の開発会社 ” として活動してきました。 オープンソースでありながら、単体でも⼗分に利⽤できる 「充実の基本機能」、
CMS の範疇を超えた「⾼い拡張性」、強い規約に基づいた「⾼いメンテナンス性」で、 中〜⼤規模サイトのスタンダードCMSとして不動の地位を誇るCMS「Drupal」。 そんな Drupal の持つ⾼いポテンシャルを、 これまでの経験で培った技術とノウハウを活かして最⼤限に引き出すことで、 ご予算の中で最⼤の価値を⽣み出す最適な Drupal ソリューションをご提供いたします。 スタジオ‧ウミとは
オープンソースCMS「Drupal」を⽤いた新規 WebサイトやWebアプリケーションの開発、 既存Drupal サイトの改修、カスタムモジュー ル開発、オリジナルテーマ開発など、Drupal に関することなら何でもお気軽にご相談くだ さい。 保守サポート Drupal 導⼊後のバージョンアップやセキュリ
ティアップデートなどの保守サポートについ てもご安⼼ください。 ご要望のお客様には⽉額または年額制のサ ポートプランもご⽤意しています。 Drupal 導⼊⽀援 CMS「Drupal」の専⾨開発会社として、 Drupalプロジェクトをサポート。 技術的な課題解決や、技術者‧運⽤ご担当者 の⽅へのDrupalトレーニングを実施していま す。 Webサイト開発 ご提供サービス
Drupalに関することは お気軽にご相談ください お問い合わせはこちら
[email protected]
www.studio-umi.jp
今日の発表 • デバッグを行うにあたっての基本設定 • コントリビュートモジュール活用 • Devel • Web Profiler
• PhpStorm + DDEV + Xdebugによるデバッグ方法 • (おまけ) DDEV + Datadog によるトレース取得
デバッグを行うにあたっての基本設定
デバッグを行うにあたっての基本設定 services.yml 設定 • Twigに関するデバッグ機能を有効化 • Twigキャッシュを無効化 • 利⽤テンプレートの可視化 #
ベースの services.yml をコピー cd web/sites/default cp -p default.services.yml services.yml # services.yml parameters: twig.config: debug: true cache: false
デバッグを行うにあたっての基本設定 settings.local.php 設定 • 各種キャッシュの無効化 • JS, CSSのアグリゲーション抑⽌ • エラー表⽰設定
# ベースのsettings.local.phpをコピー cd web/sites/default cp -p ../example.settings.local.php settings.local.php # エラー表示設定. $config['system.logging']['error_level'] = 'verbose'; # JS,CSSアグリゲーション抑止. $config['system.performance']['css']['preprocess'] = FALSE; $config['system.performance']['js']['preprocess'] = FALSE; # 各種キャッシュ無効化. $settings['cache']['bins']['render'] = 'cache.backend.null'; $settings['cache']['bins']['page'] = 'cache.backend.null'; $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';
デバッグを行うにあたっての基本設定 気をつけるべきポイント • 本設定はローカル環境でのみ有効化 • パフォーマンスに⼤きく影響 • キャッシュによる思わぬバグを⾒逃す可能性 • セキュリティリスクに繋がる可能性
• これらの設定は管理画⾯( /admin/config/development/settings )からも設定可能
コントリビュートモジュール活⽤ -Devel-
コントリビュートモジュール活用 -Devel- Devel モジュール • https://www.drupal.org/project/devel • Drupalを利⽤するうえで開発者は1度は利⽤するモジュール • 147,000
サイトとかなりのサイトで利⽤されている • 変数や任意の値を画⾯やデバッグ⽤のテキストファイルへ出⼒可能 • 処理が通っているか確認したりサッと変数の中⾝を確認する場合に利⽤ (私の場合)
コントリビュートモジュール活用 -Devel- dpm() or \Drupal::service('devel.dumper')->message() • 引数で渡した変数(任意の⽂字列)を画⾯上に表⽰ #[Hook('form_alter')] public function
formAlter(array &$form, FormStateInterface $form_state, $form_id): void { dpm($form_id); }
コントリビュートモジュール活用 -Devel- ddm() or \Drupal::service('devel.dumper')->debug() • 引数で渡した変数(任意の⽂字列)をテキストファイルへ出⼒ • デフォルトの場合 /tmp/drupal_debug.txt
へ出⼒ #[Hook('form_alter')] public function formAlter(array &$form, FormStateInterface $form_state, $form_id): void { ddm($form_id); } cat /tmp/drupal_debug.txt "development_settings_form"
コントリビュートモジュール活用 -Devel- TIPS • VarDumper(symfony/var-dumper)の dump を使うとdevelは不要 https://symfony.com/doc/current/components/var_dumper.html • Kintモジュールと組み合わせるとdpm()がより便利になる
• Develの設定( /admin/config/development/devel ) composer require 'drupal/kint-kint:^2.1' drush en -y kint
コントリビュートモジュール活用 -Devel- Before After
コントリビュートモジュール活⽤ -WebProfiler-
コントリビュートモジュール活用 -WebProfiler- WebProfiler モジュール • https://www.drupal.org/project/webprofiler • ページ下部にツールバーが表⽰され各種統計情報を表⽰ • ルーティングを確認する為に利⽤
(私の場合)
PhpStorm + DDEV + Xdebugによる デバッグ⽅法
PhpStorm + DDEV + Xdebug PhpStorm とは • https://www.jetbrains.com/phpstorm/ •
JetBrains製品のIDE • Drupal拡張やDDEV拡張を導⼊することで快適なDrupal開発環境を構築 DDEV とは • https://ddev.com/ • DockerをベースとしたOSSのPHP開発環境構築ツール • Dockerの知識が不要で環境構築が可能 (Drupal以外にLaravel等でも利⽤可能) Xdebug とは • PHPの拡張機能として動作するデバッガー及び開発⽀援ツール • PhpStorm等のエディタと連携しステップ実⾏等が可能になる
PhpStorm + DDEV + Xdebug PhpStormとDDEVの連携⽅法 • DDEV統合プラグイン( https://plugins.jetbrains.com/plugin/18813-ddev-integration )
• ⼿動設定 参考 • https://docs.ddev.com/en/stable/users/install/phpstorm/
PhpStorm + DDEV + Xdebug DDEV環境のでXdebug有効/無効切り替え • コマンド1つで切り替えが可能 • 基本的にはOFFにしておき必要に応じて有効化を推奨
# Xdebug 有効化 ddev xdebug on # Xdebug 無効化 ddev xdebug off
PhpStorm + DDEV + Xdebug 〜 ハンズオン 〜
(おまけ) DDEV + Datadog による トレース取得
DDEV + Datadog Datadog とは • https://www.datadoghq.com/ • クラウド型の監視‧分析プラットフォーム •
APM(アプリケーションパフォーマンス監視)の⼀環としてトレース機能が ある
DDEV + Datadog Datadog とは • https://www.datadoghq.com/ • クラウド型の監視‧分析プラットフォーム •
APM(アプリケーションパフォーマンス監視)の⼀環としてトレース機能が ある
DDEV + Datadog • WEBコンテナへDatadog拡張の導⼊ # .ddev/web-build/Dockerfile.datadog RUN curl -LO
https://github.com/DataDog/dd-trace-php/releases/latest/download/datadog-setup.php \ && php${DDEV_PHP_VERSION} datadog-setup.php --php-bin=all --enable-appsec --enable-profiling \ && rm datadog-setup.php
DDEV + Datadog • Datadog Agentコンテナ追加 # .ddev/docker-compose.datadog.yaml services: datadog:
container_name: ddev-${DDEV_SITENAME}-datadog image: gcr.io/datadoghq/agent:latest environment: DD_API_KEY: ${DD_API_KEY} DD_SITE: ${DD_SITE} DD_APM_ENABLED: "true" labels: com.ddev.site-name: ${DDEV_SITENAME} com.ddev.approot: ${DDEV_APPROOT} volumes: - .:/mnt/ddev_config - ddev-global-cache:/mnt/ddev-global-cache - /var/run/docker.sock:/var/run/docker.sock - /proc/:/host/proc/:ro - /sys/fs/cgroup:/host/sys/fs/cgroup:ro
DDEV + Datadog • Datadog
まとめ
まとめ • ローカル環境ではキャッシュを無効化して開発を⾏いやすくしよう • デバッグを⾏う為のコントリビュートモジュールを活⽤しよう • 開発ツール(エディタ + DDEV +
Xdebug)を活⽤しよう • APM(アプリケーションパフォーマンス監視)を活⽤しよう
ご清聴ありがとうございました