知らない人から引き継いだ仕事で色々やるお話。

# 概要

知り合いに頼まれてサイトをみている。
しかしながら、どんな環境かあんまり詳しい資料ない上に、gitの情報は以前作っていた方の情報が残っている。じゃあ自分の開発環境にするためにどうしたら良いんだろうをまとめてみた。

# 自分の前提条件

- atommerだが、最近vimの耐性がついて来たぜ
- インフラ？なんとかやってみるぜ

# Todos

1. Gitのrepositoryを自分のものに変更する。
2. 使っている言語、フレームワークとバージョンを把握する
3. レガシーコードかどうか確認する
4. どこに何があるのかソースコード読んでざっくり把握する

# Git

まずは自分のローカル環境、stagingがないのでstagingもどきの作成、そして本番とするのが良かろう。と考えたため以下のようにした。

## Github

1. 自分のGitHubで新しいrepository(private)を用意
2. 本番環境の公開鍵を自分のアカウントに登録

以上でGithub側の準備はおしまい。

## 本番環境

1. sshで本番環境へ
2. .gitフォルダを削除
3. もし認証用の鍵がなければ、生成しておく
4. 管理したいフォルダで「git init」
5. 「git config --global user.name "自分の名前"」でgit configの設定
6. 「git config --global user.email my_name@example.com」でgit configの設定
7. 「git remote add origin ~」でremote repositoryを追加
8. .gitignoreで先に本番環境の設定ファイルがアップロードされないように設定する
9. 「git add .」と「git push origin master」でremote repositoryにfirst commitを作る

本番環境での作業はひとまずこれでおしまい。

## ローカル環境

今回は本番環境に合わせてvagrantでローカルに環境を構築した。

```
vagrant box add ~

```

忘れないうちに（というかミスをしないうち)デフォルトのブランチを「develop」というbranchを作成して、それにしておく。

[参考 GitHubリポジトリのデフォルトブランチをdevelopに変更する @unsoluble_sugar さん](https://qiita.com/unsoluble_sugar/items/0603187d5a732f91d502)

## staging環境

Dokkuを選択。し、その向き先をこちらへ。stagingとして使用して、確かめる。バージョンなどは合わせる。


# バージョンなど把握

事前にcakePHPを使っていることだけは聞いていたので

```bash:結果
php -v

PHP 5.3.10 (cli) (built: Feb  4 2012 07:36:51) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
```

ふむ。なるほど。じゃあ、CakePHPもみてみよーじゃねーか。
[こちら](http://www.monoreview.com/archives/33)を参考に確かめる。


```bash:cake/VERSION.txt
////////////////////////////////////////////////////////////////////////////////////////////////////
// +--------------------------------------------------------------------------------------------+ //
// CakePHP Version
//
// Holds a static string representing the current version of CakePHP
//
// CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
// Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
//
// Licensed under The MIT License
// Redistributions of files must retain the above copyright notice.
//
// @copyright     Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
// @link          http://cakephp.org
// @package       cake
// @subpackage    cake.cake.libs
// @since         CakePHP(tm) v 0.2.9
// @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
// +--------------------------------------------------------------------------------------------+ //
////////////////////////////////////////////////////////////////////////////////////////////////////
1.3.14
```

ん？これは・・・？

```bash
1.3.14
```

見間違いではない・・・
CakePHP1だと・・・？

辛いがMySQLも確認しよう。
そして例のごとく、パスワードなどわからないので、ソースコードの設定ファイル(app/config/database.php)から読み取ってアクセス！(ここは詳しく書けないのは悪しからず)

```bash
mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is ~
Server version: 5.5.22 MySQL Community Server (GPL) by Remi
```

なるほど。5.5.22なのね。
この後、テーブル構成と重要っぽいテーブルを中心にindexが貼られているか、確認したけど、一つも貼られている気配はなかった・・・

ちなみに確かめるSQLは以下の通り。

```SQL:MySQL
show index from テーブル名;
```

# テストコードなどがあるか確認

#### レガシーコード = テストがないコード

というのは割と有名な話だと個人的には思っていて。
CakePHP1という時点でだいたいお察しだけど・・・確かめるぜ。
普通はappフォルダのなかにtestsフォルダがあって・・・


```bash
[app]$ cd tests/
[tests]$ ls
cases  fixtures  groups
```
どうやらあるらしい・・・
なんでだ！？いや助かったけども！
ありがとう前任者の方！

# ソースコードをよんでざっくり確認

サイトのこと聞いただけで、機能が盛り盛りだったので把握するのも一苦労。
だいぶ機能ごとの結合も密である。ツラミ。ただ、こういうところこそ腕の見せ所。
読み方などは別記事としていつか投稿したい。(まだこれが良いという感じがない)