kimuheadの雑記

開発でわかったこととかを書いてます。 ionic2 (angular2) を使ってます。

初心者チームのためのGitの安全な使い方

GithubやBitbucketで集団開発をしたい! だが、メンバーの中にはGitを使った開発経験が無い人が居る。 そういった状況はスタートアップや、学生で集団開発をしたい人にはよくあることなのではないでしょうか?

ですがGitを使った集団開発で、まだ使い方が分かっていない人が 居るとかえって開発効率は落ちてしまいます。 ブランチが複雑になり、下手すると修復困難な状態に陥ってしまうことがあります。

僕はBitbucketを使って集団開発をしていたとき、Gitの使い方を あまりチームで共有できてなくて、かなり痛い目を見ました。 そこで、その時考えた初心者チームのためのGitのシンプルで安全な使い方をメモしておきたいと思います。

してはいけないこと

  • マスターには直接コミットしない

    マスターはプルリクエストを送って承認されたコードのみが反映されるようにします。 マスターにプッシュは言語道断です。

  • プルリクエストが承認されていないブランチを他のブランチにマージしてはならない

    プルリクエストが承認されていないということは、そのブランチのコードには不具合があるかもしれません。もし不具合があった場合、マージしてしまった他のブランチにも不具合が転移しまったということになってしまいます。

  • 一度マスターにマージしたブランチは使わない

    プルリクエストの詳細はリモートリポジトリからいつでも見れるので、「このブランチで何したんだっけ?」
    となっても大丈夫です。役目を終えたブランチは消して(クローズして)しまいましょう。 基本的に1ブランチ1タスクで、1つのブランチでいろいろやらない方が安全です。

  • トピックブランチにマスターをマージしない

    ブランチを切って作業している時、「マスターが更新された!」といったからって そのマスターを自分の作業中のブランチにマージしない。あくまでそのブランチを 切った時にできる範囲の作業をするのがトピックブランチだと思います。また、プルリクエスト を送った時、コンフリクトが生じていてもそのコンフリクトごとレビュアーに見てもらうことが安全です。

高速化のためのテクニック

  • cherry-pick を利用してレビューされるまでの時間も作業する

    上記のような安全性重視のルールで開発すると、開発スピードが遅くなってしまいます。マージしないと次の作業できないという時、 レビューしてもらうまでの間作業は止まってしまいますよね。 そういう時はローカルでプルリクを送ったブランチをマージしてしまい、そこから新しいブランチを切って作業を進めましょう。 その後、マスターは
    git reset マージする前のコミットid --hard
    で元に戻しておいてください。 これでプルリクが承認される前に次の作業を始めることが出来ます。ただ、この作業ブランチは一時的なものです。 わかりやすいようにブランチ名の最後に-tmpなどと付けましょう。
    そこで作業しているうちに前に送っていたプルリクが承認されマージされたとしましょう。 そしたら、更新されたマスターをpullして本番用トピックブランチを切ります。ここでcherry-pick の出番です。 cherry-pick は
    git cherry-pick コミットid
    で、コミットを他のブランチに適用できるコマンドです。 つまり、先ほどの一時的なブランチで作業した変更を、本番用ブランチに適用 できるのです。このフローで開発すれば、安全性を保ちながら、開発スピードも落ちない集団開発ができると思います。
    課題が終わって暇だから次出るであろう課題の問題を先にやっておこう。 みたいな感覚ですね。

もちろん、Gitは万能なので、間違えても修復できますし、慣れている方なら(そうでない方も) 上記の"してはいけないこと"をしても何とかなるのですが、Gitは万能な故にしっかりルールを決めておかないと、後で面倒くさいことになり、大きなタイムロスを生み出してしまいます。
とりあえず僕はこのルールで開発していきますが、何かもっといいルールがあれば 教えてください!

ios10にしたらアラームの音量が小さくなった?

今更なんですけど訳あってiphoneのバージョンをios10にアップデートしました。

まずロック画面の時計のフォントがダサすぎてびっくりしたんですが、色々とスタイリッシュさが失われていてアップデートしたのを後悔しました。特に標準ミュージックアプリが酷すぎる!ipodを開発した会社とは思えないダサさ、悲しくなりました。

で、部屋でボロクソios10をdisった次の日の朝、いつも通りiphoneのアラームで起きたのですが、なんとなくアラームがいつもより優しいんですよね、もっとグイグイ耳に攻撃して欲しいんですですけど、アラーム鳴りっぱなしで5分布団から出ませんでした。

「これ絶対音小さくなってんじゃん!嘘だろ!?」

と思って、音量を確認したところmaxでした。アラームで起きにくくなったら生活に関わる問題なので色々調べてみたところ、同じ問題に気づいた人が何人かいました

設定→一般→アクセシビリティ→電話ノイズキャンセリングをオフ

にしたところアラームの音がいい感じに不快になり、アップデート前と同じになりました!