Framework3で「部品組み立て型開発」を極めるシステム開発標準フレームワークとして楽々Framework3を導入。Framework3による部品組み立て型開発をナレッジ化し、テストファースト、チケット駆動開発により大幅な効率化を実現。システムの提案、開発から運用まで、ワンストップソリューションを提供している。同社では、社内標準としてStruts、Hibernate、SpringFrameworkを組み合わせたJavaフレームワークを使っていたが徐々に時代遅れになっていた。近年、パッケージ製品やサービスの導入により、純粋な開発案件が少なくなり、Java開発技術者育成が難しくなっていた。そこで2012年よりフレームワーク開発ツールの導入検討を開始、2014年に楽々Framework3(以下楽々FW)の導入に至った。テスト工程の工数は大きく変わらなかった。その原因は製造工程が楽々FWの部品組み立て型で大きく効率化されたのに、その他の工程がそのメリットを十分活用できていないからだと考えた。そこで、製造以外の工程を部品組み立て型開発に合わせて最適化することにした。)も解消すべく、具体的には下記項目を目標としたプロセス改善に取り組んだ。FWの部品で実現できる機能を初心者でもすぐにわかるようにする。設計書やテスト仕様書をもっと手間をかけずに作成できるようにする。開発の進捗を客観的に把握できるようにする。FWの部品組み立て型開発を設計工程やテスト工程に活かすために、まず、楽々FWで実現できることを、初心者でも共有の知識として活用できるようナレッジ化し、蓄積することに取り組んだ。ナレッジ化の手順としては、「ナレッジマネジメント」の手法である「SECIモデル」を参考にした。次に、蓄積されたナレッジを元に「機能」を定義し、機能実装ガイドラインとしてまとめた。アクション、入力チェック、DB更新等、概ね1日以内で実装が終わる程度の作業量のものを1機能として定義し、機能IDを付与した。機能IDは、システムが異なっても同じ番号となるようにし、社内の共通言語化を図った。ある程度機能ごとに実施すべきテストケースが決まるはずなので、これをテストガイドラインとして定義した。実装手順が単純なものについては、楽々FWの管理画面「RakStudio」上の設定値が適切であることを確認できればテスト完了と定義、テスト省力化も図った。これは楽々FWで品質が担保されているものに対してテストを行う必要はないと判断したからだ。ページの先頭へ設計書も部品組み立て型にナレッジ化された機能実装ガイドラインとテストガイドラインから必要な機能の記述箇所をコピーすることで画面機能定義書やテスト仕様書を作成できるようにした。これにより、設計書やテストケースの作成が標準化され、作成工数も大幅に削減することができた。進捗率の定量化を図るためにテストファーストとチケット駆動開発を導入した。製造対象画面の機能ごとにチケットを払出し、チケットを受領した製造担当者は、対象機能単位に実装・テストを行いチケット完了とする。これを繰り返すことでプログラムを仕上げていく。チケット完了=テスト済みの機能の実装となり、プログラム1本の進捗率は該当チケットの消化率として正確に把握できるようになった。プログラム1本の開発をチケット単位に複数の担当者に割り振ることや、プログラム作成途中での開発引継ぎも容易になった。チケット管理にはOSSのRedmineを利用しており、チケット消化状況が一目でわかるため、それが開発要員のモチベーションアップにつながるという効果もあった。FW導入直後のシステム開発では、製造工程の工数が1/6に削減、システム要件定義~内部結合テスト工程で1/2の工数削減だったが、今回の開発プロセスの改善により、システム要件定義~内部結合テスト工程の工数が1/5程度まで削減するという大きな効果を得ることができた。なにより収穫だったのは、ナレッジ化により実装方法やテスト内容を明確にしたことと、実装作業を機能ごとにチケット化したことで難易度の低い作業から割り当てることが可能となり、経験の浅い新人でも簡単にプログラムを組め、早期にプロジェクトメンバーとして活躍することができるようになったことである。本取り組みは人材育成にも大きく貢献できることが証明された。現状は手動でテストを実施しているので、これをスクリプト化し、自動化を実現したいと考えている。テストスクリプトも機能ごとに部品化することで、スクリプト作成の効率化とさらなるテスト工数削減を目指す。障害発生率が高い機能について、テストケースの不足を疑い改善し続けることで、品質向上に寄与できる。精度向上も目指したい。テスト、リリースをウォータフォールで、機能実装とテストをチケット駆動型開発で行った。今後はこの新たな開発プロセスを横展開して「部品組み立て型開発」を定着させる。ナレッジの蓄積・拡充とブラッシュアップを進め、テスト自動化も含めたアジャイル開発を視野に究極の開発プロセスを目指す。