スマホアプリは企画から画面設計のUIデザイン、プログラミングの流れで
完成に向けて開発されています。
スマホアプリ開発は、AndroidとiOSで開発環境や方法が大きく異なります。開発ツールではAndroidで「Android Studio」、iOSで「Xcode」です。また、開発エンジニアに求められる要素は「コミュニケーション能力」「開発に関係する技術力」「柔軟な対応力」です。「コミュニケーション能力」は、チーム内外での調整やスケジュール設定、情報伝達や確認、情報共有が、業務でも求められていますので、作業中心の開発エンジニアでも求められる能力です。「開発に関係する技術力」では、各種開発ツールの利用知識、プログラミングスキルなど専門性が高い能力が必要になるため求められます。「柔軟な対応力」では、プログラムに不具合(バグ)が生じた場合に突発的な対応や、複雑なロジックを考えるために、柔軟な思考力で解決をするため求められます。また企画部門との折衝で実現が困難なことであっても、出来ることを明確に説明をし、実行することなどを求められるため必要とされます。
スマホアプリの開発と運営は業務内容が大きく異なるので、会社が分かれる場合もありますが、自社開発で部門に別れている場合もります。ここでは、自社サービスを運営している会社を例に、集客から提供の流れを説明します。
Androidの「Google Play」やiOSの「App Store」で集客を実施しますが、それだけでは不足しているので、SNSやWeb広告、SEO対策などでサービスサイトに集客をし、アプリダウンロードに誘導をします。
サービス運営部門は、機能追加やアップデートをアプリ内で告知をしたり、サービスサイトやSNSなどで周知を行います。一方でサービス開発部門は、アップデートの際はアプリストアにアプリのアップロードをしたあとにアップデートを申請します。有料コンテンツは、自社で用意しているオンプレミス環境やクラウドサービス事業者が提供しているクラウド環境にデータを保管しておきます。ユーザはアプリ内課金で有料コンテンツをダウンロードをし利用することが出来ます。
一般的なスマホアプリやゲームの開発言語はAndroidが「Java」「Kotlin」「C#」で、iOSが「Swift」「Objective-C」です。以下に表でまとめましたので、御覧ください。
OS | 言語 | 特徴 |
---|---|---|
Android 開発環境 「Android Studio」 |
Java(読み方:ジャバ) | オブジェクト指向の言語。歴史があり汎用性が高く、 どのような環境にも適している言語 |
Kotlin(読み方:コリトン) | Javaと同じくオブジェクト志向の言語 | |
C#(読み方:シーシャープ) | オブジェクト指向でJavaと文法が似ている。 VisualStudioが利用できアプリ開発に適している。 |
|
iOS 開発環境 「Xcode」 |
Objective-C(読み方:オブジェクティブシー) | Swiftの前身のような存在で、C言語ベースのオブジェクト指向。 |
Swift(読み方:スウィフト) | AppleのiOS及びmacOS、Linux、Windowsで利用される言語。 |
Python(読み方:パイソン)とは1991年に誕生し、近年では人工知能(AI)の分野で活躍をするプログラミング言語です。一方で、Webアプリケーション開発でも利用されており、「Diango(読み方:ジャンゴ)」Webフレームワークでは主流ですが、スマホアプリでもフレームワークが存在し充実したライブラリで人気があります。また、コードの読みやすさや、オブジェクト指向のプログラムであるため、開発エンジニアにとって大きなメリットです。情報が多く存在し、専門書籍や専門スクールでも教材として利用されている言語で、学習がしやすいことも特徴です。
スマホアプリは、スマートフォンの中に全て入っているので、使いたいときに使いたい機能を手軽に利用できる為、多くの人たちに利用されています。
スマホアプリは多種多様の役割があるアプリケーションです。私たちが普段生活で利用しているものでは、身近なものでQRコードや交通系などの決済アプリ、銀行アプリ、ポイント管理、動画、カメラ、ブラウザ、メール、ニュース、メッセンジャー、天気予報、時刻表、時計、SNS、ソーシャルゲームなど、無数に存在します。ビジネスでは、メッセンジャー、メール、電話、カレンダー、勤怠管理、販売管理、申請管理、名刺管理、セキュリティ認証ツールなど、業務で利用するために使い分けられるよう明確に分類されています。オンライン経由でいつでもどこでも目的に応じた機能を利用するために、スマホアプリは人々の生活や仕事で活躍をしています。
私たちが毎日何気利用しているスマホアプリは、2021年現在で登場して13年ほどしか経過していない市場です。十数年しか経っていないにも関わらず、スマホアプリは、小売、銀行、旅行、ファストフード、消費者向けパッケージ商品(CPG)、メディアとエンターテインメントなどほぼすべての業界で重要な役割を果たすような存在となっています。コロナ禍でもスマホアプリの進化は止まらず、モバイル・ファースト、モバイル・ファースト・スクリーン戦略を採用する企業の競争は激化し、モバイルアプリによるリアルとデジタルの融合(小売系アプリ、ヘルスケアアプリ)が進化続けております。国内でも、スマホ端末を使ったキャッシュレス化、QRコード決済の乱立したのは記憶に新しいかと思います。
便利であることは勿論こと、セキュアであることは当たり前のように求められています。企業が提供する安心・安全なスマホアプリは、個人に対するサイバーセキュリティ脅威を起点に、個人情報や金融資産への攻撃が一番の脅威であるため、防御が十分に取られていることを確認します。ユーザに安心・安全なサービスを実現するためには、企業文化、組織、体制、いざと言う時のセーフティーガードが常に必要とされます。
銀行で手続きをする多くの取引は、いまや窓口に行かなくとも受けることが出来ます。あるメガバンクでは、顧客の非対面ニーズ対応ため、窓口に行かなくでも手続きが全て完了できるところまで進みました。オンライン技術を取り入れることにより、これまでのコアバリューに加え、新たなバリューチェーンの実現しています。
事業者がオンラインサービスを提供する上で、セキュリティ対策は当たり前のように求められます。セキュリティ対策にかかる費用、時間、不安など、利用者側のセキュリティ負担を考慮したセキュアなスマホアプリは、現在流通しているサービスでも常に求められていることです。
スマホアプリは従来の携帯端末とは異なり、利用方法によってはパソコンに近く同様のセキュリティ脅威が存在します。
様々なお客様から以下の様な課題を伺うことがあるため、スマホアプリに対するセキュリティ対策や取組みを実施します。
テクニカル・リスク | ビジネス・リスク |
---|---|
アプリの再配布 セキュリティ制御のバイパス Jailbreak/Root化 アプリの偽造 プログラム内部の公開 APIモニタリング 暗号鍵の傍受 逆コンパイルによるアプリの分析 |
ブランドと信頼の毀損 ユーザーエクスペリエンスの侵害 知的財産の流出 プライバシー関連データの流出 機密データの流出 収益の損失と海賊行為 ビジネスロジックのバイパス 金銭の摂取(Financial Charging) 不正アクセスと詐欺行為 |
【参考】OWASP Reverse Engineering and Code Modification Prevention Project
スマホアプリのセキュリティ対策は、スマホアプリを通じたサービスを提供している会社であれば、企画、デザイン、開発、テスト(検証)の流れでリリースをします。セキュリティ対策はテスト(検証)を実施するテスターやデバッカーと呼ばれるアプリの動作不具合を発見し、エラー内容を報告する職種の人が担当をすることが多いです。しかし開発エンジニアやプログラマでも、セキュリティ対策は意識するべきことでテスターと連携をして、アプリ開発を完遂しなければいけません。リリース後にユーザはサービスを信頼をして自身の個人情報を入力をし会員登録をしたり、金融系アプリであれば個人資産を預けます。健康管理のヘルスケアでは、重要な情報資産である個人の体調や過去の病歴を記録することで、毎日の健康管理を安心して行えます。このように重要な情報資産を取り扱っているサービスであれば、悪意のある攻撃者の標的になる可能性は高まります。ここではスマホアプリのテスターと開発者の関係によるリリースを実施する流れや、主要な脅威に対し、考えられるセキュリティ対策を紹介します。
アジャイル開発では「計画」「設計」「実装」「テスト」の短いサイクルで回してローンチ後にアップデートリリースを繰り返していきます。
スマホアプリのテスターとは、プログラムのバグによるアプリ動作に不具合がないかなどを発見するために、実際に開発されたアプリをテスト項目に沿って確認をしたり、エラー内容や結果を報告する職種のことです。
スマホアプリテストの自動化は、ソフトウェアの不具合を出すリスクを低減させるために実施する作業です。支援ツールを利用することにより、スマホアプリテストの自動化をすることもできます。テストコードを作成し、支援ツール(アプリケーション)に入力することで、ある程度は自動的にテスト項目に沿ってコンピュータが実施してくれます。繰り返し作業などは、人間が手動でやるよりも、コンピュータのほうが優れているので間違いは起こりません。しかし、各項目のテストコードを作成したり、どうしても人間の手が入らなければならない部分に関しては、テスターが自ら確認をしてテストを実行します。
スマホアプリのチートは、例を上げるとソーシャルゲームで課金システムの不具合を悪用し、レアアイテムをゲットする方法や、キャラクターのパラメータ設定を改ざんし、ノーマルキャラを強キャラとして利用するなど、主にゲームバランスを破壊する行為のことを意味します。ソーシャルゲームはオンラインで大勢のユーザが利用している為、ルールに沿って通常プレイしているユーザにとっては迷惑な行為です。チートプレイを行ったユーザには、サービス運営側がゲームマスターとしてサービス内を巡回をし、違反者にペナルティを課すことも行います。開発時の対策は、プログラムに不具合がないかテスターが発見するとともに、プログラマが修正パッチを当てるなど、運用時も細かくアップデートを繰り返し保守しています。
スマホアプリのデバッグは、スマホアプリのプログラムの誤り・不具合・欠陥といったバグを探して取り除き、修正することです。専門に行うソフトウェア(デバッガー)を利用したり、ソースコードをチェックし確認を行います。スマホアプリ開発者は、テスターから動作不具合があった場合に報告を受け、デバック作業であるプログラムのバグを修正します。
ビジネスバリューは、アプリケーションによる生み出されていますが、セキュリティ対策は開発者の課題(非生産的な活動)です。
セキュリティ対策は一般的に実施されている、コーディングからレビュー、脆弱性診断などで終わるものでは有りません。継続的なセキュリティ対策を実現するためには、アプリケーション開発プロセスにセキュリティ対策を組み込むことで、開発工数を膨大にかけること無く、継続的なセキュリティ対策が実現できます。
当社モバイルアプリ向けセキュリティサービスは、海外のモバイルセキュリティベンダーとの協業により、アプリ開発者が欲しいと思う総合的なセキュリティ・サービスをワンストップで提供し、モバイルアプリと組織に高い防御能力をもたらすことを目標としております。
脆弱性診断とは、ネットワーク・OS・ミドルウェアやWebアプリケーションなどに脆弱性がないか診断することです。スマホアプリにも脆弱性診断は必要とされます。次のページでは脆弱性診断の必要性や頻度、費用などを解説します。
アプリケーションセキュリティとは、安全なアプリケーションの提供し続けるために求められる、セキュリティ対策の取組みのことです。次のページでは、アプリケーションエンジニアが考える、開発・保守・管理とセキュリティ対策の関連性を解説します。
アプリケーションエンジニアがアプリケーションセキュリティに取り組む目的は、アプリケーションに潜む脆弱性を攻撃者が悪用し、アプリケーション内に保管されている情報資産を窃取することを防止するためです。
システム運用の大まかな定義は24時間365日、問題なくシステムを稼働させるための業務です。システムを構成しているサーバやネットワーク機器はコンピュータで精密機器のため、突然故障する可能性もあります。それがシステム障害の原因になるため、エンジニアが障害を未然に防止するような対策や業務を行ったりバックアップをとるようなシステム構成を考えたり、様々な知識や技術を用いながらシステム運用の業務に取り組んでいます。従ってシステム運用とは、システムの正常状態を維持し、状況に合わせて変化、拡張させることを意味します。
アイティーエムはシステムマネジメント事業を主軸とするMSP事業者です。当社が考えるMSPは「MCSSP」と呼び、新しいシステムマネジメントサービスの形態です。
MCSSP = 「MSP(Managed Service Provider)」+「CS(Cloud & Security)」
従来から存在するMSP(Managed Service Provider)事業をベースとして、昨今のIT環境にて特に注目されている「クラウド利用」と「セキュリティ対策」をより強化したサービスでお客様の安心・安全で、快適なシステム運用をご支援します。
詳しくは下の画像をクリックしサービスサイトをご覧ください。