検索
特集/連載

「モダンなソフトウェア」とその「開発チーム」の条件Computer Weekly製品ガイド

モダンなソフトウェアとは何か。それを開発するチームには何が必要なのか。今そして今後のソフトウェア開発に求められる条件を紹介する。

Share
Tweet
LINE
Hatena

 モダンなソフトウェア開発は、データ駆動型のビッグデータ分析を取り入れ、AI(人工知能)を内蔵すると論じることもできる。主にサービス中心でWeb拡張可能なものと分類する考え方もある。そうした開発者は、サービスバックボーンを横断して導入できるコードを開発する。再利用可能なコンポーネントやフレームワークの構築に力を入れるソフトウェア開発者もいる。

 企業向けソフトウェア市場には自らをアプリケーションモダナイズのスペシャリストと定義する専門分野がある。多くの場合、この分野のツールプロバイダーはレガシーアプリケーションやメインフレーム、クラウド以前のアプリケーションからの移行に重点を置き、マイクロサービスや仮想マシン、コンテナ、「Kubernetes」を推進している。

モダンなソフトウェアアーキテクチャ

 Volterraはマルチクラウドやエッジを横断してアプリケーションとデータの導入、接続、セキュリティ対策、運用を行う分散型クラウドプラットフォームを提供する。同社CEOで創業者のアンクール・シングラ氏は、マイクロサービスがアプリケーション開発の直近の未来に果たす役割はますます増大するだろうと話す。同氏はKubernetesの急激な普及を理由として、マイクロサービスは2020年以降、一層主流化すると予測した。

 「マイクロサービスはKubernetesのDNAの一部であり、Kubernetesを使ってアプリケーションを開発・導入するための主な方法だ。Kubernetesの台頭に伴い、IT企業はそれを導入できるようにするためのオープンソースツールキットやフレームワークを公開している」

 シングラ氏は、例としてMicrosoftが最近立ち上げたオープンソースプロジェクト「Dapr」を挙げた。MicrosoftはDaprを移植可能なイベント駆動型ランタイムと形容する。Daprはクラウドとエッジで運用可能で、多様な言語と開発フレームワークに対応する耐久性の高いマイクロサービスアプリケーションを簡単に構築できる。

クライアントを選ばないこと

 オープンソースWebサーバ企業のNginxによると、モダンなアプリケーションは「React」(JavaScriptライブラリ)をベースとするユーザーインタフェースであろうと「Android」や「iOS」で実行されるモバイルアプリであろうと、APIを介してバックエンドアプリケーションに接続するアプリケーションであろうと、マルチクライアントに対応する。

 「モダンなアプリケーションは、任意のクライアントでデータやサービスを利用できることが前提とされる」。Nginxの最高アーキテクト兼マイクロサービスエンジニアリング担当上級ディレクターのクリス・ステットソン氏はそう語る。「モダンなアプリケーションは、データとサービスにアクセスするためのAPIを提供する。このAPIは一貫性があり、そのアプリケーションにアクセスするクライアント専用ではない。GUIやCLI経由で利用可能な全機能へのアクセスを提供する」

 Webスケールビジネスが新しいソフトウェアを原動力とする製品やサービスを開発できる能力に目を向けると、モダンなソフトウェア開発が高度な実験や反復によって特徴付けられることが分かる。これはソフトウェア開発の過程で顧客やユーザーのフィードバックを増やす必要があることを意味し、UX(ユーザーエクスペリエンス)に対する感度をDNAに組み込んでアプリケーションを開発していることを示唆する。

 モダンなソフトウェア開発の目標は、価値を実現するまでの時間にますますフォーカスが絞られつつある。IBM Cloud Pak for Applicationsのクラウドネイティブソリューション担当主席アーキテクトを務めるクリス・ベイリー氏によると、ソフトウェアを迅速に開発できる能力だけでなく、ソフトウェアが確実にユーザーや企業に真の価値をもたらすことが重視される。

開発チーム

 ベイリー氏の考えでは、ソフトウェア開発チームは自己完結性を強め、他チームへの引き継ぎやスケジュール調整を減らす必要がある。ユーザーのニーズや品質条件を満たすソフトウェアを基本とするために、行動駆動型開発やテスト駆動型開発を採用しなければならない。

 ベイリー氏によると、ソフトウェア開発チームは継続的インテグレーションを活用して速度を速め、開発プロセスの一貫として品質チェックを徹底させている。リスクを制限し、耐久性を継続的に検証して徹底させるため、カナリアリリース(訳注)のような継続的デリバリーを利用する傾向もある。

訳注:一部のユーザー向けにリリースして問題がないかどうか確認してから全体に展開すること。

 ソフトウェア開発は、変更管理や幅広い人材の多様な考え方を取り入れることと関係する。ソフトウェアが汎用(はんよう)的なビジネス機能を果たすために開発されていた時代は、全てが単一のモノリシックアプリケーションの中にあって、中央のシステムで動作し、ダム端末経由でしかアクセスできなかった。現在では高度にコンポーネント化され、個々の部品が別々のサーバやコンテナで実行されたり、複数のクラウドをまたいで分割されたりすることさえある。

 フロントエンドアプリケーションはどんな端末でも動作する必要があるだけでなく、エンドユーザーを引き付けるユーザーインタフェースの創出が奨励されている。ユーザーから見ると、フロントエンドアプリケーションもバックエンドアプリケーションも優れたユーザーエクスペリエンスを実現する必要がある。

 どんな企業でも最高の開発ツールやサービスを組み立てることは可能だが、それが必ずしも成功を保証するとは限らない。そう語るのはDomoの最高製品責任者兼エンジニアリング担当執行バイスプレジデントのキャサリン・ウォン氏。Domoはクラウドベースのビジネスインテリジェンスツールやデータ仮想化、データインテグレーションを専門とする。

 「事がそれほど単純ならば、成功する新興企業はもっとずっと多いはずだ」とウォン氏は言う。当然ながら、ソフトウェアの構築と拡張が困難な理由はいくらでもある。

 「ソフトウェア開発はチームスポーツだ。われわれのチームには長い間、エンジニアや専門分野のアーキテクト、プロダクトマネジャー、品質保証担当、デザイナー、プロジェクトマネジャー、技術ライターなど、はっきりと定義された役割があった。それらは今も有効だが、思考と経験の多様性をどう実現するか、さらには共感を高めてチーム内のコミュニケーションを向上させるための横断的トレーニングをどう行うかが、他のどんな職種よりも重要性を増している」(ウォン氏)

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る