原稿を書く火曜日

7:00

おはようございます。昨日はがっつりとpinboardを作ったのでなんとか形になりました。今日は原稿を進めましょう。

Textobox:

昨日はpinboardの基本的なコードを書き、board用のページを整えました。

ついでに、AmazonのAPIを叩いて、ISNBを投げたら書誌情報がbooks.mdに追記されるスクリプトを書きました。このように情報の流れを少しずつ整えていきましょう。

Textbox上からそのAPIが叩けたら面白い?

あとで読む:[書評] 存在消滅(高村友也): 極東ブログ

とりあえず、これからのやることを整理しておきましょう。

まずAmazonAPI周り。Textboxからこのコマンドラインを叩ければ面白い。通常もパスを通して、簡単にターミナルからコマンドを叩けるとヨロシイです。

また、ブクログからフィードを取得していますが、その際にこのコマンドを経由することで自動的に書誌情報を追記してもよさそう。あるいは、「気になっている本」など買った本ではないものも書誌情報を追加しておくと後々便利かも。

で、他には?

現状はISBNだけで、テキストキーワードを入れたときに検索結果が一つしか表示されない上に自動的にそれが書誌情報として追記されてしまう。検索結果が複数あれば、それを選択する、というやり方を為たほうがスムーズ。その場合は、Textboxから叩くのはかなり面倒になりそうです。inputを使えば対話型も可能? この辺はやってみないとわかりませんね。

既存の本の書誌情報も追加したいので、コマンドラインで複数のISBNを記述する方式に対応してもいいかもしれません。その辺はコードの整理が必要ですね。

これがbooks周り。あとは、アイデア、タスク、イベント、プロジェクト。プロジェクトはそんなに増減するものではないので、そのままでもよい。タスクとイベントとアイデア。イベントはまだ固まっていないので保留。タスクは、追加だけでなく、終了の扱いがあるのが問題。

アイデアはどういう書式でどの対象を管理するのか、そこに追記されるまでの流れをイメージする必要あり。

sideboardでは、現状本体にdropしかできないが、順番の並び替えと削除に対応してもいい。削除に対応するならば、タスクの運用に使える。順番の入れ替えはdropイベントで対応すればいけるだろう。削除は「選択状態」を作れば、デリートキーでいけるし、ダブルクリックを許容するならば簡単に実行できる。

問題はそうして内容を変更したあとの保存をどうするか。箇条書きに統一するならば、マークダウンへの逆変換も難しくないので、Hatchと同じ仕組みで保存はできるかもしれない。まあ、できそうな気はする。

以上がsidebarとpinboardの開発課題。

これまで作ってきた機能はだいたい「便利」の範疇だったが、このpinboardとsidebarは使い方を根本的に変える可能性を持っている。

* * *

Image from Gyazo

考えたことをアウトラインとして整理しておきました。

でもって、このときsideberでideaを開いておくと、結構便利だと気がつきました。textboxについて書いたものがいくつかあったからです。

一つの方向として、Textboxという項目で書いたものは、自動的にこのプロジェクトのページに追記する、という方向を考えていましたが、このサイドバーに表示しておいて、あとはそれを見ながら編集する、というのでも良さそうです。ふむ。

問題は、現状のdropは平面配置を前提としていること。機能させるには、drop先がアウトラインなのかboardなのかを見分ける必要があります。が、現状はどちらも同じdivの中に入っているので、それだけでは見分けるのは困難です。

今表示しているページから判断してもいいですが、そのためにはあらかじめ所定のページを配列に入れておくか、あるいはページタイトルに記法的工夫が必要となります。

とりあえず、アウトラインにドラッグしたときのイベントを覗いてみましょう。

* * *

それぞれでdropしたときの、e.originalTargetが違っていますね(そりゃそうだ)。pinboardの場合はどれもdivになり、アウトラインの場合はliになっています。これで処理を分けられそう。

ul/liがcontentEditableになっていれば、テキストとしてタグが追加され、falseになっていればHTML要素として変換されて追加されます。

dropの瞬間だけfalseにする手はありますね。

9:00

メルマガ:

昨日書かなかったmain稿を書きましょう。

12:00

メルマガ:

main稿が書けました。約3000字。