Color mode

Riebeckite をアップグレードする

既存 Site を新しい Riebeckite へ更新するときの手順です。

基本的には、

text
現在のVersionを確認
        ↓
Packageを更新
        ↓
riebeckite check
        ↓
riebeckite doctor
        ↓
riebeckite build
        ↓
Deprecated Warningを確認

の順で進めます。

Riebeckite は現在 pre-1.0 です。更新時には、Package の Version を上げるだけでなく、doctor で Deprecated Usage がないか確認してください。

1. 現在の Version を確認する

まず、現在 Site で利用している Riebeckite Package を確認します。

sh
npm ls @riebeckite/core @riebeckite/cli @riebeckite/honox

Plugin や Theme を利用している場合は、それらの Version も合わせて確認してください。

更新前の状態を Commit しておくと、変更点を確認したり問題が起きた場合に戻したりしやすくなります。

2. Riebeckite Package を更新する

Site で利用している Riebeckite Package をまとめて更新します。

対象には、

text
@riebeckite/core
@riebeckite/cli
@riebeckite/honox
@riebeckite/plugin-*
@riebeckite/theme-*

などがあります。

Site が実際に利用している Package を確認し、必要なものを更新してください。

3. Site を検証する

Package を更新したら、普段の検証を実行します。

sh
npm exec riebeckite check
npm exec riebeckite doctor
npm exec riebeckite build

それぞれ確認するものが異なります。

Command 主に確認すること
check Config や Plugin Contract が正しいか
doctor Deprecated Usage を含む Site の問題
build 実際に Site を生成できるか
Diagram source
text
flowchart LR
    Update["Package更新"]
    Check["check"]
    Doctor["doctor"]
    Build["build"]
    Done["Upgrade完了"]
 
    Update --> Check
    Check --> Doctor
    Doctor --> Build
    Build --> Done

check が成功しただけで終わらせず、doctor と実際の build まで確認してください。

Deprecated Warning を確認する

アップグレード後は、

sh
npm exec riebeckite doctor

を実行します。

古い Contract を使用している場合は、Deprecated usage Check に Warning が表示されます。

Deprecated とは、

現在は利用できるが、今後の推奨 Contract ではない

という意味です。

Deprecated になっただけで、その Release から突然 Build が失敗するという意味ではありません。

text
現在
  → まだ利用可能
  → doctorでWarning
 
将来
  → 削除される可能性がある
  → それまでにMigration

Warning に表示される情報

Deprecated Warning には、原則として次の情報が含まれます。

  • 何が Deprecated なのか
  • いつ Deprecated になったか
  • Replacement がある場合は何を使うか
  • 必要な Migration Action
  • 詳細 Documentation
  • 削除予定 Version が決まっている場合はその Version

たとえば考え方としては、

text
Deprecated:
  oldOption
 
Replacement:
  newOption
 
Action:
  configをnewOptionへ変更
 
Removal:
  0.x.x

のような情報から、必要な変更を判断します。

Deprecated Warning が出たら

Warning に表示された対象を確認します。

変更対象になる可能性があるものには、

  • Config
  • Plugin API
  • Theme API
  • CLI Option
  • Scaffold の生成物
  • Package Reference

などがあります。

Replacement が示されている場合は、新しい Contract へ変更します。

Migration Documentation が示されている場合は、その手順に従ってください。

変更後、もう一度、

sh
npm exec riebeckite check
npm exec riebeckite doctor
npm exec riebeckite build

を実行します。

Diagram source
text
flowchart TD
    Doctor["riebeckite doctor"]
    Warning{"Deprecated Warning?"}
 
    Doctor --> Warning
 
    Warning -->|"No"| Build["riebeckite build"]
    Warning -->|"Yes"| Read["Warning / Migrationを読む"]
 
    Read --> Change["Siteを変更"]
    Change --> Check["riebeckite check"]
    Check --> Doctor

Warning と Error の違い

Deprecated Usage は基本的に Warning です。

そのため、Deprecated Warning だけが存在する doctor の結果は成功として扱われます。

一方、Error は Site を正しく扱えない問題に使用されます。

たとえば、

text
invalid configuration
dependency の欠落
inspection を妨げる content 問題
すでに削除された API

などです。

状態 意味 対応
Warning 現在は動くが確認が必要 Migration を計画する
Error 現在の Site に問題がある Upgrade 完了前に修正する

Deprecated Warning があるからといって、すぐに Site が動かなくなるわけではありません。

ただし削除予定 Version が示されている場合は、それまでに Migration してください。

Deprecation Policy

Riebeckite では、API や Config の変更状態を次のように区別します。

用語 意味
Deprecated 現在は Support されているが、将来変更・削除される Contract
Removed すでに Support されていない Contract
Breaking Change Site 側の変更が必要になる可能性がある変更
Migration 古い Contract から新しい Contract へ移るための手順

Deprecated

Deprecated になった Contract は、当面利用できます。

ただし、将来削除される可能性があるため、可能なタイミングで Migration してください。

text
Supported
   ↓
Deprecated
   ↓
Migration期間
   ↓
Removed

Removed

Removed になった Contract は、すでに Support されていません。

そのまま利用すると、

  • Validation
  • Build
  • Runtime Check

などで失敗する可能性があります。

Deprecated Warning が出ていた Contract を長期間そのままにすると、将来の Upgrade で Removed に到達する可能性があります。

Breaking Change

Breaking Change は、

  • Site
  • Config
  • Plugin
  • Theme
  • Deployment

などの変更が必要になる可能性がある変更です。

必ずしも単純な API 名の置き換えとは限りません。

Migration Documentation がある場合は、その内容を確認してください。

Pre-1.0 の互換性

Riebeckite は現在 pre-1.0 です。

そのため、安定版 1.x と同じ SemVer の互換期間を保証するものではありません。

ただし、Security や Correctness 上の理由がない限り、

text
Deprecatedにする
      ↓
同じReleaseですぐ削除

という変更は行いません。

可能な限り、

Diagram source
text
flowchart LR
    Old["既存Contract"]
    Deprecated["Deprecated<br/>Warning"]
    Migration["Replacement /<br/>Migrationを案内"]
    Removed["後のReleaseで<br/>Removed"]
 
    Old --> Deprecated
    Deprecated --> Migration
    Migration --> Removed

という段階を踏みます。

つまり、利用者が新しい Contract へ移行するための期間を設ける方針です。

Migration Note の読み方

Upgrade で問題が出た場合は、まず doctor を確認してください。

sh
npm exec riebeckite doctor

doctor の Warning は、現在の Site が実際に使用している古い要素を直接示します。

そのため、最初からすべての Migration Documentation を読むより、

text
doctor
   ↓
Deprecated Warning
   ↓
該当するMigration Documentation
   ↓
Siteを変更

という順番で確認する方が効率的です。

UI アーキテクチャの整理

この major release では、以前の記事 UI contract との互換性を削除しました。

以前 現在 対応
article.after-header article.header Site の見出しより前に描画します。
article.after-meta article.metadata 記事 metadata として描画します。
bodySlots.properties bodySlots["article.metadata"] Site の properties 専用分岐を削除します。
properties({ position, render }) properties({ ... }) 両方の option を削除します。Plugin は常に metadata を提供します。
injectBreadcrumbNav、injectShareControls manifest body slot import を削除し、Site が標準 slot を描画します。
article-shell*、article-frontmatter*、.prose rb-*、site-article-frontmatter*、[data-slot="article-body"] Site CSS と client selector を更新します。
callout*、is-collapsed rr-callout* Theme CSS を rr-callout__*、rr-callout--*、data-callout に更新します。

標準 article slot は article.header、article.metadata、article.aside、 article.before-content、article.after-content、article.footer です。Plugin は fragment を提供するだけで、HonoX route と Site component が配置を決めます。

描画には @riebeckite/honox/ui の公開 ContentSlot と ArticleBody を使えます。bodySlots の直読みや ArticleContent html=... も引き続き動作しますが、レンダリング済み Markdown 本文には ArticleBody を推奨します。

Replacement がある場合

Warning に直接 Replacement が示されている場合は、それを確認します。

text
old contract
     ↓
replacement
     ↓
new contract

Replacement がない場合

すべての Breaking Change が、

text
oldA → newA

のような一対一の置き換えになるとは限りません。

直接の Replacement がない場合は、無理に代替 API を探さず、Migration に記載された Action に従ってください。

たとえば、

text
古い設定を削除する
 
設定方法そのものを変更する
 
Plugin構成を変更する
 
生成されたFileを更新する

といった Migration もあり得ます。

Migration は自動ではない

現時点の Riebeckite には、

sh
riebeckite migrate

のような自動 Migration Command はありません。

また、Site の Config や Code を自動で書き換える機能もありません。

Migration は内容を確認して手動で適用します。

text
Warningを確認
      ↓
Migrationを読む
      ↓
手動で変更
      ↓
Diffを確認
      ↓
check / doctor / build
      ↓
Commit

自動で書き換えないことで、Upgrade によって Site のどこが変わったのかを利用者自身が確認できます。

変更は分けて Commit する

Migration を適用したら、その変更を Commit しておくと次回以降の Upgrade を確認しやすくなります。

たとえば、

text
1. Upgrade前の状態
2. Package Version更新
3. Migration

を Git の履歴から追えるようにしておくと、問題が発生した場合の切り分けも容易になります。

Upgrade で問題が起きたら

問題の種類によって確認する場所を変えます。

Diagram source
text
flowchart TD
    Problem["Upgrade後に問題"]
 
    Problem --> Check{"checkで失敗?"}
    Check -->|"Yes"| Config["Config / Plugin Contract"]
 
    Check -->|"No"| Doctor{"doctorで問題?"}
    Doctor -->|"Yes"| Migration["Diagnostics / Deprecated Usage"]
 
    Doctor -->|"No"| Build{"buildで失敗?"}
    Build -->|"Yes"| BuildIssue["Build / Integration"]
 
    Build -->|"No"| Runtime["生成Siteを確認"]

まず、

sh
npm exec riebeckite check
npm exec riebeckite doctor
npm exec riebeckite build

のどこで問題が発生しているかを確認してください。

Deprecated Warning なら Migration、Error ならその Diagnostic が示している問題を先に解決します。

Upgrade Checklist

Riebeckite を更新するときは、次の項目を確認します。

  • 現在の Riebeckite Package Version を確認した
  • Upgrade 前の変更を Commit した
  • 利用している Riebeckite Package を更新した
  • riebeckite check が成功した
  • riebeckite doctor を確認した
  • Deprecated Warning の内容を確認した
  • 必要な Migration を適用した
  • riebeckite build が成功した
  • 生成された Site を確認した
  • Upgrade と Migration の変更を Commit した

まとめ

Riebeckite の Upgrade は、Package Version を変更するだけで終わりではありません。

text
Packageを更新する
      ↓
check
      ↓
doctor
      ↓
Deprecated Usageを確認
      ↓
必要ならMigration
      ↓
build
      ↓
Siteを確認

という流れで確認します。

特に覚えておくとよいのは、

text
Deprecated
  → 今は使える
  → 将来に備えてMigrationする
 
Removed
  → もうSupportされていない
 
Warning
  → 確認・Migration対象
 
Error
  → Upgrade完了前に修正する

という違いです。

Riebeckite は pre-1.0 のため Breaking Change が発生する可能性がありますが、Security や Correctness 上の理由がない限り、可能な範囲で Deprecated → Warning / Migration → Removed の段階を踏んで変更します。

History

1 changesCollapseExpand
1 + # Riebeckite をアップグレードする
2 +
3 + 既存 Site を新しい Riebeckite へ更新するときの手順です。
4 +
5 + 基本的には、
6 +
7 + ```text
8 + 現在のVersionを確認
9 + ↓
10 + Packageを更新
11 + ↓
12 + riebeckite check
13 + ↓
14 + riebeckite doctor
15 + ↓
16 + riebeckite build
17 + ↓
18 + Deprecated Warningを確認
19 + ```
20 +
21 + の順で進めます。
22 +
23 + Riebeckite は現在 pre-1.0 です。更新時には、Package の Version を上げるだけでなく、`doctor` で Deprecated Usage がないか確認してください。
24 +
25 + ## 1. 現在の Version を確認する
26 +
27 + まず、現在 Site で利用している Riebeckite Package を確認します。
28 +
29 + ```sh
30 + npm ls @riebeckite/core @riebeckite/cli @riebeckite/honox
31 + ```
32 +
33 + Plugin や Theme を利用している場合は、それらの Version も合わせて確認してください。
34 +
35 + 更新前の状態を Commit しておくと、変更点を確認したり問題が起きた場合に戻したりしやすくなります。
36 +
37 + ## 2. Riebeckite Package を更新する
38 +
39 + Site で利用している Riebeckite Package をまとめて更新します。
40 +
41 + 対象には、
42 +
43 + ```text
44 + @riebeckite/core
45 + @riebeckite/cli
46 + @riebeckite/honox
47 + @riebeckite/plugin-*
48 + @riebeckite/theme-*
49 + ```
50 +
51 + などがあります。
52 +
53 + Site が実際に利用している Package を確認し、必要なものを更新してください。
54 +
55 + ## 3. Site を検証する
56 +
57 + Package を更新したら、普段の検証を実行します。
58 +
59 + ```sh
60 + npm exec riebeckite check
61 + npm exec riebeckite doctor
62 + npm exec riebeckite build
63 + ```
64 +
65 + それぞれ確認するものが異なります。
66 +
67 + | Command | 主に確認すること |
68 + | --- | --- |
69 + | `check` | Config や Plugin Contract が正しいか |
70 + | `doctor` | Deprecated Usage を含む Site の問題 |
71 + | `build` | 実際に Site を生成できるか |
72 +
73 + ```mermaid
74 + flowchart LR
75 + Update["Package更新"]
76 + Check["check"]
77 + Doctor["doctor"]
78 + Build["build"]
79 + Done["Upgrade完了"]
80 +
81 + Update --> Check
82 + Check --> Doctor
83 + Doctor --> Build
84 + Build --> Done
85 + ```
86 +
87 + `check` が成功しただけで終わらせず、`doctor` と実際の `build` まで確認してください。
88 +
89 + ## Deprecated Warning を確認する
90 +
91 + アップグレード後は、
92 +
93 + ```sh
94 + npm exec riebeckite doctor
95 + ```
96 +
97 + を実行します。
98 +
99 + 古い Contract を使用している場合は、`Deprecated usage` Check に Warning が表示されます。
100 +
101 + Deprecated とは、
102 +
103 + **現在は利用できるが、今後の推奨 Contract ではない**
104 +
105 + という意味です。
106 +
107 + Deprecated になっただけで、その Release から突然 Build が失敗するという意味ではありません。
108 +
109 + ```text
110 + 現在
111 + → まだ利用可能
112 + → doctorでWarning
113 +
114 + 将来
115 + → 削除される可能性がある
116 + → それまでにMigration
117 + ```
118 +
119 + ### Warning に表示される情報
120 +
121 + Deprecated Warning には、原則として次の情報が含まれます。
122 +
123 + - 何が Deprecated なのか
124 + - いつ Deprecated になったか
125 + - Replacement がある場合は何を使うか
126 + - 必要な Migration Action
127 + - 詳細 Documentation
128 + - 削除予定 Version が決まっている場合はその Version
129 +
130 + たとえば考え方としては、
131 +
132 + ```text
133 + Deprecated:
134 + oldOption
135 +
136 + Replacement:
137 + newOption
138 +
139 + Action:
140 + configをnewOptionへ変更
141 +
142 + Removal:
143 + 0.x.x
144 + ```
145 +
146 + のような情報から、必要な変更を判断します。
147 +
148 + ## Deprecated Warning が出たら
149 +
150 + Warning に表示された対象を確認します。
151 +
152 + 変更対象になる可能性があるものには、
153 +
154 + - Config
155 + - Plugin API
156 + - Theme API
157 + - CLI Option
158 + - Scaffold の生成物
159 + - Package Reference
160 +
161 + などがあります。
162 +
163 + Replacement が示されている場合は、新しい Contract へ変更します。
164 +
165 + Migration Documentation が示されている場合は、その手順に従ってください。
166 +
167 + 変更後、もう一度、
168 +
169 + ```sh
170 + npm exec riebeckite check
171 + npm exec riebeckite doctor
172 + npm exec riebeckite build
173 + ```
174 +
175 + を実行します。
176 +
177 + ```mermaid
178 + flowchart TD
179 + Doctor["riebeckite doctor"]
180 + Warning{"Deprecated Warning?"}
181 +
182 + Doctor --> Warning
183 +
184 + Warning -->|"No"| Build["riebeckite build"]
185 + Warning -->|"Yes"| Read["Warning / Migrationを読む"]
186 +
187 + Read --> Change["Siteを変更"]
188 + Change --> Check["riebeckite check"]
189 + Check --> Doctor
190 + ```
191 +
192 + ## Warning と Error の違い
193 +
194 + Deprecated Usage は基本的に Warning です。
195 +
196 + そのため、Deprecated Warning だけが存在する `doctor` の結果は成功として扱われます。
197 +
198 + 一方、Error は Site を正しく扱えない問題に使用されます。
199 +
200 + たとえば、
201 +
202 + ```text
203 + invalid configuration
204 + dependency の欠落
205 + inspection を妨げる content 問題
206 + すでに削除された API
207 + ```
208 +
209 + などです。
210 +
211 + | 状態 | 意味 | 対応 |
212 + | --- | --- | --- |
213 + | Warning | 現在は動くが確認が必要 | Migration を計画する |
214 + | Error | 現在の Site に問題がある | Upgrade 完了前に修正する |
215 +
216 + Deprecated Warning があるからといって、すぐに Site が動かなくなるわけではありません。
217 +
218 + ただし削除予定 Version が示されている場合は、それまでに Migration してください。
219 +
220 + ## Deprecation Policy
221 +
222 + Riebeckite では、API や Config の変更状態を次のように区別します。
223 +
224 + | 用語 | 意味 |
225 + | --- | --- |
226 + | Deprecated | 現在は Support されているが、将来変更・削除される Contract |
227 + | Removed | すでに Support されていない Contract |
228 + | Breaking Change | Site 側の変更が必要になる可能性がある変更 |
229 + | Migration | 古い Contract から新しい Contract へ移るための手順 |
230 +
231 + ### Deprecated
232 +
233 + Deprecated になった Contract は、当面利用できます。
234 +
235 + ただし、将来削除される可能性があるため、可能なタイミングで Migration してください。
236 +
237 + ```text
238 + Supported
239 + ↓
240 + Deprecated
241 + ↓
242 + Migration期間
243 + ↓
244 + Removed
245 + ```
246 +
247 + ### Removed
248 +
249 + Removed になった Contract は、すでに Support されていません。
250 +
251 + そのまま利用すると、
252 +
253 + - Validation
254 + - Build
255 + - Runtime Check
256 +
257 + などで失敗する可能性があります。
258 +
259 + Deprecated Warning が出ていた Contract を長期間そのままにすると、将来の Upgrade で Removed に到達する可能性があります。
260 +
261 + ### Breaking Change
262 +
263 + Breaking Change は、
264 +
265 + - Site
266 + - Config
267 + - Plugin
268 + - Theme
269 + - Deployment
270 +
271 + などの変更が必要になる可能性がある変更です。
272 +
273 + 必ずしも単純な API 名の置き換えとは限りません。
274 +
275 + Migration Documentation がある場合は、その内容を確認してください。
276 +
277 + ## Pre-1.0 の互換性
278 +
279 + Riebeckite は現在 pre-1.0 です。
280 +
281 + そのため、安定版 1.x と同じ SemVer の互換期間を保証するものではありません。
282 +
283 + ただし、Security や Correctness 上の理由がない限り、
284 +
285 + ```text
286 + Deprecatedにする
287 + ↓
288 + 同じReleaseですぐ削除
289 + ```
290 +
291 + という変更は行いません。
292 +
293 + 可能な限り、
294 +
295 + ```mermaid
296 + flowchart LR
297 + Old["既存Contract"]
298 + Deprecated["Deprecated<br/>Warning"]
299 + Migration["Replacement /<br/>Migrationを案内"]
300 + Removed["後のReleaseで<br/>Removed"]
301 +
302 + Old --> Deprecated
303 + Deprecated --> Migration
304 + Migration --> Removed
305 + ```
306 +
307 + という段階を踏みます。
308 +
309 + つまり、利用者が新しい Contract へ移行するための期間を設ける方針です。
310 +
311 + ## Migration Note の読み方
312 +
313 + Upgrade で問題が出た場合は、まず `doctor` を確認してください。
314 +
315 + ```sh
316 + npm exec riebeckite doctor
317 + ```
318 +
319 + `doctor` の Warning は、**現在の Site が実際に使用している古い要素**を直接示します。
320 +
321 + そのため、最初からすべての Migration Documentation を読むより、
322 +
323 + ```text
324 + doctor
325 + ↓
326 + Deprecated Warning
327 + ↓
328 + 該当するMigration Documentation
329 + ↓
330 + Siteを変更
331 + ```
332 +
333 + という順番で確認する方が効率的です。
334 +
335 + ## UI アーキテクチャの整理
336 +
337 + この major release では、以前の記事 UI contract との互換性を削除しました。
338 +
339 + | 以前 | 現在 | 対応 |
340 + | --- | --- | --- |
341 + | `article.after-header` | `article.header` | Site の見出しより前に描画します。 |
342 + | `article.after-meta` | `article.metadata` | 記事 metadata として描画します。 |
343 + | `bodySlots.properties` | `bodySlots["article.metadata"]` | Site の properties 専用分岐を削除します。 |
344 + | `properties({ position, render })` | `properties({ ... })` | 両方の option を削除します。Plugin は常に metadata を提供します。 |
345 + | `injectBreadcrumbNav`、`injectShareControls` | manifest body slot | import を削除し、Site が標準 slot を描画します。 |
346 + | `article-shell*`、`article-frontmatter*`、`.prose` | `rb-*`、`site-article-frontmatter*`、`[data-slot="article-body"]` | Site CSS と client selector を更新します。 |
347 + | `callout*`、`is-collapsed` | `rr-callout*` | Theme CSS を `rr-callout__*`、`rr-callout--*`、`data-callout` に更新します。 |
348 +
349 + 標準 article slot は `article.header`、`article.metadata`、`article.aside`、
350 + `article.before-content`、`article.after-content`、`article.footer` です。Plugin は
351 + fragment を提供するだけで、HonoX route と Site component が配置を決めます。
352 +
353 + 描画には `@riebeckite/honox/ui` の公開 `ContentSlot` と `ArticleBody` を使えます。`bodySlots` の直読みや `ArticleContent html=...` も引き続き動作しますが、レンダリング済み Markdown 本文には `ArticleBody` を推奨します。
354 +
355 + ### Replacement がある場合
356 +
357 + Warning に直接 Replacement が示されている場合は、それを確認します。
358 +
359 + ```text
360 + old contract
361 + ↓
362 + replacement
363 + ↓
364 + new contract
365 + ```
366 +
367 + ### Replacement がない場合
368 +
369 + すべての Breaking Change が、
370 +
371 + ```text
372 + oldA → newA
373 + ```
374 +
375 + のような一対一の置き換えになるとは限りません。
376 +
377 + 直接の Replacement がない場合は、無理に代替 API を探さず、Migration に記載された Action に従ってください。
378 +
379 + たとえば、
380 +
381 + ```text
382 + 古い設定を削除する
383 +
384 + 設定方法そのものを変更する
385 +
386 + Plugin構成を変更する
387 +
388 + 生成されたFileを更新する
389 + ```
390 +
391 + といった Migration もあり得ます。
392 +
393 + ## Migration は自動ではない
394 +
395 + 現時点の Riebeckite には、
396 +
397 + ```sh
398 + riebeckite migrate
399 + ```
400 +
401 + のような自動 Migration Command はありません。
402 +
403 + また、Site の Config や Code を自動で書き換える機能もありません。
404 +
405 + Migration は内容を確認して手動で適用します。
406 +
407 + ```text
408 + Warningを確認
409 + ↓
410 + Migrationを読む
411 + ↓
412 + 手動で変更
413 + ↓
414 + Diffを確認
415 + ↓
416 + check / doctor / build
417 + ↓
418 + Commit
419 + ```
420 +
421 + 自動で書き換えないことで、Upgrade によって Site のどこが変わったのかを利用者自身が確認できます。
422 +
423 + ## 変更は分けて Commit する
424 +
425 + Migration を適用したら、その変更を Commit しておくと次回以降の Upgrade を確認しやすくなります。
426 +
427 + たとえば、
428 +
429 + ```text
430 + 1. Upgrade前の状態
431 + 2. Package Version更新
432 + 3. Migration
433 + ```
434 +
435 + を Git の履歴から追えるようにしておくと、問題が発生した場合の切り分けも容易になります。
436 +
437 + ## Upgrade で問題が起きたら
438 +
439 + 問題の種類によって確認する場所を変えます。
440 +
441 + ```mermaid
442 + flowchart TD
443 + Problem["Upgrade後に問題"]
444 +
445 + Problem --> Check{"checkで失敗?"}
446 + Check -->|"Yes"| Config["Config / Plugin Contract"]
447 +
448 + Check -->|"No"| Doctor{"doctorで問題?"}
449 + Doctor -->|"Yes"| Migration["Diagnostics / Deprecated Usage"]
450 +
451 + Doctor -->|"No"| Build{"buildで失敗?"}
452 + Build -->|"Yes"| BuildIssue["Build / Integration"]
453 +
454 + Build -->|"No"| Runtime["生成Siteを確認"]
455 + ```
456 +
457 + まず、
458 +
459 + ```sh
460 + npm exec riebeckite check
461 + npm exec riebeckite doctor
462 + npm exec riebeckite build
463 + ```
464 +
465 + のどこで問題が発生しているかを確認してください。
466 +
467 + Deprecated Warning なら Migration、Error ならその Diagnostic が示している問題を先に解決します。
468 +
469 + ## Upgrade Checklist
470 +
471 + Riebeckite を更新するときは、次の項目を確認します。
472 +
473 + - 現在の Riebeckite Package Version を確認した
474 + - Upgrade 前の変更を Commit した
475 + - 利用している Riebeckite Package を更新した
476 + - `riebeckite check` が成功した
477 + - `riebeckite doctor` を確認した
478 + - Deprecated Warning の内容を確認した
479 + - 必要な Migration を適用した
480 + - `riebeckite build` が成功した
481 + - 生成された Site を確認した
482 + - Upgrade と Migration の変更を Commit した
483 +
484 + ## まとめ
485 +
486 + Riebeckite の Upgrade は、Package Version を変更するだけで終わりではありません。
487 +
488 + ```text
489 + Packageを更新する
490 + ↓
491 + check
492 + ↓
493 + doctor
494 + ↓
495 + Deprecated Usageを確認
496 + ↓
497 + 必要ならMigration
498 + ↓
499 + build
500 + ↓
501 + Siteを確認
502 + ```
503 +
504 + という流れで確認します。
505 +
506 + 特に覚えておくとよいのは、
507 +
508 + ```text
509 + Deprecated
510 + → 今は使える
511 + → 将来に備えてMigrationする
512 +
513 + Removed
514 + → もうSupportされていない
515 +
516 + Warning
517 + → 確認・Migration対象
518 +
519 + Error
520 + → Upgrade完了前に修正する
521 + ```
522 +
523 + という違いです。
524 +
525 + Riebeckite は pre-1.0 のため Breaking Change が発生する可能性がありますが、Security や Correctness 上の理由がない限り、可能な範囲で **Deprecated → Warning / Migration → Removed** の段階を踏んで変更します。
526 +