職種
ネイティブアプリエンジニア
スマートフォンアプリを開発する方法は、「ネイティブアプリ」や「Webアプリ」などいくつかあります。ネイティブアプリは、スマートフォンのOS上で動作するスマートフォンのためのアプリであり、高い操作性やデバイスが有するセンサーなどの機能をフル活用できるのが魅力です。そして、このネイティブアプリを開発するのがネイティブアプリエンジニアです。
開発言語・フレームワークフレームワークとは、必要となる機能を簡単に開発できるようにまとめたプログラム群です。昨今、ビジネスのスピードは急速にあがっています。そのため、サービスを開発する際も、より早く完成させることが求められています。ただ、すべての機能をゼロから開発していると多くの時間を費やしてしまいます。 フレームワークは、システムを開発する際に必要となる機能があらかじめプログラミングされており、簡単に利用することができます。例えば、Webアプリケーションのフレームワークであれば、ログインなどの認証機能、メール送信機能、簡単な画面などといった具合です。 なお、フレームワークはプログラミング言語ごとに異なります。PythonであればDjango、Flask、PHPであればLaravel、CakePHP、RubyであればRuby on Railsなどです。それぞれ特徴があるため、目的や用途などを考慮して採用するフレームワークを決定します。 More
Swift
swiftは特にiOS向けアプリの開発に使用するプログラミング言語です。かつてiOS向けのアプリ開発にはObjective-Cが用いられていました。その後、Apple社がiOSの開発推奨言語をSwiftにしたことによって、Objective-CからSwiftに移行してきたエンジニアが多くいます。
Kotlin
Kotlinはプログラミング言語であるJavaをベースに開発された新しいプログラミング言語です。Googleが、Androidアプリの公式開発言語としたことにより、人気が急上昇しています。もちろん、AndroidアプリだけではなくWebアプリケーションの開発などにも利用されています。
Unity
Unityとは、ゲームやアプリを作成するためのゲームエンジンです。
Unityには、ゲーム開発の生産性をアップするゲームエンジンのほかにも、Unityクリエイターを育成するための学習コンテンツ、すぐにゲームを開発することができるように予め素材が用意されたアセットストア、Unityの機能などの理解を助けるドキュメントなど、エンジニアを助ける様々なものが用意されています。
ポケモンGOやどうぶつの森 ポケットキャンプをはじめ、多くのスマホゲームがUnityを利用して開発されています。
Flutter
FlutterはGoogle社が開発したモバイルアプリ開発のフレームワークです。Flutterを利用することで、さまざまなOS(iOS、Android、Windows)のアプリを1つのプログラムで開発できる「クロスプラットフォーム」に対応しているため、開発生産性が飛躍的に向上するという特徴を有しています。
アプリ開発で知っておきたい保守・運用ツール
Xcode
XcodeとはApple社から提供されている統合開発環境です。Apple社のプロダクトであるMac、iPhone、そしてiPad向けのアプリケーションを開発することが可能です。
Git / GitHub
GitやGitHubは、ファイルに対する変更を管理するシステムです。開発関係の資料はもちろん、ソースコードなどをGitで管理することで、「誰が」「いつ」「どのような」変更を加えたのかを管理することができます。昨今の開発現場ではスタンダードなツールとなっています。
Jenkins
Jenkinsとは、開発の構築という工程に関わる作業を自動化・高速化するためのツールです。エンジニアにとってはメジャーなツールであり、スマホゲームを含むスマートフォンアプリ業界、アプリケーション開発にスピードが求められるWeb業界などは、Jenkinsがよく利用されています。
その他アプリ開発に関連する技術用語
UI/UX
UI/UXとは、スマートフォンアプリやWebアプリケーションの画面(ユーザーに見える部分)や、その画面を操作することによってユーザーが得る体験などのことです。どんなに素晴らしい機能を持っていても、UI/UXが悪いとユーザーはアプリに対してネガティブな感情を持ってしまいます。そのため、近年UI/UXは重要視されています。
MBaaS
MBaaSは「Mobile Backend as a Service」の略語であり、スマートフォンアプリに必要となる機能を提供するサービスを指します。MBaaSを使えば、モバイルアプリの開発に必要な機能を1から開発する必要がないため、開発生産性を向上することができます。