質問: Webアプリケーションの開発方法について教えていただきたいです。 数人でリモートなどで開発を行なっている時に、 どのようにして開発をするのでしょうか? 例えば、本番用のサーバーがあったとして、 Git?などを使って開発する場合、 ローカルに本番環境と同じ環境を作って、そこで動かして問題なければ本番用サーバーと同期をとるという形でしょうか? それとも、ファイルなどを編集したら一度本番環境に持っていって動作確認をするのでしょうか? まだ、私は現場で働いた経験がないので、的外れなことを言っているかもしれません。 ご理解のほどよろしくお願いいたします。 現場や作るものによっても方法なども変わってくると思うので、 経験がある方にどのような流れで開発を行なったのか具体的に教えていただきたいです。 よろしくお願いいたします。
回答: > > ローカルに本番環境と同じ環境を作って、そこで動かして問題なければ本番用サーバーと同期をとるという形でしょうか?それとも、ファイルなどを編集したら一度本番環境に持っていって動作確認をするのでしょうか? > > > どちらかというと、前者です。本番環境(エンドユーザーが利用する環境)で動作確認することは基本的に無いと思います。ローカル環境は本番環境と完全に同じ構成ではないことが多いので、最終的な動作確認をするとすれば本番環境同等のテスト環境(開発者共用の環境)になると思います。 「数人でリモートなどでWebアプリケーションの開発」ということであれば、一般的に以下を使うことが多いと思います(※ソフトウェアがJavaの開発に関するものになっています。Rubyは詳しくないです。すいません)。 * IDE(IntelliJ、Eclipseなど) * バージョン管理サーバー(GitHub、Bitbucketなど) * バージョン管理クライアント(gitコマンド、SourceTreeなど) * ビルドツール(Maven、Gradleなど) * CIツール(Travis CI、Jenkinsなど) * 静的解析ツール(SonarQube、 FindBugsなど) * テストツール(JUnit、Seleniumなど) * 課題管理システム(JIRA、Redmineなど) これらを使った開発のおおまかな流れは以下のようになります。 Webアプリケーションのソースコードはバージョン管理サーバーで管理し、開発者はバージョン管理クライアントツールでローカルにそのソースコードをダウンロードして、ビルドツールでビルドします。 ビルドが完了したら、IDEでそのソースコードのあるディレクトリをオープンし、開発を行います。ソースコードを修正したら、IDEのデバッグ機能などを使って、意図した動作をしているか確認します。問題がなければ、ローカル環境で再度ビルドします。ビルドをすると、同時に静的解析ツールとテストツールが実行されて、エラーが無ければ最終的な成果物ができあがります。 そして、バージョン管理サーバーにソースコードをプッシュします。プッシュすると、バージョン管理サーバーと連携したCIがサーバー上で、再度ソースコードの静的解析、テスト、ビルドを実施します。これで問題が無ければ、プルリクエストを依頼して、レビュアーに修正内容を確認してもらいます。レビューはブラウザーを使って、バージョン管理サーバーが提供する画面上で行います。 レビュアーから指摘があれば、指摘を反映させ、再度同様の手順でプルリクエストします。レビュアーがOKを出せば、プルリクエストがマージされます。 Webアプリケーションの課題(バグやエンハンス要望)は課題管理システムで管理します。 Javaですが、この記事は1つの事例として参考になると思います。