５ステップで出来る! オフショア・アジャイル・チーム体制環境構築編

###AppSociallyのChatCenterで実践したアジャイル開発 vol. 1

*この５ステップは社内用のアプリ分析ツールをAngularベースのIonicでアプリを作成し、一人でアジャイル開発を回しながら、だんだんとチームにアジャイル開発を浸透させていった体験記です。参考程度に御覧ください。*



 弊社AppSociallyではベトナム開発チーム・ウクライナ開発チームを併用して現在のプロダクトの開発を進めています。　ベトナムと日本の時差は２時間で、開発チームはベトナムのMITと言われるハノイ工科大学Hanoi University of Science and Technology の卒業生を中心として構成されています。

#ココが凄いよ、ベトナム人！
あまり有名ではありませんが、ベトナムは数学に強く、数多くの物理学者や数学者を排出する、東南アジアきってのIT大国です。
Flappy Birdの作者もベトナムのエンジニアですし、
![1_i_fE715PBGBaOg5L-XT2Tg.jpg](https://qiita-image-store.s3.amazonaws.com/0/44713/0542a7ca-7153-5640-00ca-929fe035facf.jpeg)

人工知能の権威である Andrew Ng氏も、そういえばベトナム人でした。
Stanford教授、百度Baiduで自動運転のディープラーニングの顧問をしていました。


![1_Jv0NnCCMXEmt0eEh0KO3WQ.jpg](https://qiita-image-store.s3.amazonaws.com/0/44713/1f1e9c2a-3708-3ca3-9c75-0a739eceea9c.jpeg)


[Andrew Ng
Machine Learning | Coursera Machine learning is the science of getting computers to act without being explicitly programmed. ](https://www.coursera.org/learn/machine-learning)

この機械学習のコースは人工知能を学びたい方にとって最高の入門の教材なのでおすすめです。僕もお世話になりました。機械学習からディープラーニングまでおさえてあり、非常に分かりやすい説明です。Andrew Ngさんありがとう。なんと無料です。
まだまだありますが、ベトナム人の凄さをまとめてあったリンクがあったので貼ります。


#世界が注目！こんなにすごいよベトナム人


[みなさんはベトナム人と聞くとどういったイメージが湧きますか？親日家、器用、お酒好き、、などと様々かと思います。ベトナムでオフショアを検討された方であれば、勤勉性というのが上位に挙がってくるのではないでしょうか。事実” ベトナム人の優秀さ… ](https://evolable.asia/eva-blog/80/)




と、ベトナムのITの強さが分かっていただけたと思いますが、そのベトナム開発チームといかに連携を取り開発していくかがこのブログのテーマです。
#シリコンバレーでもオフショア開発
弊社は、500Startupに選ばれシリコンバレーを拠点としたスタートアップでありますが、
以前とあるシリコンバレーのアプリ会社のiOSのSDKをインストールする際に、Objective-Cで書かれたものだったのでSwiftでの書き方を問い合わせると、インド在住のエンジニアから返信が返ってきました。シリコンバレー経由での対応だったのか激遅対応でしたが。シリコンバレーではオフショアが主流かどうかはわかりませんが、珍しい存在でもないようです。
#アジャイル開発とは何か？

そもそもアジャイル開発が何かわからない方は、

[アジャイルソフトウェア開発 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA
)
	
Wikiやらグーグル先生に聞いてください！ 余裕があればアジャイル開発の概念について記事を書いていきたいと思います。


#ざっくりアジャイル概念解説
ざっくり説明すると、プロダクトを１から１００まで隅々まで設計するウォーターフォール型の開発手法に問題がありました。
例えば、バグが多く生みやすく、時代の変化に対応できない、顧客の需要の変化に対応できない、営業との連携がうまく取れない、作業の中の無駄が多い、、などなど
必ずしもウォーターフォール型の開発手法だけに起因している問題とはいえませんが、こんなかんじです。ウォーターフォールへの問題意識からこのブログに流入している人はあまりいないと思うのでこの辺で割愛します。
#時は２００１年、エンジニアたちが立ち上がった、、
そういったソフトウェア開発に問題を強く感じたエンジニアたちが、立ち上がりました。

![1_LFCxPgyKD8azXDRASgUHow.png](https://qiita-image-store.s3.amazonaws.com/0/44713/12e438b0-ec8a-599d-edba-38991e4ca906.png)

2001 FEBRUARY + ‘THE LODGE’ AT SNOWBIRD SKI RESORT + 17 THINKERS = AGILE MANIFESTO
https://setandbma.wordpress.com/2012/03/23/agile-history/
そしてソフトウェア開発とはこうあるべきというプロダクト開発者にとっての経典を作りました。エンジニアだけでなく、営業、デザイナーなどプロダクトに関わる人すべてのためのものです。 その経典に書かれた理想を実現するために精進しなければいけません。
ほかに例えるなら、憲法と法律の関係のような感じです。ちょっと違いますか。
プロトコルを達成できれば手法はなんでも良いという、京都議定書みたいな感じですね。余計わかりにくくなりましたか。
#アジャイルの聖典を読もう
###アジャイルソフトウェア開発宣言
私たちは、ソフトウェア開発の実践 あるいは実践を手助けをする活動を通じて、 よりよい開発方法を見つけだそうとしている。 これらが私たちの価値と原則である。...
[アジャイルソフトウェア開発宣言全文](http://agilemanifesto.org/iso/ja/manifesto.html)
###アジャイル宣言の背後にある原則
[アジャイル宣言の背後にある原則全文](http://agilemanifesto.org/iso/ja/principles.html)
agilemanifesto.org	
つまり、この２つの思想ともいうべき理想を実現していく開発のことをアジャイル開発と呼びます。

#主流のアジャイル開発手法 スクラムとXPって？
 そのアジャイル開発を達成するために生まれたのがエクストリーム・プログラミング(XP)やスクラムなどと言われる手法です。XPのKent Beckはアジャイル開発の宣言・原則にも関わっています。

プロダクトを開発していく上で、顧客との対話、チームづくり、運営、プログラミング、計画づくり、見積もりなどなど多岐に渡ってアジャイルな手法が提示してあります。用語は違いますが些細な違いしかありません。

アジャイル開発手法とは、いわばこの理想を実現するための手法であり、その手法・アジャイルツールを使えば、「うちはアジャイルで開発しとんねん！」と言えるものではありません。

この経典を理解し目指している状態をアジャイル開発をしているといえるわけです。トイレの壁にでも貼っておいてください！

#AppSociallyで社内のアプリ分析ツールを開発しながらアジャイルを導入していった
２０１７年現在、大きく営業チーム、プロダクトチームに分かれています。営業チームは日本とアメリカにあり、主にコーディングする開発チームはベトナムを中心に構成されております。営業チームから上がってきた課題や会社としての方針を考慮しながら、プロダクトのデザイン設計をしていきます。


#５ステップで行うアジャイル・チーム体制環境構築編

ここからは僕がAppSociallyで社内のアプリ分析ツールを開発しながらアジャイルを導入していったものを順番にStep by Stepでご紹介します。
＊導入手順をStep by Stepでやりやすいものから紹介していきますが、順番に囚われず導入しやすいものから導入してください。アジャイルを取り組むコツとしては社内でテストしながら取り込めるところから取り組むんでいくことです。

###Step1，バージョンの管理
![Screen Shot 2017-11-14 at 9.44.15 PM.png](https://qiita-image-store.s3.amazonaws.com/0/44713/c61fa105-5645-1d57-1fc3-bafd7f5fbab5.png)

弊社では既にGitを利用し、GitHubでソースを共有管理していました。基本ですね。Bitbucketでもなんでも良いです。
###Step2、連絡ツール、コミュニケーションツール
![Screen Shot 2017-11-14 at 9.44.48 PM.png](https://qiita-image-store.s3.amazonaws.com/0/44713/5b3a335a-6a9d-f8fb-d6d2-6540c94d3cb2.png)

これも既に導入してありました。プロジェクトごとにchannelを分けたりして便利ですね。多謝。これも基本的なツールですね。
###Step3，CI Continuous Integration 継続的デプロイ
![Screen Shot 2017-11-14 at 9.45.20 PM.png](https://qiita-image-store.s3.amazonaws.com/0/44713/a1811857-89b6-8b73-5cc5-81c28f1aada3.png)

CI, 継続的デプロイとはGithub, Bitbucketなどに上げたコードを自動でコンパイルする専用のサーバーのことを指します。つまり、コミットしたコードを自動的にデプロイします。
必ずしもCircle CIでなくても構いません、JenkinsでもCodeShipでも何でも良いと思います。開発メンバーにCircle CIを触ったことがある人がいたのでCircle CIになりました。クラウド上で実行できるので、Jenkinsと違ってサーバー構築の手間暇がいらないのが良いですね。ビルドの自動化が完了すれば、テストコードについても調査を開始してください。テストに合格したコードしかビルドされない仕組みまで作ることがゴールです。
###Step4，ユーザーストーリーの管理
![download.png](https://qiita-image-store.s3.amazonaws.com/0/44713/a06302ed-9ae1-215d-c627-dfaf0f4fdc55.png)

ユーザーストーリーの管理はスプレッドシートで行います。タスク管理アプリで行っても良いですが、量が多くなると管理しづらくなるのでGoogle SpreadSheetで管理するのがベストでしょう。
ユーザーストーリーは完璧なものを求めないのがコツです。MVP(Minimam Value Product)をバージョン１とし、ユーザーストーリーを作成していきましょう。
顧客の要望を明らかにし、リーンスタートアップ的に顧客開発を行った上で作成に取り掛かることを肝に命じてください。


弊社で使用しているユーザーストーリーのサンプルを置いておきます。

[Sample of ChatCenter AI v4 Product Stories](https://docs.google.com/spreadsheets/d/12_K7MzoTVCw3RLN6mUMbkJefThz9mAWunuzT6yvu7Uw/edit)
docs.google.com	


###Step5，カンバン方式のタスク管理ツール
![1_Q8JfsMxHG_YJ6s_baDtyhA.png](https://qiita-image-store.s3.amazonaws.com/0/44713/a73e1e3a-2a1b-2369-3eb0-13f9e8a76431.png)

ユーザーストーリーをAsanaというトヨタカンバン方式のタスク管理ツールを使用して管理しています。これにAsana連動のInstaganttというガントチャートを連動させてもいいですね。似たツールにTrelloなどがありますが、AppSociallyではAsanaを使用しています。vol. 2に続くタスク管理手法はAsanaでないと実行できないので。


##次回AppSociallyのChatCenter iOで実践したアジャイル開発 vol. 2は
・Asanaでユーザーストーリーをアジャイルに管理する方法。Google Sheetで管理したユーザーストーリーをAsanaでタスクに落とし込む具体的なノウハウは別の記事にて詳細に書きたいと思います。
・CIで自動で継続的にデプロイできる体制が整ったので、ユーザーストーリーと共にテストコードの運用も考えていきます。
を予定しています。

PS
アジャイルのこともっと知りたいという方はこの本を！

[アジャイルサムライ−達人開発者への道−](https://www.amazon.co.jp/%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%82%B5%E3%83%A0%E3%83%A9%E3%82%A4%E2%88%92%E9%81%94%E4%BA%BA%E9%96%8B%E7%99%BA%E8%80%85%E3%81%B8%E3%81%AE%E9%81%93%E2%88%92-Jonathan-Rasmusson/dp/4274068560/ref=as_li_ss_tl?ie=UTF8&qid=1509270130&sr=8-1&keywords=%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%82%B5%E3%83%A0%E3%83%A9%E3%82%A4&linkCode=sl1&tag=yosuke1985tm-22&linkId=c32f4f7d44e64b4a3aae4a22ecd368df)
![51TJwN9w9cL.jpg](https://qiita-image-store.s3.amazonaws.com/0/44713/da61f764-8a1a-fc82-ddb1-15e8fc9d67e8.jpeg)

この記事はMediumから転載したものです
リンクは[Medium - ５ステップで出来る! オフショア・アジャイル・チーム体制環境構築編](https://medium.com/@YOSUKE8080/%EF%BC%95%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%A7%E5%87%BA%E6%9D%A5%E3%82%8B%E3%82%AA%E3%83%95%E3%82%B7%E3%83%A7%E3%82%A2-%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB-%E3%83%81%E3%83%BC%E3%83%A0%E4%BD%93%E5%88%B6%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E7%B7%A8-501c629b6db8)