![見出し画像](https://assets.st-note.com/production/uploads/images/68487401/rectangle_large_type_2_c3b20df899e9052db9f8b54421e1f53c.png?width=1200)
スピード?柔軟性?アプリ開発もチームワークが必須!
みなさんこんばんは!バグプログラミングです!
12月25日ですね。メリークリスマス!!
でも今回もそんなクリスマスとは何も関係ない話をしますね(笑) 今回のテーマは「チームでのアプリ開発」です!アプリ開発も一人で作業する場合とチームを組んで作業する場合があります。その中で今回はチームごとのアプリ開発スタイルに焦点を当てようと思います。
【チーム開発の2種類の型】
チームでどのように開発を進めていくか?代表的な手法を2つ紹介します。
(1)アジャイル型開発
一度にまとめてでは無く、少しずつ確認をはさみながら開発を進めていくスタイルです。利用者の反応や、関係者からの継続的なレビューを得ながら、計画を調整しつつ進めて行きます
![](https://assets.st-note.com/production/uploads/images/68482283/picture_pc_59c26580fc2612f4fe915657bd45d133.png?width=1200)
この方法のメリットは手直しにすぐ着手できて、仕様変更に迅速かつ柔軟に対応できるのが特徴です。一方でメリットもあり、進捗が把握しづらいという点もあります。このデメリットを解消するため、「スクラム」と呼ばれる開発を進めるチームの単位(小学校でいう1班、2班みたいなイメージ)を導入します。ちなみに、スクラムごとの役割は以下の3種類。
・プロダクトオーナー(学級委員長の様な存在)
リリースするプロダクトオーナー
・スクラムマスター(各班長の様な存在)
スクラムごとの世話役
・チームメンバー(要員)
開発を進めていくメンバー。この時メンバーに上下関係は存在しない。開発の進め方は基本話し合いで決定する。
(2)ウォーターフォール型開発
初めに決めた要件を、ある期限までに完了するという手法のこと。
契約→開発→納品というフローに則ったシンプルなものです。
![](https://assets.st-note.com/production/uploads/images/68483025/picture_pc_ee580d829e6b45e32f31100f23faf7c5.png?width=1200)
厳密な要件定義と納期に合わせた進捗管理を行うことを前提としています。この方法のメリットは開発計画がシンプルで、進捗状況が管理しやすいのが特徴です。一方でメリットもあり、急な仕様変更に柔軟に対応できないという点です。
一般的には、最終的な要件がはっきりしていないプロジェクトにはアジャイル型が採用されます。一方、ユーザーの要件が明確に定まっている、大規模システム開発プロジェクトにはウォーターフォール型開発が向いています。
【エンジニア専用の管理ツール】
しかし、こうしたチーム開発の日数調整や進捗状況の把握、他スクラムごとの機能の連携(マージ)、何より納期達成にはプログラムの管理が必須です。代表的なのが「Github」ですね。しかしエンジニアにはもっと専門性の高いツールによる管理が必要になります。いくつか例をあげましょう。
(1)Sider
![](https://assets.st-note.com/production/uploads/images/68484107/picture_pc_925c14d1831d8d2e3f65de9d4cbe6290.png?width=1200)
GitHubと公式に連携しているコードレビュー、つまりコードのミスチェックの自動化ツールです。Siderの使用により、コーディングスタイル違反、コードの品質、コードのセキュリティー、依存性などをチェックすることができます。
(2)CircleCI
![](https://assets.st-note.com/production/uploads/images/68484438/picture_pc_f06321596d544c31b2d9a398b2bb444d.png?width=1200)
・ビルド(アプリ開発環境構築)
・テスト
(実際に記述したコードを起動させ、機能をデモンストレーションする)
・デプロイ
(インターネット環境にアプリをリリースする)
の3つが揃ったクラウドCI/CDサービスです。環境構築コストが低いのと、運用コストが低いのが特徴です。
CI/CDとは、
継続的インテグレーション/継続的デリバリー
Continuous Integration/Continuous Delivery)のことで、コードのテスト(試し運転)を定期的に自動で実行し、書いたコードを自動で本番環境にデプロイ(インターネット上で実際に運用すること)できる状態に整えることです。
少人数の開発であれば、これらを人が手動で管理をすることは容易です。しかしながら、開発に関わる人数が増えるとそれらの管理を綿密に行うことは難しくなってしまいます。管理をするための労力がかかり、見落としや作業忘れなども発生するからです。それらを避けるためには、なるべく人が介在する余地を減らし、自動化する必要があります。
こうしたアプリ開発でも、ケースバイケースで独自の開発手法を取り入れています。ぜひ参考になさてみてはいかがでしょうか?
この記事が気に入ったらサポートをしてみませんか?