ログで見やすくなるソースコード
Gitに歩み寄るソースコードの運用をすれば、更に安全。更に効率的。
Gitありきの運用に変えていく
後からGitを学習すると、つい「自分のソースコード管理にGitを取り込むにはどうしたらいいのだろう?」と、考えがちですが、それは逆です。
Gitでのバージョン管理がしづらくなってしまう「ソースコードの運用」「システムの構造」の方を変えていくべきです。
それくらい、「バージョン管理」は重要かつ汎用的なものであり、Gitがもたらしてくれる、開発の健全性と効率性は強力です。
最初は、Gitでコミットを行き来したり、スタッシュをしていると、ファイルの内容が自動で書き換わったり、削除されたりという動作に不安を感じるかもしれません。
ですが、Gitは実績のある、信頼できるソフトウェアなので、安心してください。
ファイルに分ける
import
などで分割ができるファイルは、分割しましょう。
scss ファイルや、js・ts ファイル、各種HTMLのテンプレートエンジン(EJSやPUG)が、ファイル分割が可能です。
後半でグループウェアとしてGitを学習していきますが、仲間同士での変更の「衝突」を避けやすくなります。
scssやその他のビルド環境がプロジェクトに導入されていない場合は、Gitのために導入を検討しましょう。
scss を使った分割の例
index.scss
@use "header";
@use "topPageLead";
@use "footer";
header.scss
.ly_globalHeader {
...
}
.bl_globalHeaderLogo {
...
}
この2つは、ファイルを分けると速度の低下が起こるので、説明には入れませんでしたが、許容出来る範囲であればOKです。
(といっても、css の @import は 同じ理由で公式に非推奨の機能になっています。scssをお勧めします。)
機能(ユースケース)で分けるようにします。コンポーネントやパーツも機能で分けていると言えると思います。
作成時間や担当者で分けてしまわないように気をつけましょう。
1ラインで書かないようにする。適度に改行する。
Diffの最小単位は、「行」なので、長い行になるソースコードを書くことは避けましょう。
また、Gitクライアントによっては、長い行になるとDiffの算出時間が長くなるので、すぐに確認できる文字数に制限があります。
見通しが悪くなってしまします。
場合によっては、引数や属性も一つずつ改行しておくと良いと思います。
改行して書く例
JavaScript
function hookAnchorLink (
targetQuery, // こんな感じに改行
prefix,
baseUrl
) {
// ...
}
HTML
<input
id="selectInformationType"
name="selectInformationType"
type="radio"
value="default"
checked
data-hook-event="radioChange"
>
コーディングルールを厳守する。Lintを導入する。
たとえば、JavaScript であれば、「最後の;は、必ず付ける」だとか、「インデントはスペース2文字で表現する」だとかのルールです。
これがまちまちだったりしてしまうと、余計なDiffで画面が汚れてしまいます。
IDEの設定を統一したり、ビルドやプラグインでLintを導入することを検討しましょう。
「この書き方、放っておいても動くけど、バグの温床になるんじゃないか?コードが見にくくなるんじゃないか?」という場所を発見して、「警告」をしてくれるツールです。
警告に留まらず、修正をしてくれるものもあります。
出来るところから少しずつ
色々上げましたが、すべてを叶える環境にいきなり移行するのは、大変だと思いますし、そもそも現場に揃っているスキル・リソース的に無理だ!ということもあると思います。
なので、出来るところから少しずつ変えていくということが大切です。
例えば、弊社では、WordPress で構築されたサイトをGitで管理する場合、主に theme フォルダに限定します。
WP-CLIなどで、ストラクチャーもGitで管理するというような方法もあるにはあるのですが、そうなると、それを採用するよりも、WordPress を使わないメリットの方が多くなるので、そのような折衷案で落ち着いています。
(WordPress の基礎構造がそもそも前時代的なので、仕方ありません)
WordPress を例に上げたので、そのままテクニックをご紹介しますと、「固定ページ」や投稿の一部分などで、HTMLを直接挿入するすることはよくあると思いますが、このソースコードもHTMLファイルにメモして、Gitで管理することを義務付けましょう。
同時期に触ったscssや、新たにアップロードした静的画像ファイルなども、Gitのログに残ります。