📙

アジャイル解説① ~IT森羅万象のアジャイル化~

2024/10/26に公開

はじめに

現在、ソフトウェア開発の潮流がウォーターフォールからアジャイルに向かっていると言われます。アジャイルの本質は、短いサイクルで開発とリリースを繰り返し、顧客のフィードバックを積極的に取り入れながら価値を継続的に提供することにあります。そしてその変化は、単にソフトウェア開発の手法にとどまらず、ITに関わるあらゆるものがアジャイル化、つまり軽量化や柔軟性の向上を目指す流れに乗っていると言えます。これは、モバイルやクラウドの普及、オープンソースの台頭といった技術の進化や業界ニーズの変化によるものであり、IT全体の設計や実装、データ通信、ファイル管理、ツールに至るまで、様々な分野で軽量化と柔軟性の追求が進んでいるためです。以下では、その代表的な例を通じてアジャイル化の進展について見ていきます。

過去の技術傾向

1990年代から2000年代にかけては、IT分野においても、機能が豊富で一つのパッケージにあらゆる機能を詰め込んだソリューションが好まれる傾向がありました。たとえば、リッチな機能が特徴のJavaが登場し、エンタープライズ向けの多機能なプログラミング言語として標準的な位置を確立しました。また、データのやりとりにはXMLが広く利用され、SOAPなどの複雑なプロトコルが通信手段として用いられていました。これらの技術は、当時の需要に合致していましたが、システムの負担や複雑化の原因となり、特に高速でのリリースや頻繁な仕様変更には適さないものでした。

過去の開発プロセス

この時期には、複雑さや多機能性が価値と見なされ、ISO9001やCMMIのような堅固なプロセス管理や品質保証のフレームワークが重視されました。これにより、全体としてウォーターフォール型の開発スタイルが確立し、事前に定めた計画に従って一連の工程を進めることが求められました。しかし、技術の進化やビジネス環境の変化により、迅速な開発や柔軟な対応が求められるようになると、次第に「軽量でシンプルなものが良い」という潮流が生まれてきました。

変化の背景

2010年代以降、ITにおける軽量化・シンプル化が進み、アジャイル的な柔軟性が求められるようになりました。この変化を促進した主な要因として、モバイルデバイスの普及によるユーザー体験の重視、クラウドコンピューティングの台頭による分散システムの一般化、そしてGitHubに代表されるオープンソースの文化の浸透が挙げられます。さらに、システムを小規模な機能単位に分割するマイクロサービスアーキテクチャの採用により、開発・運用の柔軟性が高まりました。

プログラミング言語の変化

プログラミング言語の面では、多機能なJavaに加えて、JavaScriptのエコシステムが大きく発展し、フロントエンドからバックエンドまでをカバーするように進化しました。また、PythonやGoといったシンプルで軽量な言語が普及しました。Pythonはコードの記述がシンプルで、初心者から上級者まで幅広く使いやすいのが特徴であり、プロトタイプの作成や迅速な試行錯誤を行うアジャイル開発に向いています。また、Goは効率的な並行処理が可能で、スケーラブルなサービスの構築に適しており、シンプルさと高いパフォーマンスが求められる現代のアーキテクチャにフィットしています。

データ転送形式の変化

データ転送形式においては、XMLは多くのメタデータを持ち、構造が複雑であるためデータ通信に多くの負荷をかけます。対照的に、JSONはシンプルなデータ構造を持ち、軽量でデータの読み書きが高速です。JSONはWeb APIやモバイルアプリの開発で広く利用されており、リアルタイム性や軽量なデータ交換が求められる場面で有利です。このように、JSONはアジャイルな開発における迅速なデータ交換と互換性を提供するために普及しています。

APIの変化

かつてのSOAPは、厳密な構造やセキュリティが求められるエンタープライズ環境で利用されていましたが、仕様が複雑で重厚なため、モバイルアプリやWebアプリのような頻繁なやりとりには向きません。現在は、HTTPプロトコルに基づく軽量なRESTが一般的です。RESTは構造がシンプルで、柔軟にAPIを設計できるため、短いサイクルでのリリースが求められるアジャイル開発に適しています。

開発ツールの変化

かつてはEclipseやVisual Studioのような多機能で重厚なIDEが開発環境として主流でしたが、10年代以降、VS CodeやSublime Textなどの軽量エディタが支持されています。これらのエディタは必要な機能をプラグインで柔軟に追加でき、軽量で高い拡張性を備えているため、アジャイル開発のスピード感と柔軟な開発スタイルに適しています。また、バージョン管理システムもGitの普及により、分散型で軽量な開発フローが一般的となりました。

インターフェースの変化

UI設計においては、以前は豊富な機能を持つインターフェースが主流でしたが、現在では、ユーザーが直感的に操作できるミニマルデザインが重視されています。これにより、ユーザー体験が向上し、重要な機能にフォーカスしたシンプルな設計が可能になります。ミニマルデザインは、アジャイル開発の頻繁な変更や改善を容易にし、迅速なフィードバックに応えやすいインターフェースを提供します。

ドキュメントの変化

PDFは高い表現力を持つものの、ファイルサイズが大きくバージョン管理や編集が難しい形式です。一方、Markdownはプレーンテキストベースで軽量かつ簡易な書式であり、バージョン管理システムでの扱いやすさに優れています。Markdownは共同編集やレビューが容易で、ドキュメントの頻繁な更新が求められるアジャイル開発において特に役立ちます。

まとめ

以上のように、ソフトウェア開発におけるウォーターフォールからアジャイルへのシフトは、単に開発手法だけでなく、使用される技術やツールにも反映されています。90年代から00年代にかけての「なんでも全部入り」の重厚なアプローチから、10年代以降の「軽量で柔軟な」アプローチへと移行し、現在では効率的で迅速な開発が求められるようになっています。この変化は、モバイルやクラウドの普及、オープンソースの台頭、マイクロサービスアーキテクチャの採用といった技術的な変革によって加速されました。アジャイルは単なる方法論ではなく、IT全体が軽量化し、柔軟に適応する姿勢へと向かう一つの潮流として定着していると言えるでしょう。

Discussion