SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
GIGLT.20
JUST HACK IT
WordPressとNuxt.jsで実現する
SPA
Ryuichi Kataoka
突然ですが
こんなサイトないですか?
ローディングが長く読む気をなくすサイト
本文にHTMLべた書きで運用しづらいサイト
WordPress + Gutenberg
と
Nuxt.jsで
SPA化してしまおう!
Gutenbergと ?
WordPress 新しいエディタ。
とても編集しやすい。
Gutenbergと
実際に使ってみましょう!
Gutenbergと
Gutenbergと
2カラム(画像と本文を横に並べる)や YouTube 埋め込み等
お手 物だわ!
HTMLとして挿入する機能も備わっている で HTMLべた書きできる!
やったー!!!
ん?(こいつ何 ために CMS使っているんだろう・・・
SPAにする
メリット
顧客体験 向上
● インタラクティブなサイトが作りやすい
(表現 自由度が向上)
● 少ない通信でコンテンツを読むことができる(滞在
時間 長いサイトに 最適)
SPAにするメリット そ 1
表示速度 高速化
● キャッシュを最大限使用することができる
● 離脱率 低下を防ぐことができる
(表示速度が1秒遅れるとコンバージョンが7%低
下する)
SPAにするメリット そ 2
インフラ・エンジニア コスト削減
● 従量課金系 クラウドサービス 費用を
抑えることができる
● Nuxt.jsを使用することでSPA 実装工数
比較的少なく実現できる
SPAにするメリット そ 3
そもそもなぜ
WordPress?
全Webサイト 3分 1でWordPressを
使用されていると言われている
即ち、3分 1 サイトがコンテンツ
という資産をWordPress上に蓄えられている
そもそもなぜWordPress? - そ 1
コンテンツを運用される方に
WordPressで 運用ノウハウがある
最近話題 Headless CMSで
運用するに 結構障壁がある
そもそもなぜWordPress? - そ 2
そもそもなぜWordPress? - そ 3
単純に
WordPressが
好きだから
SPA化へ 道
WP REST APIを非同期で取得
· 記事一覧データ or 記事データをWP REST APIから
取得し、Nuxt.jsで描画する
· 一番実装 工数が少なく実現できる
· SEO的な課題 ある
SPA化へ 道 そ ①
アクションフックで静的にしてしまう
· 記事やメニュー等各種変更時、アクションフックで
JSON等にしてしまい、S3等に配置
· おそらく最速で表示することができるし、CDNとかに
おけ さらにすごいことになる
· WordPressに障害が発生してもとりあえずコンテンツ 見れる
SPA化へ 道 そ ②
今回 WP REST APIを非同期で取得する
方法でやっていきたいと思います☺
SPA化へ 道
WP REST API
と ?
(例) 記事一覧を取得する場合
{site_url}/wp-json/wp/v2/posts 
にアクセスするとJSONでデータが返ってくる
WP REST APIと ?
主なパラメータ(記事一覧)
· per_page=(n) : n件を一覧で取得することができる
· page=(n)  : nページ目 一覧を取得することができる
        (per_pageとセットで使う)
· _embed    : カテゴリー名を含めることができる
· context=embed: 一覧 データ内にpost_contentを含めない
WP REST APIと ?
実際にみてみましょう!
WP REST APIと ?
実際に作って
みよう!
実際に作ってみよう!
nuxt.config.jsに
axiosを導入し、envにサイト URLを追加

← 非同期でデータ取ってくるすごいやつ
← 日付を扱いやすくしてくれる
  すごいやつ
追加
実際に作ってみよう!
storeにindex.jsを追加

これから作成するファ
イルを読み込む
Storeに登録
実際に作ってみよう!
storeにstate.jsを追加
state ページ間等で使える便利な変数
← 投稿一覧データが入る
← ページャー 番号が入る
← 最初に一覧に訪れたかどうか
  判別する
実際に作ってみよう!
storeにmutations.jsを追加
主に同期処理を担当しています
← 取得した記事一覧を登録
← ページャー番号を登録
← ページャー番号1つ次に送る(インクリメント)
← 記事一覧へ アクセスが初回かどうか
実際に作ってみよう!
storeにactions.jsを追加
主に非同期処理を担当しています
実際に作ってみよう!
pages/index.vueで実際に使ってみよう!
実際に作ってみよう!
データがセットされていることが確認できました!
実際に作ってみよう!
pages/index.vueに記事一覧を表示してみよう!
実際に作ってみよう!
記事一覧が表示されました!
実際に作ってみよう!
pages/_postSlug/index.vueで詳細ページを作ろう!
実際に作ってみよう!
pages/_postSlug/index.vueで詳細ページを作ろう!
↓ タイトル
↑ 本文
実際にみてみましょう!
実際に作ってみよう!
One more thing...
うち メディアを
SPA化してみた
実際にみてみましょう!
うち メディアをSPA化してみた
有難うございました🙏
Good is good.
We provide opportunities to the SEKAI by fusing technology and ideas.
テクノロジーとクリエイティブでセカイをより良くする
       こと


Contenu connexe

Tendances

詳説 Movable type 7
詳説 Movable type 7詳説 Movable type 7
詳説 Movable type 7Yuji Takayama
 
日曜プログラマーとigoogle先生
日曜プログラマーとigoogle先生日曜プログラマーとigoogle先生
日曜プログラマーとigoogle先生Yuusuke Takeuchi
 
MTサイト運用に効く!けっこう便利なプラグインたち
MTサイト運用に効く!けっこう便利なプラグインたちMTサイト運用に効く!けっこう便利なプラグインたち
MTサイト運用に効く!けっこう便利なプラグインたちYasufumi Nishiyama
 
iPhone での旬なWeb開発 (jQTouch編)
iPhone での旬なWeb開発 (jQTouch編)iPhone での旬なWeb開発 (jQTouch編)
iPhone での旬なWeb開発 (jQTouch編)dora_kou
 
mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11Tatsuhiko Kubo
 
20180709 pronet study
20180709 pronet study20180709 pronet study
20180709 pronet studySix Apart
 
Data API ことはじめ
Data API ことはじめData API ことはじめ
Data API ことはじめYuji Takayama
 
Yeoman RIAビルドツール超入門
Yeoman RIAビルドツール超入門Yeoman RIAビルドツール超入門
Yeoman RIAビルドツール超入門Masakazu Muraoka
 
Inside pixiv's infrastructure〜application cluster side〜
Inside pixiv's infrastructure〜application cluster side〜Inside pixiv's infrastructure〜application cluster side〜
Inside pixiv's infrastructure〜application cluster side〜Tatsuhiko Kubo
 
mruby_nginx_module〜Embedded mruby into Nginx〜
mruby_nginx_module〜Embedded mruby into Nginx〜mruby_nginx_module〜Embedded mruby into Nginx〜
mruby_nginx_module〜Embedded mruby into Nginx〜Tatsuhiko Kubo
 
Movable Type 7 のすべて
Movable Type 7 のすべてMovable Type 7 のすべて
Movable Type 7 のすべてYuji Takayama
 
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってますYuusuke Takeuchi
 
オープンソースプロジェクトのはじめかた@Creators MeetUp #25
オープンソースプロジェクトのはじめかた@Creators MeetUp #25オープンソースプロジェクトのはじめかた@Creators MeetUp #25
オープンソースプロジェクトのはじめかた@Creators MeetUp #25Erina Takei
 
フロントエンドな人にこそ知ってほしいMTMLの話
フロントエンドな人にこそ知ってほしいMTMLの話フロントエンドな人にこそ知ってほしいMTMLの話
フロントエンドな人にこそ知ってほしいMTMLの話Yasufumi Nishiyama
 
Jetpackをざっくり紹介
Jetpackをざっくり紹介Jetpackをざっくり紹介
Jetpackをざっくり紹介Yuki Kokubo
 
Movable Type as a Playground
Movable Type as a PlaygroundMovable Type as a Playground
Movable Type as a PlaygroundTaku AMANO
 
ブラウザのブックマークの小咄
ブラウザのブックマークの小咄ブラウザのブックマークの小咄
ブラウザのブックマークの小咄Akira HIRATA
 

Tendances (20)

詳説 Movable type 7
詳説 Movable type 7詳説 Movable type 7
詳説 Movable type 7
 
日曜プログラマーとigoogle先生
日曜プログラマーとigoogle先生日曜プログラマーとigoogle先生
日曜プログラマーとigoogle先生
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
MTサイト運用に効く!けっこう便利なプラグインたち
MTサイト運用に効く!けっこう便利なプラグインたちMTサイト運用に効く!けっこう便利なプラグインたち
MTサイト運用に効く!けっこう便利なプラグインたち
 
mruby_nginx_module
mruby_nginx_modulemruby_nginx_module
mruby_nginx_module
 
iPhone での旬なWeb開発 (jQTouch編)
iPhone での旬なWeb開発 (jQTouch編)iPhone での旬なWeb開発 (jQTouch編)
iPhone での旬なWeb開発 (jQTouch編)
 
mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11mruby_nginx_module at pyfes 2013.11
mruby_nginx_module at pyfes 2013.11
 
20180709 pronet study
20180709 pronet study20180709 pronet study
20180709 pronet study
 
Data API ことはじめ
Data API ことはじめData API ことはじめ
Data API ことはじめ
 
Yeoman RIAビルドツール超入門
Yeoman RIAビルドツール超入門Yeoman RIAビルドツール超入門
Yeoman RIAビルドツール超入門
 
Inside pixiv's infrastructure〜application cluster side〜
Inside pixiv's infrastructure〜application cluster side〜Inside pixiv's infrastructure〜application cluster side〜
Inside pixiv's infrastructure〜application cluster side〜
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
mruby_nginx_module〜Embedded mruby into Nginx〜
mruby_nginx_module〜Embedded mruby into Nginx〜mruby_nginx_module〜Embedded mruby into Nginx〜
mruby_nginx_module〜Embedded mruby into Nginx〜
 
Movable Type 7 のすべて
Movable Type 7 のすべてMovable Type 7 のすべて
Movable Type 7 のすべて
 
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
 
オープンソースプロジェクトのはじめかた@Creators MeetUp #25
オープンソースプロジェクトのはじめかた@Creators MeetUp #25オープンソースプロジェクトのはじめかた@Creators MeetUp #25
オープンソースプロジェクトのはじめかた@Creators MeetUp #25
 
フロントエンドな人にこそ知ってほしいMTMLの話
フロントエンドな人にこそ知ってほしいMTMLの話フロントエンドな人にこそ知ってほしいMTMLの話
フロントエンドな人にこそ知ってほしいMTMLの話
 
Jetpackをざっくり紹介
Jetpackをざっくり紹介Jetpackをざっくり紹介
Jetpackをざっくり紹介
 
Movable Type as a Playground
Movable Type as a PlaygroundMovable Type as a Playground
Movable Type as a Playground
 
ブラウザのブックマークの小咄
ブラウザのブックマークの小咄ブラウザのブックマークの小咄
ブラウザのブックマークの小咄
 

Plus de GIG inc.

LT38テーマ3-2
LT38テーマ3-2LT38テーマ3-2
LT38テーマ3-2GIG inc.
 
LT38テーマ3-1
LT38テーマ3-1LT38テーマ3-1
LT38テーマ3-1GIG inc.
 
LT38テーマ2-2
LT38テーマ2-2LT38テーマ2-2
LT38テーマ2-2GIG inc.
 
LT38テーマ2-1
LT38テーマ2-1LT38テーマ2-1
LT38テーマ2-1GIG inc.
 
LT38テーマ1-2
LT38テーマ1-2LT38テーマ1-2
LT38テーマ1-2GIG inc.
 
LT38テーマ1-1
LT38テーマ1-1LT38テーマ1-1
LT38テーマ1-1GIG inc.
 
lt23後半
lt23後半lt23後半
lt23後半GIG inc.
 
lt23前半
lt23前半lt23前半
lt23前半GIG inc.
 
LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話GIG inc.
 
LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話 LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話 GIG inc.
 
LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術GIG inc.
 
LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術GIG inc.
 
LT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバーLT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバーGIG inc.
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」GIG inc.
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」GIG inc.
 
LT.19 ビジネス環境の変化とカスタマーサクセス
LT.19 ビジネス環境の変化とカスタマーサクセスLT.19 ビジネス環境の変化とカスタマーサクセス
LT.19 ビジネス環境の変化とカスタマーサクセスGIG inc.
 

Plus de GIG inc. (20)

Lt41
Lt41Lt41
Lt41
 
Lt40
Lt40Lt40
Lt40
 
Lt39
Lt39Lt39
Lt39
 
LT38テーマ3-2
LT38テーマ3-2LT38テーマ3-2
LT38テーマ3-2
 
LT38テーマ3-1
LT38テーマ3-1LT38テーマ3-1
LT38テーマ3-1
 
LT38テーマ2-2
LT38テーマ2-2LT38テーマ2-2
LT38テーマ2-2
 
LT38テーマ2-1
LT38テーマ2-1LT38テーマ2-1
LT38テーマ2-1
 
LT38テーマ1-2
LT38テーマ1-2LT38テーマ1-2
LT38テーマ1-2
 
LT38テーマ1-1
LT38テーマ1-1LT38テーマ1-1
LT38テーマ1-1
 
lt37
lt37lt37
lt37
 
lt23後半
lt23後半lt23後半
lt23後半
 
lt23前半
lt23前半lt23前半
lt23前半
 
LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話LT.22 GitHub Actionsを触ってみた話
LT.22 GitHub Actionsを触ってみた話
 
LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話 LT.22 機械学習におけるPDCAを回せる環境構築の話
LT.22 機械学習におけるPDCAを回せる環境構築の話
 
LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術LT.21 SPIN法を活用した人心掌握術
LT.21 SPIN法を活用した人心掌握術
 
LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術LT.21 スゴいチームになるフィードバック術
LT.21 スゴいチームになるフィードバック術
 
LT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバーLT.20 コーディングとマジックナンバー
LT.20 コーディングとマジックナンバー
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(DONGURI)」
 
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」 【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
【Tech Trend Talk vol.19】社外向け勉強会「拡張するデザイン -(GIG)」
 
LT.19 ビジネス環境の変化とカスタマーサクセス
LT.19 ビジネス環境の変化とカスタマーサクセスLT.19 ビジネス環境の変化とカスタマーサクセス
LT.19 ビジネス環境の変化とカスタマーサクセス
 

LT.20 Wordpress x nuxt.jsで実現するSPA