GBFS(General Bikeshare Feed Specification) v3.0の変更点

本記事では、
GBFS Version 3.0での変更点を紹介いたします。
今回は約2年半ぶりのメジャーアップデートです。

GBFSの基本的な情報についてはこちらの記事を御覧ください。

https://qiita.com/kumatira/items/f9229c21d9f0db3b5ae3

# v3.0 Version

ターゲットとしては2022年中に v3.0がリリースされる予定でしたが、
おそらく2023年にずれ込む様子です。

[追記]
2023年8月時点では、[v2.3](https://github.com/MobilityData/gbfs/blob/v2.3/gbfs.md) が引き続き "current version" ですが、[v3.0](https://github.com/MobilityData/gbfs/blob/master/gbfs.md) が "Ready for implementation"（実装の準備OK）というステータスになっています。



v3.0では、GitHubのissueにて提案されていた
8つの変更点が反映されます。

GBFS の Version history のページをもとに、変更点を順にさらっていきます。

````
v3.0-Draft (future version)

#182 - Require license_url, add attribution fields
#247 - Required rotation of deeplinks vehicle identifier
#328 - Change to OSM Opening Hours format for times and dates
#351 - Add Phone Number to Field Types
#352 - Remove string field type from price field
#354 - Semantic Changes: Bike becomes Vehicle
#370 - Extending vehicle_types.json
#384 - File requirements and Clarifying changes
````

https://github.com/NABSA/gbfs/wiki/Complete-Version-History



## [#182 - Require license_url, add attribution fields](https://github.com/NABSA/gbfs/pull/182)

### データのライセンスの明記の必須化と参照フィールドの追加

変更のあるファイル：
- system_information.json

変更内容：以下の項目が追加されました。

``license_url``　がオプションから必須に変更。
また、今後は license_url ではなく、[the SPDX License List](https://spdx.org/licenses/) にある Identifier で記述。
 

NULLの場合には、public domain : [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/legalcode)とみなされる。

:::note info
CC0（シー・シー・ゼロ）とは、著作権が生じている著作物やデータについて、自発的に権利を放棄して、パブリックドメインにしようという宣言です。
他の CC ライセンスが著作権を前提として「利用の許諾を行う」のに対して、CC0 は

- 著作権を放棄し、
- 放棄できない権利は無条件かつ永続的な利用許諾を行い、そして
- 利用許諾も無効な場合には権利行使をしないということを「確約する」
という構成になっています。

CC0の宣言がなされたデータは、出所（クレジット）の表記も不要で、自由に利用することができます。
同時に、当該作品・データに関するいかなる責任も負わず、いかなる表明・保証も行わないことを宣言します。

参照：[CC0とはどのような利用ルールでしょうか？](https://www.vled.or.jp/faq/opendata/qa017/qa047/)（一般社団法人デジタル地方創生推進機構）
:::


## [#247 - Required rotation of deeplinks vehicle identifier](https://github.com/NABSA/gbfs/pull/247)

### （利用者のプライバシーを保護する方法として）車両 ID のローテーション

GBFSのリアルタイムデータでは、随時データをモニターすることでOD（Origin-Distination）マップを作成可能である。特にステーション（ポート）で貸し借りを行わない free flowting形式（ドッグレス形式）のシェアサイクルでは、これは大きな問題となる可能性がある。例えば、ユーザーが自宅前で借りて自宅前で返却した場合などは利用者の家を特定できてしまいプライバシーの問題が懸念されます。
そのため、bike_idをローテーションしてODマップを作成できないように対策する。

変更のあるファイル：
- free_bike_status.json

変更内容：以下の項目が追加されました。

``bike_id`` をローテーション（追跡できないように、利用の貸出時、返却時にbike_idを変更）

## [#328 - Change to OSM Opening Hours format for times and dates](https://github.com/NABSA/gbfs/pull/328)

### 時間や日付をOpenStreetMapの営業時間のフォーマットへの変更

変更のあるファイル：
- system_information.json
- station_information.json

変更内容：以下の項目が追加されました。


https://wiki.openstreetmap.org/wiki/Key:opening_hours


## [#351 - Add Phone Number to Field Types](https://github.com/NABSA/gbfs/pull/351)
### 電話番号の項目を新規追加
変更のあるファイル：
- system_information.json

変更内容：以下の項目が追加されました。

カラム名は未定だが、
新しく ``phone number`` が追加される


## [#352 - Remove string field type from price field](https://github.com/NABSA/gbfs/pull/352)

### 料金フィールドから文字列タイプを削除
変更のあるファイル：
- system_pricing_plans.json

変更内容：以下の項目が追加されました。

``price`` にて、
string と non-negative float のデータタイプが許されているが、
non-negative floatに一本化。

## [#354 - Semantic Changes: Bike becomes Vehicle](https://github.com/NABSA/gbfs/pull/354)
### （電動キックボードなど多様な乗り物がオープンデータ化されているため）"Bike" ではなく "Vehicle" という単語の使用への変更
変更のあるファイル：
- gbfs.md
- README.md

変更内容：
多様な乗り物がサービス提供されているため、
bike という表現ではなく、vehicle に表記を統一する。

## [#370 - Extending vehicle_types.json](https://github.com/NABSA/gbfs/pull/370)
### 乗り物タイプの種類の追加
変更のあるファイル：
- vehicle_types.json

変更内容：以下の項目が追加されました。
`form_factor`の内容を追加。
- cargo_bicycle
- scooter_seated
- scooter_standing


スペックに以下の項目を追加
- wheel_count
- maximum_permitted_speed
- rated_power



## [#384 - File requirements and Clarifying changes](https://github.com/NABSA/gbfs/pull/384)

### ファイルの必須項目とその変更の明確化
変更のあるファイル：
- station_information.json
- free_bike_status.json

変更内容：

- ユニークな systemIDという要件を、「SHOULD」から「MUST」に変更。
- すべてのendpoint と deeplink を HTTPS化

## manifest.json の追加

追加されるファイル：
- [manifest.json](https://github.com/MobilityData/gbfs/blob/master/gbfs.md#manifestjson) 

追加内容：

- system_id 毎のGBFSのバージョンとURLの管理


サンプル：
```json:manifest.json
{
  "last_updated":1667004473,
  "ttl":0,
  "version":"3.0-RC",
  "data":{
    "datasets":[
      {
        "system_id":"example_berlin",
        "versions":[
          {
            "version":"2.0",
            "url":"https://berlin.example.com/gbfs/2/gbfs"
          },
          {
            "version":"3.0-RC",
            "url":"https://berlin.example.com/gbfs/3/gbfs"
          }
        ]
      },
      {
        "system_id":"example_paris",
        "versions":[
          {
            "version":"2.0",
            "url":"https://paris.example.com/gbfs/2/gbfs"
          },
          {
            "version":"3.0-RC",
            "url":"https://paris.example.com/gbfs/3/gbfs"
          }
        ]
      }
    ]
  }
}
```

## 補足

実際のver3.0はまだリリースされていないので、
issueから読み取った今回の記事の内容と実際のリリース内容とに違いがあれば、随時修正いたします。

GBFSを活用して広めていきましょう。