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