AngularJS製の社内システム、放置して大丈夫?移行の5ステップ

AngularJSのEOLから3年以上が経過し、セキュリティパッチは一切提供されない。銀行・大企業に残る古いAngular製システムの移行を、5ステップで段階的に進める方法を整理した。

目次

銀行の融資審査ポータル、大企業の受発注管理、保険会社の契約照会画面。こうしたシステムのフロントエンドに、AngularJSや Angular 2〜8 系が使われているケースはいまも珍しくない。「画面が動いているから問題ない」——その判断が、組織にとって重大なリスクを積み上げている。

AngularJS(Angular 1.x)は2021年12月31日をもって公式サポートを終了した(出典:AngularJS End of Life - InfoQ)。それから3年以上が経過した現在も、世界で100万以上のウェブアプリケーションがAngularJS上で稼働しているとされる(出典:HeroDevs: Post-Mortem on AngularJS)。日本の金融・製造・流通のエンタープライズ系でも、社内システムのフロントエンドにAngularJSが残存しているケースが相当数ある。

本記事では、AngularJSおよび古い Angular バージョンを使用した社内システムの移行戦略を、エンタープライズの現実に即した形で解説する。

AngularJS・旧Angular系が抱えるリスクの実態

EOL後に積み上がるCVE(セキュリティ脆弱性)

AngularJSのEOL後、公式パッチは一切提供されない。新たなCVEが発見されても、そのまま放置される構造だ。これは、PCI-DSSやSOC 2といったコンプライアンス基準への違反に直結する(出典:TuxCare: AngularJS Enterprise Support Guide)。

金融系の社内システムであれば、PCI-DSS 4.0の要件下でEOLコンポーネントの使用は「検証済みの緩和策がない限り禁止」とみなされうる。SBOMにAngularJS 1.8.3が記載されているだけで、監査時にアウトとなるリスクが現実に存在する(出典:AvidClan: AngularJS 2026 Security & Migration Guide)。

最新のAngular本体でも、2025年に複数のCVEが報告されている(出典:Medium: Angular's Recent CVEs)。サポートを受け続けるためには、現行の推奨バージョンに追従する必要がある。

半年サイクルというAngular固有の課題

Angularは半年ごとに新しいメジャーバージョンがリリースされる。各バージョンのサポート期間は18ヶ月——6ヶ月のアクティブサポートと、12ヶ月のLTSで構成される(出典:Angular日本語版: バージョニングとリリース)。

この構造は、「バージョンアップしない」という選択肢を実質的に消している。放置すればするほど、バージョン間のギャップが広がり、移行コストが指数的に増大する。Angular 6から現行バージョンへの移行は、Angular 14から移行するより数倍の工数がかかる。バージョンアップを後回しにするほど損をする仕組みになっている。

採用と開発効率への影響

AngularJSや古いAngularの現場に来たがるエンジニアは少ない。技術スタックの陳腐化が採用難に直結し、現場の開発速度を下げる。「AngularJSが書ける人材」が退職した後、誰も保守できなくなるという事態は、すでに複数の企業で現実になっている。

Angular 17+で何が変わったか

Angular 14以降の世代と、AngularJSや Angular 2〜8 系は、実質的に別のフレームワークとみなすべきだ。

スタンドアローンコンポーネントの標準化

Angular 14で導入されたスタンドアローンコンポーネントは、Angular 17でデフォルトの開発スタイルとなった(出典:ugo.tokyo: Angular 17の新機能)。NgModule不要のシンプルなコード構成になり、AngularJS時代のコントローラー中心の設計から大きく変わった。コードの見通しが良くなり、テストも書きやすくなる。

Signals APIによるリアクティブプログラミングの刷新

Angular 17で導入されたSignals APIは、Angular 18・19で安定版として供給された(出典:angular.dev: Signals Overview)。$scope$watchを多用するAngularJSのコードと比べ、状態管理が直感的になる。Zone.jsへの依存を減らし、Angular 18以降で「ゾーンレス変更検知」を選択できるようになった(出典:ugo.tokyo: Angular 18の新機能)。

新しい制御フロー構文

*ngIf*ngForに代わる新しい制御フロー(@if@for@switch)が Angular 17 で導入された。テンプレートの可読性が向上し、型チェックも改善される。

NestJSバックエンドとのフルスタック構成

エンタープライズのAngular刷新において、バックエンドの刷新もあわせて行うケースが増えている。その際にNestJSがよく選ばれる理由は明確だ。

NestJSは「バックエンドのAngular」と称されるTypeScriptフレームワークで、デコレーター、DI(依存性注入)、モジュール構成といった設計思想がAngularと共通している(出典:baapuro.com: なぜNestJSを使うのか)。フロントエンドとバックエンドを同一の言語(TypeScript)・同一の設計パターンで開発できるため、チームのコンテキストスイッチが減る。

Qiita翻訳記事で紹介された「MANスタック(MongoDB + Angular + NestJS)」のように、フロントエンド・バックエンド・DBをすべてTypeScriptで統一する構成も現実的な選択肢だ(出典:Qiita: Angular開発者のための超速フルスタック - MANスタック)。

AngularJSのバックエンドがJava製やPHP製だったとしても、フロントエンドのAngular移行と並行してNestJSへの段階的移行を計画することで、技術スタック全体の統一が見えてくる。


Angular製社内システムの構造、全容を把握できているか。

SysDockは、AIマルチエージェントがAngularやAngularJSのコードベースを解析し、コンポーネント構成・外部API連携・バージョン依存関係をWord・PPT・React Flowフロー図で可視化する。ソースコード非送信、1週間納品、完全後払い。

着手金0円・完全後払い。まずはお見積り


AngularJSからAngular 17+への移行戦略|5ステップ

AngularJSとAngular(2以降)は互換性がなく、「アップグレード」ではなく「再構築」に近い作業が必要になる。段階的なアプローチが唯一の現実解だ。

ステップ1: 現行システムの構造を可視化する

移行前に把握すべき項目は以下のとおりだ。

  • AngularJSのコントローラー・サービス・ディレクティブの一覧と相互依存
  • $scopeで管理している状態の範囲と複雑度
  • バックエンドAPIとの連携ポイント(URLパターン、認証方式)
  • サードパーティのAngularJSプラグインや独自ディレクティブの一覧
  • 現在使用しているAngularJSのバージョンと依存パッケージ

設計書が存在しない場合、ソースコードから構造を読み解く以外に方法はない。この工程を飛ばして移行に着手すると、予期せぬ依存関係の発覚で手戻りが連発する。

ステップ2: ngUpgradeによるハイブリッド環境の構築

Angular公式が提供するngUpgradeは、AngularJSとAngular(2以降)を同一アプリ内で共存させる仕組みだ(出典:Angular v17公式: AngularJSからAngularへのアップグレード)。

ハイブリッド環境を構築することで、アプリ全体を一度に書き換えることなく、画面・機能単位での段階的な移行が可能になる。ユーザーへの影響を最小化しながら、移行作業を継続できる。

ただし、ngUpgradeはあくまで「移行中の橋渡し」であり、長期間ハイブリッド状態を維持するのは推奨しない。AngularJSのバンドルサイズがそのまま残り続けるためだ。

ステップ3: コンポーネントの段階的移行

移行の優先順位はリスクの低い順に設定する。

  1. 静的な表示系コンポーネント(テーブル、フォーム表示など)から着手する
  2. 次に独立性の高いサービス・ユーティリティクラスを移行する
  3. 最後に$scopeへの依存が深いコントローラーを刷新する

AngularJSの$scopeを廃止し、Angular の@Input()@Output()・SignalsAPIに置き換えていく。AngularJSの$httpサービスはHttpClientに、$routeProviderRouterModuleに対応する。

大規模な社内システムでは、この工程だけで6〜18ヶ月かかることが多い(出典:ProCoders: AngularJS to Angular Migration Guide)。短期間での完了を前提にしたプランは、ほぼ必ず破綻する。

ステップ4: AngularJSコードの完全削除と依存関係の整理

全コンポーネントの移行が完了したら、ngUpgradeとAngularJSのバンドルを除去する。この時点でバンドルサイズが大幅に削減され、パフォーマンスが向上する。

あわせて、TypeScriptの型定義を整理し、ESLintによる静的解析を導入する。Angular CLIのng updateコマンドを使用したバージョン管理体制も、このタイミングで確立する。

ステップ5: 半年サイクルのバージョンアップ体制を確立する

移行が完了しても、半年ごとのバージョンアップへの対応が必要になる。放置すると再び同じ問題が繰り返される。

現実的な対応サイクルの目安は以下のとおりだ。

タイミング対応内容
リリース直後(0〜1ヶ月)リリースノートの確認、破壊的変更の影響調査
2〜3ヶ月後開発環境でのアップデート実施・動作検証
4〜5ヶ月後ステージング環境でのテスト・社内確認
6ヶ月後(次バージョンリリース前)本番適用完了

ng updateコマンドと、Angular Migration Guideを活用することで、バージョン間の差分を自動で吸収できる範囲が広がる(出典:angular.dev: Update Guide)。

エンタープライズAngular移行で失敗しないための3原則

原則1: 移行前のテスト資産整備を怠らない

AngularJSのコードベースにはテストが存在しないことが多い。移行前に主要業務フローのE2Eテストを先行整備しておかないと、移行後の回帰確認が感覚頼りになる。QAコストが最終的に移行費用を上回る事態になりやすい。

原則2: 全面書き換えと段階移行を混同しない

「どうせ書き直すなら全部一気に」という発想は危険だ。AngularJS製の社内システムは、長年の運用で業務ルールが画面に直接埋め込まれていることが多い。全面書き換えを選択すると、業務仕様の再調査コストが想定の数倍に膨らむ。ngUpgradeを活用した段階移行が基本戦略となる。

原則3: フロントエンド移行とバックエンド移行は分離して計画する

フロントエンド(Angular刷新)とバックエンド(Java/PHP → NestJSなど)の移行を同時進行させると、問題の切り分けが困難になる。フロントエンドの移行を先行させ、既存バックエンドのAPIをそのまま使いながら画面を刷新する方法が現実的だ。バックエンドの刷新はフロントエンドが安定してから着手する。

レガシーシステム移行の費用相場については、規模別・言語別に解説した記事で詳しく紹介している。

まとめ

AngularJSや旧Angular系の社内システムは、「動いている」という事実だけでは正当化できなくなっている。PCI-DSSやSOC 2への準拠要件、EOL後のCVE放置リスク、開発者採用への影響——複合的なリスクが蓄積しているのが現状だ。

本記事の要点を整理する。

  1. AngularJSのEOLは2021年末に確定している。セキュリティパッチが提供されない状態での運用は、コンプライアンス上のリスクを抱えた状態と同義だ。
  1. Angular 17+は旧世代とは別物と捉える。Signalsによる状態管理、スタンドアローンコンポーネント、新制御フロー——設計思想の刷新が伴うため、「アップグレード」ではなく「再構築」として計画する。
  1. 段階移行が唯一の現実解ngUpgradeを活用し、機能・画面単位で段階的に移行する。業務システムの大規模な全面書き換えは、工数超過と仕様漏れの温床になる。
  1. NestJSとのフルスタック統一はコスト効率が高い。フロントエンドとバックエンドをTypeScriptで統一することで、チームの技術スタックを集約し、採用・育成コストも下げられる。
  1. 半年サイクルのバージョンアップ体制を今から構築する。移行完了後も、継続的なバージョンアップ対応がなければ同じ問題が再発する。

Angular刷新の最初のステップは、「今の自社システムがどうなっているか」を正確に把握することだ。コンポーネント構成・依存関係・外部API連携を可視化した状態でなければ、移行計画の精度は担保できない。


Angular製社内システムのコンポーネント構成・依存関係、可視化できているか。

SysDockは、AIマルチエージェントがAngularのソースコードを解析し、コンポーネント構成・ルーティング・外部API連携をWord・PPT・React Flowフロー図の3点セットで1週間納品する。AngularJSを含む13言語/FWに対応。ソースコード非送信・着手金0円・完全後払いで依頼できる。

着手金0円・完全後払い。まずはお見積り


現場改善に役立つ関連ツール

GenbaCompassでは、SysDock以外にも現場のDXを支援するツールを提供している。

ツール名概要こんな課題に
技術伝承AIベテランの暗黙知をAIで形式知化し、ナレッジとして蓄積・共有する退職・異動による技術ノウハウの喪失を防ぎたい
WhyTrace5Why分析をAIが支援し、問題の根本原因を体系的に究明するトラブルの再発防止策を確実に導きたい
AnzenAI安全書類の作成をAIで効率化し、現場の安全管理を支援する安全書類の作成工数を削減したい
PlantEar設備の異音をAIが検知し、故障の予兆を早期に発見する設備の突発故障を未然に防ぎたい
IdeaLoop現場からの改善提案を収集・管理し、実行までを一元化する改善提案制度を活性化させたい

参考文献