PR

イテレーション例から学ぶ設計開発テストサイクル

イテレーション例による開発サイクル解説

イテレーション例の理解
🔄

基本概念

設計・開発・テスト・改善を短期サイクルで繰り返す手法

💻

プログラミング例

for文やwhile文による反復処理の実装パターン

🏗️

開発手法

アジャイル開発でのスプリント運用事例

イテレーション例の基本概念と定義

イテレーションとは「反復」や「繰り返し」を意味する英語「iteration」から来ており、ソフトウェア開発においては設計・開発・テスト・改善という一連の工程を短い期間で何度も繰り返す開発サイクルの単位を指します。

参考)イテレーションとは?ソフトウェア開発・プロジェクト管理におけ…

アジャイル開発において、イテレーションは通常1〜4週間の期間で設定され、各サイクル内で具体的な目標を設定し、その目標に基づいて開発作業を進めます。従来のウォーターフォール型開発では全ての工程が終わってから最後にテストを行いますが、イテレーションを用いることで開発途中での変更や追加が容易になり、問題の発見や改善がしやすくなります。
イテレーションの概念は、ソフトウェア開発だけでなく、プログラミングにおける処理の繰り返しにも適用されます。プログラムにおいてイテレーションは、配列の各要素など、同種の複数の対象に同じ処理を順番に繰り返し実行する処理や、そのような処理を記述したコードのことを指します。

参考)イテレーション(イテレート)とは?意味を分かりやすく解説 -…

イテレーション例における実装パターン

プログラミングでのイテレーション例として、最も基本的なものはfor文とwhile文による反復処理があります。For文は初期化式、終了条件式、更新式がfor文に含まれており、反復処理の回数があらかじめ分かる場合に適用されます。

参考)https://ja.javascript.info/while-for

for(int i = 0; i < 10; i++) {

System.out.println("繰り返し処理: " + i);

}

一方、while文は条件の真偽判定が行われるまで反復処理の回数が分からない場合に使用します。While文では、条件が真(TRUE)である間は所定の処理を実行し続け、条件が偽(FALSE)になったらwhile文を終了します。

参考)R入門 反復処理(for, while)

配列に対するイテレーション例では、C++のstd::arrayやstd::vectorなどのコンテナクラスがメンバ関数begin()とend()を持っており、これらを使用してイテレータによる繰り返し処理を実装できます。JavaScriptにおいても、continue文はwhile、do-while、for、label文を再起動する際に使用され、ラベルなしでcontinueを使用すると、その文を囲んでいる最も内側のループの次のイテレーションへ進みます。

参考)イテレータの解説をするなんて今更佳代 #C++ – Qiit…

イテレーション例によるアジャイル開発実践

実際のイテレーション例として、実名型グルメサービス「Retty」や料理レシピ動画サービス「kurashiru(クラシル)」の開発では、アジャイル開発が用いられ、イテレーションを回して開発が進められました。これらのプロジェクトでは、短いスパンで開発を進めることで、顧客の要望にすぐに答えることが可能となりました。
AnyMind Group社では、開発においてスピーディーに成果を発揮することを何よりも重視し、以下のような方針でイテレーションを運用しています:

  • チームは小さく
  • スプリント・イテレーションは1週間で回す
  • マネジメントは現場の邪魔をしない
  • 個人よりチームの目標達成にフォーカスする

各イテレーションでは、開発案件を絞り込み目標を設定した後、設計・製造・テスト・納品と開発を進めます。その後、結果を振り返り、発生した問題点や1回の納品で新たに生じた顧客側の要望などを取り入れ、次の開発サイクルに生かしていきます。

参考)イテレーションとは?背景や具体例、アジャイル開発についても徹…

イテレーション例とスプリントの違い

イテレーションとスプリントは、どちらも反復的な開発プロセスを実現するための手法ですが、それぞれ異なる文脈で使用される点が特徴です。イテレーションは主にエクストリームプログラミング(XP)の文脈で用いられ、技術的な側面に焦点を当て、継続的な改善を目指します。

参考)アジャイル開発におけるイテレーションとは?スプリントとの違い…

一方、スプリントはスクラムフレームワークの中で使用される概念であり、チーム全体の協力とコミュニケーションを重視します。スプリントでは、具体的な機能や成果物を段階的に完成させることを目指し、通常は2週間から4週間の期間で設定されます。
スクラムにおけるスプリントは、通常1〜4週間の期間で区切られた時間限定のサイクルで、この期間中にスクラムチームは特定の価値を生み出すために作業します。スプリントは次のスプリントで実行される作業を整理し、スプリントの目標を決定するスプリント計画イベントから始まり、毎日のスクラムミーティングで進捗状況の確認、リスクと潜在的な解決策の議論を行います。

参考)スクラムにおけるスプリントとイテレーションとは?主な違い

イテレーション例による数値計算アルゴリズム

数値計算分野でのイテレーション例として、反復法(iterative method)があります。これは数値解析における手法のうち、反復計算を用いるものの総称で、有限回の手順で解を得る直接法に対比される計算手法です。

参考)反復法 (数値計算) – Wikipedia

反復法では、初期値から始めて計算を繰り返し、解に近似する値を段階的に求めていきます。例えば、連立方程式Ax = bを解く際の反復法では、打切り誤差を生じるため一般に直接法に比べて精度が落ちるものの、大規模な問題に対しては有効な手法となります。

参考)http://ri2t.kyushu-u.ac.jp/~watanabe/RESERCH/MANUSCRIPT/KOHO/CONVERGE/converge.pdf

DAZ STUDIOにおけるイテレーション例では、レンダリング設定において「イテレーション(何回も計算して少しずつ描画精度を上げていく)」が進むごとにノイズ除去処理がかかるようになるため、適当なところでレンダリングをやめても結構キレイな画像ができるというメリットがあります。Post Denoiser Start Iterationパラメータでは、ノイズ除去をイテレーション何回目で開始するかを設定でき、Smoothing IterationやCollision Iterationの数字を少し上げることで品質を向上させることができます。