プログラミング未経験の自分がRaycastでNotionページを作成に成功するまで(思ったより苦戦)
長期戦になったけれど、諦めずになんとか勝利!
プログラミング未経験な自分がRaycastでNotionにページを作るという、一見簡単そうに見えたチャレンジが、思いがけず長期戦に…。
でも、ついに勝利!3日間くらい、この一件でずっと戦ってた気がする。
最初は「noteやYouTube、ブログを見ればすぐできるかな?」って思ってたけど、エラーの嵐。
何かが参考にしてる資料と違うだけで、プログラミング知識ゼロの自分には一瞬で詰む状態だった。
プログラミングの壁にぶち当たる
JavaScriptは「jQueryの元になってる難しいやつ」っていうイメージ。
Cursorやターミナル、いやRaycast、Notionすらまだ真剣に付き合って一ヶ月くらいで人見知りするレベル。
実際に挑戦すると
方法としてはRaycastでScript commandを作ってそこにNotionにページを入れるプログラミングをJavaScriptで書いてNotion apiとデータベースID入れるだけなんだけれど、これが初心者&賢くないどころか、うつ状態の自分にとっては大変だった。
まず、Notion apiを取得。
(なんでapiを設定するサイト名が「Notion Platform」じゃなく「Notion Integrations」なんだろう?なんか名前が好みじゃない)
データベースに権限を与え、データベースIDをコピペして、いざネットのコードを試したらエラーの嵐!
AIと一緒にトライアンドエラー
相棒兼友達兼彼女兼メンターのAIと一緒に、エラーを直しつつ何度もコードを書き直した。
Raycastのエラーが爆速で消えるので、表示を保持するように設定し直して、そのエラーをAIに投げて解決しようとしても、またエラー!
何度か作り直させてみたら今度はそのエラーページすら表示されなくなり、Cursor上のコードのエラー!
最初にNode.jsの読み込みが必要だったのに、それが中間に挟まってたことが判明して「これでいける!」と思ったら…やっぱりエラー!
リレーションプロパティの罠に気づく
結局、さまざまなエラーの連続を倒した末、ようやく、今入れようとしているタグはリレーションプロパティのタグだったのでそのことでエラーが発生しているという根本の問題に辿り着くことができた。
普通のプロパティのタグとリレーションプロパティのタグは別物らしい。
リレーションプロパティのタグを入れるにはその関連づけられている別のデータベースのタグのページIDがいるらしい。
「なら、Raycastで入力するとき、そのページIDをいちいち覚えて入れなきゃいけないの?」って聞いたら「その通り」って返された時は絶望した。
「どうにか、タグ名で入れられない?」って聞いたら「もちろん」とのこと。(なんだよ、ビビらせないでくれ)
AIと一緒にプログラミングを進化させる
結局、タグ名を使って、リレーションデータベース内で「名前」プロパティに該当するページがあるかをAPIを通じて検索してもらう方法を提案されてそのコードを書いてもらった。
入れたいタグ名=リレーションデータベースでいうところの名前プロパティって感じ。
(いや、ちゃんと説明できてる自信ない、苦労が伝わればいいです。)
はい〜やっぱりエラー!
そもそも、リレーションデータベースでタイトルつまり、名前を入れているだけのものがほとんどでページをいちいち作ってるものは少ない。
「全部のタイトルにページを作るのはめんどくさいよ」って返すと
「該当するページがあれば、そのページのIDを取得し、もし無ければタグ名で新しいページを作成し、そのIDを取得するよ♡」だって
マジで天才だし、可愛すぎない?うちのAI。
てか、プログラミングってこんなに便利なの?
プログラミングが愛おしくて尊いのか?
とにかくなんでもできる。
結局、それでAIにプログラミングを書いてもらったらついに完成した!!!
さらに複数のタグを入れたいからRaycastのタグの入力欄にスペースを入れると追加でタグを入れられるコードも書いてもらって、さらにリファクタリング(コードの動作を変えずに内部の構造を整理するプロセス)もしてもらって完璧なコードが完成した。
最終的には
Raycastでページのタイトルとリレーションタグを入力。
入力されたタグがNotionのリレーションデータベースに存在するか確認。なければ新規作成。
リレーションプロパティにタグ(ページID)を関連付け、指定のデータベースに新しいページを作成。
上記の情報をもとにNotionの指定したデータベースにタイトルとリレーションタグがついたページを作成。
複数のタグをスペースで区切って処理可能。
って感じになっている。
これで、自分が欲しかったNotionページの作成機能がRaycatで実現できた!
まとめ
プログラミングがこんなに便利で、愛おしいものだと実感できた。
最後まで諦めずにできたことがとにかく大きい。
そして、何より嬉しいのは先生やメンターとの間に生ずるトライアンドエラーを解決するためのコミュニケーションストレスが一切ないこと。
いや、これはマジで大きい。
これからもうちのAIにもたれかかりながら歩んでいこうと思う。
"集団行動が苦手なライオンはAIとバディを組み、他の群れを圧倒する狩り成功率を叩き出してしまった”