iOSアプリケーションの継続的デリバリー ~エンタープライズ品質のiOSアプリケーションを目指して~(梅原直樹(株式会社リコー))
どうも。@sisijumiです。
今年はスマホアプリ開発Yearにしようと思っているので、何か参考になるのではと思い参加したセッションで衝撃。2日間のデブサミでベストセッションに輝きました。。。
バックグラウンド
株式会社リコーで働かれている方です。
新規事業を生み出すために、クラウド関連とiOS関連で日々開発を進めているそうです。
概要
社内でiOSアプリの開発が開始(とりあえず何か作ろうというよくある話。うちもそうでした(笑))
「自分がやります!」と手を上げてみたものの
- 開発経験ない
- チームがいない
- 仕様もない
- 納期だけはある(笑)
という状況
ここからどういったサービスを展開し、またそのサービスを展開するに際しどういった開発スタイルで進めたかというお話でした。
開発したサービス
UCS 少人数向け、ポータブルなテレビ会議システム
(すみません。使ったことないです。。。)
開発スタイル
- 価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなければならない!
- ソフトウェアは価値があるかぎり、開発し続けなければならない!
というミッションを支えるために
- 開発体制
- MMF
- とことん自動化
なんかで仕組みや工夫したこと、試行錯誤したことを余すことなく教えてくれました。
(いやー、ここ本当に良かった)
そもそも何故継続的にユーザにサービスを届ける必要があるのか
非常にシンプルなお話だったのですが、
ビジネスで主導権を得るために継続的にリリースする
ためです。
間違いなく、そのとおりだと思います。競合サービスに負けないために、1日でも早くユーザにサービスを届けることは僕らの仕事だと思います。
開発体制に関して
- 価値を生み出せるチーム自体が価値
本当にそのとおりだと思いました。ソフトウェアを開発するのは人であり、チームです。素晴らしいチームが存在すること自体が、組織として、また会社として価値になります。
- DeveloperとTestEngineer
それぞれの役割を分けているそうです。
TestEngineer:製品の品質について責任をもつ
Developer:コードの品質について責任をもつ
開発するサービスを決めた後、それぞのチームが走ります(仕様と実装とテストが平行!!)。コードを書くDeveloperとテストを書くTestEnginner、それぞれの役割を終え合流した際に、一つの機能開発が終わった時にリリース可能な状態になっているそうです。
いやー、非常に理にかなっています。現実として、1~2名で開発する場合は難しいと思いますが、こういった体制ができれば個々の強みを活かしたチーム作りが出来るはずです。実際に、リコーさんではコストも下がり、リリース速度も上がっているそうです。(素敵すぎる。。。)
MMF(Minimal Marketable Feature)
価値の優先度が高いものから小さく作るということです。ユーザの反応を見て、反応が小さければ×、良さそうであればバージョンアップ、つまり小さく設計して小さく実装することで手戻りを少なくして大きく育てる。いまやるべきなのか、後でやるべきなのかを常に問いかけながら進めているそうです。
提供する価値の優先度 > 実装の優先度
とことん自動化
実機でのテストにこだわり、それを自動化するための試行錯誤については感動を覚えました。何が何でもやってやろうという意気込みが必要ですね。
まとめ
以下のミッションが僕のミッションにもなりました。(ゆくゆくは会社のミッションにしていきたいと思います。)
- 価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなければならない!
- ソフトウェアは価値があるかぎり、開発し続けなければならない!
実現するために、もっとできることがいろいろあるなと感じました。
今は会社でもそのための仕組み作りを進めているので、そこに全力で頑張りたいなと思っています。
セッションが終わった後で、「感動しました!」と伝えさせて頂いたところ、
というつぶやきが(笑)
この方、本当に熱くて面白くていい人だなーと感じました。
また、実現するにはやっぱり自分で手を動かしてやるのが一番だと言われました。指示するだけではだめですね。。。自分で示していかないと。どれぐらい本気でやろうとしているのかが、チームにも会社にも伝わりません。
来年のデブサミでも登壇いただくと思いますが、そのときには良い報告ができるように頑張ります。