第2部:基礎知識 / 第1章:開発の全体像

フロントエンドとバックエンド

Web開発やアプリ開発では、「フロントエンド」と「バックエンド」という2つの領域に分けて開発します。それぞれの役割と使われる技術、実際の業務パターンを理解しましょう。

📖 読了目安 約20分 対象:これからWeb/アプリ開発を始める方

なぜ分かれているのか

Webアプリケーションは、大きく2つの領域に分かれます。

graph LR
    subgraph フロントエンド
        A[ブラウザ/アプリ]
    end
    subgraph バックエンド
        B[サーバー]
        C[(データベース)]
    end
    A <-->|HTTP/API| B
    B <--> C
領域役割実行場所
フロントエンドユーザーが見て操作する画面ユーザーのブラウザ/端末
バックエンドデータの保存・処理・ビジネスロジックサーバー

この分離には理由があります:

  • セキュリティ:重要なデータや処理をサーバー側で管理
  • パフォーマンス:重い処理をサーバーで、軽い処理をクライアントで分担
  • 保守性:画面と処理を分けることで変更しやすくなる

フロントエンド技術

基本技術(必須)

どのフロントエンド開発でも使う基本技術です。

技術役割
HTML画面の構造を定義ボタン、テキスト、入力欄など
CSS見た目を装飾色、配置、アニメーションなど
JavaScript動きを付けるクリック処理、データ取得など

フロントエンドフレームワーク

現代の開発では、JavaScriptのフレームワークを使うことが一般的です。

フレームワーク特徴主な用途
Reactコンポーネント指向、大規模開発向けSPA、管理画面、複雑なUI
Vue.js学習コストが低い、日本語情報が多い中小規模サイト、社内システム
Angularフルスタック、TypeScript標準大企業のエンタープライズ向け
jQuery従来からある定番、シンプルレガシーシステム、簡単な動き

1年目のポイント

現場で使っているフレームワークを学びましょう。どれを選ぶかは現場次第です。

SPAとMPA

フロントエンドには大きく2つのアーキテクチャがあります。

graph TB
    subgraph "SPA(Single Page Application)"
        S1[初回: HTML+JS一括取得]
        S2[以降: APIでデータのみ取得]
        S3[画面切替: JSで書き換え]
    end
    subgraph "MPA(Multi Page Application)"
        M1[毎回: サーバーでHTML生成]
        M2[画面切替: ページ遷移]
    end

SPA

メリット高速な画面遷移、リッチなUI
デメリット初期読込が遅い、SEO対策が必要
Gmail、Slack

MPA

メリットSEOに強い、シンプル
デメリット画面遷移が遅い
従来のWebサイト

バックエンド技術

サーバーサイド言語とフレームワーク

バックエンドの開発言語は多様です。現場によって使う技術が異なります。

言語主なフレームワーク特徴よく使われる現場
JavaSpring Boot, Struts大規模開発に強い、型安全金融、基幹系、SIer
C#ASP.NET, .NET CoreMicrosoft製品と親和性高い業務システム、Windows系
PHPLaravel, CakePHPWeb開発の定番、学習コスト低Webサービス、CMS
RubyRuby on Rails開発速度が速い、スタートアップ向けWeb系スタートアップ
PythonDjango, FlaskAI/ML連携しやすい、シンプルデータ分析、API開発
Node.jsExpress, NestJSJSで統一できる、リアルタイム通信リアルタイムアプリ、API
GoGin, Echo高速、並行処理に強いマイクロサービス、インフラ

1年目のポイント

言語の優劣はありません。現場で使われている言語を習得することが大切です。

データベース

バックエンドはデータベースと連携してデータを管理します。

種類代表例特徴
RDB(関係データベース)MySQL, PostgreSQL, Oracle構造化データ、トランザクション
NoSQLMongoDB, Redis, DynamoDB柔軟な構造、高速アクセス

詳細は データベースの基礎 を参照してください。

フルスタックフレームワーク

フロントエンドとバックエンドを一つのフレームワークで開発できるものもあります。

主なフルスタックフレームワーク

フレームワークベース技術特徴
Next.jsReact + Node.jsSSR/SSG対応、API Routes内蔵
Nuxt.jsVue.js + Node.jsVue版のNext.js的存在
Ruby on RailsRubyMVC、scaffold、高速開発
LaravelPHPEloquent ORM、Blade テンプレート
DjangoPython管理画面自動生成、堅牢
ASP.NET MVCC#Razorテンプレート、Visual Studio連携

Next.jsの例

Next.jsでは、同じプロジェクト内でフロントエンドとAPIを開発できます。

my-app/
├── app/                    # フロントエンド(React)
│   ├── page.tsx           # トップページ
│   └── users/
│       └── page.tsx       # ユーザー一覧ページ
├── app/api/               # バックエンド(API)
│   └── users/
│       └── route.ts       # ユーザーAPI
└── package.json
graph LR
    subgraph Next.js
        F[フロントエンド
React コンポーネント] B[バックエンド
API Routes] end F -->|fetch| B B --> DB[(データベース)]

実際の業務パターン

現場では、様々な開発パターンがあります。自分がどのパターンで開発するのか把握しましょう。

パターン1: フロントエンドのみ開発

graph LR
    subgraph 担当範囲
        A[フロントエンド]
    end
    subgraph 別チーム/外部
        B[既存API]
    end
    A -->|API呼び出し| B

特徴

  • 既存のAPIを使って画面を作る
  • API仕様書を読んで連携する
  • 画面設計・UIに集中できる

よくある現場

  • 大規模プロジェクトで分業している
  • 外部サービスのAPIを利用する
  • モバイルアプリ開発

パターン2: バックエンドのみ開発

graph LR
    subgraph 別チーム
        A[フロントエンド]
    end
    subgraph 担当範囲
        B[API開発]
        C[(データベース)]
    end
    A -->|API呼び出し| B
    B --> C

特徴

  • API設計・実装に集中
  • データベース設計も担当することが多い
  • API仕様書を作成する側

よくある現場

  • マイクロサービス開発
  • 複数クライアント(Web・モバイル)向けAPI
  • データ処理・バッチ処理

パターン3: フロントエンドもバックエンドも開発

graph LR
    subgraph 担当範囲
        A[フロントエンド]
        B[バックエンド]
        C[(データベース)]
    end
    A --> B
    B --> C

特徴

  • 機能全体を一人(または少人数)で担当
  • 画面からデータベースまで一貫して理解
  • 小回りが利く

よくある現場

  • スタートアップ・ベンチャー
  • 小規模チーム
  • 社内ツール開発

パターン4: フルスタックフレームワークで一体開発

graph LR
    subgraph fullstack["担当範囲(Next.js/Rails等)"]
        A[画面]
        B[API/コントローラ]
        C[モデル/DB]
    end
    A --> B --> C

特徴

  • 一つのフレームワークで完結
  • 開発環境がシンプル
  • チーム全員が同じ技術スタック

よくある現場

  • Webサービス開発
  • プロトタイプ開発
  • 中小規模のプロジェクト

技術選定の背景を理解する

なぜその技術が選ばれているか

現場で使われている技術には理由があります。

観点選定理由の例
既存資産過去のシステムとの互換性、既存ライブラリの活用
チームスキルメンバーが習熟している技術を選ぶ
要件パフォーマンス、セキュリティ、スケーラビリティ
コストライセンス費用、インフラ費用、学習コスト
エコシステムライブラリの充実度、コミュニティの活発さ

1年目のポイント

「なぜこの技術を使っているのか」を先輩に聞いてみましょう。技術選定の背景を知ることで、システム全体の理解が深まります。

技術の組み合わせ例

よくある技術スタックの組み合わせです。

パターンフロントエンドバックエンドデータベース
JAMstackReact/VueNode.js/GoMongoDB/PostgreSQL
LAMPjQuery/VuePHP (Laravel)MySQL
MEANAngularNode.js (Express)MongoDB
Java系React/Vue/ThymeleafSpring BootOracle/PostgreSQL
.NET系Razor/ReactASP.NET CoreSQL Server
Rails系Hotwire/ReactRuby on RailsPostgreSQL

まとめ

覚えておくべきこと

フロントエンドとバックエンドのポイント

  • フロントエンド:ユーザーが見る画面(ブラウザ/アプリ側)
  • バックエンド:データ処理・保存(サーバー側)
  • 開発パターン:現場によって担当範囲が異なる
  • 技術選定:現場の事情に応じて選ばれている

1年目にやるべきこと

関連ページ