受託開発をやるときに考慮すべき環境面の事柄を色々
受託開発をやるときに、最初に考慮しておかないと後々大変そうな環境面を2018/12時点の心境でつらつらと。
バージョン管理
成果物全てのバージョン管理は何で行うべきか、と考えた時 バージョン管理はGitが今は主流だが、Subversionでも特に問題はないと考える。 その代り、Subversionのバージョンは最新にしておきたい。
Gitを使うなら、理想はGithubにお金を払ってprivateリポジトリでの作業だと思うが、 こんなこと書いている会社では厳しいと思うのでGitlabを開発環境のサーバーに入れるのが無難だろうと思う。
モック作成
ブラウザとJavaScript周りの制約が厳しくなっており、 htmlファイルをダブルクリックでただ開くだけでは見栄えが確認出来ない。
基本、Chromeベースで動作確認するのがよいが、お客様が実際に使っているブラウザを事前に確認しておくこと。
- html5ベースで作る。
- JavaScriptのライブラリは最新のものを使う。
- jQueryなど、ローカルファイルだと正常に起動しないことが増えたのでVSCodeのLive Serverを使うのもよさそう。
- htmlファイルがあるフォルダを開いて、htmlを右クリックするとメニューに"Open with Live Server"が出てくるからクリックでサーバーが立ち上がる。
- ユーザーレビュー時は専用のサーバーを一時的に用意する?
開発
タスク管理
GitHubまたはGitlabのissue、Redmine、Backlog辺りが選択肢に入る。お客様と一緒に使うかどうかで変わってくる。 お客様にも書き込んでいただくのであればBacklogが無難かもしれない。
開発端末
いい端末を手配してもらう。
開発サーバー(データベースサーバー、APサーバーなど)
スペックは多少落ちてもやむを得ないので、OSは本番環境と出来るだけ合わせる。
負荷テストなどは実際のお客様の環境同等でないと行えないが、開発環境をそこまで整備できるか?というと厳しいと思われる。
Java
本番環境のOSに合わせる。
- お客様がOracleと契約するのであれば、Oracleを使う。
- RedHatならRedHat社のOpenJDK
- IBM系列ならAdoptOpenJDK with OpenJ9を使う
- それ以外ならAdoptOpenJDKでよさそう?
出来るだけ本番リリース時点の最新LTSバージョンを用いたいが(Java11、Java17、・・・) お客様の環境を最初に確認しておくこと。
載せるサーバーによっては既に動いているシステムがあってJavaのバージョンが変えられないかもしれない。
データベース
契約先が契約しているデータベースがあればそれを使う。 ライセンスを購入する必要が生じた場合は、お客様にライセンスを分けてもらうように交渉する。
何でもいい場合はMySQLかPostgreSQLかどちらかになると思うが、それぞれの違いをちゃんと見極めること。 本番リリース後に維持も引き続き行う場合は、本番のデータが全部入れられる容量のものを開発環境に入れること。
Webサーバー
無難なのはTomcatだと思うが、お客様の環境に合わせて検討する。
フレームワーク
現時点ではSpring Bootの一強だが、開発時点での状況を見極めて選択する。 他のプロジェクトでこれを使っていたから、とそのまま流用せずに見極めたい。
テスト
開発ツール
- ビルドツールはMaven、またはGradleを使って使うライブラリの管理も含めて行う。
- 統合開発環境ツールはeclipseがどうしても標準になるが、統一はしなくてよいと思う。
- Jenkinsも導入しておきたい。
他に何があるかなぁ