ソフトウェア開発において「フロントエンド」と「バックエンド」に求められる役割やスキルは、際立った違いがある。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
ソフトウェアはかつて、Javaなどのサーバサイドのプログラミング言語とMySQLなどのデータベースを用いて、デスクトップベースのクライアント向けに開発されていた。デスクトップとソフトウェアの両方がほとんど変化しない静的な性質を持っていたため、バックエンド構造は、UIやその他のフロントエンドデザインよりも重視されていた。
しかし、現代のWebブラウザ、Webアプリケーション、モバイルコンピューティングにより、フロントエンドのデザインは、開発チームで最も気になる関心事となりつつある。ソフトウェアのバックエンドの整合性が、かつてないほど重要である一方、フロントエンドもまた、完全に独立したキャリアパスや市場を作り出した。フロントエンド開発のみにフォーカスした求人、デザインスタイル、ツールが豊富に存在している。
では、フロントエンド開発者の仕事やスキルは、バックエンドと何が違うのか。
フロントエンド開発者は主にUX(ユーザー体験)に焦点を当て、コーディングとデザインのスキルを使って、利用者の使用方法などを調査、測定して改善する。直感的で機能的、かつ洗練されたソフトウェアを設計するモチベーションは高い。またフロントエンドのデザインに関するトレンドの変化は、ソフトウェアの洗練度を高める一方で、かつて比較的シンプルだった作業を複雑化するものとなっている。
フロントエンド開発者はバックエンドのシステム、データベース、コンポーネント、機能を完全に無視するわけではない。フロントエンドが迅速にロードされ、正確に動作するためには、ソフトウェアのバックエンドが適切にスケーラブルでパフォーマンスが高い必要もある。フロントエンド開発者はバックエンドプロセスの詳細全てを把握する必要はないが、UIの問題がフロントエンドのエラーなのかバックエンドのデータベースのエラーなのかを判断できる能力が求められる。
過去10年でのフロントエンド開発の最大の変化は、モバイルアプリケーションとスマートデバイスの急増だ。デバイスの環境が年々多様化する中、フロントエンド開発者は、ユーザーがアプリケーションを利用するどのデバイスからでも優れた体験を提供する必要がある。
バックエンド開発者は、ソフトウェアを支える裏側のアーキテクチャに全力を注いでいる。サーバとデータベースを扱い、急激なトラフィックの増加にアーキテクチャが耐えられるかどうかが主な関心事だ。バックエンド開発者はソフトウェアをスケールさせるためにシステムを構築し、システムアーキテクチャの最適化を常に考慮し、サーバとデータベースのパフォーマンス指標を定期的に測定する。
過去10年で、バックエンドスタックを管理する複雑性は指数関数的に増加している。コンテナ、Kubernetes、NoSQL、全文検索エンジン、サービスメッシュなどの技術の出現が、アプリケーションがデータを共有し消費する方法を完全に変えつつあるからだ。Prometheus、Istio、Jaeger、Helm、SpinnakerなどのOSS(オープンソースソフトウェア)が、バックエンド開発ツールの顔ぶれを変えつつある。
ソフトウェア開発におけるもう一つのトレンドは、ローコード開発プラットフォームの出現だ。ローコード開発プラットフォームの出現は、任意のデバイスでアプリケーションをレンダリングし、データベース管理などのバックエンド操作を効率化し、サーバレスコンピューティングさえも可能にする。だが、ローコード開発プラットフォームは、ビジネスサイドの市民開発者が作成したアプリをどう管理しセキュアにするかという新たな課題も生み出している。
フロントエンド開発 | バックエンド開発 | |
---|---|---|
レンダリング方式 | ブラウザサイド | サーバサイド |
開発スタック | MEAN(MongoDB、Express.js、AngularJS、Node.js) | LAMP(Linux、Apache、MySQL、PHP/Perl/Python) |
関連言語とフレームワーク | HTML/CSS/JavaScript/Angular/React | Java/C/Python/Ruby on Rails/PHP |
優先事項 | UX、コンテンツレイアウト、イメージレンダリング、デバイス互換性、インタフェースの応答性 | データ連携、サーバの応答性、APIセキュリティ、連携管理、サービスオーケストレーション |
計測しているメトリクス | ページのロード時間、グラフィックのレンダリング時間、クラッシュ率、セッション時間、ユーザー評価、フィードバック | サーバの応答時間、HTTPリクエストの失敗率、クエリの応答時間、データベースのスループット、負荷容量 |
職種の例 | フロントエンド開発者/Webデザイナー/UXデザイナー | バックエンド開発者/フルスタック開発者/システムプログラマー |
Web開発におけるフロントエンドとバックエンドの違い |
Copyright © ITmedia, Inc. All Rights Reserved.