過去2回の記事で Craft CMS 環境を複製する方法やシステム設定を同期する方法についてご紹介しましたが、いずれの場合もユーザーによってアップロードされた「アセット」や制作サイドで管理する「テンプレート」などのファイルは FTP クライアントなどを利用して、適用前後の環境を同じ状態にする必要があります。
そこで、普段利用している Beyond Compare というツールをご紹介したいと思います。
これは Craft CMS Advent Calendar 2021 12日目の記事です。
Beyond Compare とは
Beyond Compare は Scooter Software 社が開発する diff ツールで、Window / macOS / Linux 版がリリースされています。 公式サイトは英語表記になりますが、アプリケーション自体の UI は日本語対応してるため、問題なく使えると思います。
Scooter Software: Home of Beyond Compare
https://www.scootersoftware.com/
主な機能
- フォルダの比較、差分のマージ
- ファイル(テキストファイル、PDF、画像、Word、Excel など)の比較、差分のマージ
- 圧縮ファイル(Zip、7-zip、Tar、Gzip など)の内容の比較
- フォルダの同期
- 比較レポートの出力(直接印刷、HTML ファイル、テキストファイル)
- FTP、SFTP、FTPS 接続(ただし、SFTP、FTPS 接続は Pro 版のみ)
フォルダやファイルを比較しながら個々の差分をマージしたり、まとめて同期したりするのが基本的な使い方となりますが、zip などの圧縮ファイルの中身を展開せずに比較したり、差分のレポートを HTML や PDF ファイルとして出力したりできるため、用途は広いと思います。
また、Pro 版限定にはなりますが、SFTP 接続して実際のサーバーとの比較できる(異なるサーバー同士の比較も可)のも便利です。
基本的な使い方
使いはじめるにあたり、セッションごとの既定値を調整しておきます。
「フォルダの比較」セッションの既定値を調整
メインウィンドウの左サイドバーにある「新規 > フォルダの比較」を選択後「比較」タブに移動し、次の項目を有効にします。
- ファイル名の大文字/小文字を区別して比較する
- 内容を比較する
- ルールに基づく比較
右下にある 保存
ボタンをクリックすればいつでも既定値を変更できますので、実際に使いながらお好みの設定に変更してください。調整しすぎてよくわからなくなった場合も、出荷時のデフォルト
ボタンで元に戻して保存すれば問題ありません。
次に「名前フィルタ」タブに移動し、「除外ファイル」と「除外フォルダ」を調整します。
ここでは .DS_Store
など比較する必要がないファイルの他、Craft CMS であれば storage
や vendor
などのフォルダをあらかじめ除外しておくと効率的です。
なお、SFTP の接続先を含めたよく使うセッション設定は 名前をつけて保存...
で保存しておくことができます。その際、「比較」や「名前フィルタ」などの内容を個別に変更できますので「フォルダの比較」セッションの既定値は大まかにセットしておけばよいでしょう。
比較対象のフォルダやファイルを選択
比較するフォルダやファイルが同じ階層にある場合は、Finder で対象となるオブジェクトを選択してコンテクストメニューの サービス > フォルダ(ファイル)比較
を選択します。
異なる階層にある場合は、一つ目のオブジェクトでコンテクストメニューの サービス > 比較の左のフォルダ(ファイル)に選択
を選択し、二つ目のオブジェクトでコンテクストメニューの サービス > フォルダ(ファイル)比較
を選択すれば OK です。
また、ファイルマネージャーの比較ツールとして利用するのも便利です。
普段使っている ForkLift を例にすると、「Preferences > General」で Compare Tool: Beyond Compare
とするだけです。
あとは左右のペインで比較対象のオブジェクトをそれぞれ選択し、ツールバーの Compare
ボタン、または、独自に登録したショートカットキーで呼び出すことができます。
フォルダ(ファイル)の比較
サンプルとして、左が Craft 3.7.25
、右が Craft 3.4.11
の公式サイトから過去に取得した zip ファイルを比較してみます。比較対象としてフォルダ同士やフォルダと zip ファイルを選択した場合も、同様です。
片側だけにあるものは紫、両方に存在する場合はより新しいものが赤で色分けされています。
ツールバーの 差異
ボタン右にある ▼
クリックで表示されるプルダウンから、リストへの表示条件を絞り込むこともできます。
あとはリストから目的のフォルダやファイルを選択し、コンテクストメニューから 右にコピー...
や 同期 > 右に反映...
など目的の操作を選べば OK です。 フォルダを選択して反対側にコピーする場合でも、そのフォルダ内に表示されているファイルのみが上書き対象となるため、効率的です。
少し余談になりますが、コンテクストメニューの フォルダにコピー...
は指定先のディレクトリに選択中のオブジェクトをコピーすることができます。差分データだけの zip ファイルを作成して納品といった場面で利用できますので、覚えておくとよいでしょう。また、command + P
(メニューバーの「セッション > フォルダの比較 レポート...」)でレポート出力できますので、あわせて確認してみてください。
ファイルの比較
リスト内の任意のファイルをダブルクリックすると、ファイルの差分を確認できます。
左右の矢印アイコンで差分のあるブロック単位で適用したり、コンテクストメニューの 行を右(左)にコピー...
を利用して行単位で適用できます。
いずれの場合も、差分適用後にファイルパスの右端にある 保存
アイコンをクリックすると反映が確定する点に注意しましょう。
SFTP 接続して差分を取得
さて、ここからが本題です。
Beyond Compare Pro 版 であれば SFTP、FTPS 接続が可能ですので、設定方法をご紹介します。
プロファイルの追加
はじめに、Beyond Compare メニューから プロファイル...
を選択します。
「プロファイル」パネルが表示されたら、左下の +
ボタンをクリックし FTP プロファイル...
を選択します。
「ログイン」タブの入力欄に目的のサーバーの接続情報をセットしたら、名前をつけて保存します。
「フォルダの比較」セッションの追加
次に、セッション設定を追加します。メインウィンドウ左下の +
ボタンをクリックし フォルダの比較
を選択します。
「仕様」タブの 左フォルダ:
と 右フォルダ:
に比較対象のディレクトリパスをセットし、名前をつけて保存します。
入力欄右の ...
ボタンをクリックし、専用のファイルマネージャを利用するとよいでしょう。このとき、左サイドバーにあらかじめ名前をつけて保存しておいたプロファイルが表示されますので、そこからサーバー内のディレクトリも参照できます。
保存したセッションを開く
保存したセッション設定はメインウィンドウの左サイドバーに表示され、ダブルクリックでサーバーに接続できます。
あとは目的に応じて新たにアップロードされた「アセット」ファイルを取得したり、修正を加えた「テンプレート」ファイルをマージしたりしましょう。
まとめ
今回は、Beyond Compare の基本的な使い方について解説しました。
SFTP 接続の設定方法を知ってからは ForkLift ではなくこちらを FTP クライアントとして利用しているのですが、差分だけを把握したり、取得・反映したりできるため、かなり作業の効率化を図れているなと感じています。
30日のフリートライヤル期間が設けられていますので、気になった方はぜひお試しください。