原稿を書く月曜日

8:00

おはようございます。本日は原稿を進めつつ、Textboxのツイート機能を実装しましょう。

とりあえずは、今週やることの整理から。

今週やることの整理:

TextboxのBoardノートを開きます。先週やろうとしていたこと、やったことがリストアップされているので、それを確認します。すでに終了したものは必要ないので、削除したいところですが、完全に消すのはログ的にもったいない感じがするので、backyard.mdというファイルを作ってそこにコピペするようにしました。

カレンダーを確認し、先週のやりのこしも確認して、今週最低限やっておきたいことを確認します。

publish:WRM:Textboxについて 内装編|倉下忠憲|note

TH:

001の続きを書きます。まず大ざっぱでいいので、この章の流れ・骨子を確定させます。

* * *

とりあえず少し書き足して2000字まで。ボリュームは最低限に。特に001はイントロダクションの役割なので余計に押さえ目に。

* * *

さらに書き足して3000字まで。001に書くべきか「はじめに」に書くべきか判断が難しい内容が含まれてきました。むしろ、そういうものを並べてから、「001に書くべきことは何か」を絞り込むのが良いのでしょう。

* * *

次は、「はじめに」にどんなことを書くのかを念頭に置きながら、001の内容(アウトライン)を整理しましょう。

9:00

『Re:vision』:

003の修正を進めます。

* * *

003は修正ゼロでした(倉下の原稿だから当然と言えば当然)。

004に進みます。

* * *

004の修正を終えました。残った課題は二つ。一つは文章の補強で、これはTak.さんにお願いする。もう一つは、全体の構成に関するアイデア。004が長すぎるのに対して、006が短すぎるので、分割できないか、というアイデアですが、若干内容的に難しそう。

10:00

Textbox:

Tweet機能について。

昨日は途中まで、XMLHttpRequestを使っていましたが、fetch()でも可能であることを知り(しかもこちらの方がモダンだということも知り)、実装を変更しました。ただ、ぜんぜん分かっていません。

* * *

ぜんぜんうまく投稿できないので、一旦ごく普通にpythonから投稿するところから。

* * *

postしているはずなのに、サーバーでgetされているのなぜなんだと思っていたら、fetchのコード書いているのに、通常のformのsubmitボタンを殺していなかったので、同時にそれが起こっていた模様。投稿に成功したときもやけにツイートが遅くなるのは、おそらくそれが理由。

極く普通にbuttonにしてclickイベントからfetchを発火させたら面白いくらいにスムーズに解決。2時間以上かかりました……。

12:00

書店へゴー。

13:00

book:buy:store:

15:00

Textbox:

ようやくTextboxからのツイートが安定して動くように。

よって、次のステップ。

まず、tweetしたのと同じ内容を、テキストファイルに保存する、というもの。すでに書いたことのあるコードで再編できるので、難しくはないが、どう実装するか。

Tweet+保存は、同時に行うが、Tweetしない保存、はあるだろう。Tweetだけ、は存在しないし、両方とも保存しないのはやる意味がない。だから、状態は二つ。

これをどう切り替えるか。あとScriptはどう書くか。

上記に加えて、別のテキストファイルに書き込める機能も一応想定したい。この作業記録でやっているようにpushといったコマンドで、特定の動作をできるようにしてもいい。

* * *

でもまあ、あまり考えすぎない方がいい。まずは少しの機能を書いてみる。

17:00

Textbox:

現状はfetchで、tweet.cgiにフォームの内容を送信している。機能を分割するならば、別のcgiを作ってfetchを分岐(ないしは二重発動)させるのが筋だろう。

その場合は、書き込むファイルを引き数で受け取って、書き込み先を変更できるようにしておくのが良さそうに思う。

しかしながら、直感的に「同じところで処理するのだから、同じcgiファイルにまとめておけばいいんじゃない?」という声が内側からしてくる。なんとなくコードが長くなるし、あっちこっちのファイルを見て回らなければならなくなるのが気になるのだろう。

たとえば、新しいcgiファイルでも、フォームの情報を受け取って処理する、という部分を同じように書かなければならない。そこを書き換えるなら、すべてのファイルを書き換える必要が出てくる。

つまり、大きな処理の書き方が間違っているのだ。

tweet.cgiで処理するのではなく、フォームの情報を受け取って個別のcgiに処理を渡すという処理をするcgiを書くのが本筋なのだろう。

* * *

いや、ちょっとまとう。

pythonではimportが使える。だから、特定のファイルに書き込むpyを書いておいて、それを使えばいいのでは。

そもそも「特定のファイルに書き込む」は、わざわざ切り出して処理するようなものだろうか。

* * *

ツイートの保存は、常に同じファイルに行われる。で、ツイートしないで保存する「ことがあるかもしれない」から、今ややこしいことを考えている。一旦それを捨ててみよう。

19:00

Textbox:

テキストファイルへの保存はすぐにできた。

で、mdファイルに保存するので保存するときにdivで囲むような処理と、タイムスタンプを加える処理をした。これでだいたいOK。ツイートしたらそれと同じものがテキストファイルに保存される。あるいは、そのテキストファイルに直接Textboxから保存できる。good。

book:read:『Java言語で学ぶデザインパターン入門第3版』:

読んでいきます。

* * *

これは、コンピュータだけに当てはまることではありません。たくさんの開発者が共同して作業するときには、人間のインターフェースが重要になるのです。そして、そのインターフェースの基となるのは「言葉」です。特に、コードの詳細を離れて、プログラムの大きな構造について議論するときには、言葉や図式が重要になってきます。

「はじめに」

サブクラスは必ずスーパークラスを知っています。

xxxi

* * *

とりあえず第一章の手前まで読みました。

20:00

duolingo:

bcb:

003の修正を続けます。

* * *

数行だけ修正しました。微速微進。

イラストの練習

book:read:GEB:

p.324まで。かなり面白い。「……とフーガの蟻法」。

実のところ、高度な実体のすべては、一致協力して行動するシグナルの集合であるわけだ。

21:00

おーぷん・かーそる:

原稿用の下書きメモだけ書いておきます。

* * *

ポストGTDの時代(倉下) - おーぷん・かーそるの広場

書きながら考えていくスタイルなので、まず冒頭に方針だけを置いておきます。

Drummer:

textモードとstructureモードの切り替え - Drummer

22:00

本日の振り返り:

本日はTHを少し進め、Textboxの「Twitter送信」機能の実装にたくさん時間を使いました。紆余曲折ありましたが、とりあえず満足するレベルで実装できました。あとはデザインですね。それは使いながらぼちぼちと。

こうやって実装して使ってみることで「こういう形が良い」というのが見えてくると思うので、そこから本格的な実装を考える、という手順でも良さそうです。

というわけで、本日はそろそろ閉店がらがらです。

お疲れさまでした。仕事終わりの妻を迎えに行ってきます。