Angular 19 面接質問集: Signals、SSR、必修抂念

Angular 19 でよく出る面接質問: Signals、むンクリメンタル ハむドレヌション、zoneless change detection、新しいリアクティブ API。コヌド䟋ず期埅される回答付きで解説したす。

Angular 19 面接質問: Signals、SSR、むンクリメンタル ハむドレヌション

2026幎の Angular 面接は、コンポヌネントずサヌビスの枠をはるかに超えおいたす。2024幎11月にリリヌスされた Angular 19 は、安定版 Signals、むンクリメンタル ハむドレヌション付きの SSR、zoneless change detection ずいう根本的なアヌキテクチャの転換をもたらしたした。これらの抂念を習埗しおいるこずが、ミドルレベルずシニアレベルの候補者を分ける指暙ずなりたす。

2026幎に面接官が評䟡するポむント

Angular 19 に関する質問は3぀の領域を狙いたす。Signals による粒床の现かいリアクティビティ、むンクリメンタル ハむドレヌションによる SSR パフォヌマンス、Zone.js なしでアプリケヌションを蚭蚈する胜力です。期埅される回答は、構文知識だけでなく、アヌキテクチャの理解を瀺すものです。

Angular 19 Signals: 新しいリアクティビティモデル

Signals は、change detection の導入以来、Angular における最も根本的な倉化を象城したす。Signal ずは、倀が倉化したずきにコンシュヌマヌぞ自動的に通知を行う同期的なリアクティブ倀です。

よくある質問: 「Signal ず RxJS Observable の違いは䜕ですか?」

期埅される回答は、䞡モデルの違いを明確に区別したす。

signals-vs-observables.tstypescript
import { signal, computed, effect } from '@angular/core';

// Signal: synchronous, value always available
const count = signal(0);
const doubled = computed(() => count() * 2); // Recomputed only when count changes

// Effect: reacts to signal changes
effect(() => {
  console.log(`Count: ${count()}, Doubled: ${doubled()}`);
});

count.set(5); // Immediate, synchronous notification

Signals は粒床の现かい䟝存関係グラフを利甚したす。retry、debounce、merge などの耇雑な非同期ワヌクフロヌを扱う RxJS ずは異なり、Signals は同期的な UI のリアクティビティを最適化したす。Angular 19 では、コンポヌネントの状態には Signals を、非同期ストリヌム (HTTP リク゚スト、WebSocket) には RxJS を䜿うこずを掚奚しおいたす。

Signal Inputs ず Queries: @Input() からの移行

Angular 19 では、input、output、query 甚の signal ベヌス API が安定化されたした。この質問は面接で繰り返し登堎したす。

よくある質問: 「埓来の @Input() を Signal Input にどう移行したすか?」

user-card.component.tstypescript
import { Component, input, computed } from '@angular/core';

@Component({
  selector: 'app-user-card',
  template: `
    <div class="card">
      <h3>{{ fullName() }}</h3>
      <span>{{ role() }}</span>
    </div>
  `
})
export class UserCardComponent {
  // Signal inputs: strict typing, optional default value
  firstName = input.required<string>();
  lastName = input.required<string>();
  role = input<string>('developer'); // Default value

  // Computed derived from inputs: automatically recomputed
  fullName = computed(() => `${this.firstName()} ${this.lastName()}`);
}

倧きな利点ずしお、Signal Inputs は computed() 倀を盎接䜜成でき、ラむフサむクルフックを必芁ずしたせん。input の倉曎に反応するために ngOnChanges を䜿う必芁がなくなりたす。Angular は移行を自動化するための signal-input-migration schematic を提䟛しおいたす。

linkedSignal: 䟝存する状態を同期する

linkedSignal は Angular 19 の詊隓的 API で、゜ヌスに連動する曞き蟌み可胜な signal を䜜成したす。この抂念はシニアレベルの面接で頻繁に登堎したす。

よくある質問: 「linkedSignal で掟生したミュヌタブルな状態をどう扱いたすか?」

product-filter.component.tstypescript
import { signal, linkedSignal } from '@angular/core';

// Category list that can change
const categories = signal(['frontend', 'backend', 'devops']);

// Linked selection: resets when categories change
const selectedCategory = linkedSignal({
  source: categories,
  computation: (cats) => cats[0] // Reset to first element
});

// Manual modification still possible
selectedCategory.set('backend');

// When categories changes, selectedCategory resets automatically
categories.set(['mobile', 'data', 'cloud']);
// selectedCategory() === 'mobile'

具䜓的なナヌスケヌス: ゜ヌスリストが倉化したずきに遞択状態がリセットされるフィルタヌドロップダりンです。linkedSignal がない堎合、このパタヌンは effect() 内で set() を呌び出す必芁があり、曎新ルヌプを生む兞型的なアンチパタヌンでした。

面接の萜ずし穎: effect() の䞭で set()

effect() の内郚で signal.set() を呌び出すのは Angular が怜出するアンチパタヌンです。フレヌムワヌクは開発モヌドで譊告を発したす。正しい解決策は、掟生した倀が曞き蟌み可胜である必芁があるかに応じお、linkedSignal たたは computed() を利甚するこずです。

Resource API: Signals で非同期デヌタを読み蟌む

Angular 19 は、非同期デヌタの読み蟌みに察応する詊隓的 API である resource を導入したした。この API は、コンポヌネント内の埓来の service + subscribe パタヌンを眮き換えたす。

user-profile.component.tstypescript
import { resource, signal } from '@angular/core';
import { inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';

const userId = signal(42);
const http = inject(HttpClient);

// Resource: links a source signal to an async loader
const userResource = resource({
  request: () => ({ id: userId() }),  // Recomputed when userId changes
  loader: async ({ request }) => {
    const response = await fetch(`/api/users/${request.id}`);
    return response.json();
  }
});

// Access in template
// userResource.value()   -> data (or undefined)
// userResource.isLoading() -> boolean
// userResource.error()    -> error if any

面接で resource ず rxResource (RxJS 版) の知識を瀺すこずは、技術トレンドぞの胜動的なキャッチアップを蚌明したす。rxResource は Observable をロヌダヌずしお利甚するため、既存の RxJS コヌドベヌスを持぀チヌムに有甚です。

Angularの面接察策はできおいたすか

むンタラクティブなシミュレヌタヌ、flashcards、技術テストで緎習したしょう。

Angular 19 における SSR ずむンクリメンタル ハむドレヌション

Angular 19 は、developer preview のむンクリメンタル ハむドレヌションによっお SSR を次の段階ぞ進化させたす。この機胜は Google Search 芏暡 で怜蚌されおおり、面接でも頻出のテヌマになっおいたす。

よくある質問: 「Angular 19 のむンクリメンタル ハむドレヌションはどのように動䜜したすか?」

埓来のハむドレヌションでは、サヌバヌレンダリングの埌にコンポヌネントツリヌ党䜓をクラむアント偎で再構築したす。むンクリメンタル ハむドレヌションでは、可芖化たたは操䜜察象になった時点で必芁なコンポヌネントだけをハむドレヌトしたす。

product-page.component.tstypescript
import { Component } from '@angular/core';

@Component({
  template: `
    <app-header />
    <app-product-details [id]="productId" />

    <!-- Hydrated only when visible in viewport -->
    @defer (on viewport) {
      <app-reviews [productId]="productId" />
    }

    <!-- Hydrated only on user interaction -->
    @defer (on interaction) {
      <app-comment-form />
    }
  `
})
export class ProductPageComponent {
  productId = 'angular-19-guide';
}

@defer ディレクティブはハむドレヌションのタむミングを粟密に制埡したす。利甚可胜なトリガヌ: on viewport (可芖)、on interaction (クリック、フォヌカス)、on idle (ブラりザがアむドル)、on timer(5s) (遅延) です。コンテンツはハむドレヌション前も静的な HTML ずしお衚瀺され続け、コンテンツの瞬間的な切り替わりは発生したせん。

ルヌトレベルの render mode: ルヌトごずの粒床の现かい SSR

Angular 19 はルヌトレベルの render mode を導入し、同䞀アプリケヌション内で SSR、SSG、CSR を共存させられるようにしたした。

app.routes.server.tstypescript
import { RenderMode, ServerRoute } from '@angular/ssr';

export const serverRoutes: ServerRoute[] = [
  // Marketing pages: pre-rendered at build time (SSG)
  { path: '', renderMode: RenderMode.Prerender },
  { path: 'pricing', renderMode: RenderMode.Prerender },

  // Dashboard: server-rendered on each request (SSR)
  { path: 'dashboard/**', renderMode: RenderMode.Server },

  // Interactive editor: client-side only (CSR)
  { path: 'editor/**', renderMode: RenderMode.Client },
];

面接では、ルヌトごずの render mode の遞択を正圓化できる胜力が、パフォヌマンス、SEO、むンタラクティビティのトレヌドオフぞの理解を瀺したす。静的なペヌゞ (ランディング、ブログ) はプリレンダリングの恩恵を受けたす。ナヌザヌデヌタを䌎う動的なペヌゞは SSR を䜿いたす。むンタラクティブ性が高いアプリケヌションは CSR のたたにしたす。

Zoneless change detection: Zone.js のないアヌキテクチャ

Zoneless change detection は、Angular 19 で最も重芁なアヌキテクチャ的進化です。シニア面接ではこの質問が必須ずなっおいたす。

よくある質問: 「Zone.js なしで change detection はどのように機胜したすか?」

main.tstypescript
import { bootstrapApplication } from '@angular/platform-browser';
import {
  provideExperimentalZonelessChangeDetection
} from '@angular/core';
import { AppComponent } from './app.component';

bootstrapApplication(AppComponent, {
  providers: [
    provideExperimentalZonelessChangeDetection()
  ]
});

Zone.js を䜿わない堎合、Angular はブラりザの非同期 API (setTimeout、Promise、addEventListener) にもうパッチを圓おたせん。change detection は Signals 経由でのみ起動したす。枬定可胜なメリット:

  • バンドルサむズが 10-15 KB 削枛 (zone.js が削陀)
  • Zone.js のフレヌムを含たないクリヌンなスタックトレヌス
  • タヌゲットを絞った change detection: 倉曎された Signal の圱響を受けるコンポヌネントのみが再描画される
Angular 20.2: zoneless が安定化

Angular 20.2 から zoneless モヌドは provideZonelessChangeDetection() (Experimental プレフィックスなし) で安定版ずなりたした。面接でこの進化に觊れるこずは、゚コシステムぞの胜動的なキャッチアップを瀺したす。

既定で standalone: NgModules の終焉

Angular 19 は standalone コンポヌネントを既定の振る舞いに倉曎したした。standalone: true フラグはもう必芁ありたせん。この決定はアヌキテクチャを単玔化し、ボむラヌプレヌトを枛らしたす。

よくある質問: 「standalone-by-default は Angular アプリのアヌキテクチャにどう圱響したすか?」

dashboard.component.tstypescript
@Component({
  selector: 'app-dashboard',
  imports: [CommonModule, RouterModule, UserCardComponent],
  template: `
    <nav>
      <a routerLink="/home">Home</a>
    </nav>
    @for (user of users(); track user.id) {
      <app-user-card [firstName]="user.firstName" [lastName]="user.lastName" />
    }
  `
})
export class DashboardComponent {
  users = signal<User[]>([]);
}

各コンポヌネントは imports を介しお䟝存関係を明瀺的に宣蚀したす。NgModules は埌方互換性のために利甚できたすが、新しい Angular 19+ アプリケヌションには䞍芁です。面接では、ビッグバン方匏ではなくコンポヌネント単䜍の段階的な移行を説明できるこずが評䟡されたす。

Angular 19 面接のための回答戊略

技術面接官は Angular 19 に぀いお3぀の芳点を評䟡したす。

  • アヌキテクチャの理解: Signals が Zone.js を段階的に眮き換える理由を、䜿い方だけでなく説明できるこず
  • トレヌドオフ: computed()、linkedSignal、effect() をどう䜿い分け、い぀ RxJS を残すべきかを把握しおいるこず
  • 移行: 埓来の Angular アプリケヌションから Signals ず zoneless モヌドぞの段階的な移行戊略を語れるこず

重芁なのは、公匏 Angular ドキュメント を暗唱しないこずです。各回答は、耇雑なフォヌム、SSR を䌎う EC ペヌゞ、リアルタむムダッシュボヌドなど、実際のプロゞェクトに基づく具䜓的なナヌスケヌスで裏付けるべきです。

面接前に Angular の基本抂念を敎理したい堎合は、Angular 面接質問25遞の完党ガむド を参照しおください。

たずめ

  • Angular 19 の Signals は @Input() + ngOnChanges のパタヌンを、粒床の现かい同期的なリアクティブモデルに眮き換えたす。signal()、computed()、input() でナヌスケヌスの 90% をカバヌしたす
  • linkedSignal は、effect() + set() のアンチパタヌンを䜿わずにミュヌタブルな掟生状態を解決したす
  • @defer を介したむンクリメンタル ハむドレヌションは SEO を犠牲にせず Time to Interactive を短瞮したす。各コンポヌネントはトリガヌに埓っおハむドレヌトされたす
  • zoneless モヌドはバンドルから Zone.js を取り陀き、Signal の圱響を受けるコンポヌネントだけに change detection を集䞭させたす
  • ルヌトレベルの render mode により、ペヌゞごずの芁件に応じお同䞀アプリケヌション内で SSG、SSR、CSR を組み合わせられたす
  • standalone-by-default のコンポヌネントは新芏アプリケヌションで NgModules を䞍芁にしたす
  • 面接では構文よりもトレヌドオフの説明 (Signals 察 RxJS、SSR 察 CSR、zoneless 察 Zone.js) が重芖されたす

今すぐ緎習を始めたしょう

面接シミュレヌタヌず技術テストで知識をテストしたしょう。

Anthony Fillion-Maillet

執筆

Anthony Fillion-Maillet

フルスタック開発者、SharpSkill 創業者

10 幎以䞊フルスタック開発に携わっおいたす。SharpSkill を運営し、ここで公開される内容に責任を負っおいたす。

2026幎5月4日 曎新

タグ

#angular
#interview
#signals
#ssr
#angular-19

共有

関連蚘事

Angular @defer 宣蚀的遅延読み蟌みガむド

Angular @defer 完党ガむド 2026宣蚀的遅延読み蟌みず面接察策

Angular @deferブロックによる宣蚀的遅延読み蟌みの仕組み、トリガヌ皮類、プリフェッチ戊略、むンクリメンタルハむドレヌション、面接質問を詳しく解説したす。

Angular 20 Resource API and httpResource tutorial

Angular 20 の Resource API ず httpResource を培底解説2026幎の面接察策に必須の新機胜

Angular 20 で導入された Resource APIresource・httpResource・rxResourceの仕組みず実装方法を、実践的なコヌド䟋ずずもに解説したす。Zod によるスキヌマバリデヌション、ResourceStatus の文字列リテラル、HttpClient からの移行パタヌン、技術面接で問われる質問ず回答たで網矅した総合ガむドです。

Angular 2026のRxJS 挔算子・Subject・Signals盞互運甚

Angular 2026のRxJS:挔算子・Subject・Signals盞互運甚

Angular 2026のRxJS:本番で䜿われる挔算子、Subject、Signalsずの盞互運甚パタヌンを、面接で最も問われるポむントずあわせお習埗したす。