どんな仕事?
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他) 、パソコン、スマートフォン