スプレッドシートをWeb APIにできるサービスを作ってみた

この記事は[Web API Advent Calendar 2021](https://qiita.com/advent-calendar/2021/webapi)の2日目の記事です。
1日目は @sugimomotoさんの[400種類以上のAPI連携を開発・サポートしているデータパイプラインツール CData Sync の中身](https://www.cdatablog.jp/entry/cdatasyncinternalstrategy)でした!

12月1日にスプレッドシートをWeb APIにできるサービスを公開しました🎉
今年の3月からすこしづつ。。やっとリリースできました！！
この記事では、作ったものの紹介やはじめたときの動機などをまとめています。

https://twitter.com/sssapi_app/status/1465802829906558984?s=20

### つくったもの

GoogleスプレッドシートのAPI化サービスです。
「[SSSAPI](https://sssapi.app)」

こんなスプレッドシートから

![sample4_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/a732d7bb-9107-9506-e00f-ff6c95102870.png)

こんなJSONを返すAPIを作ってくれます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/c022d176-8480-46cc-ac84-9f8e1b590605.png" width="600px" />


全件取得だけじゃなく、1件取得やページング/フィルタリング/ソートなども用意してます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/964958fd-5f14-5f12-37e6-551e5b66fcdc.png" width="600px" />

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/d070e2ce-ed4c-91c6-04ca-b30512cb256c.png" width="600px" />


配列での取得やネストしたオブジェクトへの変換などのオプションも。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/a287f661-59ac-4cbe-7878-558e87f0e547.png" width="600px" />

## つかいかた

使い方は、すごくシンプル。

1. 登録するスプレッドシートの共有設定
2. スプレッドシートのURLを登録する
3. APIを呼び出す

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/8f93e4de-6c8a-e823-3e74-386ab79f50e7.png" width="600px" />

これだけで、APIが作成できちゃいます！

## 利用例

### ちょっとしたマスターデータ管理に

ちょっとしたデータの取得をAPIでしたいときに便利。
スプレッドシートにデータがあればすぐにAPIを用意できます。

CSVファイルなどがあれば、スプレッドシートにインポートしてそのままAPI化も！
スプレッドシートなら**ビジネスサイドの人にデータを入力をお願いしやすい**です(*´ω｀*)

### ちょっとしたコンフィグに

ちょっとしたフラグなどの設定値などに使うのもOK。
サーバーとクライアントで共通の設定値を使いたい場合はAPIがあると便利です。

スプレッドシートで用意すれば、ちょっとしたコンフィグにも使えます。
1件取得もできるので、**本番やステージングなど環境に合わせた設定もまとめる**ことができます。


### プロト開発時のモックAPIに

開発の初期段階でAPIサーバなどがまだないときにも便利です。
スプレッドシートでダミーデータを用意すれば、モックAPIが簡単に作れます。

初期段階だとデータ構造も検討しながらで、変更も多いですが、
スプレッドシートなら**項目の追加/削除など一括変更が簡単**にできるので便利。


## なぜつくったのか？

個人開発が好きで、いろんなものをちょこちょこ作ってる。
なので「**もっと楽に作ることはできないかなぁ？**」といろいろ考えていたり。

ちょっとしたデータはJSONで用意したりもしていたけど、
項目も件数も多いデータをスプレッドシートで管理していたときに、
「**このままJSON APIにできれば楽なのにな〜**」というのが最初

最初はJSONファイルに変換するだけの機能からはじめ、
JSON化しているスプレッドシートを探さなくて良くなりだいぶ楽に。

その後に、「ビルドしなくてもデータを更新したいな〜」と思い、
今の形になっていきました。

実際使ってみてみると、**シンプルなAPIで十分なケース**が多く、
SSSAPIとFirebaseで早く楽に作れるようになりました♪
お知らせとか更新情報とかちょっとしたものならSSSAPIでだいぶ楽に(*´ω｀*)

一度使うと、「めんどくさいからSSSAPIでいいか〜」という場面が多くて、
SSSAPIのサイト自体もどんどん利用する箇所が増えていく感じです。

## SSSAPIがマッチするケース

β期間中にユーザさんにいろいろ話を聞く機会があり、
以下のようなケースでよろこばれていましたヽ(=´▽`=)ﾉ

- **エンジニア以外にデータを入力/編集してほしい場合**
- **CSVファイルなどすでにデータがある場合**
- **フロントエンドはできるけど、API開発経験がない/少ない**

特に一つ目の**複数人で共同作業をする方**が多くいました。
JSONファイルの編集やDBの直接操作は、エンジニア以外にハードルが高いですが、
スプレッドシートであればチームでも扱いやすいようです。

管理画面を作るのにも工数が必要なので、
すぐ利用できるようになるのはとても良いようでした。

ただ、GASなどを利用し、自分で作成することもできるので、
件数が少なくて管理が容易、工数や予算的にも問題ないので、
自分で開発できる方はあまりマッチしないようでした。。

ただ、この気持ちはすごくわかるので、
ペットボトル2本おごると楽できる価格帯でがんばってます(*´ω｀*)


## ユーザ募集中です!!!

リリースしたてなので、まだまだ足りないところも多いですが、
より使いやすくなるように改善予定です！

無料枠もあるので、ぜひぜひ遊んでみてください(*´ω｀*)

GoogleスプレッドシートのAPI化サービス
「[SSSAPI](https://sssapi.app)」

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/2f6e2d51-180a-6d69-acac-22495d2a9f39.png" width="600px" />