WEBVTT

1
00:00:00.000 --> 00:00:00.916
こんにちは。

2
00:00:00.916 --> 00:00:06.409
今回は、ネクストジェイエスとマイクロシーエムエスの公開と運用の手順です。

3
00:00:06.409 --> 00:00:12.741
ワードプレスで運用する情報サイトを、ネクストジェイエスの静的出力と、既存のウェブサーバー、

4
00:00:12.741 --> 00:00:19.073
そしてヘッドレスシーエムエスのマイクロシーエムエスへ移す設計例を紹介します。

5
00:00:19.073 --> 00:00:23.041
狙いは、公開側にピーエイチピーや管理画面、データベースを置かない構成にし、

6
00:00:23.041 --> 00:00:27.008
改ざんの入口を減らすことです。

7
00:00:27.008 --> 00:00:32.806
ただし、アカウントが侵害されれば正規の経路から改ざんされる可能性は残ります。

8
00:00:32.806 --> 00:00:38.452
構築、初回公開、更新の自動化、日常点検、復旧までを順番に押さえていきます。

9
00:00:38.452 --> 00:00:41.797
まず、なぜ静的配信が対策になるのかです。

10
00:00:41.797 --> 00:00:49.994
典型的なワードプレスでは、閲覧のたびにピーエイチピーが動き、プラグインやデータベースと連携します。

11
00:00:49.994 --> 00:00:58.357
その分、本体やプラグインの脆弱性、管理者アカウントの不正利用といった入口を守り続ける必要があります。

12
00:00:58.357 --> 00:01:07.557
静的出力では、ビルド時に記事をエイチティーエムエルへ変換し、公開側は出来上がったファイルの配信だけを行います。

13
00:01:07.557 --> 00:01:13.578
公開ワードプレスの実行環境を入口とする攻撃経路を取り除けるのが効果です。

14
00:01:13.578 --> 00:01:20.604
一方で、マイクロシーエムエスやギット、サーバー管理の権限が盗まれるリスクは残ります。

15
00:01:20.604 --> 00:01:26.960
効果は、不要な実行環境を減らし、権限を分ける設計とセットで評価してください。

16
00:01:26.960 --> 00:01:28.315
構成を確認します。

17
00:01:28.315 --> 00:01:35.539
編集者はマイクロシーエムエスで原稿を作り、ビルド環境が読み取り専用のキーで公開記事を取得します。

18
00:01:35.539 --> 00:01:43.064
ネクストジェイエスがアウトというフォルダーへ生成し、検証済みの成果物をサーバーへ配置して配信します。

19
00:01:43.064 --> 00:01:51.341
ブラウザーからシーエムエスへ直接問い合わせないため、シーエムエスが止まっても公開済みページは影響を受けません。

20
00:01:51.341 --> 00:01:53.448
着手前には棚卸しも必要です。

21
00:01:53.448 --> 00:02:00.221
記事や画像、著者、公開日を一覧にし、旧ユーアールエルと新ユーアールエルの対応表を作ります。

22
00:02:00.221 --> 00:02:07.445
フォームや検索などの機能は代替方法を決め、画像は移行先へ移して本文のユーアールエルも更新します。

23
00:02:07.445 --> 00:02:11.508
旧環境のデータは、復元できる形で先に保存してください。

24
00:02:11.508 --> 00:02:14.249
マイクロシーエムエスの準備です。

25
00:02:14.249 --> 00:02:20.759
リスト形式のエーピーアイを作り、エンドポイントの例はアーティクルズとします。

26
00:02:20.759 --> 00:02:26.583
最低限タイトルと本文を用意し、必要なら説明文やスラッグを追加します。

27
00:02:26.583 --> 00:02:30.694
まず公開済みのテスト記事を一件用意してください。

28
00:02:30.694 --> 00:02:33.435
権限で大切なのはキーの分離です。

29
00:02:33.435 --> 00:02:39.174
公開ビルドでは、必要な記事エーピーアイをゲットする権限だけを持つキーを使い、

30
00:02:39.174 --> 00:02:44.913
作成や変更、削除ができる管理用キーを流用しないでください。

31
00:02:44.913 --> 00:02:53.649
ゲット専用でも、下書きや限定公開まで取得できる設定になっていないか、エーピーアイ設定で必ず確認します。

32
00:02:53.649 --> 00:02:58.960
プレビューに必要な権限は、本番ビルド用キーから分けてください。

33
00:02:58.960 --> 00:03:01.002
ネクストジェイエスの設定です。

34
00:03:01.002 --> 00:03:03.588
設定ファイルに三つの項目を追加します。

35
00:03:03.588 --> 00:03:10.122
アウトプットにエクスポートを指定すると静的出力になり、更新には再ビルドと再配置が必要になります。

36
00:03:10.122 --> 00:03:17.881
トレーリングスラッシュを真にすると、アバウトのページはアウト配下のアバウト・インデックスというファイルになります。

37
00:03:17.881 --> 00:03:22.169
イメージズのアンオプティマイズドは、標準の画像最適化サーバーを使わない例としての指定で、

38
00:03:22.169 --> 00:03:26.457
画像の軽量化や寸法指定は別途行います。

39
00:03:26.457 --> 00:03:33.808
この記事は静的出力が対象で、サーバーで実行するエスエスアールやアイエスアールとは構成も更新方法も異なります。

40
00:03:33.808 --> 00:03:37.892
静的出力のままサーバー専用機能が使えると考えないでください。

41
00:03:37.892 --> 00:03:40.268
エーピーアイキーの置き場所です。

42
00:03:40.268 --> 00:03:44.873
ローカルでは、ギット管理の対象外であるドットエンブ・ローカルというファイルに、

43
00:03:44.873 --> 00:03:49.477
サービスドメインとエーピーアイキーを置きます。

44
00:03:49.477 --> 00:03:52.893
実際の値をギットや共有ログへ貼るのは厳禁です。

45
00:03:52.893 --> 00:03:54.527
注意点が二つあります。

46
00:03:54.527 --> 00:04:00.022
一つ目は、ネクストパブリックという公開用の接頭辞をキーに付けないことです。

47
00:04:00.022 --> 00:04:03.587
その環境変数はブラウザー側へ渡る前提だからです。

48
00:04:03.587 --> 00:04:11.755
二つ目は、接頭辞がなくても、キーをプロップスへ含めたりエイチティーエムエルへ埋めたりすれば漏れてしまう点です。

49
00:04:11.755 --> 00:04:17.102
ビルド時に使う認証情報と、閲覧者へ返す記事データを分けて考えてください。

50
00:04:17.102 --> 00:04:22.152
シーアイを使う場合は、そのサービスのシークレット保管機能を使います。

51
00:04:22.152 --> 00:04:24.268
記事取得のコード、前半です。

52
00:04:24.268 --> 00:04:32.882
ファイルはページズルーターのインデックス・ジェイエスエックスで、マイクロシーエムエス用のエスディーケーを使います。

53
00:04:32.882 --> 00:04:41.193
まず環境変数からサービスドメインとエーピーアイキーを読み、どちらか欠けていればエラーを投げてビルドを止めます。

54
00:04:41.193 --> 00:04:45.123
設定不足のまま空の一覧を公開しないためのガードです。

55
00:04:45.123 --> 00:04:51.621
次にクライアントを作り、記事の配列とオフセットを用意して、ページ分割の取得を始めます。

56
00:04:51.621 --> 00:04:58.875
一回で取得できる件数には上限があるため、リミット百件で少しずつずらしながら全件を集める設計です。

57
00:04:58.875 --> 00:05:05.524
アプリルーターではデータ取得の書き方が異なり、ゲットスタティックプロップスは使いません。

58
00:05:05.524 --> 00:05:06.808
コードの後半です。

59
00:05:06.808 --> 00:05:10.230
取得した分を配列へ追加し、オフセットを進めます。

60
00:05:10.230 --> 00:05:15.793
総件数へ届いたら終了し、途中で件数がゼロになったら異常としてエラーを投げます。

61
00:05:15.793 --> 00:05:19.358
最後に、記事の配列だけをプロップスとして返します。

62
00:05:19.358 --> 00:05:23.637
エーピーアイキーやクライアント自体はプロップスへ含めません。

63
00:05:23.637 --> 00:05:28.628
ページ本体は、見出しと記事タイトルのリストを表示するだけの最小例です。

64
00:05:28.628 --> 00:05:32.479
本文をエイチティーエムエルとして挿入する場合は、許可するタグや属性を定義し、

65
00:05:32.479 --> 00:05:36.330
サニタイザーで処理してください。

66
00:05:36.330 --> 00:05:41.321
管理者の入力でも、アカウント侵害を想定すると無条件には信頼できません。

67
00:05:41.321 --> 00:05:44.744
単純なタグ削除だけを対策にしないことも大切です。

68
00:05:44.744 --> 00:05:47.687
ローカルでビルドして検査します。

69
00:05:47.687 --> 00:05:54.676
エヌピーエム・シーアイで依存関係をそろえ、ビルドするとアウトが生成されます。

70
00:05:54.676 --> 00:06:02.402
一覧と詳細の件数、下書きの混入、キーや認証情報が出力へ含まれていないかを確認します。

71
00:06:02.402 --> 00:06:07.368
存在しない記事が適切に四百四になることも合格条件です。

72
00:06:07.368 --> 00:06:13.622
取得に失敗したら、空の一覧を正常な成果物として公開しないでください。

73
00:06:13.622 --> 00:06:18.036
初回公開では、公開するのはアウトの中身だけです。

74
00:06:18.036 --> 00:06:25.577
プロジェクト全体やドットエンブ・ローカル、鍵ファイルは公開フォルダーへ置きません。

75
00:06:25.577 --> 00:06:34.038
まず一時ディレクトリーへ転送して内容を比較し、既存の公開物を保存したうえで本番へ反映します。

76
00:06:34.038 --> 00:06:40.476
共有フォルダーへ削除付きの同期を無条件で実行しない点も守ってください。

77
00:06:40.476 --> 00:06:41.796
更新の運用です。

78
00:06:41.796 --> 00:06:47.407
マイクロシーエムエスで公開しただけでは、静的サイトは更新されません。

79
00:06:47.407 --> 00:06:54.338
最初は手動で、ビルド、検証、転送、配置、公開ユーアールエルでの確認までを確立します。

80
00:06:54.338 --> 00:06:58.464
失敗したら、以前の正常な公開物を維持してください。

81
00:06:58.464 --> 00:07:05.065
流れが安定したら、ウェブフックからシーアイのビルドを始める自動化へ広げられます。

82
00:07:05.065 --> 00:07:13.646
その際は送信元の検証に加え、同時デプロイの防止や、古いビルドが新しい記事を上書きしない直列化が必要です。

83
00:07:13.646 --> 00:07:20.907
日常運用では、公開のたびに変更記事を確認し、コミットアイディーやビルド番号を記録します。

84
00:07:20.907 --> 00:07:28.168
定期点検では、多要素認証と権限の見直し、依存パッケージの更新、異常通知の確認を行います。

85
00:07:28.168 --> 00:07:30.678
最後にバックアップと復旧です。

86
00:07:30.678 --> 00:07:33.690
ギットが管理するのはコードだけです。

87
00:07:33.690 --> 00:07:42.895
記事データや画像、エーピーアイスキーマ、公開済み成果物は別に保管し、検証環境で復元する練習まで行ってください。

88
00:07:42.895 --> 00:07:51.597
疑わしい更新を見つけたら、まず公開内容とログを保全し、自動ビルドや侵害されたアカウントの利用を止めます。

89
00:07:51.597 --> 00:07:58.291
正常な成果物を再配置して復旧を確認し、原因を調査して権限と認証情報を更新します。

90
00:07:58.291 --> 00:08:04.984
不正な記事がシーエムエスに残ったまま再ビルドすると、同じ内容が再び出力されます。

91
00:08:04.984 --> 00:08:10.674
コードの巻き戻し、データの復元、成果物の差し戻しを区別してください。

92
00:08:10.674 --> 00:08:11.678
まとめです。

93
00:08:11.678 --> 00:08:19.209
静的配信で公開側の入口を減らし、キーは読み取り専用に分け、検査済みの成果物だけを公開する。

94
00:08:19.209 --> 00:08:22.556
この積み重ねが改ざんへの備えになります。
