Wantedlyで開発するときにとりあえず設定してもらう事一覧


Wantedlyではビジネスサイドの人にも、Githubの使い方を教え、例えばViewの文言変更などは自分でしてPull Requestを送ってもらうようにしている。
これを実現するための、非エンジニア、初心者エンジニアでも簡単に正しいリクエストを送れるようになる設定一覧。

## キーボードの設定 (Macの場合)

![keyboard.png](https://qiita-image-store.s3.amazonaws.com/0/6664/6c4c7030-0dd5-237d-cea1-30d892345d5c.png "keyboard.png")

- キーのリピート: `速い`
- リピート入力認識までの時間: `短い`
- (修飾キーで、`Caps Lock -> Control`に)

別にやらなくてもいいが、これが遅いと人生の無駄に感じるw

## Github

- Githubでアカウント作成
- 顔写真、名前の登録
- (ssh-keyの登録　[チュートリアル（英語）](https://help.github.com/articles/generating-ssh-keys))

顔写真は最近直接Upできるようになった。
ssh-keyの作成は自分でやるのはちょっと難しいので登録してあげてる。

これがめんどくさい場合は、以下のコマンドを打って、gitのパスワードをキーチェーンに管理してもらうという方法もある。

```bash
git config --global credential.helper osxkeychain
```

## gitの設定

以下のコマンドを打つのは最低限

```bash
git config --global user.name "Your Name"
git config --global user.email your-name@example.com
```

いろいろ開発するなら`.gitconfig`を直接編集して以下の設定をしてもらう。

```bash:~/.gitconfig
[user]
  name = Your Name
  email = your-name@example.com
[color]
  ui = auto
[alias]
  amend = commit --amend -C HEAD
  co = checkout
  logg = log --stat --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cr %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
  mergelog = log --merges --pretty=format:'%C(yellow)%h %Cgreen%ci %Cblue%cn%Cred%d %Creset%s %C(cyan)%b'
  history = log --graph --date=short --decorate=short --pretty=format:'%C(yellow)%h %Cgreen%cd %Cblue%cn%Cred%d %Creset%s'
  unmerged = !git --no-pager diff --name-only --diff-filter=U
  sync = !git checkout master && git pull origin master && git fetch -p origin && git branch -d $(git branch --merged | grep -v master | grep -v '*')
[push]
  default = current
```

ハイライトとしては、以下の3つの機能

- `push.default`を直感的にわかりやすい`current`にする
- `git sync`という現在のmasterを最新のものにした上で過去のブランチは削除する
- `git logg`という`git log`をもう少し読みやすくしたコマンドをつける


これで、あんまりGitのことをよくわかってない人でも文言の変更などのPull Requestは以下ようにするんだよと教えるだけでを送れるようになる。

- `git sync`
- `git checkout -b your_name/branch_name`
- <ファイルを変更>
- `git add .`
- `git commit -m "Commit message"`
- `git push`
- Github上でPull Requestを送る

`git logg`はよくわかんない感じになりましたと言われた時に、その人のターミナルで打ってもらう。どのファイルを変更したかやリモートとローカルのHEADやmasterの位置が確認できるので、あぁmaster上でcommitしちゃったんだとかすぐに解決してあげやすい。

`git logg`の出力例：
![git_logg.png](https://qiita-image-store.s3.amazonaws.com/0/6664/19756092-d826-2c34-827c-c24d6b3eec94.png "git_logg.png")

## エディタの設定

vimやemacsでもいいが、大抵、[Sublime Text](http://www.sublimetext.com/)を使ってもらっている。
これのいいところは、デフォルトで以下の機能が付いているところ。

- プロジェクト全体からの単語検索 (Command+Shift+F)
- ファイルの部分文字一致での検索 (Command+P / Command+T)

Sublime Textもお金を払わないとたまにInterruptされるので、最近はGithub製の[Atom](https://atom.io/)でもいいかなと思ってきている。



### Sublime TextのUser Preferenceの設定

Sublime Textの場合、コード規約の関係で以下の設定は必須。
`Sublime Text -> Preferences -> Settings - User`で設定を追加する。

```Preferences.sublime
{
	"ensure_newline_at_eof_on_save": true,
	"show_full_path": true,
	"tab_size": 2,
	"translate_tabs_to_spaces": true,
	"trim_trailing_white_space_on_save": true
}
```

これはGithubでコードを管理していると、空白がついたり`\n`が入っただけでDiffが出るので、次のように統一しているため。

- インデントは2文字でTabは使わない
- 最後は改行で終わる
- 行末に余計な空白は入れない

基本的にこれで問題ないが、末尾に改行が何個も入った場合それをとってくれないのだけ不満点。誰か方法知っていたら教えて欲しい。

`show_full_path`についてはコード規約ではないが、例えば、Railsだと`index.html.haml`というファイルはいくらでも存在するので、意外と同じ名前の別ファイルを編集していてうまくいっていないみたいなことも起こる。それに気づけるように出す設定にしてもらっている。