Upgrade to Pro — share decks privately, control downloads, hide ads and more …

チームで開発するための環境を整える

onozaty
March 14, 2024

 チームで開発するための環境を整える

onozaty

March 14, 2024
Tweet

More Decks by onozaty

Other Decks in Programming

Transcript

  1. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10. CIで定期的にチェックし、フィードバックを得る
  2. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10. CIで定期的にチェックし、フィードバックを得る
  3. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10. CIで定期的にチェックし、フィードバックを得る
  4. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10. CIで定期的にチェックし、フィードバックを得る
  5. 4. ローカル開発環境を統一する • Visual Studio Code の DevContainer という仕組みがおすすめなので、 まずはそちらを利用可能か検討すると良い

    • DevContainerは、Dockerコンテナ上でVSCodeを通じて開発するための機能 • DockerとVSCodeがインストールされていれば、VSCodeを起動するだけで、必要な環 境が構築できるようになる • 各種設定やミドルウエアをコンテナに押し込める(Dockerfileで記述)ので、各メンバ間 の環境の差異を無くせる • DBなども別のコンテナとしてセットで起動可能(Docker Composeで定義) • VSCodeの設定(インストールする拡張機能など)もファイルで定義でき、コンテナ 側で用意される • DevContainerの設定はファイルとして定義するので、何か環境周りが変わったときは、 そのファイルを各メンバで取り込んでもらった(git pullしてもらった)うえで、コンテ ナを再度ビルドすれば反映される
  6. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10. CIで定期的にチェックし、フィードバックを得る
  7. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10. CIで定期的にチェックし、フィードバックを得る
  8. 6. 静的解析ツールを利用する • 静的解析ツールを利用すると、コードを静的に解析して潜在的な問 題点などを検出することがる • 実行前やコードレビューに回す前に問題点に気が付くことができるので、 後の工程で余計な工数がかかるのを防ぐことができる • 様々なツール、チェック項目が提供されているが、もしも何を設定

    して良いのかわからない場合には、デフォルトの設定を試しながら、 プロジェクトにあった設定にしていく • 何か問題が見つかった場合に、それを静的解析で検出できないか調べて、 項目として追加して改善していくと良い
  9. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10. CIで定期的にチェックし、フィードバックを得る
  10. 7. ビルドの手間を減らす • ビルドをするのに手作業が入ってしまうと、繰り返しビルドするの が手間になる • ビルドが手間になってしまうと、ビルドの頻度が落ち、ビルドが失敗する ことに気が付くのが遅れかねない • 1コマンド(or

    1アクション)でビルドが完了するようにする • ソースコードをリポジトリからチェックアウト後、1つのコマンドでビルド が完了するような形になっていることが望ましい
  11. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10. CIで定期的にチェックし、フィードバックを得る
  12. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10. CIで定期的にチェックし、フィードバックを得る
  13. 9. ユニットテストを書けるようにする • コーディングを行う上で、ユニットテストには多くのメリットがあ る • 生産性向上 • ユニットテストを書くことで、小さな単位でコードを書いて動作を確認すると いったことができる

    • 一通りコードを書ききってから確認するより、手戻りも減らせることになる • リグレッションテストによる問題の早期発見 • ユニットテストがあることで、変更箇所が意図せずに他の箇所に影響を与えてし まうようなこと(リグレッション)にすぐに気が付くことができる • リファクタリングしやすくなる • ユニットテストがあることで、振る舞いが変わらないことを保証できるので、リ ファクタリングが行いやすくなる
  14. 1. 情報共有できるようにする 2. タスクを確認できるようにする 3. コードレビューができるようにする 4. ローカル開発環境を統一する 5. コードのフォーマットを統一する

    6. 静的解析ツールを利用する 7. ビルドの手間を減らす 8. デバッグできるようにする 9. ユニットテストを書けるようにする 10.CIで定期的にチェックし、フィードバックを得る