---
title: 公開と非公開
description: データセットの一部の表だけを公開し、残りを非公開にするには、リポジトリを 2 つにします。
---

1 つのリポジトリの中身は、すべて同じ人が読めます。ホストが決めるのは、誰がリポジトリを読めるかで、その中のどの表を読めるかではありません。

一部の表を公開し、ほかを非公開にするときは、リポジトリを 2 つ使います。

```
s3://private/towns/        すべての表。チームだけが読める
s3://public/towns/         公開すると決めた表
```

## 公開側のバージョンを作る

公開側のリポジトリのバージョンは、非公開側のバージョンから作ります。

1. 公開側のリポジトリをチェックアウトする
2. 非公開側のバージョンから、選んだ表を作業カタログへ写す。Parquet ファイルは公開側のデータフォルダへ写す
3. コミットし、`inputs` に非公開側のバージョンを書く

```json
"inputs": [
  { "source_id": "fdl:019a3c4e-7b21-7f3a-9c55-2f0d8e1a4b6c", "sha256": "9f2c…" }
]
```

`sha256` は、非公開側のバージョンのカタログのチェックサムです。公開側の読み手は、そのバージョンを開けなくても、別のバージョンから作られたことが分かります。

## 1 つのリポジトリにしない理由

公開用のカタログを非公開のカタログと同じリポジトリに並べるほうが簡単に見えますが、次の問題があります。

- サーバーが、どの Parquet ファイルを誰が読めるかをファイルごとに判断し、すべてのバージョンのすべてのファイルで正しく判断し続けなければならない
- 非公開のカタログのスナップショットの履歴には、非公開の表の名前、列、コミットメッセージが残っている。そこから写した公開用のカタログは、書き直さない限りその履歴を持ち続ける

リポジトリを 2 つにすれば、決まりは単純なままです。読み手は、リポジトリの中身を全部読めるか、何も読めないかのどちらかです。
