non117's diary

料理と哲学をします

週報 2022/05/15 準完全栄養食炊き込みごはん

炊き込みごはんを作るようになった

炊き込みごはんのおにぎりは好みだったが、自分で作ったことはなかった。

先日、スーパーで炊き込みごはんのレトルトを発見し、気軽に試せるのを知った。ゴボウ、ニンジン、鶏肉と調味液が入ったレトルトで、ごはんを炊くときに混ぜるだけでいい。

こうして作ってみた炊き込みごはんは、やはりおいしかった。
冷凍しても劣化しないし、寝起きで胃腸が動いてないときでも食べられることがわかった。

そして、なによりも栄養が豊富である。準完全栄養食くらいだろうか。炊き込みごはん一膳にたんぱく質を足したら一食として成立するだろう。

 

レトルトの炊き込みごはんキットは便利ではあるものの、油が多くて味が濃かった。ちゃんと自分で作ることを考える。

インターネットで調べるとレシピは様々なものが見つかった。具材はなにを入れてもよくて、醤油や酒、みりんで炊かないやり方もある。炊き込みごはんは自由度の高い料理のようだ。

それでも共通する性質は、具からでた出汁でおいしくすること、塩加減に気をつけること。これが基本の骨格であり、この構造を守っていれば炊き込みごはんになる。

 

具からでた成分でおいしく味をつけるので、鰹や昆布の出汁をとる必要はない。これは味噌汁に出汁をいれなくてもよいのと同じである。野菜だけだとさすがに薄味になるが、肉さえいれておけばおいしくなる。

和風出汁定番メンバーのなかで唯一入れたらよいのはキノコだ。鰹や昆布は味が繊細なので入れても風味がわかりにくいのだが、キノコは強めのキャラをしているので、肉が一緒にいても負けないだろう。

 

炊き込みごはんの肉といえば鶏肉が定番だ。だが、レシピによっては豚肉をいれているし、鯛飯というものもある。

おそらく骨を炊くとおいしくなるはずだ。

人間は骨髄をおいしく感じるもので、ラーメンやポトフのおいしさも骨のおいしさである。鯛飯も骨が入っているのが大事だろう。そういえば、ケンタッキーフライドチキンの炊き込みごはんもあった。あれもスパイスと骨がおいしさに寄与しているに違いない。

なので、鶏の手羽あたりをいれて炊けば、よりおいしくなることは間違いない*1手羽の骨は大きいので炊けたあとに除去するのもやりやすい。豚ならばスペアリブを使うのがよさそうだ*2。これもおいしくなるとは思うが、油はきついので覚悟が必要である。

 

野菜はなにをいれてもいいが、食感の残るものは外せない。だからニンジンとゴボウが定番なのだろう。
葉物はほとんど存在感がなくなると思う。だが、葉物野菜が溶けてしまっても味を豊かにするのには役立つので、好きなものをいれてよい。
やはり、このあたりは味噌汁設計と考えかたが似ている。

肉をいれるとうまくなる

混ぜて食べること

炊飯器を捨てて羽釜で炊いている

炊き込みごはん、いい料理だと思う。
自由で応用が効くので飽きない味にできるし、仕込みも簡単だ。肉を入れて塩加減さえ間違えなければちゃんとおいしくなる。

しばらくは、炊き込みごはんの研究をして朝食を豊かにしていきたい。

できごと・雑記

  • 連休最終日の夕方に昼寝をしてしまう。
    起きたときの絶望感。もうどうにでもなーれ、となってゲームをしまくった。

  • 連休明けの体調は最悪だったが、労働者の身体にチューニングしていき、金曜日には絶好調になる。

  •  自作アウトライナーを使いはじめた。
    バグもあるし機能も足りないが、便利に使えている。
    木構造のメモが畳めるだけで仕事や考えごとのすべてを管理できるようになるのだ。

  • 平日の余暇はアウトライナー開発とDyson Sphere Programをしていた。
    ワインを飲みながら楽しくコードを書く。

  • 夢をみるとき、人物の認識はできるのに顔が描画されてないのに気づいた。
    起きてるときの認知もこんな感じだと思う。人の顔に興味がないのかもしれない。

  • ブルアカのガチャを回しツクヨを引く。安くすんでよかった。

  • 掃除をしまくっていたところ、雑巾と手が最強であることに気づく。
    たいていの掃除では手作業がもっとも精度がよい。

  • 妻氏がワインセラーを買った。
    パン発酵に使う。赤ワインの保管温度が発酵にちょうどいいのだ。インターネットにはクワガタの飼育に使う人もいた。
    適切な温度に冷やすだけで、ワインがめちゃくちゃおいしくなってびっくりした。ワインセラーとはヨーロッパの室温を再現する装置である。

  • 小麦も肥料も値上がりしているらしい。
    そのうちラーメンが1500円とかになるのかな。外食や中食が値上がりしまくったとき、治安がどうなるのか不安である。
    日本では米を食べればいいが、世界には小麦を主食にしながら輸入に頼っている国もある。エジプトとか
    COVIDワクチンのときもそうだったが、先進国は保身ができる。購買力や発言力のない国はそうではない。

  • 「(自分が)何をわかっていて、何をわかっていないのか」を把握できるとデバッグが得意になるのではないか。
    デバッグがうまくいかないとき、たいてい認識は混乱している。「なにがわかっていない」かがわかっていない。

  • デバッグは「事実」によってバグの起きうる問題空間を狭めていく作業である。
    「xxをしたときooのログがでたので、$$のモジュールはおかしくない」というように、「事実」の認識と切り分けが重要になる。
    「事実」を集めるためにログを読む。ふだんの開発時からログを仕込んでおく。
    事実ではなく「事実」なのは、その「事実」が間違っている可能性を留保するためである。

  • 「事実」が多いほど思考の抽象度を高められる。
    これは別の話題。人間が考えるとき、思考の抽象度は具体的体験・知識の豊富さで決まってくるという話。
    抽象化のためには具体性が必要だ、という当たり前の話だが、泥臭く手を動かさずに抽象にこだわる人は多い。

  • 下図の木構造の葉のところに個別具体的な現象があり、てっぺんに抽象度の高い説明原理がある。
    葉の現象は個々人の体験によって得られる。これが主観にとっての「事実」となる。
    サンプル数が少ないと局所最適解になる。たくさん集めると抽象度の高い説明ができる。

具体的経験・知識(△) が多くないと抽象度の高い結論には到達しえない

 

週報 2022/05/08 アウトライナーを作っていたら連休が終わった

アウトライナーを作っていたら連休が終わった

連休中はほぼ毎日6〜8時間くらいプログラミングをしていた。
仕事ではない。趣味のアウトラインプロセッサづくりである。

 

昼に起きて昼食を食べたあとのろのろとコードを書き始め、夕方に調理休憩を挟んだあと22時まで開発をする生活だった。妻氏は買ったばかりの自転車であちこち出かけているというのに、私は家に籠もってプログラミングである。食材調達でしか外に出ていない気がする。
ほんとうは部屋の片づけとゲームのゴールデンウィークにしたかった。でも、アウトラインプロセッサの実装量が思ったより多く、22時をすぎて「残業」をしていることもあった。

 

私はあまりゲームをしないのだが、例外が二つある。自動化されているスマホのゲーム、プリコネおよびブルアカと、自動化をするゲーム、factorioDyson Sphere Programである。このところDyson Sphere Programで工場建設に勤しんでおり、連休にダイソン球の建設まで進めたかったのだ。なのに、アウトライナー開発に時間がとられてしまった。

Dyson Sphere Program

 

なんでこうなったのかというと、アウトライナーが思いのほか複雑なアプリケーションだったからだ。
当初、私は「アウトライナーとかただの入れ子構造TODOリストでしょ」と思っていた。しかし、実際にはテキストエディタだったのだ。
テキストエディタはそこらじゅうにある。VSCodeでもウェブアプリでも、さまざまなメモ帳アプリでも。ところが、テキストエディタのUI実装はけっこうややこしいのだ。

 

例えばEnterとBackspaceの挙動を考えてみる。

こういうアウトラインがあるときEnterを押したらどうなるか?どのくらいの実装が必要なのか。
ただ改行をするのではない。アウトライナーの場合は、子トピックにするかどうか、ひとつのトピックを分割するかどうか、いろいろ場合分けが必要になる。
実際のパターンは下図のとおりである。

カーソルの位置によって挙動が変わる

さらに、BackspaceはEnterの逆の処理になっていないといけない。違和感があればすぐにユーザーが気づいて怒りだす。

 

このような細かい挙動の実装が山ほどあった。
先日「アウトライナーのデータ構造は配列でよい」という記事を書いた。あの方針はたしかに正しかったのだが、正しいデータ構造を使ってなおアウトライナーのUI実装は複雑だった。仕様が複雑なときはデータ構造を工夫しても場合分けの数は減らないのである。

 

アウトライナー開発に苦しんで連休が終わろうとしているのだが、幸いほとんどの機能は実装し終えている。あとは細かい挙動のバグ修正や、マイナー機能の追加だけである。とはいえ、楽ではないはず。UIはすぐに挙動のおかしさがわかるので、人間の目にかなうように気をつかって仕上げる必要があるのだ……。

トピックの閉じ開き、上下移動スワップ、削除の機能

でも、連休を投じる価値はあったと思う。違和感なく使えるレベルのアウトライナーがほぼ完成したし、何より難しいのが楽しかった。モバイルフロントエンド開発の経験はあるのだが、テキストエディタほど難しくはなかった。よい経験になったと思う。

 

自分で作ってみると、WorkFlowyが月4ドルで使えるのは安いな、と思った。こんなややこしい実装をメンテナンスしてくれているのだ。しかもサーバーの運用コストもかかっているはず。

 

余談だが、WorkFlowyをはじめとする多くのウェブブラウザWYSIWYGはcontenteditable属性を使っている。
ところが、contenteditableは仕様レベルで曖昧さのある怪しい仕組みらしい。検索するとたくさんの悲鳴が見つかる。

engineering.linecorp.com

engineering.linecorp.com

これはヤバいだろうな、と判断して今回はcontenteditableを避けtextareaを採用した。
この制約により、編集しながらテキストのスタイルを変えることはできなくなるのだが、デバッグで地獄をみるよりはマシである。よっぽどテキストのスタイルを変えたかったら、Markdown-likeな文字装飾記号をパースして、フォーカスが外れたタイミングでスタイルを当てるつもりだ。

道具を伝家の宝刀にしてはいけない

鋼の包丁をもっている。よく切れて気持ちよく料理ができるのだが、錆びやすい。水分が天敵である。

なので、水気のないところに保管していた。ふつうは包丁立てに挿しておくものだが、空気中の湿気で錆びるのが嫌で、包丁に布を巻きひきだしに寝かせて保管していた。

もちろん使いにくい。ワンアクションで包丁をとりだせないので、せっかくのいい包丁をさしおいて、しょぼいペティナイフを使うことも多かった。

先日、切れ味がよいのに勿体ないなと思って、ふつうに包丁立てに立てることにした。錆が浮いたらすぐに磨けばよろしい。毎日使う道具なので錆が出てきたらすぐにわかる。クレンザーと錆消しゴムで磨くだけだ。大事なのは手入れである。

 

せっかくのいい道具が「伝家の宝刀」になっていたのだろう。大仰にしまい込んで使いにくい道具にしていた。よっぽどの事態にならない限り使われないのが「伝家の宝刀」である。しかし、道具は道具である。ふだんから使ってない道具をよいしょ、と出してきたところで道具は手に馴染まず、いい仕事はできないだろう。

私はコレクションとしてではなく、道具として包丁を買ったのだ。錆を恐れて祭り上げてはいけない。たとえいい道具であっても壊れることを臆せず、気軽に使えるようにしておかないといけない。

できごと

日記をふりかえったメモ。

  • 美容院で髪を切った。自転車で数km移動しただけで疲れていた。体力がないことを自覚する。
  • モルモット用トイレを洗って捨てた。どうせトイレの場所を覚えない種族なのでなくてもよい。スペースができて掃除しやすくなった。
  • 5/1あたりに自律神経が悪くなってイライラしていたのだが、自覚したらよくなった。お灸と鍼で対処したおかげでもある。
  • 千葉雅也氏のnoteがよかった。運動をひとつひとつコントロールせずに、大きな目的意識だけ持っておくことが書かれていた。たしかに自転車を漕ぐときに足の動かしかたなんて考えない。
    • ただ、手書きとタイプの書き味の違いに関する考察はよくわからなかった。真似してATOKのライブ変換も導入したがいまいちしっくりこない。
  • そういえば文章術の本を読み終わっていた。漢字の閉じ開きが大事、段落は短くという話があった。
  • DSP(Dyson Sphere Progaram)をやっていて、ビジュアルプログラミングが苦手なのに気づいた。映像の情報量が多いと意識を持って目的を認識するのが難しくなる。また、アイコンを探すのも苦手だ。
    • アファンタジアの特性だと思われる。
  • DSP潮汐ロック惑星を見つけ、そこに移住した。物流ステーションを使ったライン構築に挑戦する。あちこちでボトルネックが発生し右往左往した。
  • ワイン常備を再開した。暑い季節にはおいしいので。
    • まわりはビール派が多く釣られてビールを飲んでいた時期もあるが、やっぱりワインが合ってる気がする。
    • 炭酸が苦手、酒に弱くて量が飲めないため。
  • 社交ダンスの先生のトレーニングイベントに参加した。胸椎を柔らかくすれば万事解決することを知る。
  • 団塊くらいの世代は戦争遂行世代への逆張り意識に富んでいるが、あれは伝統的な価値観の親世代と都市化が進んだ世代の対立なのかもしれないな、と思った。
    • 美味しんぼとかわかりやすい。
    • これらの二つの世代の二項対立が脱構築され、ごちゃ混ぜになっているのが現代。
  • ソファでぼーっとして体力を回復するスキルを身につけた。
    • 布団に行くのではなく、ソファで座ったまま休まるのがポイント。
    • 頭が重くて考えられないのを体調不良だと思っていたが、たぶん副交感神経が活発化しているだけな気がする。
  • 「なんでもVPSに詰めこめばいいじゃん」について考えたところ、運用コストが問題になるのは人件費が高い場合のみ、というこの世の真理に気づいてしまう。
    • サーバシステム以外でも妥当する。グローバル資本主義システムでもみられる構図だ。
    • 人間という最高に柔軟なシステムを安価に使えることがある。人件費が安い領域で自動化は勝てない。
    • 「人件費が高い」とは具体的な賃金の高低ではなく、効率に対する意識のありさまかもしれない。
  • 久しぶりに製麺をした。麺帯までは順調だったのに、細麺を切ろうとしたらローラーが壊れてしまった。説明書をよく読むと細麺は高速で動かせと書かれていた。
    • ローラーはあとで分解してなおした。
  • なぜか徹夜をしてしまい騒然となる。眠れないから仕方ないと言ってDSPをしていたら5時だった。妻氏もなぜか徹夜をしていた。
    • 翌日体調が終わった。
  • 自分に合った運動とはなにか?を考えたところ、家の片付けと掃除が答えだと確信した。猛烈に片付けをして腰が少し痛くなる。
    • 筋肉が増えた自分をみても嬉しくない、他人に勝ちたいわけでもない、頭を空っぽにして運動ができないため。それぞれ筋トレ、競技、ヨガが候補から落ちる。掃除とか整頓は得意。
    • 日常的な運動はNEATと呼ばれるやつで、本当にそういう概念がある。

週報 2022/05/01 『みんなのユニバーサル文章術』を読んだ, 体力を使いきる前に休むために瞑想をしてみる ほか

気合いで仕事を片づけて10連休に突入した。休みのあいだにアウトライナー作りを進め、ダイソン球を建設する予定になっている。

『みんなのユニバーサル文章術』を読んだ

なかなかよい本だった。文章術の本を名乗るだけあって読みやすい。内容もまともだった。

著者のいう「ユニバーサル日本語」とは、読み手が楽に読める日本語である。
なぜ「ユニバーサル日本語」が必要なのか?万人が文章を書く異常な時代だからだ。
90年代前半まではコミュニケーションといえばおしゃべり、電話だった。なのに今ではLINEやメール、SNSで文章を書くのが当たり前だ。誰もが生活の一部として文章を書く時代になっている。

『みんなのユニバーサル文章術』は理論編と実践編に分かれている。前半は漢字の閉じ開き、文字の種類によって与える印象、読みやすさ全般について。
後半はメール、Twitter、LINE・マッチングアプリ、ウェブ記事のそれぞれのシーンで、気をつけるポイントが語られる。

最後のほうで「炎上する覚悟があるプロにのみ言論の自由が与えられている」と書かれていた。残念ながらこれは事実だ。今や育児の愚痴ですら炎上しうる。
たしかに言論の自由は制限されているな、と思った。

水分補給にお湯の水割りを飲む

よく仕事やゲームに熱中して水を飲み忘れる。気づいたタイミングで多めに飲むようにしているのだが、水には飲みやすいものとそうでないものがある。

味がついていると飲みやすいのはそうなのだが、それよりも温度が大事なのに気づいた。
飲みやすいのは冷たいものと温かいもの。常温の水なんかはいちばん飲みにくい。ぬるいビールも嫌だ。お茶もできれば温かいものがいい。

飲み忘れていたときは一気にそれなりの量を飲まないといけない。飲みやすいものを急いで用意せねばならない。
そこでお湯の水割りなのだ。電気ポットの熱湯を常温の水で割る。50℃か60℃くらいがいい。
これを飲むとたちまち身体が温かくなるし気分も落ちつく。
冷えてだるいとき、朝起きたときに飲むのがおすすめだ。

体力を使いきる前に休むために瞑想をしてみる

水分補給だけでなく休憩も忘れることがある。気がついたら気力、体力を使いきっており、横になることしかできない体調になっているのだ。
特にこの時期、春は交感神経が高まって目の前のものに熱中できてしまう。

体力をつけるのも大事だが、こまめに休憩をとるようにもしたい。体力を使いきってしまい、身体から警報が出てから休むのではなく、注意報が出た段階でどうにかできないか。
思い至った方法が瞑想である。じっとして五感を閉じて身体を観察するほかない、というわけだ。

瞑想にはいろいろあるが、いす座禅を採用した。家にある手頃ないすに座り、姿勢を正して深呼吸をするだけ。目は閉じてもいいし眠くなるなら閉じないほうがいい。

これをやってみたところ、体調がダメなときにはちゃんと信号が出ているのがわかった。絶好調だと座禅をしても「無」なのだが、悪いときはちゃんと眠さとか、だるさが感じられるのだ。「無」ではないことを検知したらすぐに休むようにしたい。どうせ、そんなときは何をしてもうまくいかないのだ。

www.sotozen-net.or.jp

御蔭通で廃墟を見つけて日本の自然の強さを思い知る

福仙楼というラーメン屋を目指して左京区御蔭通を歩いていた。妻氏が元田中にある思い出のカレー屋に行きたがったのだ。しかし私は食べ飽きていたので別行動をした。

御蔭通には古い家が多かった。たいてい庭木の手入れが諦められており、植木が歩道にはみ出している。放棄された廃墟もあり、庭だった場所はほとんど林になっていた。

日本の強い自然をみると、西欧思想との違いを思わずにはいられない。
「西欧は緯度が高くて自然が弱めなので、人工的な景観が作られる。一方でアジアは自然が強いので、自然と対立せずにうまくやっていく傾向がある」というやつだ。西欧理性を相対化するときによく語られる。

この二項対立に全面的に賛成する気にはならないが、それでも日本の自然が強いのは事実だ。日本の空き地を10年放置したら数メートルの木が生え草だらけになっているだろう。
植物が豊かで食べものが多いのはよいことだが、農業にとっては迷惑な性質でもある。雑草が生えまくり、大雨や台風で農地がめちゃくちゃになるのをなんとかやっていく。これを養老孟司は「手入れ」と言っていた。日本には「手入れの思想」があると言う。

「理性」で管理しきれないのが日本にとっての自然であり社会なのだ。地震も台風も洪水もある。草は勝手に生える。このような自然の理不尽さ、どうしようもなさがあるから、われわれには先手を打たずに後手でなんとかする傾向があるのだろう。
未来を予想して手を打っておくのではなく、ことが起きてからなんとかする。これがわれわれの気質であり、そう簡単には変わらないだろうな、と思う。

信仰としての自然科学の不安定さ

インターネットでは「査読がない学問は〜」とか「ちゃんと査読をすれば〜」という声をよく見かける。
だが、査読は正しさを保証するシステムではない。

なぜなら自然科学では試料や実験動物、設備が必要だからだ。論文のロジックが間違えてないかどうかはレビューでチェックできるが、実験結果が真理かどうかはわからない。査読者も忙しいのでこまめに追試をするわけにもいかない。ある研究所にしかない試料もある。

さらに、パラダイムというものもある。これは実験結果を解釈する視座の流行り廃りだ。パラダイムは数十年かけて世代交代してゆく。
ある実験結果が得られたことと、それをどう解釈するかは別の問題である。

たいてい、どの解釈にも一定の正しさがある。解釈Aは実験1, 3, 5をよく説明し、解釈Bは実験1, 2, 4をよく説明する、というように。
AとBを総合し抽象化する視座が発見され、すべての実験をうまく説明するようになると、新しいパラダイムができた、と言われる。

哲学や社会学では、社会の出来事や生活の出来事を実験結果として解釈を行う。その点では自然科学の思考方法と違うところはないのだが、解釈がより多様であること、解釈の争いが多いことが人文学を特徴づけるのかもしれない。
多くの自然科学の分野では解釈をするより、新規な実験結果を得ることが大事にされているだろう。実験に重点をおくか、解釈に重点をおくか、に違いがあるのか。

自然科学の諸理論もひとつの解釈である。現時点で主流なパラダイムの寄せ集めにすぎず、永遠不変の真理というわけではない。でも、致命的に間違っているわけでもない。
どこかが間違っている可能性はあるが、おおむね正しいものとして仮固定をしておく。科学に対しては、こういった態度が誠実である。

週報 2022/04/24 データ構造の設計をまちがえた話

近況

なぜか江南スタイルのPVをみていた。曲もわかりやすくダンスもうまくて癖になる。特に序盤でPSYと男児が踊ってるところを気にいっている。

ヤクルト1000

睡眠がよくなるという噂のヤクルト1000を飲んでみた。
だが、数日続けても変わった感じはしない。中途覚醒はなくなったかも?これが各位の体験している現象なのだろうか。

この手のものは腸が荒れている人には効果が出やすいのかもしれない。野菜や発酵食品を食べてない人やストレスに晒され続けている人たち。
私の胃腸は特に不調だったわけでもないので、効果がわかりにくいのだろう。

おそらくヤクルト1000の効果を最大化するには食物繊維が必要だ。腸に菌を補充しても彼らの餌がないと意味がない。野菜を食べましょう。

体温とやる気

頭が回らないと思ったらたいてい体温が低い。特に鼓膜の体温=深部体温が低い。
鼓膜の温度は赤外線方式の体温計で測れる。耳にセンサーをつっこんでボタンを押すと1秒もかからずに計測される。

私の場合は37.0度あれば設計、実装やドキュメント執筆ができる。やる気が出ない、頭が回らないと思ったら36.7度くらいになっている。

体温を上げるにはお湯と運動がよい。出社していれば意味もなく歩きまわるのだが、家だとそれはできない。お湯を飲んで体温をあげるようにしている。もちろん淹れたてのコーヒーでもよい。

業務

1on1があったので自主的にふりかえりをしてみた。半年経ってみると何かしらは変わっているもので、以前よりも「勝手に動く」のができるようになっていた。

non117.hatenablog.com

以前書いたこの記事は「勝手に動く」課題を認識して書いたものだが、これが自然とできるようになり、板についてきた感じはする。

データ構造の設計をまちがえた話

このところアウトライナーをReact + TypeScriptで自作している。アウトライナーとは文章をJSONみたいなかたちで構造化するテキストエディタである。

テキストエディタなので「↑」「↓」によるカーソルの上下移動や「Tab」によるインデントを実装せねばならない。カーソル位置とインデント状態をどっかに保持しておく必要があった。

アウトラインとはどんなデータ構造なのだろうか?

例えばこんな見た目のテキストの集まりがあったとき、これらをどんなデータ構造に入れておくのか、を考える。

直観的に考えたら木構造だな、と思った。JSON木構造になっているし、アウトラインを書くときも親子関係を意識している。

じゃあこんな型をテキスト一つに対応させたらよいだろうか。

interface Node {
  id: string
  text: string
  parent: Node // 木構造としてはなくてもよいが親へのポインタもあると便利だった
  children: Node[]
}

しかもReactで Nodeレンダリングを表現するとなかなか気持ちのよい書き方ができた。

const NodeElem: React.FunctionComponent<Props> = ({ node }) => {
  return (
    <Text value={node.text} /> // onChange等省略してます
    {node.children.map(n => <NodeElem key={n.id} node={n} />)}
  )
}

いいじゃんエレガントじゃん、と思った。しかし表題のとおりこれは間違いだったのだ。

カーソル移動の実装が異常に難しくなる

「Tab」によるインデント機能は問題なかった。ごくふつうの木構造の操作として、ある Node を隣の Node の子にするだけである。

ところが、カーソル移動の実装で破綻した。例えばこんなアウトラインを考える。

eにカーソルがあるとき、「↑」が押されたらカーソルはdに移動しないといけない。
木構造の気持ちになるとaに移動させるのが楽なのだが、人間向けのUIとしてはdに移動してほしい。非合理的かもしれないが、既存のアウトライン実装もそうなっているし実際そうなっていたほうが使いやすい。

interface Node {
  id: string
  text: string
  parent: Node
  children: Node[]
}

dに移動する操作を実装するのはめんどくさい。a: Nodechildrenchildrenchildren のなかの末尾の Node を見つけないといけない。aの子孫がどんなに複雑な木になっていても子孫でもっとも若いNodeにカーソルを移動させる必要がある。

対策はある。葉ノードで双方向連結リストを作る方法が有名だ。

この手法はRDBMSのインデックスのデータ構造に使われている。B+ treeなインデックスに ORDER BY id LIMIT 10 みたいなクエリを投げると葉ノードの連結リストをたどってデータをとりだすことになる。クエリのチューニングをするときにインデックス木構造の気持ちになるのは大事なので覚えておくとよい。

とはいえこの最適化をすべきではない。いま作っているのはアウトライナーテキストエディタGUIであって、DBではない。

何より葉ノードの連結リストを作ると Nodeくんが複雑になってしまう。ただでさえ木構造のポインタつけかえはバグりやすいのに、これ以上ポインタを増やすなんて……。

データ構造がまちがっている

なにかがおかしい。そう確信した。おかしいのはおそらくデータ構造だ。
いまカーソルの上下移動を実装しようとしてコードがめちゃくちゃになった。ならばカーソル移動が楽になるようデータ構造を定義すればよろしい……。それって配列では?配列で要件を満たせるのでは?

インデント情報はdepthとして各 Node に持っておけばいいし、上下移動はNode[]のインデックスを一つ動かすだけである。超簡単。

アウトライナーではNode のいれかえも必要なのだが、これはバブルソートの要領でやればよい。バグらせない自信はないが木構造の操作よりマシである。

interface Node {
  id: string
  text: string
  depth: number
}
type Nodes = Node[]

ユースケースから考えよ

というわけで、アウトライナーに最適なデータ構造は木ではなく配列だった。最初の思いこみで酷い目にあってしまった。

教訓は「具体的なユースケースから逆算してデータ構造を設計すること」である。仕様をぱっとみてデータ構造を作るのではなく、どんな操作、どんなメソッドが必要なのかを洗い出して、操作しやすいデータ構造を作るのだ。

ちなみにこの原則はDynamoDB設計の鉄則でもある。AWSの担当者にDynamoDB設計のベストプラクティスを聞くと、まずこの話をされると思う。

まとめ

  • データ構造の設計で実装がシンプルになる
  • データ構造はユースケースから逆算して作る

Rule 5. Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.

Rob Pike's 5 Rules of Programming

同じことはRob Pike大先生も言っている。
大事なのはアルゴリズムではない。データ構造である。

週報 2022/04/17 プログラミングの目標がない人のためのビルドツール実装

近況

あまりに天気が良くて鴨川に行ってみた。

自転車だと意外と近くて15分くらい。道は御池通を選んだ。広いので走りやすい。京都は観光客・自動車がそこらじゅうにいるのでルート選択が大事なのだ。

f:id:non_117:20220410153553j:plain f:id:non_117:20220410153559j:plain

f:id:non_117:20220410153610j:plain f:id:non_117:20220410154312j:plain

うつ病九段』に、「メンタルをやった人は自然に触れることで回復するのだ」と書かれていた。鴨川はまさにそういう場所だと思う。

人はまばらで川は鳥だらけ。人間より鴨が多いことすらあるだろう。

ただぼーっと眺めるだけで癒される場所なので、次は原稿を終えた(はずの)妻氏を連れてくる予定だ。

 

冷えがつらい季節が終わりつつある。これからは疲れと胃腸の調子が課題である。万能の対策は散歩と睡眠だが、特に胃腸が弱っていたら足三里にお灸をせよ、と鍼の先生に言われた。千利休も使っていたツボである。

鍼の先生は爪楊枝とタオルさえあれば仕事ができるらしい。だから大地震が起きても営業するから、予約どおり来てくれ、と言われた。すごい。

この鍼灸医はお金儲けが好きなのだ。

 

金曜日はなんとなく有給をいれた。何か予定があるわけでもなかった。

ただ休みたいだけの有給を「チーズ蒸しパン有給」と呼んでいる。銀魂か何かの「チーズ蒸しパンになりたい」というコマが元ネタだ。

この日は昼まで寝て散歩をしたあと家の整頓をしていた。整頓は好きなので、始めてしまうと物が見えなくなるまで1時間か2時間は作業をしてしまう。

ふだんは生活を回していると整頓をする暇がとれない。いい時間の使い方だったと思う。

 

久しぶりに外食でラーメンを食べてみたが、あまりおいしく感じられなかった。それなりに人気の店なので私のほうに原因があるのだろうと考えたところ、そもそも太麺が苦手なことに気づいた。

太い中華麺もうどんも好みではない。麺は細いのが良い。そうめんは好物である。博多ラーメンの店が近所にあれば良いのだろうけど、残念ながら京都は太めの麺が多い。諦めて自炊することにした。

仕事

いつもどおり実装をしていた。

データ構造の設計で悩み始めたときにアウトライナー(もどき)を使ったら、問題点が整理された。やはり会社にライセンスを買ってもらいたい。

読書

権利の選択

「権利(right)」を根本から疑い、その出自を暴いていく本だった。

「自由で民主制な国は平等な権利を標榜し暴力を否定するが、そもそもその体制は暴力によって始まり暴力で維持されているのではないか」という疑念から始まる。たしかにアメリカ合衆国独立戦争をしているし、フランスも革命を起こしている。

直観的に考えたらわかるとおり、「権利の思想」が暴力を否定するのは建前である。「権利の思想」は表向き暴力を否定するが、実際には「力への意志」を持っている。国際政治がその証左であるし、市民同士の顕示的消費もそうだ。

"right"に「権利」という訳語をあてた福澤諭吉はこの欺瞞に気づいていたらしい。「権」はpowerを意味する語だし、「利」も個々人の利益・便益を示している。

おもしろい本だったが、読みやすい本ではなかった。全体像が掴みにくいので序章と4〜6章を先に読むのがおすすめである。

雑記

アウトライナー自作

業務で使うためのアウトライナーを開発している。既存のアウトライナーアプリは社外のサーバに情報を保存するので勝手に業務で使うわけにはいかないし、既存のデスクトップアプリも機能が多すぎて微妙だった。なので、自分でシンプルなアウトライナーを作ろうとしている。

私の持ってる技術はサーバサイドとフロントエンドのものしかないので、ブラウザで動くアウトライナーを作ることにした。Swift GUI開発のスキルも欲しいとは思っているがXCodeを開いては訳がわからんな、となって身につけていない。

私の職務はサーバーアプリケーションの開発なのだが謎の縁でフロントエンド開発をすることも多い。二年前まではiOS Safariのバグに苦しむ日々を送っていた。

 

最近のフロントエンド事情はどうなってるのだろう?と思って再開してみたら、基本は変わっていなくて安心した。各種ツールのバージョンが上がってビルドツールの選択肢が増えただけに見える。どうやらReactとTypeScriptが登場して以降の基本技術は進化していないようである。

TypeScript + Reactの書き方を思い出すのに苦労した。型注釈の書き方をgoの文法にしてしまうし、何でもImmutableなObjectにするのを忘れていた。フロントエンドに慣れていると疑問に思わないが、他の分野から見ると const newHoge = { ...hoge, a: 'xxx'} のスタイルはちょっと異様だと思う。

 

勘を取り戻したら楽しい開発になった。GUI実装はどの言語・フレームワークでも苦行なのだがReactはマシな方である。特にReactはFacebookの賢い人たちが作っているので、APIがほどよく抽象化されている。そのおかげで苦行が少し緩和されるのだ。

書き始めて一週間でアウトライナーらしきものにはなってきた。あとはショートカットキーを足したり永続化の方法、アプリの実行方法(ブラウザ拡張にするのかindex.htmlだけで実行するか)を考えて実装すれば終わりそうである。GWあたりの完成を目指したい。

プログラミングの目標がない人のためのビルドツール実装

「フロントエンド技術は雇用のために道具を複雑にしている」という冗談がある。
もちろん雇用のためだけでなく、事情があって複雑になっているのだが、この冗談が通じるくらい複雑なのは事実である。

 

なぜ複雑なのかというと、ブラウザの特殊事情が原因である。スマホのアプリは一つのフォルダに画像やプログラムを入れてフォルダごと配るだけでよいのだが、ブラウザではサイトにアクセスされるたびにアセットとプログラムを送る必要がある。たびたびダウンロードが発生するので、アセットもプログラムもサイズが小さいと良い。なので、事前にインストールができるアプリに比べて厳しい最適化が求められるのだ。

じゃあ全部スマホアプリにすれば良いのか?というとそうもならない。ブラウザがOSやCPUの違いを吸収してくれるので、ブラウザで動くように作れば、ほとんどどこでも動くアプリになる。GUI実装の開発コストはばかにならないので、スマホアプリの中身がwebviewやelectronになっていてフロントエンドアプリをそのまま動かすことも珍しくない。SlackやTwitterのアプリがそうだと思う。

 

こうしてJavaScriptと画像、その他アセットを最適化するためのビルドツールが必要になる。JavaScriptそのものではなくTypeScriptを使う場合、ブラウザの差異を吸収するためのライブラリを使う場合、それぞれで専門のビルドツールが登場する。

これらのビルドツールは最近GoやRustで書かれているらしい。昔はJavaScriptだった気がするが、ビルド速度や(ビルドツールの)開発のしやすさを求めて変わってきているようだ。

フロントエンドの道具なのにRustで書かれてメンテナンスできるのか、という課題はある。Goは文法がシンプルなので少し練習すれば書けるだろうけど、Rustはそうもいかない。開発者の頭数は足りるのだろうか。

 

「xxx言語を使えるなら何でも良い」という人たちの存在が助けになるかもしれない。本来プログラミングは目的のための手段なのだが、言語を使うことそれ自体が目的になる人たちがいるのだ。

「xxx言語を使いたいけど作りたいもの、目標がない」という悩みはプログラミング初学者でよくみられるものだが、xxx言語が好きな熟練プログラマでも作りたいものがなくて困ることがある。たいてい競技プログラミングをしてお茶を濁すものだが、できるならば実用的なものを作るのがいい。実践が一番である。

 

ここに各種ビルドツールがマッチする可能性があるのだ。というか、マッチしているから実際に書かれているのではないか。

フロントエンドのビルドツールには次のような性質がある。

  • プログラムの入力と出力がはっきりしている
  • UI実装の面倒さがない
  • 先行実装がたくさんあるので最初は写経をすればよい
  • 最適化目標がサイズと速度でわかりやすい
  • 潜在的な利用者が多い
  • JavaScript等のパースが必要なので、プログラミング言語好きのオタクに刺さる

特に入出力がわかりやすいこと、UIがなくてロジック実装に注力したら良いのがポイントだろうか。xxx言語を使うのが目標なので面倒ごとは少ないほうがいい。また、指標が速度なのも良い。競争ができてやる気を高めるだろう。

 

ただ、こうしたビルドツールをOSSとして開発し続けるのはきついかもしれない。一回実装して既存ツールより速くなった!と喜んで終わりならいいのだが、誰かの業務で使われるようになるとOSS消耗に巻き込まれる。お金にならない割にバグ修正やissueでのコミュニケーションを求められる。長く続けると互換性の維持も必要になり、ビルドツールを移植して速くする、という当初の楽しさは薄れるだろう。たいてい使われるツールにはならないが、公開することへの覚悟は必要である。

逆にお金と暇があってタフならば楽しい趣味になるだろう。ストックオプション一発当ておじさんとか、年金生活プログラマの趣味になるかもしれない。年金生活おじいちゃんが格安飲食店を営業して価格破壊を起こすやつのOSS版である。

まとめ

ソフトウェアの世界は年々大きくなっている。ソフトウェア同士の依存関係が複雑になるのは悩みの種だが、「隙間家具」があると便利なのは事実だ。

フロントエンドのビルドツールに似たOSSは他の分野にもあると思われる。k8s周辺ツールとか、もしかするとUnityやスマホアプリ界隈にも需要があるかもしれない。

ソフトウェア開発業全体が大きくなった結果、隙間のツールを作れば便利に使って貰えるのだ。ただ好きな言語を使いたい人にとっては良い時代である。

週報 2022/04/10 アウトラインプロセッサ

近況

さいきん布団の調整が難しい。寒暖差が激しいし、夜の気温も日によって違う。

週の前半は寝冷えで睡眠が悪かったが、頭寒足熱になるよう毛布をかけたらよく眠れるようになった。毛布を下半身にかけて、羽毛布団を全身にかける。
私は布団を蹴るタイプではないので、これでうまくいくが、寝相の悪い人はダメかもしれない。

 

疲れるとラーメンが食べたくなる。ラーメンに疲れに効く栄養素が入っており、身体がそれを求めるのだ、という解釈もできるが、たぶんそんなことはない。ラーメンには油脂とか香辛料がたっぷり入っているので消化に体力を使う。疲れたからラーメンを食べたいのではなく、疲れてストレスを感じてラーメンを食べたいのだと思う。こういうときは刺激物を食べるのではなく、寝るのが正解。

ただ、この世には異常に胃腸が強く、何を食べても元気な人がいる。そういう人ならば疲れたときに焼肉とかラーメンを食べてより元気になるのだと思う。
妻氏の祖母もそういうタイプで、齢九十にして肉を食いビールを飲む。たいてい胃腸が強い人間は長生きをするのだ。生物とは消化管の周りに機能を発展させてきたシステムなので、消化管の強さが生命力である。

私は胃腸が強くはないので無理をせず、味噌汁と白米でやっていく。

仕事

このところやけに仕事が忙しくて、毎日1.5時間くらい残業をしている。できれば定時ダッシュをしたい私からすると働きすぎである。残業代でお金は増えるが、買いたいものと言えば本くらいしかない。本は大量に積んでいるので、すぐに買いたいものではない。

 

新しい自転車は気になっている。このところ天気が良いので鴨川に行きたいのだ。京都市の人間は天気が良いと鴨川で光合成をする。
我が家は鴨川から離れたところにあるため、移動には市バスが必須だ。市バスはこのごろ観光客だらけである。コロナ禍に飽きた人々が京都に押し寄せているのである。

人混みは嫌いなので、鴨川への移動手段は自転車が良い。しかし私の持っている通勤用のロードバイクは気軽な移動手段ではない。それなりの準備が必要だし、移動先でも盗難に気をつける必要がある。なので、クロスバイクに乗り換えようかな、と考えている次第である。

まだフルリモートが続いているので買っていないが、出社せよと言われたらすぐに買うつもりである。Bianchiクロスバイクいいよなあ、などと思っているが、カラーが目立って盗難の対象になりそうだ。それだと乗り換える意味がないかもしれない。

読んだ

省察

デカルトの主著である。有名な「我思う故に我存り」が『方法序説』で、『省察』は『方法序説』をより丁寧に哲学した本。続編と言えるかもしれない。
世界を片っ端から疑っていき、どうにかして現実世界を肯定する、というストーリーだった。

思惟する私が存在することを認めたあと、むりやり神の存在証明を始めたのにびっくりした。時代である。その後の議論では神の存在を前提に論が立てられるので、ちょっと微妙なところもある。

ところどころに、カントの『純粋理性批判』を思い出させるフレーズがあった。物そのものを知覚できないかも、みたいなやつ。もしかすると、カントはデカルト哲学を意識し、継承して『純粋理性批判』のカントOSを作ったのかもしれない。

書くための名前のない技術 CASE3 千葉雅也さん

アウトラインプロセッサの伝道師であるTak.氏が、ヘビーユーザーの千葉雅也氏にインタビューした本。

Tak. 千葉さんにとってアウトライナーというのは考える道具であって、執筆そのものでは ないという感じですか。
千葉 アウトライナーで執筆の実作業に踏みこむのは4分の1くらいまでですかね。やっぱりぼくは最終的には見た目がないと書けない、というか文章として決まらないです。
Tak. やはりそこでビジュアル的な意識が出てくるわけですね。
千葉 ぼくにとってアウトライナーの重要なところは見た目に煩わされずに内容だけを考えられるということです。その意味では思考のツールです。その結果アウトライナーの中である程度「思考としての文章」ができるんだけど、なんというのか 「美学的な文章」はそこでは完成しないです。

これがよかった。

アウトラインプロセッサについて

このところアウトラインプロセッサアウトライナーとも呼ぶ)にはまっている。

アウトラインプロセッサとはテキストエディタの一種で、古くから小説家やライターが使ってきたものである。なんとワープロの時代からあったらしい。

ふつうのテキストエディタと何が違うのか?「箇条書き」*1しかできないのが特徴である。

こんな見た目。

f:id:non_117:20220410165219p:plain

「・」で一つのトピックを書き、これをネストして文章を構造化するツールだ。

アウトライナーの特徴

「箇条書き」をネストするだけならさまざまなテキストエディタ、メモアプリでサポートされているが、アウトライナーは「箇条書き」に特化した機能がある。

まず、ネストの深さを可視化する機能。「・」の深さに対応した縦線が描画されている。プログラミングに使うエディタにもある機能だ。

f:id:non_117:20220410165357p:plain

ネストの深さがぱっと見でわかる

次に、任意の「・」を畳める機能。トピックの塊を畳んで見えないようにできる。アウトライナーで書きながら考えると、抽象的な記述がネストの浅いところに、具体的で詳細な記述がネストの深いところに出てくる。今は詳細について考えなくてよい、というときに細部のトピックを畳みたくなるのだ。

f:id:non_117:20220410165548p:plain

畳んだ状態

並び替えの機能も重要だ。アウトライナーでは「・」の順序の入れ替え、ネストが簡単にできる。GUIでも操作できるし、ショートカットキーもある。並び替えることで、構造化をするので、この機能は重要である。

さらに、任意の「・」にフォーカスする機能がある。深いところにある「・」だけを表示して編集ができる。

f:id:non_117:20220410165622p:plain

一部のアウトラインだけ表示している

これらの機能があればアウトライナーと呼べると思う。MarkdownScrapboxにはネストした「箇条書き」を書く機能はあるが、畳む機能はない。だから専用のアプリが必要なのだ。

構成と詳細の分離ができる

ところで、「箇条書き」がネストできると何が嬉しいのだろうか?

Tak.氏の『書くためのアウトライン・プロセッシング』では次のように言われている。

ここで行っているのは「文章を書く」と一口に言われる作業のうち「構成を考えること」と「ディテールを考えること」を分離して、一度に一方だけを考えることです。文章を書くことが難しいのは、その両方を同時にやろうとするからなのです。一方に集中することで頭の負荷を軽くし、自由に書きながら制御できる状態も保つわけです。

構成と詳細の分離ができる、というわけだ。アウトライナーでは構成を考える=設計を行い、別のテキストエディタで具体的な文章にするのである。

「箇条書き」が良いのは、あとから「・」を足せるところにある。「ネストされた箇条書き」=アウトラインの状態であれば、あとから「・」を挿入して説明を追加したり、論理の飛躍を修正するのが容易である。

一方で、ちゃんとした作文の状態にすると、論理構造を把握し、文章の表現として読めるように調整しなおすのに労力がかかる。

つまり、アウトラインは編集、修正に対して開かれているのが良いのだ。作文された文章は半ば閉じられており、修正が難しい形になっている。

外部脳としてのアウトライナー

また、アウトライナーは頭を整理するのにも使える。アウトライナーは書き散らかして整理をすることで、文章の構造を整える道具である。文章になりさえすれば構造化と整理ができるので、論文や小説でなくても仕事の状況や日記を書けばそれに関する思考が整理されるのだ。

言うなれば、自分で自分をカウンセリングするための道具である。自分の状況をアウトラインにして、テキストの上で整理をしていくと、自然に自分の悩みの本質や、課題が浮かび上がってくるのだ。

大事なのは、素直になんでも書くことだ。「はーだるいなあ」とか「めんどくさいなー」「あーーーー」とか書き、「何がめんどくさいんだろうか」と続けていく。そこから連想が赴くままに書き散らかすといつの間にか、自分の状況が可視化されているのである。

よく、Twitterになんでも書いて、そのうち勝手に納得してる人がいるが、アウトライナーでも似たようなことができる。

「・」一つ一つがツイートになっていて、ネストするとスレッドになる。ツイートの編集ができて、スレッドの並び替えができる、スレッドのネストが無限にできるのがTwitterとの違いである。より自由に構造化ができるのだ。

アウトライナーで整理してるもの

ここからは、アウトライナーの具体的な話をしてゆく。まずはどんなことを書いているのかについて。

日記

先日の週報で日記帳をUlyssesに乗り換えた、と書いたが、また変わってしまった。今ではアウトライナーがそのまま日記になっている。

そもそも日記は作文である必要がないことに気づいてしまった。日常の出来事にストーリーじみた関連なんてないし、起きた出来事にあとから考えごとを足せるほうがいい。編集に対して開かれていたほうが日記として書きやすいのだ。私は三年間、生産的でない日記の書き方をしていたようである。

また、「・」を畳む機能があると、あとから日記が読み返しやすくなる。詳細は畳んでおいて、大雑把に読むことができる。

読書ノート

読書にも使えた。読みながら理解したことを書いていくのである。

難しい本、長い本だと、議論がどこにいて、どこへ向かっているのかわからなくなりがちだが、アウトラインを書きながら読むと本の全体構造を把握したまま議論についていけるのだ。

本に線を引いて書き込むのも似た方法だが、やっぱり読書ノートとしてまとまっているほうがいい。一瞥して論の構造が把握できるし、自分のものとして残るのが良い。何より、本のページは大した余白がなくて、長文は書けないのである。

仕事全般

朝起きて業務PCにログインしたらまずアウトラインを書き始める。

「えーっとなんだっけ、昨日のアウトラインによるとxxはooさんの反応待ちで、今は%%ができるようだ。これから始めるか」などと書いていく。

すると、自然に仕事が始まり、やる気が出るかどうかとか気にしている暇もなく作業をすることになる。作業の途中経過もアウトラインとして書くことで、割り込みが入っても作業に戻りやすくなった。

また、コードや資料のレビュー、会議にも使える。自分が理解したことを整理しながら書くことで、すばやく応答できるようになった。

なお、業務では下に挙げるアウトラインプロセッササービスが使えないので、macOSのメモ帳を使って「箇条書き」をしている。「・」を畳めないし行間が狭いのが使いにくいのだが、一日ぶんの思考を整理するだけならなんとかなっている。もちろん、ライセンスを買ってもらえるならば、専用のアプリを導入したい。

週報

この週報もアウトライナーで設計している。

ただし、アウトライナーに書いた文章をそのままお出ししているわけではない。アウトライナーに書かれたものは、他人が読めるものではないと思っており、横にアウトラインを表示しながら作文をしている。

構成と詳細の分離はできているので、作文は楽である。何も考えなくてよい。

妻氏のネーム

妻氏が漫画のネームで苦労していたので勧めてみた。小説家が使う道具なので、もしかすると使えるのでは、と思ったらうまくいってしまった。
ふつうの漫画制作では、ネーム→下書き→ペン入れと工程が進むのだが、ネーム工程がそのままアウトライン作りになった。

ネームをテキストだけで作れるのはけっこうな効率化である。

というのも、アウトラインでネームを作ると、コマを次のページに送るのが楽になるのだ。アナログネームならば消しゴムで消して描き直しになるし、デジタルでも切り取りと貼り付け、拡大縮小が必要になる。たいてい紙や画像が汚れて読みにくくなる。アウトライナーならば、テキストを移動させるだけなので簡単だ。

妻氏は、ネームの台詞を手書きするのが死ぬほど嫌だったらしく、この点も楽になっている。

アウトライナーのアプリ

DynalistとWorkFlowyが有名である。

WorkFlowyはそれなりに古いサービスで、Dynalistはそのあとに登場したらしい。WorkFlowyがシンプルな機能を売りにしているのに対して、Dynalistは多機能である。

WorkFlowyは無料ユーザーだと月に250個しか「・」を書き込めないのだが、Dynalistは無料で書き放題だそうな。

一番重要な違いは、ノートが複数あるかどうかである。WorkFlowyはアカウントごとに一つのノートしかなくて、すべてを一枚のノートに書く設計思想となっている。「・」は畳めるしフォーカスもできるのでたしかに問題はない。DynalistはWorkFlowyの逆張りをしているので、複数のノートがある。

私はWorkFlowyを選んだ。多機能よりシンプルなのが好みだから。早速ヘビーユースしているので課金をしているのだが、WorkFlowyで得られた生産性を考えると月に4ドルは安く感じている。

まとめ

というわけで、アウトライナーについて長々と書いた。前から気になっていたテキストエディタではあったが、実際に使ってみるとハマって生活の一部になってしまった。

上記の議論が一般に妥当するものとは思っていないが、おすすめではある。特に、テキストで考えごとをする人にはうまく使えるはずだ。頭の整理が捗ると思う。

関連書籍

メイキング・オブ・勉強の哲学

千葉雅也氏のWorkFlowyの使い方、スクショが乗っている。参考になった。

書くための名前のない技術 CASE3 千葉雅也さん

上述のとおり。

書くためのアウトライン・プロセッシング

Tak.氏の本。これよりは『アウトライナー実践入門』のほうが良いかも(私は読んでない)。

*1:箇条書きとは別物の何かなのだが、通りがよいので箇条書きと呼ぶ

週報2022/04/03 土井善晴氏の観察から出てきた大阪文化の分析

近況

一瞬暖かくなったのに油断して布団を薄くしたら夜中に冷えて体調が終わってしまった。春はこわい。安易に布団を薄くすると冷えて死ぬので、気候が安定するまでは厚着、重厚布団に倒しておくのが良いのだと思う。

冷えは漢方(中国医学)でも万病のもととされている。冷えが極まった状態が死なのだ。身体は冷やしてはいけない。

モルモット

我が家のモルモットの体重が減って心配したのだが、ケージに入れていたヒーターを取り去ったらV字回復し始めた。暑かったのかもしれない。本人(本モル)には悪いことをした。彼らは汗腺なんて高級なものがないので、温度変化への対処が大変そうである。

アイコン変えた

妻氏にtwitterコミュニティのヘッダー画像を描いてもらった。こんなやつ。

f:id:non_117:20220403155250p:plain

ゆるゆるヘッダー

後日、妻氏はこの画像を気に入り、自分で四角く切り抜いていた。四角くて顔のアップになっているので、アイコンかなと思ってSlackのアイコンに設定したらおもしろかった。妻氏はアイコンのつもりではなく、ただ気に入って切り抜いたそうだが、意図せずアイコンになってしまった。

アイコンとして視認性が良く、バカっぽくておもしろい絵なので、各種サービスのアイコンを差し替えることにした。古いアイコンが2018年の2月に描かれたものなので、4年ぶりの更新となる。

f:id:non_117:20220403155215p:plain

旧アイコン

f:id:non_117:20220403155334p:plain

新アイコン

比べてみると、アイコンがそうとうおばかになっているのがわかる。

仕事

ちょっと忙しくなってきた。メイン担当のプロジェクトでは主エンジンとして実装をしているのだが、さらに重めの調査タスクも担当することになった。幸い、大事な実装が終わって山場を超えたところだったので良かったのだが、まだまだたくさん実装すべきものがあるのは変わらない。

ソフトウェア開発は物量との勝負になるところがあり、GoogleAWSでも、優秀な人材を物量勝負の実装に投じていると聞く。微妙なコードを書く人を投じると、負債がもりもり増えていくのでGAFAの判断は正しい。しかし、Googlerにとってはつまらない仕事に感じるところもあるだろう。実際に、そういう理由で辞めた退職エントリを読んだことはある。

私の場合は労働のモチベーションが暇つぶしなので、やることが(たくさん)あるのは喜ばしい。人間関係も問題なく、やるだけの実装タスクも嫌いではない。

ただ、気分的に休みにくくなっているのは問題だ。忙しくなると自分がボトルネックに感じられるので、まわりは気にしないとはいえ休みづらくなる。締切りが迫っているわけでもないし、誰かの仕事を止めているわけでもない。ふつうに休めるのだが、なんとなく働いてしまうのだ。

たぶん在宅勤務であることも休みにくくしている。多少の体調不良なら働けてしまうから。とはいえ週5出勤には戻りたくない。できれば2:3にできないかなあと思って経営層の動向を見守っている。

読書

読んだ

このところアウトライン・プロセッシング関連の本を読んでいる。

WorkFlowyを使い始めて一週間経ったが、すでに生活の一部になっている。Proトライアル期間が終わるので課金するつもりだ。

こういったライティング・文章生産ツールの本はたくさん出ているので、買いあさって読んでいる次第である。

メイキング・オブ・勉強の哲学

千葉雅也氏のWorkFlowyのスクリーンショットが見られてたいへん参考になった。アウトライナーでは、長文を書いても良いようである。
とりあえず書き散らかしておいて、ログとしてとっておく。あとから見返せるようにしておけばよい、という考え方もよかった。

雑記

土井善晴氏の観察から出てきた大阪文化の分析

変な献立の最終回

インターネットでおかずのクッキング最終回が話題になっていた。私も妻氏も土井善晴ファンらしきものなのでTVerで観ることになった。

最終回は一汁一菜がテーマだった。献立は一番出汁を使った筍の吸い物と、セリ菜ごはん、そしてだし巻き卵。最終回というハレの日なので純和食の一汁一菜なのだが、だし巻き卵が浮いている。

吸い物と菜飯だけなら料亭ででてきそうな献立だが、そこにだし巻き卵を投入するのが土井善晴氏らしい。だし巻き卵はハレのものというよりは、日常的な家庭料理である。しかも油をそれなりに使う*1。おかずのクッキングは家庭料理の番組なので、純和食のハレ料理ではなく、家庭料理の主役?であるだし巻き卵を入れたのだろう。あと、土井善晴氏が卵好きなのもあるし*2、卵を巻いていくパフォーマンスがおもしろいという事情もあるだろう。

真顔で料理する土井善晴

どこか変な献立ではあるが、いつも通り料理をして番組が終わった。土井善晴氏は最後のあいさつで「父の土井勝から番組を引き継いだ当初は、カメラに向かって微笑みかけるなんてできなかったが、今はできるようになった」みたいなことを言っていた。

昔の土井善晴氏はテレビでも態度がきつい料理人だったと聞く。たしかに今は丸くなっているのだろう。

だが、真顔で料理をする土井善晴氏はまだ見られる。彼の公式動画アプリがあり、そこでは素に近い(近そうな)土井善晴氏がいる。アプリの動画では、カメラに向かってニコリと微笑みかけることはないし、どこかテンションも低い。淡々と料理をこなしてポイントを説明して、たまに冗談を言う、そんな姿なのだ。

どこか突き放したような態度

土井善晴氏はときおり厳しいことを言う。「すぐにはできるようにならんので練習してください」「私はこれくらい油を入れますが、あなたたちは自分で判断してください」などなど。

このような態度は、視聴者の自由を尊重しているとも言えるし、悪い見方をすれば突き放しているとも言える。

練習しないと上手にならないのは事実だし、判断は自分ですべきなのも正しい。だが、テレビに出るような料理人としては、視聴者を甘やかす方向性もあるはずだ。本当は正しくなくても、断言をすることで安心させることができる。言い切ってほしい人も世の中には多いので、甘やかす態度での商売も成り立つはずなのだ。

だが、土井善晴氏はそれをしない。甘言を使わずに事実を冷淡に突きつける。視聴者に擦り寄らずに、距離をとって正しいことを言う。

家庭料理に料理の先生は入り込めない。だから、土井善晴氏はちゃんと線引きをして突き放すように言うのだと思う。日本的価値観において、「家」は世間から隔絶された空間なのもあるし、先生が家にあがって料理をするわけにもいかない現実もある。家庭料理は、生活者各自が実践するしかないのだ。先生が言えるのは、一般的な原則だけである。具体的なことはすべて各自の手に委ねられており、各自が経験を積んで身につけるほかない技術もある。だから「自分で決めてください」というのは正しく、誠実な態度ではあるのだ。

大阪人の距離感と真面目さ

土井善晴氏は気さくな態度もとる。なのに、厳しいことも言う。家庭料理の本質は各自の実践にあるとはいえ、土井先生の優しさと厳しさの同居は独特で、他の(有名な)料理人には見られない態度にみえる。

大阪出身の妻氏によると、これは大阪人らしい態度だという。大阪人には、親しくなるための雑談モードと、シビアでクールな態度をとる真面目モードがあるらしい。雑談モードでは「おもろさ」が大事にされ、真面目モードでは「しょうもないことを言わない」が大事にされるらしい*3。楽しげにボケ・ツッコミをするのは雑談モードであって、真面目な文脈で雑談モードなふるまいをすると場が白ける。どちらの場なのか察知して適切な態度をとる習性が彼らには備わっているのだ。

また、土井先生の「好きにしはったらよろしいわ」という突き放しも大阪で言うところの「あいつはそういうやつやからさ〜」や「ええんちゃう知らんけど」に通じる態度に似てるらしい。大阪では、公園や電車で知らない人に話しかけるような親しさがありつつも、距離感には常に気をつかっていると言う。

つまり土井先生は料理で大事な話をするときに真面目モードになり、シビアさを醸し出してしまうが、しかし、気さくな雑談モードも持ち合わせているので、どこか親しみやすい印象もあるのだ。

 

ちなみに、アプリの動画を観ていると、土井先生は油をたくさん入れがちなことがわかる。油はおいしいですからね、と言って油を追加し、バターはこれくらいが適量ですが私はもっと入れますわ、と言ってもう一欠片入れる。主婦層の視聴者が多いからなのか、健康に気をつかって適量は示すのだが、土井先生自身は油ドバドバ太郎なのである。

 

土井先生の腹は少し出ている。

*1:伝統的な和食では油を使わない料理が多かった

*2:土井善晴氏は味噌汁に揚げ卵を入れがち

*3:この切り替えは商売人のアイスブレイクと交渉に由来するのではないか