#6597

机上の絶壁


今日の出来事

先日書いた、Notionへ着想メモが送れない問題。
ひょんなことから今日だけでかなり進展し、テスト送信は成功しました。
最初に思い描いたときはかなりのプロジェクトになると思っていたのですが、
実際に着手してみればなんのことはない、ちょちょいのちょいで実装できました。
Web開発ではわりとあるあるだと思います。
机上の空論だけではやたら難しいことを考えていたのに、
いざ着手してみると全然大したことなかったというパターンですね。
この「やたら難しい机上の空論」をあたかも唯一の作業工程のように考えてしまうと、
着手するのにやたら気合いが必要になるので、結果的に遅れがちになります。
実際これでいままで何度計画が遅延してきたことか……。
なので、プログラミングって意外と「とりあえず手を動かしてみる」
というのが大事だったりします。いや、むしろ最重要と言ってもいいのかもしれない。

当初、DraftsからNotionへの転送はNode.jsが必須だと思っていました。
そうなるとVPS上にサーバーをインストールしてプログラムを書いて、
そこに転送できるように別途なんらかの仕組みを用意して……
となかなか見通しの悪い計画だったのですが、
実際にはPHPファイル1枚で完結できそうです。

Notion APIはjavascriptの他に、curlによる実装も提供しています。
curlというのはざっくり言えば、
コマンドラインでネットワーク上のソースを取得するためのコマンド。
あるURLを指定すると、戻り値としてそのソースを引っ張ってきます。
ネット上のプログラムをインストールする入り口として広く使われていますが、
Notion APIのcrulはこれで公式サーバーのAPIにアクセスすることによって、
公式サーバーが諸々の処理を代理でやってくれるというものです。

iPhone版Draftsはさすがにコマンドラインは叩けません。
しかし、サーバーサイドスクリプトであるPHPは、
shellexec()という関数などを使うことによってコマンドラインを実行できます。
その際、実行するコマンドはPHP上はただの文字列として扱うので、
PHPに入力する段階でいくらでも加工することができます。

さらに、PHPはURLからパラメーターを受け取る特殊な変数があります。
なので、プロセスとしてはDraftsでメモ内容をURLパラメーターに変換して、
PHP側で受け取った変数をコマンドの該当箇所にはめ込み、
その文字列をコマンドとして実行すればNotion APIが実行されるわけです。
実際にテスト送信で自分のアカウントに書き込むことができました。
ただ現状ではなぜか1回送信すると同じメモが2つ作成されてしまうため、
この多重送信の不具合を解決しなければなりません。
これさえ解決すれば実際に運用するところまではあと一歩だと思います。
思ったよりハードルは低かったので、
これなら自前のサーバーを経由する形で着想メモを復活させることができそう。

さて今日は01時就寝12時起床。健康診断の日でした。
健康診断そのものは特に問題なく終了。
血液検査すら無い簡易検査なのでこれといったトピックスもありません。
検査会場が比較的都心に近かったので、そのまま東京駅に行きカフェへ。
上述の着想メモ復活のためにあれこれ試行錯誤していたところ、
元同僚から電話したいと連絡を受けたので急いで帰宅し長電話していました。
もしかするとこの連休中に我が家に集まるかもしれないことになったので、
そうなった場合は明日は部屋掃除やらなんやらで忙しくなりそうです。

コメントを残す