3. Angularバージョン9対応(アプリ)

3-1. 概要

Angularのバージョンアップとサポートは、下記のルールで行われており、Angularで作成したアプリと開発環境は計画的なバージョンアップ作業が必要です。

Summary

1.半年間隔でメジャーバージョンアップ
2.新バージョンをリリース後の半年間、機能拡張を含むアップデートを提供(Activeサポート期間)
3.Activeサポート期間終了後の半年間、重要なパッチのみ提供(LTS:長期サポート期間)

[引用元] Angularのバージョンアップ(公式サイト)

Angularが互換性100%のバージョンアップであればインストール作業のみで済みます。しかし、Angularのメジャーバージョンアップは、APIの廃止に伴う後継 APIへの置換や依存や依存モジュールの差し換えが必要になります。従って、最新機能を維持するには半年間隔、最低限のサポートを維持するには年1回のバージョンアップ作業が必要になります。

3-2. 移行ツール

Angularでは、バージョンアップにかかる時間と労力の負担を軽減するため、2つの公式ツールが提供されています。バージョンアップ作業に必要な情報を提供する「Angular Update Guide」とソースコードの変更やパッケージの置換などを実行するAnglar CLIの「updateコマンド」です。

  1. Angular Update Guide

    移行元と移行先のバージョンを指定することで、変更が必要な項目の洗い出しを行います。

  2. Angular CLIの「update」コマンド

    バージョンアップに必要なコードの変更や依存パッケージの置換を自動で行います。

3-3. 留意点

1. バージョンアップ作業は1バージョンごとに分けて行う

バージョンアップは連続したメジャーバージョンで行うことが推奨されています。例えば、バージョン7.x.xから9.x.xに移行する場合、7.x.から8.x.xへの移行、8.x.xから9.x.xへの移行の2回に分けて実施します。 下図は、7.0から9.0へのバージョンアップについて、「Angular Update Guide」で調べた結果です。メジャーバージョンの差が2以上あるバージョンアップは推奨しないという警告(Warining)が表示されています。

image-20200311060951453

2. node.jsのサポート期間にも考慮する
node.jsにも同じようにActiveと長期サポート期間があります。Angularのバージョンアップと併せてバージョンアップ計画を検討すると効率的です。

[参考情報] node.jsのサポート期間について

3. node.jsのインストールにnodeバージョン切替ツールを使用する

Angularのバージョンアップに伴い、依存するnode.jsのバージョンを変更することがあります。バージョンアップ後に、バージョンアップ前のプロジェクトと動作比較を行う場合、複数のバージョンのnode.jsを切り替えて移行前の動作を再現する必要があります。再現して比較するたびに、新しいバージョンのnode.jsをアンインストールして古いバージョンのnode.jsをインストールするのは手間が掛かります。そこで、nodeバージョン切替ツール「nvm-windows」を使用します。nvmはNodeVersionManagementの略です。

[参考情報]
ネイティブ Windows での NodeJS の設定

4. サードパーティーのソフトウェアの対応を確認

Angularのバージョンに依存するサードパーティーのソフトウェア(UIライブラリやデータベースなど)を利用している場合、Angularの移行ツールの対象外ですので、影響と必要なアクションを事前に調査します。

3-4. バージョンアップ手順

移行元と移行先のメジャー番号バージョンの差が2以上の時は、下記手順を繰り返します。例えば、バージョン7からバージョン9へ移行する場合、メジャーバージョンの差分が、9-7=2 ですので、2回に分けて移行します。

3-4-1. アプリが利用しているAngularのバージョン確認

プロジェクトフォルダ内のnpm_modulesフォルダ>@angularフォルダ>coreフォルダ>package.jsonファイルを開き、「version」の値を確認します。

Info

プロジェクトフォルダ直下のpackage.jsonの@angular/coreのバージョンでは実際にインストールされたバージョンと異なる場合があります。

3-4-2. Angular Update Guideによる変更作業の洗い出し

Angular Update Guideをブラウザで開きます。

・該当する値を設定します。ここでは、移行元のAngularのバージョンが7.1、移行先を8.2に設定。Advanced(複雑なアプリ)、マテリアルUIを使用を選択しています。

・出力されたバージョンアップのガイドを確認します。ガイドは、「Before Updating」「During Updating」「After Updating」3つのブロックに 分かれています。順に、ng updateコマンドを実行する前、実行時、完了後に行う作業です。ガイドに従い作業を行います。

3-4-3. node.jsバージョン切り替えツールのインストール

1) nvmのインストール ネイティブ Windows での NodeJS の設定に従って、windows-nvmをインストールします。

2) 利用するnode.jsのバージョン選択 前項ガイドの「Before Updating」に記述された条件にあてはまるnote.jsのバージョンを設定します。 nvmで選択できるバージョンの確認は、コマンドプロンプトから下記のコマンドを入力します。

nvm list available

3) nvmを使ってnode.jsのインストール コマンドプロンプトから下記のコマンドを入力します。x.x.xはインストールするnode.jsのバージョン番号です。 既にnvmでインストール済のバージョンを指定するときはuseコマンドを使用します。

nvm install x.x.x

3-4-4. Angular CLIのバージョンアップ

  1. インストール コマンドプロンプトから下記のコマンドを入力します。x.x.xは移行先のAngular CLIのバージョン番号です。 メジャーバージョン番号のみ指定(例えば@angular/cli@8)すると、そのメジャー番号をもつ最新のバージョンがセットされます。 なお、ここでは現行のAngular CLIがローカルインストールされていることを前提としていますので、npxコマンドを使用しています。

npx ng update @angular/cli@x.x.x

Tips

ng updateコマンドが失敗するときは、以下のコマンドでAngular CLIを再インストールしてください。

  1. nmp uninstall @angular/cli

  2. npm uninstall -g @angular/cli

  3. npm cache verify

  4. npm install @angular/cli@x.x.x --save-dev

3-4-5. Angularのバージョンアップ

コマンドプロンプトから下記のコマンドを入力します。x.x.xは移行先のAngularのバージョン番号です。 指定するバージョンは、前項のAngular CLIで指定したものと同一の値を指定します。

npx ng update @angular/core@x.x.x

3-4-6. その他のパッケージのバージョンアップ

1. material UIのバージョンアップ

コマンドプロンプトから下記のコマンドを入力します。x.x.xは移行先のmaterial UIのバージョン番号です。 基本的に指定するバージョンは、前項のAngular Coreで指定したものと同一の値を指定しますが、該当するバージョンが存在しない場合は、npm info @angular/material versions コマンドで指定するバージョンの候補を表示し、その中から選択します。

npx ng update @angular/material@x.x.x

2. サードパーティーのソフトウェア

必要なものをバージョンアップします。