Slide 1

Slide 1 text

コンテンツ設計手法で 変更に強いアプリケーション を実現する ローコードによるWebアプリの バックエンド実装 ゼロベース株式会社 石橋秀仁 アクイアジャパン 丸山ひかる

Slide 2

Slide 2 text

– コンテンツファーストでの 設計アプローチのエッセンス – Drupalによる構造化コンテンツの実現 – クラウドネイティブなPaaS環境 「Acquia Cloud Platform」について – まとめ アジェンダ

Slide 3

Slide 3 text

コンテンツファースト での設計アプローチの エッセンス

Slide 4

Slide 4 text

情報アーキテクト information architect (IA) World IA Day 福岡オーガナイザー (2020-) ゼロベース株式会社 代表取締役 (2004-) 前半のスピーカー:石橋秀仁

Slide 5

Slide 5 text

監訳書: Designing デザイニング Connected コネクテッド Content コンテント デジタルプロダクトの 長期的な成長を支える 構造化コンテンツ 今回お話しする内容

Slide 6

Slide 6 text

● ユーザー・インターフェイス(UI)を改造しやすい ● アプリケーションを改造しやすい ● コンテンツ管理システム(CMS)を改造・置換しやすい ● コンテンツを編集・移設しやすい ● コンテンツ構造を改造しやすい 「変更に強いアプリケーション」とは?

Slide 7

Slide 7 text

“ そもそも、なぜ変更が生じるのか? 変化の剪断層 構成要素の変化速度が異なるた め、建物は常に自分自身を引き 裂いている。 スチュアート・ブランド せんだん How Buildings Learn: What Happens After They're Built by Stewart Brand (1994)

Slide 8

Slide 8 text

文明のペース・レイヤリング ‘The order of civilization’ from The Clock Of The Long Now: Time and Responsibility by Stewart Brand (2008)

Slide 9

Slide 9 text

情報アーキテクチャのペース・レイヤリング ユーザー・インターフェイス (UI) コンテンツ管理システム (CMS) コンテンツ コンテンツ構造 ドメイン構造 アプリケーション

Slide 10

Slide 10 text

“ アプリケーションは生魚のように足が早く、 コンテンツはワインのように熟成する。 Applications age like fish, content ages like wine. なぜ「コンテンツ・ファースト」は変化に強い?

Slide 11

Slide 11 text

● つながりあったコンテンツ ● 細かく切り刻まれたコンテンツ ● コピペせず、再利用するコンテンツ 変化に強い「構造化コンテンツ」 structured content connected chunked COPE (create once, publish everywhere)

Slide 12

Slide 12 text

コンテンツのかたち:ブロブよりチャンク blob chunk 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 13

Slide 13 text

チャンクを再利用して、リソースを構成する 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 14

Slide 14 text

つながりあったコンテンツ 人物ページにセッション セッションページに人物 人物のインデックス 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 15

Slide 15 text

1. ドメインの調査 2. ドメイン・モデリング 3. コンテンツ・モデリング 4. コンテンツ設計 5. コンテンツ管理システムの設計・実装 6. コンテンツの制作・パブリッシュ 構造化コンテンツの開発プロセス

Slide 16

Slide 16 text

ドメイン・モデル 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 17

Slide 17 text

コンテンツ・タイプ 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 18

Slide 18 text

コンテンツ・モデル 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 19

Slide 19 text

コンテンツ・リソース 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 20

Slide 20 text

CMSフィールド仕様 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 21

Slide 21 text

Drupalのコンテンツ・タイプ 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 22

Slide 22 text

ユーザー・インターフェイス 図版引用元:『 DESIGNING CONNECTED CONTENT デジタルプロダクトの 長期的な成長を支える構造化コンテンツ』 マイク・アザートン、キャリー・ヘイン共著、石橋秀仁監訳

Slide 23

Slide 23 text

● 作る、使う、考える のサイクルを高速に回す ● みんなを巻き込んで ● ノーコード/ローコードで ● デプロイ自動化(CI/CD)で 構造化コンテンツのプロトタイピング 調査 実装 設計 評価

Slide 24

Slide 24 text

Drupalによる 構造化コンテンツの 実現

Slide 25

Slide 25 text

Drupal Meetup Tokyo オーガナイザー (2022-) アクイアジャパン テクニカルトランスレーター (2004-) 後半のスピーカー:丸山ひかる

Slide 26

Slide 26 text

Drupalとは 作者 Dries Buytaert 言語 PHP ライセンス GPL v2以降 初回リリース 2001年1月15日 公式サイト drupal.org ソースコード git.drupalcode.org/project/drupal 最新バージョン 10.1.x (2023年8月時点) – デジタル体験を提供する、オープンソースの CMS(コンテンツ管理システム)です。 – LAMPスタックで動作します。 – 企業サイト、多言語サイト、ポータルサイト、 ヘッドレスCMSとして利用事例が多々ありま す。 – NASA、オーストラリア政府、NASDAQなど の金融機関から、ネスレ、ファイザー、IBM など様々な組織がDrupalを採用していま す。

Slide 27

Slide 27 text

バックエンドAPIサービスとしてのDrupal DrupalはCMSとして有名で、企業サイトでの利用事例が圧倒的に多いですが、DrupalはバックエンドAPI サービスとして利用するに十分なプラットフォームです。 1. コンテンツモデリング:Drupalでは柔軟なコンテンツ構造を構築できるアーキテクチャとUIを備えて います。 2. モダンな技術スタック:Twig/DI/Routing等のSymfonyコンポーネント、Twig、Composer、PHPUnit がDrupalに組み込まれていることで、Webアプリケーションフレームワークさながらの実装が行えま す。 3. 豊富な拡張機能:巨大なOSSコミュニティから提供される数万個ものコントリビュートモジュール(拡 張機能)を活用することで、カスタムコードを最小限に抑えながら機能拡張できます。 4. Web APIへの対応:近年ではAPI-Firstを掲げてより良い構造化データエンジンおよびWebサービス プラットフォームに対応させる取り組みが始まっています。

Slide 28

Slide 28 text

Drupalでの プロトタイピングデモ

Slide 29

Slide 29 text

Drupalで高速プロトタイピング 1. コンテンツモデルをDrupalで表現する 2. DrupalのWeb API化 3. フロントエンドとの統合

Slide 30

Slide 30 text

1. Drupalでコンテンツモデリングをしよう Drupalで高速プロトタイピング – Drupalには「コンテンツエンティティ」と呼ばれる、コンテンツ の永続的なストレージに使用されるオブジェクトがありま す。 – Drupalでデータを扱う方法の一つであり、データやコンテン ツのモデリングを行います。 – 標準で「コンテンツ」「タクソノミー」「ユーザー」「メディア」な どいくつか型が用意されており、 Drupalの管理画面でそれ らの設定を定義できます。 – コンテンツエンティティとして生成されたインスタンスは共通 の仕様でデータの操作が行えます。

Slide 31

Slide 31 text

2. Web APIに対応させる Drupalで高速プロトタイピング – Drupalで標準採用されているREST API – Drupalには、標準機能としてREST APIに対応しています。これ は、コンテンツエンティティをJSONでCRUD操作できるもので す。 – JSONでAPIを作成するためのオープンスタンダードな仕様 「JSON API」に準拠しており、共有された規約に従うことで RESTful APIを迅速かつ一貫して作成できます。 – 拡張機能でより実用的に – Drupalのコントリビュートモジュールの中にはGraphQLフォー マットを提供するもの、OAuth認証を実現するものなどがあり、 コードを書かずにこれらの機能を実現できます。

Slide 32

Slide 32 text

3. フロントエンドの実装 Drupalで高速プロトタイピング – モダンJavaScriptフレームワークとの統合 – DrupalのフロントエンドとしてNext.jsと連携する プロジェクトがあります。 https://next-drupal.org/ – Drupalはそもそも「CMS」なので・・・ – フロントエンドの画面はDrupal側で簡単に用意 できます。 – Drupal.orgで数多くのテーマ(=フロントエンド のレイアウト)が公開されています。

Slide 33

Slide 33 text

Drupalで高速プロトタイピング まとめ 1. コンテンツモデルをDrupalで表現する データやコンテンツのモデリングをUI上から行えます。作成されたコンテンツは全てコン テンツエンティティとして共通の仕様でデータ操作ができます。 2. DrupalのWeb API化 標準機能としてREST APIに対応している他、様々な拡張機能によって実用的なWeb APIを実装できます。 3. フロントエンドとの統合 Next.jsとDrupalをシームレスに連携するプロジェクトが立ち上がっており、素早くフロン トエンドを実装できます。要件によってはCMSでバックエンドもフロントエンドも賄うことも 可能です。

Slide 34

Slide 34 text

クラウドネイティブな PaaS環境、Acquia Cloud Platformについて

Slide 35

Slide 35 text

Drupalの開発ワークフロー 1. 計画:機能やデザインの開発をいつまでにどれだけ行 うかを決めます。 2. ビルド:機能実装(コーディング)とコンパイルを行いま す。 3. テスト:コードをテストします。 4. レビュー:コードのレビューを行います。 5. デプロイ:ホスティング環境にコードを反映します。 これらはすべて でシームレスに行うこと ができます。

Slide 36

Slide 36 text

– Drupalサイトを運用、サポートする環境を PaaSとして提供します。 – デプロイプロセスをサポートするセキュア なインフラと開発ツールを備えています。 Acquia Cloud Platform Drupalを開発/ホスティングするためのクラウドプラットフォーム

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

2021年3月〜、KubernetesとAWSの最新技術をフル活用し て、Acquia Cloud Platformを完全に再設計した次世代のプ ラットフォームに生まれ変わりました。 コンテナ化と動的スケーリングにより、Cloud Platformを利用 するお客様の体験をより最適化できるようになりました。 大規模なリプラットフォームを実施 https://www.acquia.com/jp/blog/acquia-cloud-next-journey-platform-modernization-scale

Slide 39

Slide 39 text

Acquia Cloud Platformのインフラ構成 RESILIENT EDGE CLUSTER* データベース層 (HA) AWS Aurora Provisioned (Pooled by Default) ファイルサーバー層 (HA) AWS EFS (Pooled by Default) NEW WEB LAYER AMAZON EKS Pods for: Apache / PHP, Memcache, Cron, & SSH EC2 - AZ1 EC2 - AZ2 EC2 - AZ1 EC2 - AZ2 KUBERNETES CLUSTER (Pooled Capacity by Default) ● ファイルシステムは 10GB/秒高速データ配信 ● 1TB以上ストレージ拡張 ● データベースは最大 5倍スループット ● Web層ソフトウェアの分離することで、 Drupal、 Memcached、Cron、SSHが互いに干渉することなく パフォーマンスを発揮 ● 高負荷に対して瞬時にリソース増強 (オートスケール) ● コンテナが常にリフレッシュされ、不健全な Podが自 動的に削除される自己修復型インフラストラクチャ ● コードデプロイ時に新しいコンテナへのクリーンビルド を保証するアトミック・コードアップデート

Slide 40

Slide 40 text

Acquia Cloud Platformのアドオンツール Cloud Platformと完全に統合する クラウド型のIDE(統合開発環境) アクイアがホスティング /管理するGitLab環境 CDN/WAF

Slide 41

Slide 41 text

Drupalの開発サイクルを加速する 1. 計画:Code Studioでバックログ/issue管理 2. ビルド:Cloud IDEでDrupal開発に特化された開発環境を数 分で起動し、クラウド上でコード実装 3. テスト:Code Studioで、事前定義されたCI/CDパイプライン により静的コード解析や自動テストを実施 4. レビュー:Code Studioでマージリクエストを作成をトリガーに レビュー用環境を起動 5. デプロイ:Cloud Platformでドラッグ&ドロップによるデプロイ

Slide 42

Slide 42 text

Acquia Cloud Platformのプラン 個人向けから企業向けまで、あらゆる規模のビジネスをサポートします。 本番Webサイトを開発、デプロイするために構築されたセル フサービス環境を提供します。 セキュアでスケーラブルな、エンタープライズクラスのインフ ラとサポートを提供します。 Cloud Platform Professional Cloud Platform Enterprise 月額クレジットカード払い 利用するリージョン、メモリ、ストレージによって料金を算 出 年額一括払い 月間PVを元に料金を算出 * 開発環境 ×1、ステージング環境 ×1、本番環境 ×1 がベー ス (追加可能) フルサービス式のキャパシティ管理 × 高可用性 Cloud API, Cloud IDE, Code Studio, Edge 東京リージョン選択可能 24時間365日サポート × アップタイムSLA99.95% 開発環境 ×1、ステージング環境 ×1、本番環境 ×1 セルフサービス式のキャパシティ管理 Cloud API のみ 選べるリージョン(※東京リージョン未対応) ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ cloud.acquia.comでアカウント登録後、環境を作成、す ぐに利用可能 オーダーフォーム受理後、2週間前後でセットアップ完 了、利用開始 ✔ ✔ $148(2万円)/月〜 クレジット決済 お見積もり https://www.acquia.com/choosing-right-acquia-cloud-platform * ユーザーや管理者数は価格や性能に影響いたしません。

Slide 43

Slide 43 text

まとめ

Slide 44

Slide 44 text

まとめ – コンテンツファーストのアプローチにより、 変更に強いアプリケーションが実現できます。 – 最適なコンテンツモデルを素早く見極めるには、 作って評価するサイクルを高速に 回すことが 求められます。 – オープンソースソフトウェアのDrupalを使用することで、作りたいものを素早く形に落とし込む こ とができます。 – アクイアが提供する、Drupalに最適化されたPaaS、Acquia Cloud Platformをホスティング環 境として使用することで、開発者がやるべきことに注力できるようになります。

Slide 45

Slide 45 text

参考 – 書籍:DESIGNING CONNECTED CONTENT デジタルプロダクトの長期的な成長を支える構造化コ ンテンツ https://www.amazon.co.jp/dp/4862465196 – チュートリアル:Drupal×Next.jsでヘッドレスCMSを高速で立ち上げる https://dev.acquia.com/tutorial/nextjs-acquia-setting-acquia-cms https://dev.acquia.com/tutorial/nextjs-acquia-nextjs-starter-kit-acquia-cms-headless-starter-kit-drupal – ブログ記事:DrupalのJSON:API入門 https://www.acquia.com/jp/blog/introduction-to-json-api – ブログ記事:Acquia Cloud Next - 大規模プラットフォームのクラウドジャーニー https://www.acquia.com/jp/blog/acquia-cloud-next-journey-platform-modernization-scale – 動画解説:Acquia Cloud Platform入門シリーズ https://www.youtube.com/playlist?list=PLVkpj3GMKNm2xTDE6gMYesBaFikMaZU3m

Slide 46

Slide 46 text

Thank you!