システムエンジニア(Webサービス開発)とは、Webサービスをチームで設計し、開発する職業です。
Webサイトでのサービスをチームで設計し開発する。Webサイトは企業や団体のホームページや情報提供サイトから始まり、情報が固定的に表示されるWebコンテンツが多かったが、プログラムと連動してサービスを提供するものが多くなり、そのようなWebサイトが一つの「製品(products)」として提供されている。
具体的な仕事としては、社会に求められるWebサービスをチームで検討し、求められる機能を考え、どのようなWebサイトにするか決めていく(要件定義)。既に提供されているWebサービスがあり、それをどのように改善していくかといった開発も多い。要件定義をもとに、提供する画面の内容や機能、データベースの設計や外部システムとの連携(API他)などを固めていく(基本設計)。基本設計に従い、具体的な画面構成や提供する機能の詳細、内部処理の方法などを決め、画面と処理の流れを明確にした設計書を作成する(詳細設計)。新規に作成が必要なソフトウェアは詳細設計に基づきプログラマーに依頼するか、設計者がプログラミングを行う場合もある。
どのようなWebサービスにするか(「要件定義」)はプロダクトマネージャが担当したり、プロダクトマネージャと共同で検討を行う。Webでは画面デザインが重要なため、Webデザイナーが画面デザインを担当することが多い。Webデザイナーとの検討で画面を検討し、試作された画面デザインをチェックし、デザインが決定した後に開発しているWebサイトに取り込む。このように開発はプロデューサー(プロダクトマネージャ)、デザイナー等から構成されるチームで行われる。開発ではエンジニアやデザイナーが複数となり、全体で4~6人で開発することが多い。開発環境が整備された今日、大規模な開発チームでなくても、かなりのWebサービスを開発できる。開発では定期的に開発チームでミーティングを行うが、情報共有、進捗管理等にはコレボレーションツール(Slack他)が用いられる。
最近の開発ではアジャイル開発の手法が多く用いられる。この場合、最初に大まかな全体のプロトタイプを作成し、その後、より細かい画面、より具体的な機能を作っていく。
アジャイル開発の中でも、プログラマーが開発したソフトウェアはモジュール、あるいは画面単位でテストする(単体テスト)。作成したソフトウェアに不都合があれば、それを修正する。システムを構成するモジュールや画面が揃ってきたら、外部システムとの連携や各画面間の遷移などをテストする(結合テスト)。全ての要素が揃ったところで全体の動きをテストする(総合テスト)。このテストではあらかじめ設定された品質管理や情報セキュリティの基準をクリアする必要がある。Webサービス開発の最終段階で、想定される利用者にモニターとして使用してもらい、使い勝手や問題点を洗い出す(ユーザビリティテスト)。リリース前には最終テストを行い、不具合や改善点を修正する。
開発においては様々な問題が生じたり、開発したWebサービスでエラーが起こる場合がある。多くの場合は、エラーメッセージやプログラムのソースコード等を確認することで、原因の追求と修正ができるが、インターネットなど様々な情報で解決方法を検討することもある。様々な技術が生まれ、その進展が急速なため、冊子からの情報よりもインターネットからの情報が有用なケースが多い。
今日、Webサイトはパソコンからよりもスマートフォンから利用されることが多くなっている。スマートフォン用に別のプログラムを開発したり、スマートフォンからも共通に利用できる画面や機能を開発する。このようなスマートフォンからの利用に関しても検討し、設計、開発に盛り込む。スマートフォン自体のアプリ開発は「ソフトウェア開発(スマホアプリ)」(別掲職業)として行われる。
開発したWebサービスの運用や操作に関する教育を、サイトの運用を行う者に行う(導入)。Webサービスの運用は別会社となることも多い。Webサービスが公開されたら、問題なく順調に稼働するよう、その後生じた問題の解決やアフターケアを行う仕事もある(保守・管理)。
以前はサーバを設置し、その上にWebサービスを開発したが、最近はクラウド上にWebサービスを開発することが一般的になっている。
<就業希望者へのメッセージ>
Webのおもしろさは、場所や人数の制約なくサイトを 使ってもらえるところにあります。いろいろな場面で、たくさんの人に使われるWebサービスを開発する仕事に、エンジニアとしてやりがいを感じます。(就業者 20代)
◇ よく使う道具、機材、情報技術等
クラウドサービス(AWS、GFS)、OS(オペレーティングシステム: Linux)、Web画面作成のソフトウェア(HTML、CSSを含む)、プログラミング言語(JAVA、Python、Ruby、GO言語、等)、サイト構築ソフトウェア(Apache)、データベース(SQL Server、MySQL、PostgreSQL、Oracle、等)、API、コラボレーションツール(Slack他) 、パソコン、スマートフォン
入職にあたって、特に学歴や資格は必要とされないが、大学、専門学校、高専等でコンピューター関係を学んできた者が多い。興味があり学生時代から自分でスキルを身に着ける人もいる。
新卒者は座学やOJTによって開発のスキルを学んでいく。要件定義、基本設計、詳細設計、開発、稼働開始後のサポートまでができるようになると、Webサービスを一人で作り上げることができるだけでなく、チームで開発するときもその能力を発揮することができる。若い社会人が職業訓練などを経て転職してくるケースもある。経験や実績がある人を中途採用する場合もある。
Webサービスに関わるプログラミングとしてはPHP、JavaScript、Rubyなどの言語が用いられることが多い。また、Webサイトの開発ではサーバのOS(オペレーティングシステム)であるLinux、Webサイトの機能を実現するApache、データベースのMySQL、PostgreSQL、また、プログラミング言語の知識が必要となる。今日では開発においてセキュリティに関する知識も重要になっている。
開発に関する細かな情報や最新の情報は、日本語の情報もあるが、英語で書かれたWebサイトや英語のコミュニティで得られることもある。そのため、英語の読み書き能力が開発には必要となる。
Webサービスでは日々、新しい機能が生まれ、開発のための技術も日進月歩である。常に情報収集し、スキルや技術を磨き、仕事をしていく積極性が求められる。
勤務先はWebサービスを開発し、提供するWebサービス会社等となる。サービスを共同で開発する会社が都市部に集まっているため、多くは都市部とその周辺で働いている。各地に拠点があるという会社ではないため、転勤は少ない。在宅で仕事をすることも多い。コロナ禍でリモート勤務が広がったが、開発での対面での良さも見直されている。
就業者の割合は男性が多く、年齢は30歳代が比較的多い。
情報保護やコンプライアンスが重要であり、また、人材確保のため雇用形態は正社員が多い。フリーランスで業務委託契約を結び、開発に参加している人もいる。
フレックスタイム制が採用されていることが多い。新サービスのリリース前など、残業が多くなる。
Webでのサービス提供が広がっており、開発する人材ニーズがますます高まっている。開発を支援する様々なツールが生まれ、開発自体のハードルが下がるなか、サービスを企画する人材、ビジネスを考える人材が求められている。
業界をまたいで、AI 影響度が同水準の代表職業(規模順)。