日本語ではじめるDrupal Console in Sapporo

Preview:

Citation preview

⽇本語ではじめるDrupalConsolein

Sapporo

⻘⼭義万

(あおやまよしかず)

Aboutme

Facebook:Twitter:Drupal.org:

ANNAIIncDrupalJapanUserGroupDrupalさっぽろ

https://www.facebook.com/yoshikazu.aoyama@blauerberg

blauerberg

ExperienceDrupalcontributor(Core,Views,Console,etc)

MauticcontributorDrupalsite&systemInternetofThingsWebapplication(RubyonRails,Java,Node.js,etc)Cloud/Serversidedesignandadministration(InfrastructureasCode,DevOps)EmbeddedLinuxNetworkstackfortelecommunicationnetwork(xDSL,3G,3.5G)TCP/IPNetworkstack

MaintainerofDrupalConsole(⽇本語ドキュメント)

TopicsDrupalConsoleとはインストール⽅法ローカル上にサイトを⽴ち上げて基本的な使いかたを覚える

AboutDrupalConsole

AboutDrupalConsoleThenewCLIforDrupal.TheDrupalConsoleisatooltogenerateboilerplatecode,interactand

debugDrupal8.https://github.com/hechoendrupal/DrupalConsole

DrupalConsoleとはDrushのようにCLIでDrupalを操作するためのツールです。

Drupalのサイトをインストールしたり、モジュールのインストールやアップデート、キャッシュのクリアなど、サイトを構築、運⽤するため

に必要な⼀連の機能を提供します。

Drushとの違いボイラープレートコードの⽣成機能を持っている点がDrushとの⼤きな

違いです。

要するにrailsコマンドとかplay(activator)コマンドみたいなscaffoldingしてくれるやつです。

コマンド名はそのまま「drupal」です。

なぜDrupalConsoleを使うのかhttps://hechoendrupal.gitbooks.io/drupal-

console/content/ja/about/why-should-you-care-about.html

なぜDrupalConsoleを使うのか(超意訳)

「D8ってSymphony⼊ってすごい開発しやすくなったけど、その分覚える事多いしコード量も増えたじゃん。⾯倒だしミスりやすいから⾃動

⽣成よね?」

github上で公開、開発されています

https://github.com/hechoendrupal/DrupalConsole

ものすごく活発に開発が進められています。

ここ1年間のコミット数DrupalCore:2118DrupalConsole:2526Drush:622

なにげにcoreよりコミット多かったり..

$ git log --since=2015-07-01 --until=2016-06-30 --oneline --no-merges | wc -l

メンテナーのEduardoGarcia(enzo)さんが来⽇してセッションを開催してくれました

https://groups.drupal.org/node/509188http://enzolutions.com/talks/enzotour16-tokyo

https://groups.drupal.org/node/509190http://enzolutions.com/talks/enzotour16-osaka

⽇本語のドキュメントを公開しました!

https://drupalconsole.com/docs/japanese

railsで新しいアプリを作成してサーバーを起動する

$ rails new myapp$ cd myapp$ bundle install$ rake db:migrate$ rails server$ open http://localhost:3000

# titleとcontentフィールドを持つblogの Model, View, Controllerを⽣成$ rails generate scaffold blog title:string content:text

DrupalConsoleで新しいサイトを作成して⽴ち上げる

RailsのノリでDrupalの開発ができます。

(みなさんコードなんて⾃動⽣成したいですよね?)

$ drupal site:new mysite --latest$ cd mysite$ drupal site:install$ drupal server$ open http://localhost:8088

# blogモジュールを作成し、Model, View, Controllerを⽣成$ drupal generate:entity:content --module blog

DrupalConsoleのインストール⽅法

Mac&Linux$ composer global require drupal/console:1.0.0-beta5$ drupal init --override

https://hechoendrupal.gitbooks.io/drupal-console/content/ja/getting/project.html

注意点(2016/8/20時点)@stableがちょっと古いので1.0.0-beta5に読み替えてください。「インストーラーを使ってローカルマシン上でプロジェクトを取得する⽅法を推奨します」となっていますが、1.0.0以降はComposerでのインストールが推奨です(というか、Composerで⼊れないと動きません)。

Windows

の内容がちょっと古い(マージが間に合わず..)ので、を⾒てください。

$ composer global require drupal/console:1.0.0-beta5$ drupal init --override

公式ドキュメントPullRequest中のドキュメント

注意点(2016/8/20時点)@stableがちょっと古いので1.0.0-beta5に読み替えてください。Windowsサポートのためのパッチを1.0.0-beta5のリリース後に⼊れましたが、次のリリースがまだなのでパッチを当てる必要があります。この⼿順は1.0.0-rcがリリースされれば不要になります。

$ cd ~/AppData/Roaming/Composer/vendor/drupal/console/$ curl https://patch-diff.githubusercontent.com/raw/hechoendrupal/DrupalConsole/pull/2507.patch | patch -p1$ curl https://patch-diff.githubusercontent.com/raw/hechoendrupal/DrupalConsole/pull/2567.patch | patch -p1

注意点その2(2016/8/20時点)GNUtar1.29以上の場合にtarの展開に失敗するバグがあります。GitforWindowsの最新版だとこれに当たるので、 をお使いください。SETXする時のコマンドプロンプトは管理者として実⾏してください(Windowsキー+x+Aで起動できます)php.iniでphp_curl.dllとphp_openssl.dllも有効にしてください(ごめんなさい、ドキュメント直します。。)

2.9.0

なぜかWindowsサポートを頑張るハメに..

(メインのメンテナーがみんなWindows機を持っていないのは秘密)

supportGitBashonwindowspreventtimeoutofserverprocessonwindowsupdatesetupinstructionsforWindowsTranslateja/getting/windows.md

⽇本語表⽰に切り替える$ drupal settings:set language ja$ drupal

Drupal Console (1.0.0-beta4) | 現在のDrupalのバージョン (8.1.3)===============================================================

設定ファイルをユーザーのホームディレクトリにコピーする

drupal init --override

Drupalをダウンロード、インストールしてサーバーを起動する

drupal chain --file=~/.console/chain/quick-start.yml

Drupalプロジェクトを新規作成する

drupal site:new drupal8.dev --latest...

使ってみましょう

今回やってみることローカルマシン上にDrupalのサイトをインストールするモジュールをインストールしてみるテーマをインストールして差し替えてみるダミーのコンテンツを⽣成するBootstrapのサブテーマを作成するオリジナルのモジュールを作成する

新しいサイトを作ってサーバーを起動するまで

$drupalchain--file=~/.console/chain/quick-start.ymlコマンドを1回叩くだけ、1,2分でサイトが⽴ち上がります。

Drupal8をダウンロード、インストールして起動する

$ drupal chain --file=~/.console/chain/quick-start.yml

// site:new drupal 8.1.7 をダウンロードしています

[OK] Drupal 8.1.7 は /private/tmp/drupal8.dev にダウンロードされました

// site:install Drupal 8のインストールプロセスを開始しています。

[OK] Drupal 8のインストールが正常に完了しました。

// server

[OK] Executing php from /Users/aoyama/.phpenv/versions/7.0.2/bin/php.

PHP 7.0.2 Development Server started at Sat Jul 30 00:22:43 2016Listening on http://127.0.0.1:8088Document root is /private/tmp/drupal8.dev

drupalchainの中⾝を覗いてみるcommands:# Download Drupal - command: site:new arguments: directory: 'drupal8.dev' options: latest: 'true'# Install Drupal - command: site:install options: langcode: en db-type: sqlite db-file: sites/default/files/.ht.sqlite site-name: 'Drupal 8 Quick Start' site-mail: admin@example.com account-name: admin account-mail: admin@example.com account-pass: admin arguments: profile: standard# Start php built-in server - command: server

chainは複数のコマンドの組み合わせ

~/.console/chainにサンプルが⼊ってます。うまく活⽤すればセキュリティ更新など⾊々な作業が⾃動化が可能。

https://github.com/hechoendrupal/DrupalConsole/blob/master/config/dist/chain/quick-start.yml

DrupalConsoleでできること$ drupal list

https://hechoendrupal.gitbooks.io/drupal-console/content/ja/commands/available-commands.html

モジュールをインストールしてみる$ drupal module:install devel$ drupal module:install admin_toolbar --latest$ drupal module:install admin_toolbar_tools

テーマをインストールして差し替えてみる$ drupal theme:download bootstrap$ drupal theme:install bootstrap --set-default

ダミーのユーザーやタクソノミー、コンテンツを⽣成する

$ drupal create:users$ drupal create:terms$ drupal create:nodes

Bootstrapのサブテーマを作成する$ drupal generate:theme --theme=my_bootstrap_subtheme --base-theme=bootstrap$ drupal theme:install my_bootstrap_subtheme --set-default

カスタムモジュールのスケルトンを作成する$ drupal generate:module --module=mymodule

カスタムモジュールにentity(モデル)のCRUD機能を追加

$ drupal generate:entity:content --module=mymodule --has-bundles --is-translatable

⽣成または更新されたファイル サイトのパス: /Users/aoyama/drupal8.dev 1 - modules/custom/mymodule/mymodule.permissions.yml 2 - modules/custom/mymodule/mymodule.links.menu.yml 3 - modules/custom/mymodule/mymodule.links.task.yml 4 - modules/custom/mymodule/mymodule.links.action.yml 5 - modules/custom/mymodule/src/DefaultEntityAccessControlHandler.php 6 - modules/custom/mymodule/src/DefaultEntityTranslationHandler.php 7 - modules/custom/mymodule/src/Entity/DefaultEntityInterface.php 8 - modules/custom/mymodule/src/Entity/DefaultEntity.php 9 - modules/custom/mymodule/src/DefaultEntityHtmlRouteProvider.php 10 - modules/custom/mymodule/src/Entity/DefaultEntityViewsData.php 11 - modules/custom/mymodule/src/DefaultEntityListBuilder.php 12 - modules/custom/mymodule/src/Form/DefaultEntitySettingsForm.php 13 - modules/custom/mymodule/src/Form/DefaultEntityForm.php 14 - modules/custom/mymodule/src/Form/DefaultEntityDeleteForm.php 15 - modules/custom/mymodule/default_entity.page.inc 16 - modules/custom/mymodule/templates/default_entity.html.twig 17 - modules/custom/mymodule/templates/default-entity-content-add-list.html.twig 18 - modules/custom/mymodule/mymodule.module 19 - modules/custom/mymodule/mymodule.module

どれくらいのコードが⽣成されたか⾒てみる

1000⾏のモジュールをバグやtypoなしに1分で書けますか?

$ find modules/custom/mymodule -type f| xargs wc -l | tail -n 1 1161 total

D8からは開発スタイルを変えましょう

D7のようにモジュールをスクラッチから書くのは結構⼤変複雑な機能を実現しようとすると、なんだかんだでSymphonyの知識は必須でもSymphonyのおかげでインターフェースが統⼀され、コードの⾃動⽣成はしやすくなった他の開発フレームワークに習って、⾃動⽣成できるものはしていきましょう

よく使うかもしれないコマンド集$ drupal cache:rebuild # キャッシュクリア

$ drupal module:update {module} # コアやモジュールをアップデート

$ drupal module:install {module} # モジュールをインストール

$ drupal module:uninstall {module} # モジュールをアンインストール

$ drupal theme:download {theme} # テーマをダウンロード

$ drupal theme:install {theme} # テーマをインストール

$ drupal database:connect # DBに接続

$ drupal database:dump # DBをバックアップ

$ drupal database:restore # バックアップからDBをリストア

$ drupal cron:extcute # cront taskを実⾏

$ drupal generate:***** # いろいろ⾃動⽣成

まとめ

DrupalConsoleとは今、⼀番簡単に早くD8を試すことができるツールインストールはすごく簡単MacやWindows上で動くローカルサイトを3分で⽴ち上げ可能PHPのビルドインサーバーとsqliteだけでも動くので、apacheとかmysqlは不要。サーバー苦⼿な⼈でも使える。railsのようなCLIでdrupalの開発ができる、⾃動⽣成最⾼!Drushにしかできないこと、DrupalConsoleにしかできないことがあるので併⽤がおすすめ⽇本語のドキュメントを公開したよ!

おまけ

ThinkITでDrupal8の⼊⾨記事を連載中!

初⼼者でも挫折しないゼロから始めるDrupal8⼊⾨

ANNAIではエンジニアを絶賛募集中です!

リモートワーク可能です!

Contactus

https://annai.co.jp/recruit