こんにちは。
ライジングサン・システムコンサルティングの岩佐です。
この記事では、私達がお客様の社内システム内製化をご支援する「共同開発」サービスをご提供する時に使っている、欠かせない3つのツール・サービスをご紹介します。
私達は、事業部門のご担当者と共同で、ひとつのソリューションを開発しています。この「共同開発」サービスは、一般的にお客様が要望を私達に伝え、私達がそのご要望に合わせてソフトウェアを開発する…と思われがちですが、じつはそうではありません。
私達の共同開発は、お客様も私達も、同時にレイアウト(画面)を作り、レポート(帳票)を作り、そしてプログラミングします。
さらに私達はお客様のオフィスに常駐して開発をすることはありません。
私達のお客様は、情報システム部門ではなく事業部門が中心なので、常駐させていただくにはお客様の「本業」のじゃまになる可能性もありますし、何より開発作業はやはり自社内で行うほうが効率が良いからです。
このお話をすると「クライアント先に常駐もせずに、本当にそんな共同開発なんてできるのか?」と思われがちですが、実際に私達がどのようにリモート環境での共同開発を実現しているのかを、ツールの視点からご紹介したいと思います。
1.クラウド開発サーバ
私達は、お客様との共同開発が始まると、まずお客様と私達が同時にアクセスすることが開発用のFileMakerServerをクラウド上に構築します。
こうすることで、お客様と私達がひとつのソリューションに対して、同時にアクセスすることができます。そして最新バージョンのソリューションは、常にこのサーバ上で「実際に動くソフトウェア」の状態にしておきます。
こうすることで、私達がつくったものを、お客様がいつでもどこでも実際に動かしていただき、そして評価いただくことができます。
またこの共同開発サービスの目的は、お客様の社内システム内製化のご支援です。なのでお客様がつくったものを私達が実際に動かし、そして評価することもあります。
これはお客様と共同開発する、そして何よりもスピードを持って開発する上で非常に重要な事です。
私達は一般的なソフトウェア開発プロジェクトで用いられる「ウォーターフォール型」ではなく、「アジャイルソフトウェア開発手法」を使って開発します。
この手法は、包括的なドキュメントを元にした合意形成ではなく、お客様と私達が「実際に動くソフトウェア」を評価しながら合意形成をはかります。
お客様との共同開発では、この「実際に動くソフトウェア」をいつでもお客様が実際に動かして評価できるようにしておくことが極めて重要です。
なぜなら、お客様には「本業」があるからです。
私達のお客様は、情報システム部門ではなく事業部門なので、ソフトウェア開発は本業ではありません。
当然、仕事時間の6割・7割は、ソフトウェア開発以外の仕事が占めるわけです。
例えばいくら「実際に動くソフトウェア」を評価しながら合意形成を図ろうとしても、それがお客様の都合の良い時間・都合の良い場所から簡単にアクセスでき、そして実際に動かすことができなければ、評価の度に毎回お客様先にお伺いをして、評価用のデバイスをお渡しして、その場で評価していただかなくてはなりません。
これはお客様の立場に立って考えると非常に負担です。
まず私達に合うための時間を確保しなければなりませんし、そのための会議室予約、利害関係者への呼びかけ、日程調整等、ひとつのミーティングを開催するために、多大な労力が発生します。
このような負担は、本業をもつ事業部門のご担当者様にはできるだけ掛けたくありません。
その為に、私たちは共同開発プロジェクトがスタートしたらすぐに、クラウド上に開発サーバを設置し、いつでもどこからでも、お客様の都合の良いタイミングで評価いただけるような環境を用意するのです。
また、私達がお客様と共同開発するシステムは、一般的に言われる「ツール型」のソリューションではなく、業務全体を包括的にカバーする「基幹系」と呼ばれるソリューションです。
ツール系のソフトウェアとは、チャットやワープロ、表計算ソフト、もしくは経費精算や各種申請業務をサポートするソフトウェア等、ある特定の連続性のない業務をサポートするものです。極端な表現をすると、そのシステムが1〜2日止まってしまおうが、企業活動に大きなダメージはないようなソフトウェアを「ツール型ソフトウェア」と呼びます。
一方「基幹系ソフトウェア」とは、物流システムや在庫管理システム、生産管理システム、販売管理システムといったその企業の主な活動を包括的にサポートするソフトウェアを指します。このシステムが数時間でも止まってしまうと、その間は企業の主活動ができないということなので、簡単に止めることはできませんし、今動いているものに対して、機能の追加や修正も簡単に行えるものではありません。
なので、実際のビジネスで動いている環境(商用環境)とは別に、開発環境を持っておくことは、継続的なソフトウェア開発に不可欠なのです。
2.動画とGoogleDrive
お客様に私達がつくった機能を評価してもらうためには、どのような機能を、どのような効果を狙って開発したのか、もしくはその具体的な操作方法に関してお客様にお伝えしなければなりません。
その伝達方法として、私達は「動画」を使っています。
例えば、新しい追加機能を開発環境に実装すると、それを説明する動画を作成し、その動画をGoogleDriveにアップロードします。
GoogleDriveとは、検索エンジンでお馴染みのGoogleが提供するオンラインストレージサービスで、数十GB・数百GBとった極めて大容量のストレージを安価にクラウド上に用意することができます。
このGoogleDriveが動画の共有プラットフォームとして優れているのは、まず特定のアカウントのみに公開できるアクセスコントロールが可能なこと、そしてMP4フォーマット等の一般的な動画フォーマットをアップロードしておくと、一定時間後にストリーミング可能な動画に自動変換してくれることです。
こちらが、GoogleDriveにアップロードしたストリーミング可能な動画のサンプルになります。
※こちらはアクセス権設定をURLリンクを知っている全ての人から閲覧可能な設定にしていますが、実際には許可したGoogleアカウトでログインしているユーザにしか閲覧できないような設定でお客様と共有します。
ストリーミングとは、その動画ファイルの全てのデータをクライアント側にダウンロードしなくても、YouTubeの動画のように、再生ボタンを押せばすぐに動画の再生が開始される仕組みのことです。
私たちは、アップロードした動画ファイルがストリーミング可能になった状態で、メールやチャットでお客様に「◯◯◯の追加機能を開発環境に実装しました。操作方法や裏側の仕組みについてはこちらの動画をご確認ください。」という短いメッセージをお送りします。
そうするとお客様は、ご都合の良いタイミングでその動画をご覧いただき、操作方法や裏側の仕組みを確認。その後、開発サーバにアクセスして、実際にソフトウェアを動かしていただき、そのフィードバックをいただきます。
動画で具体的に操作方法を伝達し、そして開発環境で実際に触っていただいてのフィードバックなので、その内容は極めて的確かつ正確です。
一般的なソフトウェア開発プロジェクトの現場では、設計書や仕様書などといった抽象的な文字情報でのやり取りがほとんどですが、このように動画をうまく使うことで、お客様とのコミュニケーションの質が格段に向上します。
Skypeの画面共有
お客様からのフィードバックを受け取る時に、「メールやチャットよりも話したほうが早い」ということはよくあります。私達も、お客様からはできるだけ質の高いフィードバックを受け取りたいので、メールやチャットよりも実際に対話を通じたコミュニケーションを重視します。
この時に便利なのがSkypeです。
Skypeには、通話機能の他に画面共有機能があります。
Skypeの画面共有機能とは、対話しているどちらかの画面を相手の画面に映して、自分が操作している様子をリアルタイムで相手に見てもらうための機能です。
これは、細かい操作性の確認や、少し込み入った業務ルールの確認、もしくは複雑なデータ構造や、コードの解説等を行うのに極めて有用です。
さらにこのSkypeでの会話を録画しておくことで、議事録と同じような効果を生むこともできます。
私達の開発スタイルでは、お客様と「言った・言わない」のトラブルになることはまず無いので、このSkypeでの対話の様子を録画する目的は発言責任の「証跡」を残すものではありません。
この会話の様子を残す最大の目的は、お客様がおっしゃることを何度も繰り返し反芻して、お客様がおっしゃる発言の後ろ側にある根本的な主張や問題を分析するために使うのです。
一度Skypeミーティングが終わった時に、改めてその様子を収録した動画を確認すると、会話中には気づかなかった重要なことに気付くことが多々あります。
このような対話にのめり込んでいる時には気付かない…つまり木を見て森を見ずの状態に陥りがちな「対話」というコミュニケーションでも、一度時間をおいて見直すことで、対話全体を「俯瞰」して見ることができるのです。
まとめ
この記事では、私達がお客様との共同開発プロジェクトで欠かすことのできない3つのツールについてご説明しました。
まずツール1の開発サーバは、「本業」をもつお客様が、いつでもどこからで実際に動くソフトウェアを評価いただくためにご用意するものでした。
次のツール2の動画は、会議の時間を割いていただくことなく、私達が開発した機能の詳細を、お客様により解りやすく解説するための手段として使っているものでした。
最後のSkypeは、画面共有機能を用いながらその対話の様子を録画し、後からその動画を見直すことで、対話全体を俯瞰して振り返ることができる効果を見込んで使っているというものでした。
この3つのツールを使う根底にある思いは、できるだけお客様に本業に集中してもらいつつも、質の高いコミュニケーションを実現して、より良いソフトウェアを、スピード感をもって開発することです。
この記事でご紹介した、私達が実践しているアイデアを全て採用できる開発プロジェクトは少ないかもしれません。
未だにクラウドに開発サーバを設置したり、クラウド上でドキュメントを共有したり、Skypeの利用を禁止している企業が多々あるからです。
もちろん様々な理由があっての処置でしょうから、それそのものを批判することはできないと思います。
しかし、このようなツールをこのように工夫して使うことによって、目に見えないコミュニケーションコストを大幅に削減することができます。
そしてそのことで、私達自身ももちろんですが、お客様の負担を大きく減らすことができるのです。
最後までお読みいただきありがとうございました。
この記事を読まれた方には、こちらの記事もおすすめです。