まえがき
お客さんの元で新規開発したシステムのリリースが終わり、安定稼働しています。
振り返りの意味を込めて、小さなシステム構築をしながら、アジャイル開発手法や技術などの解説を記事にします。
利用する言語など
開発環境はDockerを利用して構築します。
- バックエンド LaravelPHP 5.5系
- フロントエンド Vue.js
- データベース MySQL
- バージョン管理 GitHub
- CI TravisCI
- リグレッションテスト Selenium
- そのほか Docker
アーキテクチャ
LaravelでRestAPIを実装し、JavaScriptフレームワークはlaravel5.4から標準のVueを使います。
本当はマイクロサービスアーキテクチャを意識し、強みのあるバックエンドはGoで実装したかったのですが、小さいシステムで、工数かけずに作りたかったので、Laravelにしました。
(PHPは言語の特性上マイクロサービスアーキテクチャに向いていないと考えています。)
CI/CD
規模が小さく、オープンソースでも構わないので、バージョン管理はGitHub、CIツールはTravisCIを利用します。
CIをAWS上ですべて行うことも興味があります(時間があればハンドリングして記事にしたいです)。
テスト
4つのテストレイヤーで、ガバレッジ90%を目指します。
テストレイヤーを分け、役割分担をすることで、負荷なくテストガバレッジを上げられると考えています。
1. ユニットテスト
メソッドレベルのテスト。メソッドは原則的にLaravelのファサードを使います。
2. インテグレーションテスト
APIは原則的にメソッドを組み合わせて作成します。そのAPIに対するテストをインテグレーションテストとします。
3. ビューのユニットテスト
Vueのコンポーネント単位でテストをします。
4. リグレッションテスト
Selenium + mocha + chaiを使います(予定)。