「アプリケーションエンジニアって、そもそもどんな仕事なの?」
「アプリケーションエンジニアに必要なスキルは?」
と思うことはありませんか。
そこで今回は、「アプリケーションエンジニアの仕事内容や、求められるスキル」などについて解説します。
記事の後半で「アプリケーションエンジニアに役立つ資格や将来性」についてもまとめているので、ぜひ最後までお読みください。
1. アプリケーションエンジニアとは?
アプリケーションエンジニアとは、アプリ開発を行うエンジニアのこと。といってもわかりづらいかと思うので、まずは定義をご説明します。
1.1 アプリケーションエンジニアの定義
アプリケーションエンジニアとは、アプリ開発を行うエンジニアのこと。
プログラミングしてアプリを作り上げるだけでなく、
- 仕様を考える「要件定義」
- 要件を具体化する「基本設計」
- プログラムを構築する「実装」
- プログラムの動作を確認する「テスト」
- アプリが動く環境を作る「リリース」
といった業務を行うのが特徴です。
つまり、「プログラミングができること」に加えて、顧客とのコミュニケーション能力やドキュメント作成能力なども求められます。
1.1.1 平成20年度秋期まで情報処理技術者試験の一区分に指定
平成13年度春期から平成20年度秋期までは、「アプリケーションエンジニア試験」といった名前の情報処理技術者試験がありました。
アプリケーションエンジニア試験は、以下の役割が記載されています。
情報システム開発プロジェクトにおいて、業務要件を分析し、システムとして実現する業務に従事し、次の役割を果たす。
(1)利用者側の業務要件を分析し、要求仕様をまとめる。
(2)要求仕様に基づいて、新規開発・パッケージ導入などのシステム実現方法、システム構成、システム移行・運用などについて検討し、システム設計を行う。
(3)プログラム開発要員を指導して、プログラム開発を実施させる。
(4)総合テストを計画し、実施する。また、システム移行及び運用テストを支援する。
(5)個別のハードウェア技術、ソフトウェア技術、ネットワーク構成、データベース構成、システム運用などについては、必要に応じて専門家の支援を受ける。
引用元:アプリケーションエンジニア試験(AE)|IPA
なお、現在はシステムアーキテクト試験に内容が引き継がれています。よってシステムアーキテクト試験は、アプリケーションエンジニアを目指す場合は取得を考えたい資格です。アプリケーションエンジニアにおすすめの資格は、のちほど3つご紹介します。
1.1.2 開発するアプリケーションの分類
アプリケーションエンジニアは、開発するアプリケーションの種類がとても多いです。たとえば、以下のようなアプリケーションがあります。
■ アプリケーションエンジニアが開発するアプリケーションの例
• 業務用アプリケーション
→経理管理システム、プロジェクト管理システムなど
• Webアプリケーション
→食べログ、クックパッド、Progateなど
• スマートフォン向けアプリケーション
→メルカリ、Uber Eatsなど
開発するアプリケーションは、所属する企業やプロジェクトなどによって変わります。「色んなアプリ開発に挑戦したい!」と思っている方に、アプリケーションエンジニアはおすすめです。
2. アプリケーションエンジニアの役割・仕事内容
アプリケーションエンジニアの役割・仕事内容は、仕様を決める要件定義から始まります。
2.1 要件定義
要件定義とは、「顧客の悩みから、具体的なアプリの要件を決める工程」のこと。
たとえば、「経理業務を効率化するアプリを作ってほしい」と相談されても、これだけでは何を作れば良いのかわかりません。また仮によくある経理システムを作ったとしても、顧客の悩みを解決できるシステムになるとは限りませんよね。
そこで必要となるのが、要件定義です。今回のケースで言うと、「経理業務のどこを課題として捉えていて、どこを改善すべきか」を最初に整理する必要があります。
2.2 基本設計(画面設計・機能設計・データ設計)
分析した要件を元に、システムを具体的にイメージするための工程が「基本設計」です。
要件定義で決めた内容をさらに深ぼりし、
- 機能の一覧
- 画面のイメージ
- 画面を操作するイメージ
などを整理して、顧客と1つずつ確認をしながら画面や機能を確定していきます。
また、既に別のシステムを利用している場合は、「システム移行・運用」などを考慮したシステム設計を行うこともあるでしょう。
2.3 実装
設計が終わったら、プログラムを組んでいきます。このとき、規模の大きなプロジェクトの場合は、プログラマーなどに開発を依頼することも。
一方で、規模の小さなプロジェクトの場合は、自分で実装することもあります。いずれにせよ、プログラミングの知識は必須です。
■ Tips:実装前にある「詳細設計」とは?
企業によっては、実装の前に「詳細設計」を行うケースも。詳細設計は「プログラミングする内容をドキュメント化したもの」と思っていただければイメージしやすいでしょう。
例)詳細設計のイメージ
1.データの登録
1-1.画面で入力された値を取得
→データを取得し、変数に格納する
1-2.画面で入力された値の必須チェック
→変数に格納したデータをチェックし、必須項目に値が入っているかチェック
入っている場合)1-3 の処理に進む
入っていない場合)警告メッセージを表示し、処理終了
2.4 テスト
テストと一口に言っても、さまざまな工程があります。具体的に言うと、次のような工程です。
■ テストの工程の例
- テスト計画の策定
- 単体テストの実施
- 結合テストの実施
- 総合テストの実施
1のテスト計画の策定では、テスト全体のスケジュールなどについて計画を立てます。最初にテスト計画を立てる理由は、スケジュール通りにテストを実施し、アプリケーションが正常に動くようにテストを進めるためです。
3つのテストの違いについては、以下をご確認ください。
• 単体テスト
→1機能のプログラムの動作が動くか確認する
• 結合テスト
→複数の機能でプログラムが動くか確認する
• 総合テスト
→業務に近いデータを利用し、業務と同等のテストを行って問題がないか確認する
2.5 リリース
テストが終わったら、いよいよリリース作業に入ります。リリース作業と言っても、単純にプログラムをサーバーにアップロードすれば終わりというわけではありません。
システムを動かすために、
- 本番環境のサーバーやデータベースを準備
- データベースに初期データを登録
- データベースのバックアップの状況などを確認する
- プログラムをアップロード(これをデプロイと呼びます)
- アップロード後の動作チェックを実施
などを行い、リリース報告書などを作成して完了です。
3. アプリケーションエンジニアに求められる5つのスキル
では、アプリケーションエンジニアは具体的にどのようなスキルが求められるのでしょうか。詳しく見ていきましょう。
【1】コミュニケーションスキル
1つ目の求められるスキルは、「コミュニケーションスキル」です。
アプリケーションエンジニアは、システム開発で要件定義を行い、基本設計で具体化してシステム開発を行います。
要件定義や基本設計を行うときは、
- 顧客に課題をヒアリング
- 専門の技術者と話して技術的に実現可能か確認
といったコミュニケーションを行う業務がとても多いです。
また、プログラマーに実装をお願いするときも、コミュニケーションが必要となります。このように、コミュニケーションスキルはアプリケーションエンジニアにとって必要なスキルです。
【2】アジャイル開発やウォーターフォール開発の知識
2つ目の求められるスキルは、「アジャイル開発やウォーターフォール開発の知識」です。
アプリケーションエンジニアは、これまでお伝えしたように様々なアプリケーション開発を行います。アプリケーションによって開発手法は異なるため、それぞれの知見が必要です。
アジャイル開発とウォーターフォール開発の違いについては、以下の記事でまとめています。
• アジャイル開発とウォーターフォール開発の違い
• アジャイルとウォーターフォールの使い分け
などについても解説しているので、ぜひ参考にしてください。
【3】ディレクション及びマネジメント
3つ目の求められるスキルは、「ディレクション及びマネジメント」です。
開発は、複数人の開発メンバーを集めて行います。プロジェクトの規模などにもよりますが、アプリケーションエンジニアは要件定義を行ってからアサインするメンバーを選定することも。
そのため、ディレクションスキルが求められます。
また、アサインしたメンバーに仕事を振るだけで、上手く開発が進むとは限りません。技術的な問題が起こる可能性もあるので、適切に管理していくことも重要です。
まとめると、
- プロジェクトへメンバーをアサインするディレクションスキル
- アサインした人員やスケジュールの管理スキル
などが求められます。
3. 【4】経理、生産管理などの業務知識
4つ目の求められるスキルは、「経理、生産管理などの業務知識」です。
特に業務用アプリケーションの開発を行う場合は、「経理、生産管理の知識」は必須です。なぜなら業務について理解できないと、具体的に課題が理解しづらくなってしまうからです。
業務理解は、そのままシステムの品質に直結します。
業務知識を入れたうえで、
- 運用でカバーできる課題
- システムで解決すべき課題
などを整理し、要件定義や基本設計を行う技術が求められるでしょう。
3.5 プログラミングスキル
5つ目の求められるスキルは、「プログラミングスキル」です。
規模が大きいと、プログラマーに開発を依頼するケースはあります。とはいえ、プログラマーが技術的な悩みを抱えた際や、コードレビューなどを行うときにプログラミングスキルは必須です。
さらに、小さなプロジェクトの場合は、設計した後そのまま実装を行うケースも。自分で実装するため、もちろんプログラミングスキルが求められます。
加えて言うと、「コードレビューや自分でプログラミングを行う機会がない」といった人でも、プログラミングスキルは必要です。
なぜならプログラミングのイメージができないと、「技術的に実装が困難な設計」をしてしまう可能性があるからです。いざ実装しようと思ったときに作れない設計と気づいては、設計からやり直しになってしまいます。
4. アプリケーションエンジニアに役立つ資格
アプリケーションエンジニアに役立つ資格を、3つご紹介します。
4.1 システムアーキテクト試験
システムアーキテクト試験とは、システム開発の上流工程に必要な知識を問う国家資格のこと。要件定義や設計などの上流工程で必要な知識が学べるため、アプリケーションエンジニアにもおすすめの資格です。
試験のスケジュール、料金、開催場所は以下をご確認ください。
試験名 | システムアーキテクト試験 |
---|---|
試験のスケジュール | 春期:4月の第3日曜日(2021年は4月18日(日)に実施) |
試験の費用 | 5,700円 |
試験の開催場所 | 全国主要都市で試験実施 |
4.2 Java SE 8 11認定資格
出典:Java SE 11 認定資格|Oracle University
Java SE 8 11認定資格とは、プログラミング言語Javaの知識やスキルを測る資格のこと。仕事でJavaを使うことが多い場合は、必須の資格とも言えます。
3つのレベルがあり、それぞれ求められる知識やスキルが異なります。
• Bronze(ブロンズ)
Java 言語を使用したオブジェクト指向プログラミングの基本的な知識を有することを目的とした言語未経験者向けの入門資格
• Silver(シルバー)
基本的なJavaのプログラミング知識を有し、上級者の指導のもとで開発作業を行うことができる開発初心者向けの資格
• Gold(ゴールド)
設計者の意図を正しく理解し、自分の力だけで機能実装ができる中上級者向けの資格
試験のスケジュール、料金、開催場所は以下をご確認ください。
試験名 | Java SE 8 11認定資格 |
---|---|
試験のスケジュール | 随時受験可能 |
試験の費用 | Bronze:14,630円(税込)
Silver:37,730円(税込) Gold:37,730円(税込) |
試験の開催場所 | 全国各地にあるピアソンVUEテストセンター |
4.3 Ruby技術者認定試験
出典:Ruby技術者認定試験|Ruby Association
Ruby技術者認定試験は、Rubyの開発知識・スキルを問う資格のこと。Rubyを使ったWebアプリケーション開発がメインの場合は、とっておきたい資格です。
Ruby技術者認定試験には、2段階のレベルがあります。
• Silver(シルバー)
Rubyの文法知識、Rubyのクラスとオブジェクト、標準ライブラリの知識について、基本的な技術レベルを持つことを問う試験
• Gold(ゴールド)
Silverよりも深いRubyの知識はもちろん、プログラムの設計に必要な試験まで問われる試験
試験のスケジュール、料金、開催場所は以下をご確認ください。
試験名 | Ruby技術者認定試験 |
---|---|
試験のスケジュール | 随時受験可能 |
試験の費用 | 16,500円(税込) |
試験の開催場所 | 全国各地にあるテストセンター |
5. アプリケーションエンジニアの年収の目安
求人サイト「doda」が実施したアプリケーションエンジニアの年収調査によると、アプリケーションエンジニアの平均年収は以下の通りです。
アプリケーションエンジニアの平均年収は440.4万円で、ボーナスは冬が59.0万円、夏が58.8万円という結果でした。
引用元:アプリケーションエンジニア|doda
同じくdodaの平均年収ランキングでは、全体平均年収が409万円。他の職種と比べると、アプリケーションエンジニアの年収は高いことが分かります。
6. アプリケーションエンジニアの将来性
アプリケーションエンジニアは、さまざまなプログラミング言語でシステム開発できる職種です。そのため複数のキャリアを描きやすくなっています。
ここでは、3つの開発に分けて将来性をご紹介します。
6.1 業務用アプリケーション開発
1つ目は、「業務用アプリケーション開発」です。
フルスクラッチのBtoB向けのアプリや業務用アプリケーション開発は、法人向けのSaaSなどのクラウドサービスで代替されていく可能性があります。たとえば、以下のような例も。
(※編集部注:自社でのスクラッチ開発と異なり、法人向けSaaSでは)アプリ審査やバージョン管理なども全てYappli側で対応していただけるし、修正や更新もCMSで管理画面から誰でも操作できる。定額制なので追加費用も発生しない。 営業担当の方から話を聞いて、私たちが抱えていた課題をほぼ解決できると感じましたね。
引用元:アプリ運用の苦労がゼロに運用工数が大幅に削減 - NEC|yappli
その結果、業務アプリケーションもクラウド化が進んでいく可能性があります。とはいえ全てをクラウドで置き換えすることはできないため、
- クラウドを学んで、SaaSが開発できるスキルを身につけていく
- フルスクラッチを今後も続けつつ、周辺スキルを身につけていく
のどちらかでキャリアパスを考えると良いかもしれません。
6.2 Webアプリケーション開発
2つ目は、「Webアプリケーション開発」です。
「Webエンジニアを始める人も増えていそうだし、仕事がなくならないか心配...」
「AIが進化してきており、仕事がなくならないか心配...」
といった悩みを抱えている人は、とても多いです。しかし、ご安心ください。
Webエンジニアの仕事は、これからも増え続けることが予想されます。その理由は、以下の3つ。
- 経済産業省が公開した「IT人材需給に関する調査」によると、IT人材不足は今後も加速していくことが予想されている
→求人情報が少なくなることは考えにくい - スタートアップ企業が増えており、多くのWebサービスが開発されている
→Webエンジニアが必要となるタイミングが、今後も増えると予想される - 世界のトップ企業10社のうち、7社がWebやIT関連企業
→Web系の仕事がいきなりなくなることは考えにくい
上記の詳細や、将来性の高いWebエンジニアの特徴などについては、以下記事をご一読ください。
6.3 スマートフォン用アプリ開発
3つ目は、「スマートフォン用アプリ開発」です。
スマートフォンアプリは、以前までiOSとAndroidそれぞれの開発言語を使って開発をしていました。しかし近年では、
- ハイブリッド開発
- PWA
などの開発方法も増えてきています。
ハイブリッド開発は、複数のOSのアプリを開発する方法のこと。iOS・Androidどちらでも動くようなアプリ開発方法を指します。
PWAは、ハイブリッド開発の中でも「Web上で動かせるアプリ」のこと。インストールせずにWeb上でアプリと同様の体験ができれば、スムーズにアプリの利用を促せるため注目が集まってきています。
とはいえハイブリッド開発を進めるうえでも、iOSやAndroid専用のプログラミング言語での開発の需要がゼロになったわけではありません。方向性としては、
- Swift(iOSアプリ)やKotlin(Android)などの開発を継続する
- ハイブリッド開発言語(React Native、Unityなど)を使った開発スキルを身につける
- Webの領域に手を伸ばすなら、PWAの開発スキルを身につける
といった3軸でキャリアパスを考えるのがおすすめです。
7. まとめ
今回は、アプリケーションエンジニアの仕事内容や、求められるスキル、年収などについて解説しました。
アプリケーションエンジニアは、プログラムを組むだけでなくクライアントと上流工程を進めていくことも仕事の1つ。さまざまなアプリケーション開発の経験を身につけられるのはもちろん、開発の流れを一通り学ぶことができます。
• コミュニケーション能力
• 上流工程を進めるスキル
• アプリケーションごとの開発スキル
など求められるスキルは多いですが、その分やりがいも多いでしょう。
今回の記事が、アプリケーションエンジニアを目指す人のためになれば幸いです。