見出し画像

退屈なことはgitにやらせよう ~gitを学んで楽しく働く~

この記事はpaiza Advent Calendar 2020の12日目の記事です。

paizaでwebエンジニアをしています藤田と申します。今年の4/1から入社してあっという間に8カ月ぐらいが経ちました。

前職は建築の外装製品設計をやっていたのですが、趣味で結構プログラムを書いていたことと、paizaでのしっかりとしたオンボーディングもあり、なんとかやっていけているかなという感じです。

昨日の記事は「ぼくのかんがえた最強の開発環境(物理)」です。自分自身もPC環境にはそれなりにお金がかかってる(mac1台、windows1台、linux3台)ので負けていないつもりですが、非常に構成が凝ってていいなと思うのと、やっぱ学生っていいですね。

翌日の記事は、まだタイトルだけですが「呑む前に飲むやつの話」とのことです。タイトルだけでは内容が先読みできないので楽しみですね。

皆さんは日常的な話題を掲げていますが、空気読まずにこんな記事を書いてよかったのでしょうか、まあ大丈夫でしょう。

本文書の目的

本文書ではgitというツールについて、「最低限これだけ知っていればいい」というレベル感で、利用するメリットを説明しようと思います。

自ら積極的に使っているプログラマーと、知らない人や業務で使うことになったプログラマーではない人との認識ギャップを少しでも埋めることを意図しています。

HOWは記述されておらずWHYとWHATを中心に書いています。

gitに関する世間の声

1. gitは難しい(から使いたくない)
2. gitは人類に早すぎる
3. gitはよくわからないので使うの諦めた
4. 無人島に何か一つだけ持っていけるとすればgitを持っていく

gitのメリットを3行で

gitは確かに難しいですが、それを超えるメリットがあるから使っているとも言えます。

1. バックアップが簡単にできます。あなたのPCが壊れても資料が残ります。
2. 編集の履歴が残っています。もし資料作成の目的を忘れても履歴を見返すことで思い出せます。
3. あなたの今日の成果が差分形式で可視化できるので、コミュニケーションが簡単になります。日報を細かく書く必要がありません。

gitについて最低限知るべきこと

1. gitはあなたが管理したいと思ったフォルダのデータを全てバージョン管理してくれるソフトです。
2. gitで管理されたフォルダには .git という隠しのサブフォルダがあります。
3. gitはタイムマシンのようにフォルダを過去の状態に戻せます。
4.  .git というサブフォルダの中に、過去の状態に戻せるデータが全て含まれています。
5. だからあまり容量が大きいもの(動画)を管理するのには向いていません。
6. gitは過去の状態に戻せるだけでなく、過去の状態と今の状態の違いを比較することができます。
7. 更新した差分のみを自分で確認したり、他の人に確認してもらうことができるので捗ります。
8. 管理に適しているものは?→プログラム・法律・技術文書・人事規則・表
9. つまり継続的に更新され、過去と比較することに意味がある文書全て

gitが普及した世界の物語

例えば法律がgitで管理されるようになったとします。2020年に発行された民放改正がどのようなものであるのかを、差分として抽出できます。法律解説係が必要なくてもあなたはすぐにその差分を取得することができます。

あなたは2012年当時の法律の勉強をしていたので2012年当時の法律には詳しいですが、その後8年間の改正をほとんど知りません。gitが無い世界では2013年改正~2020年改正を必死にかき集めてそれを読み込むか、法律一式を読み直すしかありません。しかしgitがある世界では2012年から2020年の差分を取ることができるので、あなたはそれだけに注力して勉強することができます。

例えばあなたは発注係で発注数量に責任を持っており、発注量が多すぎたり少なすぎると減給のペナルティを受けるとします。あなたは勝手に発注数量表を書き換えられないように気を張ったり、発注数量が変更するイベントが起きたときのために毎日出社することになるかもしれません。あなたが休むと数量変更の報告タイミングが1日ズレるので、その人が報告を忘れたら責任者であるあなたは減給になります。

あなたが巨大な発注数量表をgitで管理するようにしたとします。すると発注数量表の面倒を見る必要がなくなります。あなたではない他の人が勝手にその表を更新したとしても、その更新履歴が差分として残るので、あなたはその差分を見て「表が更新した理由は何ですか」と確認することができます。こうすることで、あなたと報告者それぞれの心理的な安全性が確保されます。

昨今はAIやDXといったキーワードがビジネス界隈を駆け巡っていますが、まずはこのような技術について見つめなおす価値はあるのではないでしょうか?gitはコスパが非常に良い技術であり、情報技術の中核をなしていると言って過言ではないでしょう。

gitが無い世界の物語

私は前職では超高層建築物に使われる外装製品の設計図を書いていました。設計図は明らかに継続的に更新され、過去と比較することに意味があるものですが、gitは残念ながら設計図をうまくバージョン管理することはできません。

もしもgitがあったならば、例えば工場に対して設計変更点をリアクティブに通知することができます。gitで設計図や発注数量表を管理できればその変更差分が可視化できるので、どの時点に何が起きたのかを誰もが等しく共有することができます。例えばダブルカウントのようなミスを最小限に抑えることができます。つまりコミュニケーションギャップを最小化する強力なツールであると言えます。

gitの基本的な考え方を応用すれば図面すらも管理できると思います。しかし私は設計図を描くのが仕事であり、そのプロセス改善を考える仕事をしていたわけではないのです。もし図面をバージョン管理できる世界があれば、あれだけ苦労はしなかっただろうなと思いますが、別に無くたってパフォーマンスが出せるのであれば問題はないでしょう。本質に注力するということが第一ですが、gitはそれを強力にサポートをしてくれます。

gitのミニマルな概説

ここから下は業務で使う必要に迫られている人向けです。gitの概念は沢山ありますが、下記に書かれた概念は重要です。

私はミニマルデザインが好きな方ですが、概念をこれ以上削りとることはできませんでした。概説のほうは言葉の使用感やその概念がどういった性質を持っているのかが際立つようにしました。

(なんと、noteでは表構造を表現できないらしいです。しかし私は表構造で説明を下書きしてしまったので無理やり画像にしました。検索できないし、読みにくいかもしれませんが勘弁してください。)

画像1

gitをどうやって操作するのか

gitはコマンドラインツールなので、コマンドから操作するのが一番信頼性が高い確実な方法になります。この方法を手っ取り早く学ぶにはpaizaラーニングがおすすめです。実際の操作感を学ぶには実際に実行環境があるところで学ぶのが明らかに最適であり、私もそこから学び始めました。

今現在はほとんどの操作をVisual Studio Codeというツールを使ってやっています。何も考えずに扱う分には非常に便利です。ただしよくわからないエラーに遭遇することもあるので、そのときはコマンドを使います。コマンドをそれなりに使えるからこそ安心してツールを使えるという感じですかね。

まとめ

本記事ではgitを使うモチベーションを中心に概説しました。gitは様々な目的を持つ人たちのコミュニケーションギャップを埋めるために非常に有用なツールです。とりあえず「調べてみよう、使ってみよう」と思っていただければ幸いです。

この記事が気に入ったらサポートをしてみませんか?