It's okay to be weird

単一NotionページをScrapboxページ用テキストに変換するNode.jsツール、notion2sbを作った


最近はGoのCLIツールを作ったり学んだりするのが一番楽しいと思う今日この頃なのですが、ふとNode.jsとTypeScriptでもCLIツールを作れないかと思い立ちました。

何かネタはないかな〜と思っているうち、そういえばScrapboxもNotionもよく使うのだけど、Scrapbox→Notionの記事などはあっても、逆のNotion→Scrapboxのものはあまり無いなぁと気づいたのでした。

そこで出来たのがnpmパッケージとして公開した、notion2sbというツールです。

何をするツール?

名前はpastakさんのmd2sbにならっています。
md2sbはMarkdownをScrapboxテキストにエンコードするツールですが、md2sbがMarkdown→Scrapboxなら、notion2sbはNotion→Scrapboxというわけです。

そして、実際のところ、名前だけでなく、ほとんどの処理をmd2sbに委譲しています。
どういうことかというと、READMEにも書いていますが、notion2sbがやっているのは、NotionからMarkdownとしてエクスポートされた単一ファイルを、md2sb互換のものに変換し、md2sbにそれを渡しているというものです。
具体的には、Notionの数式記法などは、そのままmd2sbに渡すとエンコードされないため、notion2sbにて事前変換を行っています。

それに加えて、ページ中の画像を抽出し、shokaiさんのgyazo-apiを利用してGyazoにアップロードし、画像リンクをGyazoのURLに置換するということも行っています。
そのおかげで、Notionのページに貼ってあった画像を、そのまま変換されたScrapboxのページでも表示することが可能となります。

この通り、やっていることとしてはそんなに大きくないツールです。実際、行数としても100行程度です。

何を学べたか

このツールの作成を通じて、何を学べたか書いてみます。

けっこう学べましたね。こんな小さなツールでも、実際に手を動かすと色々なことが学べるという良い例かもしれません。

今後どうしたいか

さて、この小さなツールですが、まだまだ未完成なので、次のようなことをやっていきたいです。

まとめ

というわけで、notion2sbの紹介と、その作成を通じて思ったことを書いてみました。

アイデアを形にするまで、それほど時間はかかりませんでしたが、洗練度を上げることにこそプログラミングの本質があるのかもしれないという意味で言えば、まだまだ未完成なものだと思います。

機会があれば、改善を重ねていきたいです。


Takayuki Nagatomi

Takayuki Nagatomi

1985年に生まれて以来ずっと福岡在住。高校を1年で中退後、引きこもって海外ゲームばかり遊んでいたら英語が得意になり、TOEICスコア960を獲得。
英語が得意なら言語を扱うプログラミングも向いているのではないかという恩師の勧めにより26歳の時に情報系の専門学校に入学。
29歳にしてソフトウェア・エンジニアとしてのキャリアをスタートした、レールの無い道を行くプログラマーです。
家族を何よりも大事にしたい、最高の妻を持つ1児の父でもあります。

現職: GMOペパボ株式会社

前ブログ: https://tkykhk.hatenablog.com