Slide 1

Slide 1 text

ピクシブの Contentful 利用事情 (2021) pixiv Inc. Hanakla (はなくら) 2021.5.13

Slide 2

Slide 2 text

2 お前誰やねん? @hanak1a_ だよ! ● VRoid Hubチーム(フロントエンド/バックエンド) ● React / TypeScriptと戯れながらRailsで規約網引き 回しの刑を受けています。たすけてください。 ● 意思が強くて悪い顔なヤツらが好き です。 ● 普段はオリキャラ系創作界隈で活動しています Hanakla VRoid Hub チーム

Slide 3

Slide 3 text

話すこと 3 - Contentfulってなに? - 採用事例 - Contentfulの概観 - Content Modelの設計 話さないこと - 👆以外のContentfulとこの世の真理について

Slide 4

Slide 4 text

Contentfulってなに? 4

Slide 5

Slide 5 text

Contentfulとは? Headless CMSと呼ばれる、ヘッドレスなCMSの一つです。(情報量🈚) - エントリの編集画面をContentfulが用意してくれている - カスタムエディタを作ることでJSONに変換可能な任意のエディタとか作れる - 複雑エディタもエンジニアを生贄を捧げて召喚することが出来る - Contentful Delivery APIを使うことで、エントリをAPIで取得できる - Content Management APIもあるので、”そういうこと”も出来るんじゃないすか? - 多分社内ではまだ採用されていない 5

Slide 6

Slide 6 text

なぜContentful(CaaS)を使うのか - 頻繁に発生するLPとかニュースのコーディング。秒で終わって欲しいですよね。 - ブチアゲ花火なLPならとにかく、 定常的に増えていくLPのコーディングはシュッと終わって欲しい - ビジネス職の人たちの手で全てが完結できると、原稿のやりとりなどの時間的ロスが 減って楽、エンジニア職も安心して失職出来る - でもCMSを自前で開発するの面倒じゃん(楽しいけど) - ちゅーかWordPressにしろ自前にしろ、 インフラ整備もしんどい。やらなくていいならやりたくない。 そんなあなたに、Contentful製薬のコンテントフール! 6

Slide 7

Slide 7 text

ピクシブにおけるContentfulの導入事例 社内ではpixivFACTORY / VRoid Hub / vroid.com で利用されています。 pixivFACTORY: グッズ別LP / 特設LP VRoid: VRoid Hub コンテストLP / vroid.com ニュース / VRoid Mobile お知らせ 7

Slide 8

Slide 8 text

Contentful 使い方 [検索] 8

Slide 9

Slide 9 text

Contentful 使い方 [検索] 9 流れ 1. Content Model(エントリのスキーマ)を設計します 2. Contentful側でエントリを書きます 3. contentful-任意-clientを使って記事を取得してレンダリングします。 おわり! 制作著作ゥ!!!

Slide 10

Slide 10 text

Content Modelの設計 10

Slide 11

Slide 11 text

Content Modelの設計 11 感覚としてはDBのテーブルを設計するのに近い。 1つの記事にどの様なデータが必要かの要件を洗い出してフィールド構造を設計する。

Slide 12

Slide 12 text

Content Modelの設計 12 フィールドには👉の様なデータ型が あるので、いい感じにModelを設計。 注意点として、Rich Textは 俺たちWebおじさんズが想像するような RichなTextではない……

Slide 13

Slide 13 text

Content Modelの設計(Rich Textについて) 現状、ContentfulのRich TextはWordpressみたいな感じではない。 色付きテキストや画像リンク・埋め込み画像などは全て別のContent Modelを作ってEmbed Entryするか、生贄を捧げて拡張エディタを作るしかない。 (Slate.jsがよさげ) 13 Rich Textで使えるのは👆👉とH1~6くらい

Slide 14

Slide 14 text

実際のContent Modelの 設計パターンを見る 14

Slide 15

Slide 15 text

比較的簡単めなやつ(VRoid NEWS記事) 15 タイトル(ja/en) 公開したことにする日時 アイキャッチ(ja / en) 記事本文(ja /en)

Slide 16

Slide 16 text

比較的簡単めなやつ(VRoid NEWS記事) 16 Contentfulはフィールド毎にローカライゼーションを行うかどうかを指定できる 1. Settings ⇢ Locales ⇢ 有効にしたいLocaleとデフォルトLocaleを設定 2. フィールドのSettingsで「Enable localization of this field」にチェック

Slide 17

Slide 17 text

比較的簡単めなやつ(VRoid NEWS記事) 他に、記事中に埋め込むためのボタンコンポーネントや、画像グリッドなどが Content Modelとし て定義されていて、埋め込みEntryとしてRich Textの中に埋め込むことが出来る。 17

Slide 18

Slide 18 text

変わったContent Model(VRoid Hub) エントリのレンダリング時にAPIとの通信が必要なものは、エントリ側にエンティティへの IDだけ持 たせて、フロントエンドでのレンダリング時に APIとの通信を行う。 VRoid Hubのコンテスト結果発表ページはそのような構成になっている。 18 IDを元にAPIから データを取得 (フロントエンド)

Slide 19

Slide 19 text

複雑めなやつ(pixivFACTORY) 19 ここらへんは僕が開発したものではないので詳しくはわからない (詳しくは@f_subalへ) https://factory.pixiv.net/special/karadanote_moraeru_campaign

Slide 20

Slide 20 text

複雑めなやつ(pixivFACTORY) 20 ここらへんは僕が開発したものではないので詳しくはわからない (詳しくは@f_subalへ) https://factory.pixiv.net/special/karadanote_moraeru_campaign

Slide 21

Slide 21 text

複雑めなやつ(pixivFACTORY) f_subal曰く、ビジネス職の方たちがすぐに慣れてくれたので、 若干項目の多いLPもうまく回っているようです! 21

Slide 22

Slide 22 text

最高だね!!!! 22

Slide 23

Slide 23 text

みんなも Contentfulになろう! 23

Slide 24

Slide 24 text

クライアント側の使い方は 公式ドキュメントを見てくれ 24 JS以外にもPHP, Java .NET, iOS, Ruby向けのSDKがあるぞ https://www.contentful.com/developers/docs/platforms

Slide 25

Slide 25 text

おわり 25