16
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[個人開発]Notion APIを叩いて日本酒(のリスト)をデータベースに注ぎ込んでみた

Last updated at Posted at 2023-12-04

この記事は Wano Group Advent Calendar 2023 の5日目の記事となります。

ネタバレ

  • Wanoのエンジニア合宿に行ってきたよ
  • 題材は「Notionに日本酒をそそごう」にしたよ
    • 外部API(さけのわ.com)でJSONを取得して、それをNotionAPIを通してNotionDBに保存したよ
  • たのしい合宿だったよ

はじめに

ごあいさつ

こんにちは!TuneCore Japanバックエンドエンジニアの @shibe_ です。
この度11月10-11日の間、Wanoのエンジニアチームで開発合宿に行ってまいりました!
そもそもどんなものが気になる方はこちらを御覧ください :dolphin:
大人の自由研究”で得られたもの。Wanoグループ開発合宿レポート!|Wano Group

業務についての情報収集を行う人から麻雀の得点計算を覚えるゲームを組む人まで様々な開発が行われておりましたが、自分は

  • Web上のサービスでAPIを使って取得できるテーブルをNotionに手で転写するのが面倒だなあ〜
  • 一泊二日の合宿でちょうどいいボリュームの開発がしたいなあ〜
  • 忘年会シーズンの話題作り、なんかないかなあ〜

というモチベーションから
「Notionに日本酒を注ごう!」
と決意しました。

Notionとは?

Notionは無料で使用できるデータベース件メモ帳のようなアプリケーションで、
ページごとにテキストを入力できるほか、

  • 画像や音声・動画ファイルをアップロード(容量制限あり)
  • 表を作成する
  • 表をデータベースにして集計したり一覧表示したりする
    などなど機能を有しており、その用途は
  • 家計簿
  • カレンダー
  • ガントチャート
  • ワールドトリガーのキャラクター一覧
    と枚挙にいとまがありません。
    今回はその中で「データベース」を用いた機能についてお話します。

APIとは?

あまりご存知でないかたはおられないと思いますが一応……
APIとは「Application Programming Interface」の略称で、

今回は

の二つを用いてNotionに大量の日本酒を注いでいます。

試運転をしよう

まずは、NotionAPIを使ってデータベースに行を保存するしくみを知る必要があります。
下調べした結果、以下が必要だとわかりました。

  • インテグレーションの作成
  • 編集できるようにしたいDBにインテグレーションの許可
  • API送信情報を作成
  • API発射!

下準備

インテグレーションを登録しよう

Notionインテグレーションとはなんですか?
Notionインテグレーションのページによると

Notionインテグレーションは、Jira、Googleドライブ、SlackなどのツールをNotionに接続して、ワークフローを強化します。インテグレーションは、NotionのAPIを使用して構築されます。

とのことです。
外部のプログラムを用いてNotionを動かす場合、この Notionインテグレーション くんを通して動かすと思って良さそうです。
まずはNotionを立ち上げて設定ダイアログを開き、
ワークスペース -> コネクトタブ を選択すると、
インテグレーションを作成または管理する というリンクが登場します。
ここから画面上の指示にしたがってNotionインテグレーションを登録しましょう。
image.png

image.png
今回は、 shibe_external_api という名前にしてみました。※
このインテグレーションのKeyが表示されますので保存しておきましょう。後ほどデータベースを操作するのに必要です。

※2023.12.04に削除しましたので、ご自身のインテグレーションを用いてお楽しみください

DBとインテグレーションを接続する

Notionの任意のページを開いたら以下の手順でデータベースと Notionインテグレーションを接続します。

  • データベースを作成
  • 作成したデータベースのページを開く
  • 右上のメニューを開き、 コネクトの追加を選択
  • さきほど作成した Notionインテグレーション を選択する

image.png
今回は

  • 名前
  • うさぎの割合
    を列に持つ、 テスト用DB_うさぎひよこキメラ というDBを作成してそこに設定してみました。

これで、外部から shibe_external_api の情報を用いて テスト用DB_うさぎひよこキメラ データベースを操作することができます!

API送信情報を作成

続いてはAPIで送る情報を整えます。
NotionAPIはHTTPプロトコルを用いて送信することができますので、みなさまのお気に入りのAPI送信ツール(自分はTalend API Testerを好んで使っています)に必要な情報を設定していきます。

認証情報はヘッダーに、実際に操作する内容はボディに設定するようです。
今回は以下のような形になります。

エンドポイント

https://api.notion.com/v1/pages

Header

Authorization: Bearer [NotionインテグレーションのKey]
Notion-Version: 2022-06-28
Content-Type: application/json

Request Body

{
    "parent": {
        "type": "database_id",
        "database_id": "更新したいデータベースID"
    },
    "properties": {
        "名前": {
            "type": "title",
            "title": [
                {
                    "type": "text",
                    "text": {
                        "content": "ブロリー"
                    }
                }
            ]
        },
        "うさぎの割合": {
            "type": "number",
            "number": 0.5
        }
    }
}

API発射!

準備ができたら、API送信ボタンをクリックしてみましょう。
データベースが更新されたら成功です :tada:

デモ1

デモ1_1440.gif

プログラムを動かそう

さて、基本的なしくみはわかりました。
あとは公開されているAPIから情報を取得して、NotionAPIの形式にして送信するだけです。
今回用いたAPIはさけのわ様が公開しているさけのわデータ より、
銘柄一覧 (GET /brands) APIを用いています。

シーケンス

シーケンスは以下のようになります。

  • さけのわ.com からデータ取得
  • 取得したデータを整形
  • Notionデータベースに送信!

という手順ですね。

ソースコード

ソースコードはこちらで公開しています。
気になったかたはぜひ動かしてみてください。
(main関数内の変数authをお手持ちのNotionインテグレーションキー に書き換えてご利用ください)

デモ2

実行すると以下のようになります。
ドキドキ……
日本酒リスト作成.gif!
ウ,ウゴイタァ!!!(途中増えるペースが落ちるのはご愛嬌ということで……)

注意点

  • 上記ソースコード上のNotionインテグレーションは削除済のため、ご自身のNotionインテグレーションでお楽しみください。
  • この合宿内には「そしたらクレカの明細CSVファイルとか読み込んでNotionに吐いたらすぐインポートできるやん^^」とか思ってたんですがCSVファイルは直接インポートできるようです。南無。
  • 他にも、Zapierなる機能があればアプリケーション間での連携もできるそうなのでもしかしたらコーディングなしで連携できるやもですね :tada:

おわりに

というように、開発合宿では楽しくコーディングをさせてもらいました。
この世界には様々なAPIが存在するので、いろいろ叩いてみるとなにか発見があるかもしれません!(RPGチュートリアル終了後並感)
この記事で、より多くの魂が救われることをここで祈り続けています。


現在、Wanoグループ / TuneCore Japan では人材募集をしています。興味のある方は下記を参照してください。

Wano | Wano Group JOBS
TuneCore Japan | TuneCore Japan JOBS

16
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?