Alan Zeichick |コンテンツ・ストラテジスト| 2024年9月6日
在庫管理、人事、会計のためのバックエンド・システム。メール、ドキュメント、スプレッドシートを作成するための生産性アプリケーション。ウェブサイトやモバイル・アプリなどの顧客対応のソフトウェア。ITチーム、グラフィック・デザイナー、プロジェクト・マネージャー、エグゼクティブ、トラック・ドライバー向けの専門システム。
最新のエンタープライズを実行するには多くのコードが必要だということがお分かりいただけたと思います。
ビジネスが利用しているアプリケーションのほとんどは、ソフトウェア・ベンダーにより作成され、Software-as-a-Serviceモデルとしてライセンス供与されています。Microsoft Office、Oracle NetSuite、Adobe Photoshopなどを考えてみてください。また、社内の開発チームや請負業者によって独自の仕様に沿って記述またはカスタマイズされたものもあります。この記事では、後者のケースに焦点をあてています。
アプリケーション開発(AppDev)は、ソフトウェアを設計、作成、テスト、導入するプロセスです。アプリケーション開発を成功させるには、さまざまなスキルを持つ人材が必要です。アプリケーション開発チームには、プログラマー、ソフトウェア・エンジニア、ソフトウェア・アーキテクト、ユーザーインターフェース・デザイナー、テスター、品質保証スペシャリスト、プロジェクト・マネージャーがいます。
アプリケーション開発の核心は、解決すべき問題、あるいは、つかむべき機会から始まります。すべてのソフトウェアは、作成、導入、メンテナンスにリソースを要するため、ユーザーケースのメリットがコストと同等かそれ以上になる可能性が高いことが必要とされます。ユースケースが合意されると、組織は通常2つの経路のいずれかをたどる開発プロジェクトに、資金、人員、時間などのリソースを割り当てます。
計画開発: アプリケーション全体の要件は、事前にマッピングされ、すべてのステイクホルダーによって承認されます。その後、ソフトウェアは設計、デザイン、テストされ、従業員や顧客が使用できるように導入されます。このプロセスは、大規模なプロジェクトの場合、完了するまでに何年もかかり、その間に要件が変更され、アプリケーションが期待したほど役立つものではなくなります。
反復開発: ソフトウェアの軽量バージョンが設計、構築、テストされます。その後、新しい機能や特徴が短いバーストで追加され、段階的に改善され、多くの場合、わずか数週間しかかかりません。導入は頻繁に行われます。このアプローチは多くの場合アジャイルと呼ばれ、より柔軟で、変化する要件に対応しながら、より迅速にビジネス上のメリットを提供することができます。
主なポイント
アプリケーション開発は単なるプログラミングにとどまりません。またJava、JavaScript、Python、Go、Rust、SQLなどの言語を使用してコードを記述することは、プロセスのほんの一部にすぎません。ウェブサイトを更新して売上を向上させる、在庫をリアルタイムに把握できるアプリケーションで運用効率を向上させる、セルフサービス・ポータルで従業員の給与明細へのアクセスや休暇の申請を可能にすることで従業員満足度を向上させるなど、チームはアプリケーションが組織のビジネス・ユースケースを確実にサポートするようにする必要があります。
また、以下のような設計基準も同様に重要です。
上記のすべての責任は主にアプリケーションのアーキテクトにあり、これらの要件はアプリケーション開発チーム全体で理解する必要があります。
アプリケーションなしでは、ほとんどのビジネスは日々の業務を遂行することができません。多くの企業にとって、アプリケーションは競争力のカギであり、新しいソフトウェアを迅速に入手、カスタマイズ、作成する機能は、急速に変化する市場に適応する能力にとって極めて重要です。
ビジネスでは、市販のソフトウェアを使用したり、API(アプリケーション・プログラミング・インターフェース)やSDK(ソフトウェア開発キット)を使用して機能を拡張することで、商用アプリケーションをカスタマイズすることもあります。しかし、必要なことができたり、企業独自の専門知識や知的財産を扱える商用アプリケーションがないこともあります。そのようなときこそ、独自のアプリケーションを開発できる組織が競争上の優位性を獲得できるのです。
アプリケーション開発プロセスには、プロジェクトを立ち上げ資金調達する業務アプリケーション担当者やチャンピオンから、ソフトウェアを作成する技術スペシャリストまで、多くのステップと関係者の参加が必要です。多くのアイデアや、場合によっては競合する優先事項を照合し、安全でセキュアで機能的で、ビジネス上の価値をもたらすアプリケーションを提供する必要があります。
なぜソフトウェアを作るのでしょう。主な理由は2つあります。ビジネスそのものであるか、ビジネスに役立つからです。
すべてのアプリケーションが同じ方法で構築されるわけではありません。大規模なソフトウェア開発プロジェクトは、正式なプロセスを含み、利用可能なアプリケーションを提供するために数ヶ月から数年かかることがあります。小規模なプロジェクトは、1週間、あるいは1日で完了する場合もあります。プロジェクトのステークホルダーは、技術開発チームと協力して最適なアプローチを決定します。
ローコード/コード不要
すべてのアプリケーションが上記のような全面的な取り組みを必要とするわけではありません。数十年前にさかのぼって考えてみてください。当時、パワーユーザー(市民開発者とも呼ばれる)は、ビジネス上の問題を解決するために、高度なスプレッドシートマクロを作成していました。最近では、ローコード/コード不要と呼ばれる業務アプリケーション開発の種類が登場し、ビジネス・ユーザーが特定のデータ・ソース、アルゴリズム、およびワークフローを使用できる可視ツールを使用してアプリケーションを記述できるようになりました。これらのアプリケーションはクラウドで実行され、従業員や顧客、その他のパートナーなどがアクセスすることができます。多くの場合、コード不要/ローコード・アプリケーションは、標準的なWebブラウザや携帯電話、タブレット、キオスク端末などのモバイル・デバイスで実行されます。
ローコード/コード不要のアプローチには、開発および導入の大幅な高速化、ホスティング・プラットフォームに組み込まれたセキュリティ・モデル、構築およびメンテナンスの大幅なコスト削減、そしてもちろん、従業員の能力を高めながらプロフェッショナルのソフトウェア開発者の必要性を減らすなど、多くの利点があります。しかし、プロの開発者も、本格的なアプリケーション開発プロジェクトを必要としない単純な問題に対処するために、これらのツールを好んで使用しています。
ローコスト/コード不要のアプリケーションは、アーキテクト、デザイナー、コーディング担当者、テスターによって基礎から構築されたアプリケーションの高度さにはかないませんが、スプレッドシートのカスタマイズを上回り、ノンプログラマーに評価される高度で使いやすいインターフェースを提供することができます。これらのアプリケーションは、アドホックに他のアプリケーションを連携さ せるために使用することもでき、短期的な問題を処理したり、即座に機会を捉えるために最適です。
これらのツールの効率的な性質は、経験豊富なプログラマーにとっても実用的です。Oracle APEXを確認して、ローコード・アプリケーション開発を始めましょう。
モバイル
モバイル・アプリケーション開発には、アプリケーションを作成および配布するためのさまざまなツール、サービス、製品が含まれます。Google AndroidとApple iOSはモバイル・アプリの最も一般的なプラットフォームであり、さまざまな開発ツールと方法をサポートしています。モバイル・アプリケーションは、アプリケーションを互いに通信する小さなタスクに分割するマイクロサービス・アーキテクチャを使用して設計されることがよくあります。
AndroidおよびiOSデバイスが広く普及し、スマートフォンやタブレットがネットワークに常時接続されていることから、多くの企業が、従業員と顧客の両方にサービスを提供する優れた手段としてモバイルアプリを採用しています。企業の世界では、従業員は営業、エンタープライズ・リソース・プランニング、人事セルフサービス、セキュリティ、タイムカード、メッセージングなどの目的でモバイル・アプリを使用しています。多くのモバイル・アプリは専門の企業が作成していますが、従業員や顧客のために自社で設計、開発、導入することもできます。
データベース
エンタープライズ・アプリケーションは、販売取引、製品価格表、人事資料、メール、銀行取引記録、顧客連絡先情報、企業財務情報などのデータに基づいて実行エンタープライズ・データを格納する最も効率的な場所はデータベースにあり、データを容易に取得、検索、更新、保護、分析することができます。
既製のアプリケーションもカスタム・アプリケーションも、非常に効率的なクエリ言語、標準的なデータ交換フォーマット、および堅牢なプログラミング・インターフェースを通じてデータベースにアクセスできます。しかし、Oracle Database 23ai のような一部の高級データベースでは、データベース・エンジン自体で実際にアプリケーションを実行することができ、多くの場合、アプリケーションにデータへの高速でセキュアかつ堅牢なアクセスを提供します。開発ツールは、このようなアプリケーションのデータベース・エンジン自体をターゲットにすることができるため、このアプローチには、アプリケーション導入後にデータベース管理者がアプリケーションを管理・チューニングできるというさらなるメリットもあります。
マイクロサービス
クラウド・マイクロサービス・アーキテクチャで設計されたアプリケーションは、メンテナンスと導入が容易で、非常に堅牢である傾向があります。何百、何千もの小さなマイクロサービスが存在する場合があります。各マイクロサービスは、単一のタスクを効率的に実行し、他のアプリケーションやマイクロサービスとシンプルな通信プロトコルを使用して通信するように設計された構成要素です。
マイクロサービスベースのアプリケーションも非常にスケーラブルです。クラウド中心の設計とアーキテクチャは、特定のサービスが大量に使用された場合、クラウドが自動的に必要に応じて多くのコピーを作成し、実行することができることを意味します。また、個々のマイクロサービスは特定のタスクに集中しているため、設計、コーディング、テスト、導入が容易です。
アプリケーション構築に対する開発チームのアプローチは方法論です。この用語には、設計哲学、プロジェクト管理のアプローチ、開発チーム、顧客、および、他の主要なステークホルダー間の相互作用が含まれます。方法論によって、開発チームが使用する技術ツールの決定が決められる場合や、少なくともその決定に影響を与える場合があります。
どの方法論を選択した場合でも、目標は常にプロジェクトの成功であること、そして関係者全員が意見を持つという2つの真実があります。大まかに言えば、現代のソフトウェア開発方法論は、ウォーターフォールとアジャイルの2つの基本的なカテゴリに分類されます。
ウォーターフォール型
ウォーターフォール開発は、モノリシックまたはクラシック・モデルとも呼ばれ、要件収集、設計、コーディング、テスト、承認、導入、メンテナンスの直線的なステップを重視します。各ステップは徹底的に実行され、前のステップが完了してから初めて次のステップに進みます。一度でも完了したステップを見直すことはほとんどないため、ウォーターフォール型開発では、急速に変化する状況や進化する企業ニーズに対応することができません。そのため、ウォーターフォール・アプローチは、自動車や原子力発電所、医療機器に搭載されるソフトウェアのように、最初から適切である必要があるプロジェクトに最適です。
俊敏
アジャイル開発は逆のアプローチをとります。アジャイル開発は、最小限の実行可能な小規模な製品(MVP)を構築し、新しい機能の追加、不足への対処、新しいテクノロジとアイデアの活用、パフォーマンスの向上を反復的に改善することで、アプリケーションの迅速な実装とデプロイメントに重点を置いています。
アジャイル開発には「唯一の正解となる手法」は存在せず、実際には数十種類のアジャイル手法が存在し、それぞれ独自の歴史、支持者、理論的根拠を持っています。テスト主導型開発の場合、たとえば、コーディング担当者は新しいコードを作成する前に、まず、新しいコードが正しく機能することを保証する自動テストを書きます。これは、すべてのコードがアプリケーションの最新の反復に組み込まれる前にテストされることが保証されるよう支援します。
ほとんどのアジャイルな方法論では、それぞれの反復は非常に短く、多くの場合、期間はほんの2、3週間です。スプリントと呼ばれるこれらの反復の間、開発チームはアプリケーションに特徴もしくは機能を追加することに集中します。
迅速化
フォームベースのアプリケーション、レポート・ライター、データベース用のクエリ・ツールなど、アプリケーションの設計や 導入が概念的に簡単な場合もあります。そのような場合、ウォーターフォールやアジャイルのような本格的なアプリケーション開発プロセスは不要な場合があります。そこで登場するのが、ラピッド・アプリケーション開発(RAD)です。RADはアジャイルに分類され、非常に小規模な開発チーム、あるいは一人でも、 ユーザーインターフェースを作成し、内部ロジックをコーディングし、エンタープライズ・データソースにリンクできる、使いやすいツールが特徴です。
従来、RAD開発は、開発者とステークホルダーが「実際の」プログラミング作業を開始する前に、外観と機能について合意できるように、希望するアプリケーションの視覚的なモックアップを作成するために使用されていました。これにより、RADの別の用語であるラピッド・プロトタイピングが生まれました。しかし、ローコード・ツールや コード不要のツールの出現により、RAD開発は、単にそのラピッド・プロトタイプをベースに構築し、導入できる単純なアプリケーションに有用であることが判明しました。さらに、開発期間が数日に短縮されることもあり、これはビジネス・ユーザに喜ばれています。アプリケーションをRADアプローチで構築できるのであれば、多くの場合、そうすべきです。
主な違い
| 導入までの時間の短縮。 アジャイル開発では、組織の従業員や顧客は、機能が複雑になる前にアプリケーションを使用し始めることができます。アジャイルは、新しい機能が絶え間なく追加されるモバイル・アプリケーションでは一般的です。 | 要件が固定的。 ウォーターフォール・モデルは、要件が非常に具体的で、アプリケーションが要件から逸脱してはならない場合に推奨されます。たとえば、医療機器や産業用制御システムのソフトウェアなどです。 |
| プロトタイプから本番へ。 ラピッド・アプリケーション開発プロセスは、シンプルなアプリケーションに最適な場合があります。RAD アプローチとコード不要/ローコード・ツールを使用すれば、開発者や強力なユーザーであっても、レポート・ライター、データベースへのモバイル・インターフェース、データ収集用のフォームを数日~数時間で作成し、導入できます。 | 変化するニーズへの適応力。 アジャイル開発では、要件の変更をシンプルに新しい機能として将来のサイクルに組み込むことができます。アプリケーションは、真新しいポータブル・タブレットで実行できる必要があり、生成AIを組み込む必要がある場合がありますが、アプリケーションが最初に想定されたときには、そのようなことは考慮されていなかった可能性があります。 |
ここでは、特定のユースケースに最適な特定の方法論で構築された、さまざまなエンタープライズ・アプリケーションの例を3つ紹介します。
アプリケーションは、顧客や従業員を支援したり、ビジネスを拡大したり、単に問題点に対処することができます。とはいえ、アプリケーションの開発には多額の費用とリソースがかかる場合があり、新しいソフトウェアにセキュリティ上の欠陥がある場合、会社とその顧客にとってリスクとなる可能性があります。ここでは、リスクの最小化と成功の最大化を支援できるべストプラクティスをいくつかご紹介します。
生成AIは、レポートの要約、ソネットの作成、カスタマーサービスのEメールの下書き、より文脈に沿ったチャットの作成など、多くのテキスト指向のタスクに使用されています。実は、ソフトウェアコードの作成にも非常に優れていることが分かってきました。プログラミング言語も一種の言語であり、ソフトウェアの観点から見れば英語やスペイン語、中国語とそう変わりません。
アプリケーション開発に関して言えば、生成AIは、人間による会話言語で表現された開発者の意図を、完成されたすぐに実行できるコードに変換することに優れています。初期の実験結果によると、このAIが生成したコードは機能的で効率的、かつセキュリティ面でも優れていることが分かっています。特に、データベースアクセス処理やマイクロサービスのセットアップなど、反復的で退屈なコードの生成において、その効果が顕著です。
さらに、生成AIは人間が書いたコードのレビュー支援にも活用できます。たとえば、エラーの検出、脆弱性の発見、ベストプラクティスに準拠していない部分の指摘などを自動で行うことができます。今後、AIを搭載したコーディング支援機能は、主流の開発ツールやプラットフォームにおいて標準機能になると予想されています。
ソフトウェア開発は進化し続ける分野です。前述のように、生成AIは、開発者を面倒なタスクから解放することで大きな助けになります。今後、生成AIはアプリ開発の基盤的存在となり、主流の開発ツールに組み込まれていきます。マイクロサービスなどの新しいアーキテクチャでは、モジュール式のアプローチを活用することで、新しいアプリケーションを迅速に構築できるようになります。しかし、私たちが注目している他の傾向もあります。
セキュリティは最重要課題のまま。 悪質なアクターは今後も組織に脅威を与え続けるため、アプリケーションはセキュリティを考慮して設計および構築される必要があるだけでなく、新しい攻撃ツールがオンラインに登場すると、常に更新される必要があります。
モバイル対応は必須。 多くの人にとって、スマートフォンはプライマリ・コンピューティング・デバイスであるため、組織はモバイル・アプリの構築やモバイル・ブラウザでの使用を想定した設計に精通している必要があります。
開発の民主化。 従業員は今後も継続して、独自のアプリケーションを迅速に開発できるコード不要/ローコードのツールを要求します。品質やセキュリティを犠牲にすることなく、これを推奨する方法とはどのようなものでしょうか。
オラクルは、あらゆるアプリケーション開発プロジェクトに対応できるさまざまな開発ツール、サービス、およびプラットフォームを提供しています。また、オラクルは、お客様のニーズに支援するために、カスタマイズして独自のアプリケーションと統合できる、すぐに使用できる業務アプリケーションの業界随一のコレクションを提供しています。
導入先はどこでしょうか。オラクルは、必要なデータベース、開発者サービス、統合サービス、ストレージを備えた第2世代のOracle Cloud Infrastructure(OCI)を提供しています。これらは、業務アプリケーションが活用できるネットワーク、分析、ビジネス・インテリジェンス、ローコード/コード不要のツール、新しいAIサービスにより強化されています。こうしたオラクルのアプリケーション・セキュリティ、コンプライアンス、コスト管理ツールを加えれば、準備は万端です。
他のクラウドと比較して、オラクルはコストパフォーマンスに優れ、ストレージ・コストが低く、世界48の商用リージョンおよび政府リージョンを備えているため、お客様のニーズをより適切に満たすことができます。次のプロジェクトのクラウドをお探しではありませんか。Oracle Exadataエンタープライズ・データベース・プラットフォームなど、オラクルのオンプレミス・システムをご確認ください。
Oracleの多彩な開発者向けテクノロジーをご覧いただき、Oracle Cloudでアプリケーションを無料で構築、テストおよびデプロイする方法をご確認ください。
開発者もビジネス担当者も、アジリティ、スケーラビリティ、効率性を最大化するよう特別に設計されたクラウドネイティブなアプリケーションからメリットを得ることができます。クラウドがさらに改善する10の方法をご覧ください。
アプリケーション開発者の業務内容を教えてください。
アプリケーション開発者は業務アプリケーションを開発する仕事であり、より正確には業務アプリケーションを開発するチームの一員です。開発者には、アジャイル手法のナレッジ、Java、SQL、Python、JavaScriptなどの1つ以上のプログラミング言語、ソフトウェア・アーキテクチャの確かな理解などの技術的スキルが必要です。具体的な責任には、アーキテクチャ・デザイン、コーディング、テストおよびデバッグ、ユーザーインターフェース設計、データベース統合、レポート作成、ソフトウェア・メンテナンスなどが含まれます。
アプリケーション開発のステップにはどのようなものがありますか。
アプリケーション開発には、8つの主なステップがあり、これらのいくつかは並行して行われることがあり、方法によっては、反復的に実行されることがあります。