原稿を進める木曜日

9:00

おはようございます。本日はうちあわせCastをお休みにしてもらったので、部屋の片づけ、冬モードへの移行などを進めたいと思います。が、まずはTHの原稿ですね。

あとで読む:

TH:

002のアウトラインを確認します。10月11日に作っていますね。

* * *

ざっと読み返しました。言いたいことはなんとなく伝わってくるアウトラインです。で、ここからどうするか。

11日のアウトラインを「整える」か、今日新しく書き直すか、11日のアウトラインをベースに本文を書くか。

そういえば、本文用の原稿ファイルもすでに作っていた気がします。

* * *

ありました。すでに3000字くらいあります。この原稿と、11日のアウトラインの整合性はどうでしょうか。

* * *

だいたい同じっぽいです。ということは、現在「アウトラインは破綻していない」と言えそうです。であれば、作り直す必要はありませんね。アウトラインが破綻したとき、それを作り直す。これを指針としましょう。

* * *

では、原稿はどうするか。既存のファイルに書き足すか、それともゼロベースでファイルを作り直すか。

* * *

あまり深く考えないで置こう。

すでに書いている分を「下」において、ファイルの上から新規で書き直すことにする。

* * *

2000字書きました。以前の3000字分はカウント無視しているので、現状全体は2000字です。

11:00

妻の昼食準備など:

12:00

お昼はオムライス。

Honkure:

『会社は無理ゲー』の記事を書きましょう。

* * *

書きました。

publish:Honkure:『「会社は無理ゲーな人がノビノビ稼ぐ方法』(堀田孝治) – Honkure

13:00

家の衣替え的な

冬に備えていろいろ室内を準備します。

14:00

待ち時間にコーディング。

作業記録:

一日の作業ファイルの処理が終わったら、doneを付けてファイル名を書き換えていたが、その処理を一旦コメントアウト。たぶん、実害はないと思う。

あと、「一日の作業ファイルの処理」の中に、今のところMindGardenへのpushの書き込みだけが含まれているが、買った本などのピックアップもここに含めたい。列挙すると、

あたりか。そうして作成されるファイルがTextboxで閲覧できることで「読書手帳システム」がようやく一歩前進する。

* * *

抜き出す処理は簡単に書ける。今でもpushの記述は自動的に抜き出しているからあとは正規表現の内容を変えればいい。問題は、追記する方。あるいはそのファイルの特定。

総合台帳は固定だから良いとして、月ごとの場合は、その名前を生成しなければならない。

1
2
3
4
5
6
7
8
with open(yesterdayFilePath) as f:
        l = f.readlines()
        for s in l:
            m = re.match(r'>> push (.*)?:(.*)$', s)
            if m:
                tenpdic = d = {'num': sirial , 'title': m.group(1),'body':m.group(2)}
                sirial = sirial  + 1
                bigdic.insert(0,tenpdic)

= dの部分がまったくわからないが、まず正規表現で必要な箇所を広い、その後記述先に適した文字列に変換する。

で、pushの部分をpublishにすれば記事更新履歴は簡単に作れる。bookbuyも同様にいける。

あとは、ifを増やせばいい。正規表現とmatuchの行を増やし、ifの中で整形する。

で、「yesterdayFilePath」にその処理している作業記録ファイルの名前が入っていて、それは8桁の年月日になっている。そこからファイル名を生成する。

2021年10月に買った本、ならばformtを使えばすぐに作れる。そのファイルがあればそのまま追記すればいい。なければファイルを作成してそこに書き込む。ぜひとも一行目をタイトルに付けているので、自動生成ではないようにしたい。

必要であれば、「2021年10月に買った本」に日付と共に書き込むことができる。それはファイル名から日付を生成すれば簡単だろう。

では、総合台帳はどうか。

愚直に作れば、10月21日『hogehoge』という記述が並ぶだろう。が、「10月」という月ごとの区切りが合ったほうが嬉しいかもしれない。

たとえばこんな感じ。

Image from Gyazo

どうやったらその区切りを追記できるだろうか。「yesterdayFilePath」から月を生成し、その記述がfile内にあれば記述する、というのは愚直で独立的な書き方だが、若干面倒くさい。

ちょっと考える。

どんなとき、総合帳に月を書き込むことになるだろうか。当然、月が変わった後、最初のタイミングで、だ。そこでnowMonthのような変数(あるいはそれに相当する何か)を持っておき、それがその日の月とズレるなら、記述を追加する、という方法もあるのだが、ちょっと考えた。

もし、「2021年10月に買った本」というファイルが存在せず、そのファイルを作成するタイミングこそが、総合台帳にも10月という見出しを入れるタイミングではないか。つまり、前者をトリガーにして、後者も行えばいい。「月替え」処理してまとめてしまうわけだ。

これは効率的な処理ではあるが、あまり「オブジェクト」っぽくはない処理でもある。なんとなく、あとからメンテナンスするときに困りそうな予感もある。が、気にしないでおこう。とりあえず、そういう方針で行く。

bookbuyの行があれば、その行をファイルに追記する。その前にファイルチェックを行い、存在するならそのまま追加。存在しないなら、ファイルを作成&総合台帳に見出しを追記して、その後同じように追記する、というやり方。

* * *

というところまで考えて、問題が発生した。現在bookbuyは行要素ではなく、ブロック要素であった。単にマッチした行をうんぬんでは処理が終わらない。

逆に、bookreadendは、行要素なので正規表現で行ける。

ちょっとブロック要素の処理について考える必要がありそう。

* * *

ブロック要素の処理について。

現状はテキストファイルを一行ずつ上から読み込んでいき、その行に正規表現でマッチするものかどうかを判定している。

ということは、bookbuy行がマッチしたら、「ブロックが始まった合図」として処理することになるだろう。その次の行から「ブロック処理」が始まり、それが終わるサインがきたら、処理を終了させる、というやり方。

現状は、2個以上のシャープマークが終了の合図になっている。何らかの事情で次の見出しがない場合もあるが、現状の大半はそういう記述になっている。それを意識すればいいだろう。

何かのフラグを立てればいい。

1
2
3
4
5
6
            n = re.match(r'book:buy:(.*?)', s)
            if n:#ブックブロックの開始
                bookBlockFlag = True
                continue
            if bookBlockFlag == True:#ブックブロック内の処理
                continue

ブロックの解除はどうするか。“bookBlockFlag == True"の中で、さらに行が##にマッチするなら? さすがにコードが深くなりすぎる。

行頭の二個以上の#は、あらゆるブロックの解除であるはず。つまり、一番下のifに、それを作ればいい。

* * *

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    with open(yesterdayFilePath) as f:
        l = f.readlines()
        bookBlockFlag = False
        for s in l:
            m = re.match(r'>> push (.*)?:(.*)$', s)
            if m:
                tenpdic = d = {'num': sirial , 'title': m.group(1),'body':m.group(2)}
                sirial = sirial  + 1
                bigdic.insert(0,tenpdic)
            n = re.match(r'book:buy:(.*?)', s)
            if n:#ブックブロックの開始
                bookBlockFlag = True
                continue
            if bookBlockFlag == True:#ブックブロック内の処理
                continue
            nh = re.match(r'^###* ', s)
            if nh:
                bookBlockFlag = False
現状の書き方だと、複数のブロックが内在しているときにややこしいことになりそうだが、とりあえずはよしとする。

まずは、ブックブロック内の処理について考える。

空白行は飛ばしていい。単にテキストが書いているものも省いていい。必要なのは書名がある行だけ。書名がある行は、今のところリスト記法になっている。また、書名は鍵括弧で囲まれている。つまり、トリガーの作り方は三つある。気にせずリスト記法の行をすべて拾う。。鍵括弧がある行を拾う。。リスト記法+鍵括弧を拾う。注意深いのは三つ目の方法だが、鍵括弧を使わないものが出てくると破綻するので、一番広い方法を選択しておこう。

逆にこうすると、リスト記法を付け忘れると(一冊の本だけだと忘れそう)拾ってくれなくなるが、まあ大惨事ではないのでよしとしよう。

* * *

Flagが立っていて、その行が見出し記法ならば拾う、というやり方。あるいは、その行が見出しであるとき、何かしらのflagが立っているなら、という処理の方法もある。

19:00

movie:『騙し絵の牙』:

片づけしながら映画を観ていました。大泉洋がハマってましたね。

雑誌や出版社の厳しい状況を物語の土台としながら、そこに蠢くさまざまな策謀を割合ライトに描いている作品です。

TH:

編集者さんに01のプロトタイプ稿を送信しました。これで一区切りです。

レシート入力

20:00

duolingo:

イラストの練習:

book:read:GEB:

p.301

知性の理解と想像のためのひとつの鍵は、揮ごう操作の過程を記述するための言語のたえまない開発と精緻化にある。

p,304まで。

Daily Scrapboxing:

発想工房で「遊び」ます。

不調の時に考えたことについてのエッセイ - 倉下忠憲の発想工房

上の企画を進めていきたいと考えていますが、さて、どうやって、ということころ。ゼロからの素材集めでもないが、かといって原稿をまとめて順番を決めればOK、というほどの完成度もない。それをいかに進めて行くか。

まあ、ぼちぼちやりましょう。書いた原稿を読み返すところからスタートしても良さそうです。

21:00

読書メモ:

『TAKE NOTES!――メモで、あなただけのアウトプットが自然にできるようになる』の読書メモを作ります。

今回はローカルファイルに引用+コメントを書き込む形で。

* * *

だいたいできました。

22:00

本日の振り返り:

本日は、THの原稿を002にシフトしました。明日からは毎日2000字のペースで書き進めていきたいところです。ようやく落ち着いてきた感じ。

あとは、もう冬用の衣替えやらなんやらに明け暮れた一日でした。でもって、ひさしぶりに映画を観た気がします。

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

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