ファイルシステムをCase-sensitiveに設定しておこう for Mac


前置き

この記事は 2020 年の RevComm アドベントカレンダー 15 日目の記事です。 14 日目は
@tatakahashi35 さんの「 RevComm の裏側で動くアルゴリズム [二分探索編] 」でした。

こんにちは、 RevComm のエンジニアの持田です。 MiiTelに続く、第二弾プロダクトの開発を担当し、プロジェクトマネージャーも兼任しています。
今回は、Macで作業していて少しトラブったことがあったので、反省のために具体的な事象と解決方法をお話したいと思います。
なお、 Gitを用いた開発をしている方であれば誰でも起こりうる ので、一読いただくとのちのち助けになるかと思います。

発生したトラブル

とあるフロントエンドの改修で、ローカルのgitリポジトリ以下に存在する、setting.js 1 というファイルを、Setting.js 1 にリネームしました。
この変更がgitに検知されず、コミットに含まれなかったことが原因2で、 開発環境でNo such file or directory エラーが発生しました。

どうやらMacでは デフォルトで大文字小文字を区別しない ファイルシステムが設定されていたようでした。
再発を防ぐため、大文字小文字を区別する開発用のボリュームを作成することにしました。

大文字/小文字を区別するボリュームの作成方法

  1. Command + Spaceで「ディスクユーティリティ」と入力して、ディスクユーティリティを起動します。その後、ボリュームを追加します。

  2. フォーマットで、APFS (大文字/小文字を区別) を選択します。暗号化するかどうかは用途に合わせてください。

  3. ボリュームが作成されると、マウントポイントが表示されます。こちらのディレクトリ以下に開発ディレクトリを置くと良いでしょう。

確認方法

Case-sensitiveに設定できている場合は、下記のように大文字で始まる「Test」と小文字で始まる「test」の両方のファイルを作成できます。

mochida@mbp ~             % cd /Volumes/casesensetive
mochida@mbp casesensetive % touch test
mochida@mbp casesensetive % touch Test
mochida@mbp casesensetive % ls
Test    test

また、ディスクユーティリティでも、「大文字/小文字を区別」という記載がされるので、こちらでも確認できます。

他の方法

後で調べたところ、Gitでファイル名の大文字・小文字の変更を検知するようにする という記事でも、本事象に関しては解決できそうでした。

あえてファイルシステムを変更するメリットとしては、
サーバーとして多々利用される、Amazon Linux 2 などではデフォルトで大文字/小文字を区別するようになっているので、少し手間はかかりますが開発端末も合わせておくと良いかもしれません。

最後に

明日は @shuheikatoinfo さんの「 音声合成・激動の10年を振り返る 」です。


  1. 実際とは異なる、わかりやすい名前を使っています。 

  2. そもそも開発環境にデプロイするまで気がつかなった原因として付け加えるなら、差分のチェックが甘かったことと、build時のエラー検知が適切に設定されていなかったことも挙げられます。