Public beta になった Notion API を試してみることにした。
Notion は自分用として様々な使い方をしつつ、ブログエディタとしても使っている。
これまでは Notion に API がなかったので UI 用エンドポイントをリバースエンジニアリングしたライブラリを使っていたので公式に API が使えるのであればそれに乗り換えようと思った。 リバースエンジニアリングしたライブラリはブラウザのセッションに依存するので、まずそもそも Cookie の値を抜いてこなければいけない。 また時折セッションが切れることもあり、その際は新しい Cookie の値を持ってくる必要があり完全自動化は難しかった。
公式な API が使えれば自動化もやりやすくなるはず。
API を使ってみて
早速 API クライアントの実装をして API の全容を把握することにした。
Go で実装した API クライアントは f110/notion-api にある。 使い方は サンプルのCLIツール を見てもらうのが早いと思う。
結果としては既存の利用箇所を置き換えるには至らなかった。
コードブロックがサポートされていない
ブログのエディタとして使っているのでコードブロックも出てくるのだが、 API ではまだコードブロックはサポートされていなかった。
コードブロックは "type": "unsupported"
となり、内容を取得することはできない。
API の設計
おそらく Notion のバックエンドは動的型付言語で書かれていて API の設計にもそれが現れている。
そういう API を静的型付言語でアクセスするのは少し不便だった。
同じ JSON を複数回パースすることで全体を扱えるデータ構造を構築しなければいけないのであまり好きではない。
正直、 Public な API として作っていくのであれば早めに直してほしいところである。 (おそらく Notion にはこの手の API を作ったことがある人・ノウハウを持っている人がいないんじゃないだろうか)
今後に期待
まだまだ実装されているメソッドも少なく API でできることは少ない。
現時点での API の完成度としてはかなり未熟でアルファ版といった感じだが今後連携するソフトウェアを作りたいと思っている人はしばらく変更を追いかけても良いかもしれない。