シゴタノ!を書く金曜日

8:00

おはようございます。

fragment:新しいタスクの管理

指定してあるフォルダの中にあるファイル全て(あるいは特定の拡張子のファイルすべて)をサーチし、その中にあるチェックボックス記法の数を数えるようなスクリプトを書く。で、その結果を出力して、たとえばここに貼り付ける。

つまりこれは、「タスクはどこにあるのか」という問題提起でもある。

* * *

「タスクはタスクリストの中で起きてるんじゃない。現場で起きてるんだ」という標語。

タスクリストの中で「事件」を解決するのではなく、実際のタスクが存在する現場(つまり作業しているファイル)に聞き込みをかけること。収集すること。

パソコンであれば、それを「タスクリスト」という一つの実体あるファイルにする必要はなく、毎回スクリプトを走らせることもできる。瞬間瞬間の状態を、テンポラリーにチェックするだけ、というやり方。

まずこれを第一の指標としよう。

9:00

タスクの収集&表示スクリプト:

ツイートに添付されている画像をチェック。

結城浩さんはTwitterを使っています 「残り作業の定量化大事🤔  * * * #結城浩の作業ログ を毎日Webで配信しています。ひと月200円。 https://t.co/81lceXa16e 添付画像は作業ログからの抜粋です。 https://t.co/z0oJ0UTQYn」 / Twitter

Pythonで書く。

まず、os.walkでフォルダを探索する。内部的な構造は、事前に決定できないものとする。

とりあえず、スクリプトを起動させたフォルダ、というので良いだろうか。いちいちフォルダ名を毎回与えるのも違うと思うが。

別のフォルダにあるスクリプトを実行したときの、「現在のディレクトリ」はどこになるのか。

結城タスクはどうなっているのだろうか。

yukitask/yukitask at master · hyuki0000/yukitask · GitHub

とりあえず書いてみるとしよう。

1
2
3
4
5
6
7
import os


for curDir, dirs, files in os.walk("."):
    for f in files:
        if f.lower().endswith(('.txt', '.md')):
            print(f)

とりあえず、これでcurrentなディレクトリから、txtとmdをサーチできる。あとはこのファイル名を使って、その中身をサーチしていけばいい。

(なんか、shellでfind & grepすればいい気がしてきた)。

しかし、これだとファイル名はわかっても、ファイルのフルパスがわからないな。

* * *

だいぶ面倒そう。

* * *

と思ったら、以下で出来た。

1
print(os.path.join(curDir, f))

ただ、shellを使うと、パイプでつないで一瞬だよな、という気がする。これはつまり、shellがそもそもファイルに対して処理を行うことを目的とした処理系、ということなのだろう。

とりあえず、このファイルごとに処理する関数を呼ぶか、ファイルのリストを作っておき、それを後から丸ごと関数に渡すかの分岐がある。

* * *

やりたいことは何だろうか。とりあえずは、各ファイルのタスクの個数を数えること。タスク名の一覧を作ってもよいがとりあえずは個数から。

* * *

鬼ダサいコードがかけました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import os


for curDir, dirs, files in os.walk("."):
    for f in files:
        if f.lower().endswith(('.txt', '.md')):
            targetFile = os.path.join(curDir, f)
            with open(targetFile) as g:
                lines = g.readlines()
                lines_strip = [line.strip() for line in lines]
                l_task = [line for line in lines_strip if '[ ]' in line]
                if l_task:
                    print(os.path.join(curDir, f) + " 残りタスク" + str(len(l_task)) + "個:" + "*" * len(l_task)

とりあえず、書いただけ、みたいなコードです。とりあえず、各ファイルごとのタスクの残りがわかるようになりました。ファイルをオープンする処理を別の関数に切り出すともっとスマートになりますね(少なくともネストは浅くなる)。

10:00

シゴタノ!:

原稿を書きます。

* * *

40分ほどで、2200字の原稿が書けました。とりあえず、最近のデジタルノートについての考えを粛々とまとめていこうと思います。

ブックカタリストの下書き:

アフタートークの配信が本日の夕方なので、その記事を書きます。

* * *

20分で書けました。なるべくちゃちゃっと書くことを目指しております。

11:00

あとで読む:

book:buy:

『新潮 2021年6月号』

NL:

「第二章の直し」という粒度だと、少しタスクが大き過ぎることに気がつきました。

原稿執筆時は、TCS(とりあえず1000字書く)という粒度を設けていたので、それに相当する何かが必要ですね。

単位は行かな。10行とか20行前に進める感じ。

12:00

fragment:オープンとクローズについての再考

「ひらく」ことが、即座にパブリックへの「ひらき」となっているのは、あまりに極端なのではないか。プライベートに閉じるか、パブリックに開くかの二択しかないのは、あまりよくないことではないか。その間に「開かないで、開かれた場所」を設けるのがよいのではないか、という問題意識。

全体にたいして開くのではなく、数人程度のグループを作ること。それは閉じてはいるが、プライベートからみたときには開いている。その中で相互作用があれば、自分の中にあったものが他者に渡り、その他者を通して、より広範囲へと広がっていく。間接的なパブリック性。

また、こうしたクローズが、「最終的にパブリックを目指すもの」である場合も、同様だろう。その場合、そのクローズは、緩衝材として機能するはずだ。

23:00

NL:

第二章の原稿の直しを進めていました。とりあえず、line 81までの進捗。

* * *

手を付けたはじめたときは、だいぶトロトロ運行でしたが、徐々にモードがシフトしているというか、「のっている」感覚になってきました。あと、妻の休みの日がつづいているので、どうも集中できる時間帯がズレている感じもあります。

その調整がそろそろ終わりそうだという感じで、また緊急事態宣言まわりで変更があって、今度は時短営業になるかも、という感じで新たなる対応が求められそうです。

本日の振り返り

とりあえず、シゴタノ!を書き、ブックカタリストの下書きも書き、あとはNLの手直しをしていました。第一章はずいぶんと手直しが多かったですが、第二章はそれに比べるとだいぶマシです。このままのペースで進んでいければよいのですが。

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

お疲れさまでした。