会員登録すると
このコラムを保存して、いつでも見返せます
前回の記事では、ソフトウェアエンジニアの収入例やキャリアパス、転職市場での魅力について紹介しました。まだ読んでいない方は、こちらから見ることができます。
ソフトウェアエンジニアとは何か。新卒で目指す意義やスキル、市場価値について解説
この記事では、そんなソフトウェアエンジニアリングの主要な分野である「開発領域」やエンジニアの担当箇所である「エンジニアリングトピック」、そしてその「役割」について解説します。
ソフトウェアエンジニアの「開発領域分類」
ソフトウェアエンジニアには、プロダクトの開発領域というものが存在します。開発領域には、プロダクトを利用するユーザー寄りか、開発を行うエンジニア寄りかという軸で分けるFrontendやBackend、Infrastructureなどと、サービスの提供場所(モバイルデバイスのOS)という意味での開発領域であるiOSやAndroidなどがあります。
Frontend
フロントエンドは、ユーザーと直接データのやりとりを行う場所のことを指します。WebサイトやWebアプリケーションにおいて、ユーザーから見える部分の構築やカスタマイズを行うのがフロントエンドエンジニアの役割です。
例えば、外資就活ドットコムというサービスにおいては、募集情報や記事のレイアウトなどの見え方、ユーザーが情報を入力する部分などのユーザーが触れる部分に相当します。
Backend
バックエンドエンジニアは、アプリやWebサイトの裏側で動作するサーバーサイドを担います。具体的には、プログラムの開発から、Webサーバーやデータベースの導入・構築・運用・管理まで、システム全般をカバーします。他にも、APIの開発や実装、Webサイトやアプリを運用する上での問題に応じたプログラムの改善や、セキュリティの対応なども行います。
Infrastructure
インフラエンジニアは、Webサービスやアプリケーションを実行する上で土台となる、サーバーやネットワーク全体の設計・構築・運用が主な仕事内容です。プロダクト仕様の要件定義を行ったのちに設計書を作成し、実際に構築を行います。その後は、パフォーマンスなどに問題が起きないかを監視しながら、運用・保守を担います。
Platform
プラットフォームエンジニアは、ソフトウェアやアプリケーションが実行される基盤となるプラットフォームを設計、構築、維持する役割を担います。大規模なシステムやアプリケーションが効率的に動作するために必要なやツールを管理し、開発者がアプリケーションを開発し、展開し、スケーリングするための適切な環境づくりを行います。
インフラエンジニアと似ているものの、インフラエンジニアは、基盤となるインフラストラクチャを担う一方で、プラットフォームエンジニアはシステム全体のプラットフォームが担当領域になる点で異なります。
Mobile
モバイルアプリ開発では、iOSとAndroidが主流であり、それぞれのOSで異なる開発環境が使われています。しかし、近年ではReact NativeやFlutterなどのクロスプラットフォームフレームワークが登場し、1つのコードでiOSとAndroidの両方に対応できるようになってきています。
iOS
iOSエンジニアは、Apple製品を中心としたネイティブアプリ*や、ブラウザ上で動作するWebアプリ設計や開発を行います。macOSやiOSのアプリケーション全体に関することを包括して担当するため、フロントエンドやバックエンド周りの開発も同時に担います。
Apple社はiOSアプリ開発向けに「Swift」という新しいプログラミング言語を開発しており、それを利用する場合が多いです。
*:アプリストアからデバイスにインストールするタイプのアプリ
Android
Androidエンジニアは、Android OSで動作するアプリや、Android製品向けのネイティブアプリの開発や設計を行います。現在の日本においてはiOSユーザーの数が多いですが、世界市場で見るとAndroidの普及率のほうが高い(約7割を占める)ため、今後も需要がさらに高まっていくことが予想されます。
アプリ開発に使われる言語は、従来から用いられてきたJavaと、2011年に登場した「Kotlin」が主流です。Google社は2019年の5月にKotlinを推奨言語に追加しており、強いサポートを受けていると言えます。
ソフトウェアエンジニアの「エンジニアトピック分類」
エンジニアトピック分類とは、エンジニアの専門領域による分類です。以下のトピックは主要なものをピックアップしていますが、会社やプロダクトごとにここにはない項目が設置されていることもあります。
Accessibility
アクセシビリティエンジニアは、WebサイトやWebアプリケーションなどのソフトウェアを、あらゆる人が利用しやすいように設計し、開発することに特化したエンジニアです。画面読み上げソフトウェアのサポートなどがわかりやすい例です。
ユーザーエクスペリエンス(UX)を向上させることを目的とし、製品の利用範囲を広げ、より多くのユーザーにアクセスを提供する役割を果たします。
Security
セキュリティエンジニアは、サーバーやサービスの保守を専門とし、セキュリティに配慮したシステム設計・運用、サイバー攻撃への対策などを行います。開発が完了した要件に対する脆弱性検証やバグの発見と改善、サイバー攻撃を防ぐための調査なども業務範囲となります。
Performance
パフォーマンスエンジニアは、WebサイトやWebアプリケーションのパフォーマンス最適化を担うエンジニアを指します。また、これらのパフォーマンスの評価や問題の特定、表示や機能の最適化戦略の策定と実装などを行います。
Site Reliability
サイトリライアビリティエンジニアは、Googleが初めて提唱した役割で、大規模なWebサービスやアプリケーションの運用を支援するためのエンジニアです。システムやサービスの信頼性、可用性、拡張性を維持し、サービスの中断や障害を最小限に抑えることに焦点を当てたエンジニアリングの分野の1つでもあります。
AI・ML
機械学習、深層学習の分野でアルゴリズムなどを用いながら人工知能に学習をさせてシステムの設計・開発を行うエンジニアを指します。PythonやR、C++などの言語を用いるのが主流です。
Quality Assurance
クオリティアシュアランスでは、ソフトウェアや製品の品質管理を担当します。製品テストなどを通してバグを見つけ、修正し、品質を向上させることが主な仕事です。また、テストスクリプトの作成や品質基準の策定なども業務範囲となります。
Data
データエンジニアは、データ基盤の設計、構築、維持を担うエンジニアです。大規模なデータ処理システムなどを構築し、データの収集から処理、そして管理やメンテナンスまで担います。また、データパイプラインの設計やデータの品質管理も担当します。
Machine Learning
機械学習技術を活用して、データからパターンを発見し、予測モデルや意思決定システムを構築するエンジニアのことを指します。具体的な業務には、データの前処理、モデルの選定・トレーニング・評価、展開などのタスクがあります。
ソフトウェアエンジニアの「ポスト」
...
会員登録して全ての内容を見る
続きは外資就活ドットコム会員の方のみご覧いただけます。
外資就活ドットコムはグローバルに活躍したい学生向けの就職活動支援サイトです。会員登録をすると、「先輩のES・体験記」や「トップ企業の募集情報リスト」など、就活に役立つ情報をご覧いただけます。
この記事を友達に教える