HapInS Developers Blog

HapInSが提供するエンジニアリングの情報サイト

HapInSの開発プロセス

はじめに

本記事では、HapInS開発プロセスならびに開発時に重要視しているマインドセットについて紹介します。

開発手法 / 方針

HapInSでは、以下の開発手法ならびに方針に沿った開発を行っています。

それぞれ具体的に見ていきましょう。

プロトタイプ、MVP開発

HapInSではプロダクトを開発する際に、プロトタイプやMVPを活用し効率よく不確実性を低減する取り組みを行っております。

プロトタイプ

プロトタイプに関しては、ペーパープロトやローファイプロト等を用いてワイヤーフレームベースでデザインを整理し、お客様の開発したいプロダクトを具体化していきます。

参考) ペーパープロトローファイプロト

また市場ニーズを探りたい場合は、ランディングページやGoogleフォーム等を用いて簡易的にニーズを探ることも行います。

プロトタイプを活用することで、コストを最小限に抑えつつ市場ニーズの検証や欲しいシステムのイメージを擦り合わせることが可能です。

https://miro.com/ja/templates/low-fidelity-wireframes/

MVP開発

実際にプロダクト開発を行い検証を行う場合も、MVP (Minimum Viable Product) と呼ばれる実用最小限の機能を開発し検証を行います。

MVPの説明において下記の図が有名ですが、フェーズ毎に実用可能な機能を開発することが特徴です。

また各フェーズの機能開発を通じて、仮説検証を行い学びを得るという考えがMVPのベースとなっています。

https://blog.crisp.se/2016/01/25/henrikkniberg/making-sense-of-mvp

アジャイルスクラム開発

HapInSではアジャイル開発を採用しております。

またアジャイル開発には複数の手法がありますが、その中でもスクラム開発という手法を採用しています。

スクラム開発については別記事で紹介しようと思いますが、「経験主義」や「継続的改善」の考えをベースに2週間等のサイクルで各種スクラムイベントをイテレーティブに回していきます。

またそのサイクル内でお客様が確認できる単位で機能を実装し、実際のプロダクトのデモベースでレビューを行うのも大きな特徴の1つです。 (参考

https://www.soldevelo.com/blog/is-agile-always-the-best-solution-for-software-development-projects

コア / ノンコア

コア / ノンコアとはお客様のコアな事業 / 機能にフォーカスしてシステム開発を行い、ノンコアな事業 / 機能に関してはSaaSを活用する考え方を指しています。

コアな事業に関しては、お客様のビジネス成長に大きく繋がる可能性があるため、積極的にIT投資をしていく必要があると考えています。

一方でノンコアな事業に関しては個別にシステムを開発するのではなく、SaaSを活用することで効率よくIT導入を進めていくことをおすすめしていいます。

弊社としてはフルスクラッチで全て開発する方が短期的な利益に繋がりますが、お客様の限られたIT投資予算を効果的に活用することを重視して提案させていただきます。

クラウドネイティブ

HapInSでは基本的にクラウドサービスを活用し、クラウドネイティブなシステム開発を行っています。

クラウドサービスを活用することで、スケーラビリティや柔軟性、可用性の高いシステムを簡易に構築することが可能です。

またシステム開発の本質的な部分にフォーカスするための、様々なエコシステムが揃っていることもクラウドサービスを活用するメリットの1つです。

マインドセット

またHapInSでは、開発手法 / 方針に加え各人のマインドセットも重要視しております。

HapInSで重要視しているマインドセットは以下です。

  • 顧客志向
  • 仮説思考
  • エッセンシャル思考
  • アウトカム思考

顧客志向

HapInSでは徹底した顧客志向を重要視しています。

受託開発でよく耳にする話として、開発会社が自社の利益を優先し不必要なカスタマイズや機能を契約に盛り込むケースや、継続的な保守性を犠牲にした短期思考のシステム開発が行われるケースです。

上記のような開発会社に依頼をした場合、IT投資のROI (投資利益率 / 費用対効果) が低かったり、機能追加や機能変更が難しくなったりしてしまいます。

一方HapInSでは、顧客のビジネス成長に貢献し、継続的な保守性を担保することを重要視しています。

その結果お客様のビジネスが成長し追加のIT投資を行う際に、再度HapInSを選んでもらえることを目指して開発を行なっております。

仮説思考

仮説思考はこの本や様々なところで取り上げられていますが、HapInSでは全てを仮説から始め学びに繋げることを重要視しております。

昨今の変化が激しい状況下において、システム開発には常に不確実性が存在します。

その中で効果的に不確実性を排除し、本質的に価値のあるシステムを開発するためには仮説思考が重要です。

全ての機能開発を仮説ベースで取り組み、開発した機能を検証することで学びに繋げます。

これはリーンスタートアップの中で取り上げられている、「構築」 > 「計測」 > 「学習」の考え方にも繋がります。

このループを回すことで、効果的に必要な機能を探ることが可能だと考えています。

https://www.slideshare.net/hiranabe/startup-lessons-learned-eric-ries-at-sllconf-2011-japanese-translation

エッセンシャル思考

エッセンシャル思考とは、この本で紹介されている思考法で「より少なく」「より良い」ものを追求する思考法です。

この思考をシステム開発に適用すると、開発する機能をより減らし、その中でより良い価値を提供することだと考えています。

システム開発を行っていくと欲しい機能は継続的に増え続ける一方で、作った機能が本当に使われ価値を提供できるケースは稀です。

(※ 他記事でも紹介した調査でも64%機能が使われていない状況があります)

そのため限られたリソースを最大限に活用するために、システム開発においてもエッセンシャルな思考が重要です。

アウトカム思考

アウトカム思考とは、プロダクトマネジメントを行う上で主流となっている思考法で、開発した機能数(アウトプット)ではなく提供価値(アウトカム)を重視する考え方です。

受託開発においてはどうしても、想定していたスケジュールに沿って機能がリリース出来たのか、納期に対して遅延なく納品出来たかのかなどを重視してしまいがちです。

このような考え方の元開発されたシステムは、お客様が本当に欲しかったものと乖離したり、市場ニーズを満たさない危険性を孕んでいます。

そのためアウトカムを重視しお客様と密にコミュニケーションを取ることで、本質的に価値のあるシステム開発を進めていくことが重要だと考えています。

開発プロセス

HapInSで取り組んでいる開発プロセスの一例を紹介したいと思います。

開発内容や開発規模に応じて、プロセスの増減はあるため参考としてご覧ください。

中規模の新規事業開発向けシステム開発を例にご紹介します、主に以下のプロセスをベースに開発を進めます。

ビジネス要件整理

ここではお客様の提供するビジネス要件や、開発スケジュール等を整理します。

ビジネス要件についてはリーンキャンバスやリーンUXキャンバスをベースに整理します。

この中で解決すべき課題や市場調査の結果、想定ユーザについてヒアリングさせていただき、その過程で私たちもビジネスへの理解度 / 解像度を高めていきます。

https://monstar-lab.com/dx/solution/lean-canvas

https://www.amazon.co.jp/Lean-UX-%E7%AC%AC3%E7%89%88-%E2%80%95%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%81%AA%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AB%E3%82%88%E3%82%8B%E3%83%97%E3%83%AD%E3%83%80%E3%82%AF%E3%83%88%E9%96%8B%E7%99%BA-LEAN/dp/4873119987

要求ヒアリング

ビジネス要件を整理した後は、要求事項をヒアリングさせていただき整理していきます。

ヒアリングに関してはユーザストーリーマッピングという手法で行います。

こちらは Jeff Patton氏が考案した手法で、こちらの本で詳しく紹介されています。

この手法ではユーザの行動をストーリーに沿って整理し、各要素毎に詳細を深掘り、リリースラインを整理していく手法になります。

ストーリーベースで整理することで、全体感が掴め想定漏れが少なくなったり、全体に対してリリースラインを整理出来たりなど色々なメリットがあります。

https://plan.io/blog/user-story-mapping

モデル、ユースケース整理

要求事項を整理したあとは、システム目線での情報整理を行います。

このフェーズではまず登場する用語を整理しモデリングを行います。

その後整理したモデルをもとに、ユースケースを整理し各モデル間の関係を整理していきます。

こちらはドメイン駆動開発(DDD)とユースケース駆動開発の考え方をベースに行っていきます。

開発初期の段階で全て正確に整理することは不可能なため、ベースとなる主要な部分のみを整理しシステム開発を進める中でアップデートしていきます。

https://www.amazon.co.jp/%E3%83%A6%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%82%B9%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-OOP-Foundations-%E3%83%80%E3%82%B0%E3%83%BB%E3%83%AD%E3%83%BC%E3%82%BC%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B0/dp/4798114456

プロトタイプ、MVP開発

ユースケースの整理が完了したら、プロトタイプもしくはMVPの開発に移ります。

画面遷移や構成が複雑な場合は、ローファイプロトなどを用いてお客様と開発システムのイメージを詳細化します。

また開発に移る場合は、検証したい仮説に対して最小限の実用可能なプロダクトを定義し開発していきます。

ここではユーザストーリーマッピングで整理したリリースラインをベースに、開発の優先度やスケジューリングを行います。

また開発に関してはスクラムベースで開発を行い、2週間等のサイクルで目に見える形でプロダクトを作りレビューしていきます。

効果検証

MVPの開発が完了したら、プロダクトの仮説/効果検証に移ります。

新規事業の場合リリース前の段階であれば、開発依頼を行なったお客様に実際に触っていただきユーザビリティ等の確認を行なっていただきます。

実際にリリースした後や、ベータ版としてクローズドに公開可能な場合は、ユーザの利用状況をアクセス数等で定量的に分析したり、ユーザにアンケートを取ることで定性的な分析を行います。

ここで得られた検証結果をもとに、プロダクトの方向性や機能を再考し、再度開発フェーズに移ります。

さいごに

HapInSでは、上記の通りお客様のビジネス成長に貢献できる形で開発を進めております。

また開発手法やプロセスに関しても、様々な手法から最適なものを選択し提案することが可能です。

「まだシステムの要件が決まってない」「お願いしようとしている開発会社で良いのか分からない」「見積を貰ったけど何を基準に選定すれば良いか分からない」など、どんなお悩みでも構いませんので、是非一度HapInSのエンジニアと会話してみませんか?

blog.hapins.net