3P & Technology

People
技術成長戦略

Practice
品質駆動の高速開発

Process
完全公開開発

Technology
当社固有技術活用

People ~技術成長戦略

開発者たちそれぞれの、そして開発チームの技術力を継続的に成長させるためのナレッジがAgile+にはあります。
そのポイントは以下の3点です。

1. 技術レベルの継続的向上

技術レベルを向上させるために新技術の調査・試行・評価を実施しますが、開発チームとは別に調査チームが存在する訳ではありません。開発チームのタスクとして(チケットやかんばんで)実施します。対象技術の選定、実施コストや評価完了時期は戦略的に決定されます。評価後、タスクを担当した開発者の技術・ノウハウは向上します。

2. 獲得した技術をチームへ伝搬

一部の開発者が獲得した技術をチーム全体に伝搬させる必要があります。しかしそのために講習会を開催することはほとんどありません。技術の伝搬は専らペアプログラミングによるものです。技術を具体的な問題解決に利用することで、開発者たちの血肉になります。ペア間のインタラクションによる驚異的な伝搬力が技術的スパイラルアップを発生させます。どんなときもペアプログラミング、そして常にペアのローテーション。それが、最も高速で確実な伝搬方法です。

3. 全工程を担当する多能工・フルスタックエンジニアを育成

開発チームの中に階層はありません。設計者、コーダーやテスターなど専任の肩書もありません。また、担当コンポーネントや担当システムなどもありません。すべての開発者がすべてのタスクを担当します。もちろん得意 / 不得意は存在しますが、すべてのタスクはペアによって実行されます。日々の継続的なスパイラルアップが開発者たちを多能工・フルスタックエンジニアへと成長させます。

Practice ~品質駆動の高速開発

「品質とスピードはトレードオフの関係ではない」それがAgile+の考え方です。常に改修を繰り返すアジャイル開発では、確実な品質の積み上げこそが高速開発を可能にします。品質積み上げのポイントは以下の3点です。

1. シンプルな設計の維持

シンプルな設計とは、ソフトウェアのEoC(Ease Of Changing) & EoT(Ease Of Testing) すなわち、変更容易性と試験容易性を維持・向上させることです。常に改修を繰り返すアジャイル開発では、改修のベースとなる最新バージョンのソフトウェアのEoC & EoTのクォリティによってリリーススピードが大きく左右されます。EoC & EoTのクォリティを維持・向上させる方法、それは頻繁かつ反復的なテストです。
自動テスト / 手動テストを問わず頻繁なテストを実施すること、そして継続することはかなり厄介で面倒です。厄介で面倒なことから決して逃げない組織文化・風土が開発チームにあれば、その解決方法はテストしやすい(EoT)ソフトウェア構造にしてしまうことよりほかにありません。また、テストの項目や工数および改修時の影響度を最小限にするためには、ソフトウェアの結合度を低く、凝集度を高くすること(いわゆる疎結合のソフトウェア構造)が必要です。これはすなわち変更しやすい(EoC)ソフトウェア構造です。
Agile+のクラフトマンシップが頻繁かつ反復的なテストを継続実行させることで、よりシンプルな設計へと動機づけられています。

2. 自動テストと独自のテスティングプラクティス

自動テスト、そして手動テストの自動化は、メソッド単位のユニットテストはもちろん、UIレベルの機能テストまで促進・拡大しています。自動テストのねらいは、既知の機能の正常確認、既知の問題が解決されていることの確認(Checking)です。
これに対して手動テストは、未知の問題や改善ポイントを実際に試しながら(Testing)探索することがそのねらいです。Agile+の手動テストの代表的なプラクティスに探索的テスト(通称:フリーテスト)があります。このテストの与件はテスト項目ではありません。時間 / 工数と検出目標数です。制限時間内に検出目標数を満たします。検出した現象の内容や検出箇所の分布をみることで定性的な品質を判断します。開発者のみが知りうる「構造に依存する現象」を効率的に発生させることが可能です。また、フリーテストであるが故に発生確率が高い現象を効率的に検出することも可能です。リスクに着目したテスティングプラクティスです。その他、ユーザーマニュアルの一行ずつをテスト項目とみなし、マニュアル全ての行に記載された機能 / 操作をすべて実行する通称「一行テスト」もAgile+のテスティングプラクティスです。開発者が実際に手触りを得て未知の問題や改善ポイントを探索することで、Agile+独自の高品質が得られています。

3. 早期のユーザーストーリーテスト / システムテスト

Agile+のプロセスはピュアなアジャイル開発プロセスです。ウォーターフォールとアジャイルのハイブリッドプロセス(ウォーター・スクラム・フォール)ではありません。このためフェイクではないハイレベルな結合テストやユーザーストーリーテストが実現可能であるとともに、各イテレーション内でのシステムテスト(性能テスト / 耐久性テスト / セキュリティテスト)が可能です。また、実際のユーザーに使用いただきフィードバックを早期にいただくことで品質駆動の高速開発が加速されます。

Process ~完全公開開発

Agile+は開発過程のすべてをお客様に公開しています。開発ルームにお客様に常時同席いただく、あるいはデジタル化によってすべての情報をご覧いただいています。進捗はもちろん、内部検出した不具合、規模や工数見積りの予定と実績、開発者間のチャットやブログまでも公開しています。エビデンスではなく、プロセスそのものがお客様の目の前で進行するその様は、さながら「オープンキッチン」です。オープンキッチンのメリットは以下の2点です。

1. 開発チームの規律を生む

作ったソフトウェアもその作り方も常に公開されていることで、開発チームに、そして開発者それぞれに「見られている」感覚が生まれると、Agile+では考えています。その感覚は適度な緊張感と規律を生みます。決して手を抜かないクラフトマンシップと、さらなる品質向上をめざしたチャレンジの組織文化・風土を醸成します。

2. お客様との共創の場をつくる

お客様が常に同席する、頻繁なインタラクションなど、ソフトウェアやそのプロセスを介した濃密なコミュニケーションが相互理解を進行させます。開発チームにはお客様の趣味嗜好への洞察が、お客様には開発チームの技量への期待が生まれ、オープンキッチンが共創の場へと進化します。

Technology ~当社固有技術活用

Agile+は当社固有の独自技術を活用し、さらなる品質向上を実現しています。以下はその一例です。

アジャイル統計的品質管理

長年培ってきた伝統的な統計的品質管理技術に、アジャイル開発の特性に則った統計母集団の発想を適用することで、Agile+の特長である反復型開発にも統計的品質管理を適用させることを可能にしました。
これによって、プロセスと品質の連動性や、品質変化の可視性を高め、予防的な品質管理を実現しています。

Agile+メインビジュアル