@shakakibi (しゃか きび)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Gitで管理する表計算ファイルについて

解決したいこと

表をGitで管理したいです。

必須要件

求めている要件は以下の通りです。

  • Gitでバイナリ扱いされない(そこそこ大きな表なので何回か編集するだけでリポジトリの容量を圧迫してしまうため)
  • Gitで差分が管理できる
  • なんらかの表計算ソフトで読み込むことができる(なんでもよい。有料・無料、プロプライエタリ・オープンソースを問わない)
  • 他のセルを参照した計算式や関数が入力でき、表示時に計算してくれる

任意要件(できればうれしい)

必須ではありませんが、できればうれしいです。

  • UTF-8文字が使用できる
  • プログラムから取り扱えるようにできるライブラリが存在する

自分で試したこと

  • CSVファイル
  • TSVファイル
    →関数が使用できない
  • Office Open XML(xlsxファイル)
  • OpenDocumentスプレッドシート(odsファイル)
    →バイナリ扱いされてしまう(diffを取ることはできるが要件を満たさない)

妥協案

  • TSVファイルにがんばって計算式や関数を書き、表計算ソフトではコピペで貼り付けたりリードオンリーで読み込む(エクセルやLibre Officeなどの計算ソフトは保存時に計算後の値に書き換えを行うため)
    →あまりやりたくない(書くのがつらい、計算式や関数のデバッグがつらい、列の追加時などにセルの参照を書き換えてくれない、などの理由)
  • HTMLで表を書きJavaScriptで計算させるようにする
    →絶対にやりたくない(すべてがつらいため)

もし要件を満たす画期的ななんらかのソリューションがあればおしえてほしいです。
よろしくお願いします。

0 likes

2Answer

古式ゆかしいものではありますが、SYLK形式であれば条件を満たせる可能性があります。

1Like

Comments

  1. @shakakibi

    Questioner

    SYLK形式についてかなり有力でしたが、実運用しようとすると下記理由により難しいかもしれません。
    1, gitにはバイナリ扱いはされないものの、そこそこ大きな表ではgitで差分が見れるとは言い難く、なにより一番の難点は列や行を挿入した時にそこから後の行がすべて書き換えられてしまうせいで差分がすごく多く、確認が困難になってしまうこと
    2, UTF-8が使えないこと(Shift-JISの範囲では日本語入力できる)
    3, Libre Officeでは保存時に計算式や関数が計算後の値に書き換えられて保存されてしまうこと(エクセルでは問題なし)
    4, SLKファイルを取り扱えるライブラリがあまり無い

    上記については要件としてリストアップできていなかったため、追加でUTF-8の件とプログラムからライブラリで読み込みたい旨について質問に任意要件として追加しました。

    ですがかなり有力なので情報ありがとうございます。
    代替案がない場合、運用でカバー(末尾付近にしか挿入が行われないようなデータ書式での運用、UTF-8文字を使用しない、プログラムからは読み込みをしないなどの運用)ができないか検討します。

解決策ではありませんが、必須要件についていくつかコメントがあります。

Gitでバイナリ扱いされない(そこそこ大きな表なので何回か編集するだけでリポジトリの容量を圧迫してしまうため)

Git のオブジェクトデータベースはテキストファイルとバイナリファイルの区別をしません。バイナリであってもテキストと同様に差分圧縮して保管します。ただしファイルサイズがある程度以上大きいと(バイナリかテキストかに関わらず)差分圧縮の対象外になります。よって容量の点でバイナリか否かを気にする必要はありません。

Gitで差分が管理できる

バイナリファイルでも diff ツールをうまく設定すればテキスト形式の差分を表示できる場合があります。

1Like

Comments

  1. @shakakibi

    Questioner

    コメントいただきありがとうございます。
    Gitのバイナリファイルに対する扱いについて誤解していましたので指摘いただき助かります。
    odsもxlsxも差分圧縮できないので今回の参考にはなりませんでしたがGitの理解をより深めてゆこうと思うきっかけになりました。
    GitでExcelの差分を見るのは検索すると良く出てきますので、メンバーに非エンジニアが多い場合にはより有力な案になると思います。

Your answer might help someone💌