社内開発環境をSVNからGitLabに移行したときの作業メモ

#はじめに
現在の会社に新卒入社してはやX年経ち、エンジニア未経験な立場から開発環境に文句が言えるような立場になりました。
社内の開発メンバーの増加、要求レベルの上昇、開発環境の維持管理コスト、好奇心、などなどから、
社内開発環境の脱SVN化を行います。

**この記事はSVN等その他技術・ツールの貶める目的はありません。筆者の技術不足が最たる原因です。
その他、不備がありましたらコメントでご指摘ください。**

##なぜ脱SVNするのか
まあまだホントのSVNのだめなところ、Git（GitLab）がなぜいいかっていうのはまだちゃんとはわかってないです。
でも、今の所ネックになってるのは以下の項目。きっと先輩方は乗り越えていることなのでしょう。

- 集中管理型のため一人のコードミスがチーム全体に影響する
- ちょっと書くたびにコミットするからログが肥大化
- 差分管理、マージが困難（ぶつかったりアップデート忘れてたり）

一番ネックだったのは一番下です。
改修作業中に軽微な文字修正を依頼されて、そのファイルは改修対象だから開発でチェックできなくて本番で直接修正して、そんなの繰り返すうちに本番と開発の差分が大きくなってって…
はあぁ！移行せねば（作業の合間に忘れないように執筆しているのでこの時点ではまだ未着手です）

#現環境
Ubuntu11.04
　Apache2.2? PHP5.2/4.4 MySQL5
　Apache2.2? PHP5.3 MySQL5　
CentOS6
　Apache2.2　PHP5.4　MySQL5.5
　Apache2.2　PHP5.5　MySQL5.6
　Apache2.2　PHP5.6　MySQL5.5
CentOS7
　Apache2.4　PHP7.1　MariaDB5.5
　Apache2.4　PHP7.2　MariaDB5.5

非エンジニアも社内開発を見ることがあったので、ローカルでサイトを再現するのでなく、SVNサーバーにWebサーバーを併設しておきSVNのコミット時にファイルを複製してWebのドキュメントルートにコピーするようにしていました。
そのためPHPのバージョンごとにサーバーを立てています。非効率。

つまり、~~エンジニアが犠牲となり~~XAMPPレスな環境でチーム全体が社内開発を確認できるようになってました。
小さいプロジェクトならこれでもいいのかもしれないです。
まあ部署のスタートダッシュからの環境を騙し騙し使ってきた感じです。

エンジニア未経験の自分には管理がとても辛く、PHPの新バージョンの話題が出るたびにビクビクしていました。
LAMP環境を構築する経験ができたのはいいことだと思いますが、そう何度もやりたいものではなかったです。
今回のバージョンは長続きするかな？と思って容量多めにとってみたらぜんぜんそんなことなかったり、逆もしかり、不要な領域が多く発生してしまいました。

##なぜGitLabなのか

別部署が社内開発として導入してたので。
やはりネットでなく人に聞ける環境は大きい…
GitHubはプライベートリポジトリが有料なので稟議がおりないと判断しました。

##想定される移行後のフロー

GitLabサーバー構築、プロジェクト（リポジトリ）管理
各人XAMPP導入、ローカルにクローン作成
プロジェクト毎にXAMPPのPHPのバージョンを切り替えて作業
GitLabはあくまでファイル管理とし、ある程度のタイミングでWebサーバーにアップ

#移行完了しました

結果的に開発環境は以下のようになりました

- バージョン管理：GitLab
- ローカル開発環境：Local by FlyWheel

## バージョン管理

GitLabサーバーの構築にとても手間取ってしまいましたがどうにか動くようになりました。
日本語化もできてよかった・・・

Gitそのものの勉強は以下を参考にしました。
[サルでもわかるGit入門](https://backlog.com/ja/git-tutorial/)
[【Git】オレならこう説明する！Git初心者への用語説明](https://qiita.com/nnahito/items/e546b27f73e7be131d4e)
[【イラストで覚える】初心者のためのGitとGitHub用語集](https://zukulog098r.com/git/)

##ローカル開発環境

xamppを利用する予定でしたが、PHP切替がうまくできなかったため断念しました。
その時参考にしたのはこちらです。
[XAMPPで複数のPHPを切り替える](https://www.m-kobayashi.org/software/tools/Xampp_PHP_VUP.html)
[１つのXAMPPでPHPのバージョンを切り替えて使う最もシンプルな方法](https://freelance-jak.com/technology/php/1477/)

これ以外にもやってる人はたくさんいらっしゃったので、できないことは無いんだと思いますが私と開発メンバーでは再現ができなかったです。
途方にくれてたところ、開発メンバーが見つけてくれたのが**[Local by FlyWheel](https://localbyflywheel.com/)**です。
日本語対応はしていないですがUIはシンプルでわかりやすいし、PHPのバージョンも変更できるしWPの環境を作ることがメインのツールなので至れり尽くせりでした。
サブドメイン設定のためにxamppのコアファイルを修正するのもしんどいなあと思っていたし、結果的にxamppを導入するよりハードルが低くできたんではないかと思います。
ドキュメントルートにGitLabのクローンを再現することもでき、できるだけSVN時と変わらないようにできたんじゃないかなと思っています。

参考にしたサイトはこちらです。
[超簡単にローカル環境が構築できるLocalbyFlywheelの使い方](https://bazubu.com/local-by-flywheel-33920.html)
また、公式からダウンロードできる最新バージョンは2019/11/25現在PHPの切替設定ができなかったので、以下から旧バージョンを利用することをおすすめします！
[Local by Flywheel 3.3.0](https://localbyflywheel.com/community/t/local-by-flywheel-3-3-0/13527)

##それでもやっぱりコマンドは難しい

Gitってコマンドでプッシュしたりしなきゃいけないんですけど、前述の通り非エンジニアも多いメンバーのためできるだけ日本語で、GUIで・・・！！

###ありがとうTortoiseGit

SVN時はTortoiseSVNを使っていたので同じレベルのものがあれば、と思って探してみたらすぐ見つかった。
ありがとうTortoiseGit
日本語対応もでき、かなり導入がスムーズになりました。
導入はこちらを参考にしました。
[TortoiseGitのセットアップ](https://qiita.com/SkyLaptor/items/6347f38c8c010f4d5bd2)

#反省点
今回の移行作業でメンバーには色々なツールをダウンロード・インストールさせました。
事前に全体像とか、なにがどんなツールなのかとか、ちゃんと説明したらよかったなと思いました。

#おわりに
まだ導入したてで実際に案件を完遂させてないのできっとまだ問題点はでてくるとは思います。（ブランチとか）
でもとりあえず環境を新しくできたので良かったです。
うまく回り始めたらレガシー環境のデータを引っ越しさせて古いサーバーはメンテナンスしたいなと思います。