"daily"

2024-11-20

以下のようなprotoスキーマを定義する。

syntax = "proto3";

package nfurudono.sample.v1;

service SamplService {
  rpc Say(SayRequest) returns (SayResponse) {}
}

// SayRequest is a single-sentence request.
message SayRequest {
  string sentence = 1;
}

// SayResponse is a single-sentence response.
message SayResponse {
  string sentence = 1;
  bool dry_run = 2;
}

こんな定義があるときに

```sh
$ ./sample say --sentence "hello world" --dryrun
sentence: "I will say: hello world"

みたいなやりとりを定義するためのCLIテンプレート生成ツールを作る。あくまでテンプレートなので、生成ツールではインターフェースとかグルーコードだけ提供して、ユーザは以下のようなコードを書くことになる。

  • connectとかでサービスとサーバの起動を定義してmainからいい感じに呼ぶようにすると、gRPCサーバがたつのに対して、
  • CLIテンプレート作成ツールでサービスとCLIコマンドの呼び出しを定義してmainからいい感じに呼ぶようにすると、CLIから実行できる

package service

improt (
	"fmt"
	
  sample "github.com/nfurudono/gen/go/sample"
)

type SampleImpl struct {}
// sample.SampleServiceはprotocとかが生成するようなinterface。gRPCとかconnectとかで使われているようなやつ。
var _ sample.SampleService = &NewSampleImpl()

func NewSampleImpl() { return SampleImple{} }

func (* SampleImpl) Say(ctx *context.Context, req *connect.Request[samplev1.SayRequest]) (*connect.Response[samplev1.Response], error) {
	s := req.GetSentence()
	d := req.GetDryRun()
	if d {
		return fmt.Sprintf("I will say: %s", s), nil
	}
	return fmt.Sprintf("%s!!", s), nil
}

package main

import (
	slog
	
	tool "github.com/naoyafurudono/good-tool"
	"github.com/naoyafurudono/sample-cli/service"
)

func main() {
	s := service.NewSampleImpl()
	// NewCLI()の結果(CLI)はサービスを登録される。
	// サービスを保持するCLIはサービスが契約するrpc(名前、入力、出力)を知っている。
	// これらはprotoの仕組みで生成される。protovalidateなどのプラグインもそのレイヤで対応できるはず。
	cli := tool.NewCLI().AddService(s)  // このあたりのインターフェースはもうちょい考えても良いかも?
	// Runがコマンドライン引数を読んで以下を半ドアリングする
	//   - 呼び出すrpcの判定(ルーティング)、サブコマンドの名前が対応する
	//   - rpcに渡す入力messageのデコード、サブコマンドへのフラグ引数が対応する
	//   - rpcの出力メッセージやエラー内容の出力、コマンドの標準出力、標準エラー出力、コマンドのステータスコードの出しわけが対応する
	if err := cli.Run(); err != nil {
		slog.Fatalf("unexpected inpu: %w", err)  // 予期しないサブコマンドが来たらエラーを返すのもまた一興かな。
	}
}

便利じゃない?

2024-11-13

fzfで表示される選択肢と選択した結果得られる値を分けられるようにしたいので作った。 yamlでkey-valueペアのリストを保持しておいて、そのキーの選択をfzfで行い、得られる値はvalueである、みたいな感じ。

#!/bin/bash

# ヘルプメッセージ
function print_help {
    echo "Usage: $0 <yaml_file>"
    echo
    echo "This script allows you to select a key from a YAML file using fzf, and outputs the corresponding value."
    echo
    echo "Options:"
    echo "  -h    Show this help message and exit"
    echo
    echo "Sample YAML format:"
    echo "  key1: value1"
    echo "  key2: value2"
    echo "  key3: value3"
}

# -hオプションのチェック
if [ "$1" == "-h" ]; then
    print_help
    exit 0
fi

# 引数チェック
if [ -z "$1" ]; then
    echo "Error: No YAML file specified." >&2
    print_help
    exit 1
fi

# 引数からYAMLファイルのパスを取得
YAML_FILE="$1"

# YAMLファイルの存在チェック
if [ ! -f "$YAML_FILE" ]; then
    echo "Error: File '$YAML_FILE' not found." >&2
    exit 1
fi

# キーをfzfで選択
selected_key=$(yq e 'keys | .[]' "$YAML_FILE" | fzf)

# キーが選択されていない場合
if [ -z "$selected_key" ]; then
    echo "No key selected." >&2
    exit 1
fi

# 選択されたキーに対応する値を取得
selected_value=$(yq e ".${selected_key}" "$YAML_FILE")

# 値を標準出力に表示
echo "$selected_value"
exit 0

上のコマンドを fzf-keyvalue-select という名前でパスを通しておく。その上で以下のような関数を登録しておくと便利。

function notion
    set url (fzf-keyvalue-select ~/.local/fish/notion.yaml)
    and open $url
end

2024-11-09

ぼくが酒を飲みながら書いた文章がLLMの学習に使われて、お固い用途に使われると思ったら人生だいぶ楽しい。

2024-11-04

ちょっと前からソフトウェア工学を触っている。興味から学んでいるというよりは必要に駆られて学んでいる側面が大きい。楽しい仕事をするためにつまらない状況を抑え込む力を身につけるために学んでいる。

とはいえ全くつまらないかというとそうでもなくて、ソフトウェアエンジニアやそれを取り巻く仕事はどんな体系で整理されているかを把握するのは職場の役割を整理して把握することにつながっていて面白みがある。

入門 コンピュータ科学 ITを支える技術と理論の基礎知識 (J.Glenn Brookshear)のソフトウェア工学の章を読んだ後に、ソフトウェア工学の基礎(玉井 哲雄)を読み進めている。

CSは学部の頃にある程度学んだが、その中で工学っぽい分野は触らなかったので学部レベルから勉強している。とはいえ実務経験やラボの先生のお話とかでソフトウェア工学に触れている(割とそれはそう)ので、全く素人って感じでもない。

ぼくが必要に駆られているのは要求工学なのかな。設計には純粋に興味がありそう。

2024-10-28

昔は親の顔より見た lambda をこの頃は全然見ていないしタイプしてもいない。寂しいねえ。クロージャをぼちぼち使うのだけど、評価規則や型規則とにらめっこする時間は完全に失ってしまった。

2024-10-27

友達の結婚式に今度出席するので真面目に準備してみる。普段スーツを着ないので礼服を着るのはコスプレみたいでドキドキする。

  • 礼服が入るか検証
  • シャツを買う
  • ネクタイと胸につけるハンカチ買う
    • ネクタイの練習もしておかないとな
  • 靴を手入れする
  • ワックス買って練習する
  • 髪をいい感じに切ってもらうための店を見つける
    • 人に聞くのがいいかな
    • 2 or 3日に行こう(最近切ったばかりでできることあるのか?)
  • その他マナーを学んでおく

アプリケーションの開発・運用をしているとSQLのユーザをそれなりに作ることになる。データベースもしかり。それらをIaCな感じで管理したいがベストプラクティスをまだ知らない。

管理したいユーザの情報は以下の通り

  • ユーザ名(ホストを含む)
  • Grant
  • パスワード

簡単なのは、ユーザ名とパスワードだけ1Passとかで管理して、他は動いているものを見に行く方法。管理しない考え方。実態と齟齬がないことは良いことだが、設定を見るためには管理者権限が必要だしいちいち接続するのも面倒。また、複製が面倒なのも問題だし、設定の経緯をコメントに残したりバージョン管理したりできないので組織としてスケールしない。

Terraformで管理するのはいい線行きそう。ネックはパスワードかな。パスワードを平文で保持しないことを達成しようと思うと途端にややこしくなりそう。運用ではパスワードにシュッとアクセスしたいケースがあるため、他の解決策と併用するのが良いだろう。 Grantとユーザ名、変更の経緯の管理には向いていそう。

Terraformと1passを組み合わせるのが綺麗だろうと思った。ユーザ名は不変(変更したくなったら作り直す)にしておけば、色々いい感じになるんじゃないかな。

https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics が良さげ。 Refresh tokenをどこにどれくらいの期間保持するとか、どういうインターバルで無効化するとかで悩む。あとaccess tokenはauthorizationヘッダに突っ込むのが吉?とか。

ソフトウェア設計の指針をまとめた本で定番だけど日本語訳されてない(はず、2022年に買ったときはそうだった)。 APIを実装・設計したりそれに付随してコードレベルのモジュール(クラスとかで表現するようなレイヤ)を設計するときに役立つ指針をくれる。

僕がプログラミングのレビューをしたり、自分でプログラミングしたりするときに気にすることは割とここから学んだ(言語化しただけ?)と思う。インターネットでHTMLが公開されてたらどんなに嬉しいだろうと思う。レビューのときに「ここを読んでください」をできるので。

言語とかパラダイムに依存しない、プログラミング一般について使える知見が書かれているので繰り返し読む価値のあるものだと思うし、実際そうしている。以下のそれぞれのタイミングで読んだが、毎回楽しく思っている。

  1. がっつりプログラミング始める前
  2. 自分でコードを書くようになってから
  3. レビューをするようになってから

広くいろんな人に使われるAPIを設計するようになるとまた見える世界が違うのだろうと思う。

最近(日本語訳が)発売されったぽい本。内容的には流行り廃りがありそうな内容を扱っていて10年後には古くなっていそう。例えば第1章の「APIの設計・構築・仕様化」ではConnect使えばいいじゃないと思った。

とはいえこれまで10年くらいのプラクティスがおそらくいい感じに説明されていて、今どきのクラウドでいろんなサービスを動かして連携させるスタイルのアプリケーションをどうやって作っていくかを体系的に述べているように思う。ぼくはそのあたりを勉強中の身なので偉そうなことを言ったり評価をしたりできないのだけど、これまで断片的に学んで来たこと(そして腑に落としたり手を動かすに至らなかったこと)の使い所を自分の中で描けるようになっていると感じる。ほんまかいなと思うこともあるので、盲目的に信じるというよりは質の高い雑誌のような意識で読んでいる。

2024-10-26

  • aboutページの収取をするプラグインを実装して組み込んだ。あとはそれをいい感じに表示する必要がある
  • 今度人の結婚式に出るので身だしなみとか常識を身につける・髪切るとか服を用意する計画を立てる
    • 受付やるらしいのでちゃんとした方が良さそう
    • 礼服着れるか確認しておくか
  • helm完全に理解する。リリースとか意味わからん。installって何?kubectl applyとの関係は?

2024-10-21

  • 年末調整に必要な書類申請の準備をする
  • booleanを避けて2要素のenumを使おうという記事を書く
  • 契約とプログラミングに関する記事を書く。

2024-10-17

イマジナリーの3巻を読んでいる。良い。あんじゅうも続きが欲しい。

プログラミングについて語りたいので一家言持とうと思いました。

陣屋を語彙として獲得した。Wikipediaを読んで最初に浮かんだのは高山の陣屋だった。古い街並みにある奉行所か何かだったと記憶している。と思って調べたら聴きなれない言葉で表現されていた https://www.hidatakayama.or.jp/spot/detail_1106.html

2024-10-16

  • トピックをセクションのタイトル (hN要素) で宣言して、それを集約したページを勝手に生成するようにしたい。
    • about:<TOPIC_NAME> <TEXT> という名前のタイトルをヘッダにつけたら、/topic/<TOPIC_NAME> というページを生成して、  そこに <TEXT> - <DATE> みたいな名前のセクションを埋め込みたい。元記事へのパーマリンクも添えておくと良さそう。
    • 読書記録に使えそう
    • その他にも普通のブログではタグを記事につけるようなノリで使うのも可能。記事の単位だとタグによる分類は不便に思うのだけど、セクションくらいの粒度ならつけるときも読む時もちょうど良いだろうと思う

エンジニアリングの中ではプログラミングは割と得意なのかもしれないとここ1ヶ月くらいでなんとなく思うようになった。こういうプログラムの構成の方が良くない?みたいなことを理由込みでそれなりに説明・提案できることが周囲より多そうな気がしてきたので。

失敗できないように作るとか(設計、型の宣言)、失敗には早く気がつけるようにするとか(リント、コントラクト、バリデーション)、プログラムのあるべき振る舞いをテストするとかは似たような話に思う。先に挙げたものほどフィードバックが早くて良い。リントとかテストはそのプログラムそのものの性質ではなくて外からどうこうする点が特殊。テストではこういうふうに使うと確かにこんな感じに振る舞う、みたいな確認をする。リントではこういう感じの使い方をするとやばいからやめておいて欲しい、と怒る(この観点では型と一緒)。リンターのライフサイクルは対象のソフトウェアと一緒とは限らないのが辛いところなのかな。型システムは言語の一部だし、設計はプログラムの一部。でもリンターは一部とは限らない。一部になっている奴はだいぶ使い勝手が良いが、そうでないやつはいろんな人が勝手気ままに思想を入れるし、それらの互換性は比較的真面目には考えられないだろうから品質が悪くなりそう。

そういうわけでリンター難しそう。

2024-10-15

見出しにidを振るようにした。 idが振られている要素に対するCSSとクリックでリンクをクリップボードに貼り付ける実装と相まっていい感じ。やったね。パーマリンクは意味のある単位ごとに簡単に取れるべきだと信仰している。なのでハッピー。

今日はリンクをたくさん取れるようにセクション多めな日記にしてみる。

中目黒のめちゃでかポークステーキを出しているお店に会社の人たちと行ってきた。案外いけたがやはりデカかった。あと見せてもらったマジックがすごかった。

同僚とお昼で料理得意そうと言われて意外だった。料理のことは好きだけど。

2024-10-14

模様替えした。机を片付けてリビングを生成した。ソファと本棚、ベランダに続く窓で余白を三方から囲む間取り。寝室にはベッドと着替えに関するものがある。

机がないのはどうなのだろうと思ったが、ここ1年くらいは家でパソコンするときはノートパソコンだけで完結させることが増えたし、そもそも読書が中心なので机をヘビーユースしない。数学の本を読むみたいな読み方をしにくくなることと、在宅ワークしたくなったときに面倒そうなのがネックかな。リビングの空間がいい感じで嬉しい。

Goは静的解析のためのパッケージを標準で提供していて静的解析ツールを作ろうと思うとコンパイラが扱うデータ構造を割と見ることになる。 AST、その型、SSAが代表格だろう。型は単体でプログラムを表現するわけではなく、 ASTに対してつく(かもしれない)メタデータだと思えるかもしれないが、これらのデータ構造はGoコードのいろんな表現の中の一つだと思えそう。アセンブリ言語もその中の一つなのだろうけど、アーキテクチャに依存したりランタイムのあれこれが入ってきたりして抽象度以外の違いも入ってきそう。

静的にコードを解析すると一口で言っても解析の内容にはいろんな抽象度の違いがある。多分ぼくは型レベルの話までは適切な抽象度を選んで使えるのだけどSSAで表現するようなレベルだとまともに使えないと思う。使えるようになるにはどんな表現があって、どんな解釈をするのかとか他のレイヤとのどんな対応づけをするかを把握すると良いのだろう。

  • すべてのtodoアイテムにクリックでリンクコピーが可能なsvgをつけた。そのためにidを生成しているのだけど、コンテンツのハッシュ値を用いているのでテキストを加えたりするだけでアンカーが壊れる。直したい。

  • 衣類収納・衣替え
  • ゴミ袋 (> 17L)
  • 食材
    • 野菜
  • Real World HTTPをがッと読む やっぱり「ドメイン駆動設計をはじめよう」にする

  • 型システム
  • 静的解析
  • 意味論
  • ソフトウェア設計
  • 開発ツール

philosopy of software designとかに書かれてる。コンストラクタとかメソッドの定義とか引数の型とかでいい感じにできる。でもたまに辛いこともある。変更するのがだるいとか、そもそも人が管理しているやつで変更のためのコミュニケーションが面倒とか。あとは既存ユーザが多すぎて変更が大変とか、そこまで設計でカバーするのは大袈裟とかも入るかな。型パズルすれば間違えられないけど、定義をメンテナンスするのが辛くなるとか読みづらいとか。

そこで静的開発ツールを入れてしまう手がある。便利なツールがあるのはいいけど失敗すると辛いので、静的解析で(多少雑に)防ぐ方法。

TypeScriptなんかはそれをめっちゃ頑張った例だし、Goの未使用変数を許さないやつは頑張れば型システムでなんとかなるけど、そこじゃないでしょうということで静的解析ツールの領分になっていそう。型システムちゃんと作るのめんどいし。

上手な設計をする他にeffecttiveな使い方を促進する方法としての静的解析を推したい。

静的解析ツールというと何を思いつくだろうか。

学習による能力の獲得による喜びと課題解決に対する喜びでは、課題解決の方がでかいように感じる。それらは相入れない楽しみではなく課題を解決するために必要な学びをすることで、途中では学ぶ喜びを手に入れつつ、最終的には課題解決の喜びを得られる。さらに学ぶ途中では課題解決のために前進する喜びを追加で味わうことができる。

なお、それが本当に自分が学びたかったことだなのだろうか、みたいな悩みを抱くことはあるかもしれない。

2024-10-11

昨日は健康診断だった。身長は縮み(多分測定時の姿勢の問題)、体重はちょっと増え、腹囲は3cm増加、視力は片方0.3落ちるという散々な結果だった。体重と腹囲は運動しようねと思う。視力も運動の頻度を上げて遠くを見る時間を増やすと良いかな。

明日はイベントが何個かある上に明後日は5時に家を出て山に行かないといけないので試される。

2024-10-10

  • protobufとかsqlcでファイル生成をするツールを使ってチーム開発をしているとすごくコンフリクトして辛い。生成するファイルを分割して、例えばrpcとかmessage単位にファイル(パッケージではない!)を分ければgitのコンフリクトは避けられる。パッケージも一緒なので振る舞いには影響しない。

2024-10-08

レバレッジの効いた仕事をしたいと思う。教育とか仕組みを作ることは、それが使われ続ける限り効果を発揮するのでレバレッジが効くだろう。やった努力の量に対して(十分な時間が経つと)線形よりでかいオーダーの効果が得られるということ。

教育は曖昧なものだしぼくはあまり信じていない(少なくともぼくにはできない)ので、自分が取れる手段ではない。となると仕組みを作るのが良いかなと思える。いい仕組みを作って、以降みんながそれに乗っかるとか、自分の貢献をめちゃデカにすることがレバレッジの効く仕事かな。

良いエディタを作ってシェアするのはレバレッジの効いたことだよね。認証とかフレームワークみたいな入れたらその中で暮らすことになるものは、使っている間は呼吸するだけでそれらの恩恵に預かるのでレバレッジが効いてる。家賃を抑えるのもそう。住んでるだけで支出が減るので。

家賃が減る話はそれなりに面白い。住居に住んで得る便益は家賃と相関するのが、それを単に減らすだけでレバレッジが効いていそうと思える(側面がある)。もちろん1000億円持ってて特に大志がない人が月5万円のアパートに住むのは意味わからないけど、特にでかい貯蓄があるわけでもない1000万円の年収の人が20万円のアパートから10万円のそれに引っ越すなら、レバレッジが効いた節約の仕方をしたねえと思う。

資本が1000あるときに10から12を生み出すプランを考えだしても1000の一部を使って1002にすることしかできなくて嬉しくないが、 100を110にする方法があれば、1000から1100にできる。割合としては前者の方がでかいが、得られる利益は後者がでかい。資本をより有効活用したのが後者だから後者の方が利益がでかいのだ。レバレッジが効いているのは後者な気がする。

スケールする方法だとなお良いだろう。10から12を生み出すプランは実は一捻りすると1000から1200を生み出すことができるのなら最高だ。レバレッジを考える上では、利率も大事かもしれないが、それ以上にでかい入力に対してスケールすることがより重要なのだろう。狙っていたわけではないが、冒頭の段落で (十分に時間が経つと) と書いていた。あれは大事なポイントであるが含みが結論とは違う。十分な時間が経っても、得られる効果が線形を保つことが求められるのではないだろうか。

2024-10-06

LLMはコンパイラとかみたいに説明とか分析を出力してくれるものではあるけど、 LLMはコンパイラよりも人間に近いものだと思っている。コンパイラみたいな決定的な出力をするツールに対して良い入力を与えてその出力をそのまま共有することには価値がたくさんあるけれど、 LLMから得られた出力をそのまま「LLMに聞いたらこう返してくれました!」っていうのは(少なくとも現代使えるLLMのレベルでは)意味が薄いと感じる。

人間に対して質問して、その回答をそのまま人に共有することにも、場合によって価値がたくさんあったり薄かったり感じることがそれぞれある。質問を回答してくれる人間に対して信頼というか専門家としての信頼というかがあったら、そのまま回答を知りたいと思うが、その辺のただの人とか単に知識がたくさんあるだけな人だと、 (アンケート回答のデータとかなら別だけど)意見や情報としては価値を見出しにくい。そんな感じに、ぼくはLLMを専門家だとはまだ思えていない。単に知識がたくさんあってそれっぽい文章を生成するだけの(論理的思考の欠けた)出力をするやつだと思う。

とはいえ知識や経験がたくさんあれば結構な量の論理的思考は不要だろうことは段々わかってきた。なんのために考え事が必要なんだろうね。そして論理的思考とは何なのだろう。

今週は疲れた。先週の金曜から毎日飲み会だとか人と会ったりだとかのイベントがあった。それぞれは楽しいのだけど全てに参加していると大変。昨日はずっと寝ていたし、今日は家事をしていた。本を読む気力もない。体としては寝ても良さそうなのだが頭は何かをしたがっているので文章を書いている。本を読みたい気持ちもあるが、落ち着いて考え事をしたい気持ちもある。今その本を本当に読みたいのだったか、とか。

わかったつもり 読解力がつかない本当の原因 (光文社新書) に本屋で出会って読んでいるのだが良い。わかるとか理解する、みたいなことは一体何なのかは高校生の頃からのぼくのテーマの一つなのだが、それを一段深めてくれている。

ぼくの中での「理解する」とは、説明をつけることとか腹落ちしていることであった。論理とかは客観的なアレとして社会的に認められていたり、自然科学は実際問題役に立っているので市民権を得ているが、そんなことは「理解している」とは関係ないと思っている。理解しているか否かは主観的な問題で、腹に落ちた感じがするなら自分はそれを理解していると思うし、自分が同意できる説明を他者がするなら他者はそれを理解しているように感じる。そういうものだと思っていたし、今も思っている。

この本の説明ではぼくの解釈と矛盾しない中で理解の程度を論じているように思う。文脈とそれに対する解釈を持っている人間は、文脈を新たに獲得し明らかにすることで対象の解釈をより鮮明にする、みたいな主張だと今のぼくは大体思っているはず。鮮明にするというか、よりわかるというか。

これまでのぼくの理解への価値観には抽象度の違いがなかった。抽象解釈をするときにどれだけfineに解釈するかの違いが認識する文脈の違いに依存することをこの本に解らさられた。

この前ご近所さんとお話した影響で今日は八百屋に行ってきた。はじめて行くタイプの八百屋で、なんとカゴとレジは存在しなくて、床に陳列されている野菜を見ながら店員さんに口頭で欲しい野菜をクエリするタイプの買い方だった。ちなみに野菜の品質はそんなに良くなかったので次は他のところかなと思っている。安くはあった。

結局人は自分と近しい考えを読んでそれを楽しいと思うのだな、みたいなことを恩師が言っていたのを思い出した。ぼくもそう思う。そういう答え合わせみたいな読書は楽しい。

読書に限らずおしゃべりとかでもなんやかんや同調とか、似たような哲学のもとでの「議論」みたいなことをするときが楽しそう。「あいつはやばいから!」と嬉しそうに友達を紹介する人は、大体その友達と大差ないとかだとか。議論をするときに背景に共通点を見出して群れるのもそういうことだと思う。良し悪しは知らない。

named-letです。

2024-09-21

今日は学部一年のころからの友達と話して日曜日の旅行計画の話をした。ぼくの会社の先輩の助けを借りて、多少同的にいい感じの計画をできたと思う。満足。ありがとうございました。会社の先輩後輩とランニングをするなどその活動は多岐にわたる。。

2024-09-18

日記からtodo一覧を抽出して専用ページにtodoアイテムとその文脈を列挙する機能を実装した。この手の機能はtodoに限らず文章で考えや記録をつける人を幸せにするだろう。

例えば、読書メモをする場合、ぼくはそれを日記に書きたい。でもある本についての読書メモはまとめてみたい気持ちもある。そんなときに、その本に関する記述をまとめてみる機能があると幸せなはずだ。あくまでメモなので、その内容はその日の自分に依存する主張を持つ。なので、日記としての文脈は必要なはず。日記はぼくの考えたこととか記録を時系列でまとめたものであって、ぼくにまつわるいろんなものは時系列に沿って進んでいく。考えて、書くのも時間的な変化とともに進めていくものだし。なので書き出すフォーマットは日記が良い。楽だし、情報が失われにくそうなので。

その反面、読み方によっては他のアスペクトで抽出したりまとめたいこともある。それは日記を切りはりしたものとしてある程度表現できるはず。普通にぼくたちがあるアスペクトでまとまった記述をするときには、時間をかけて一つの側面から解釈しやすいようにする。文書を作成するときは反復して改善するものだし、推敲をするものでもある。では推敲をしない文書作成は、あるテーマについて日記を切り貼りしたものなのではないだろうか。

その切りはりをやるツールとしてtodo一覧の抽出みたいな機能を使えると思う。

セクションの単位でアスペクトを宣言できると良いだろうと思っている。あるいはAIでアスペクトを後付けしてもいいかもしれない。でも、どちらかというと、ぼくは普段の日記を書くときに後から見返す解釈を意識してかけたら楽しいだろうと思う。なのでアスペクトは明示的に日記を書く人が付けられるといいと思う。ふとアスペクトを思いついて、これまでの自分はどう思ってたんだっけと気になることもある。そのときには確かにAIに全部みていい感じにタグ付けしてほしい。

あと、今はunifiedを使って実装しているけど、pandocに移行しても楽しそう。型が辛いと思っているので。pandocはhaskell製なので型が弱くて文句を言いたくなることはないはず。

2024-09-16

  • 掃除
    • ルンバを起動したのでok
  • 外出
    • 電車乗るくらいの外出をする。秋物出たかな。あるいは外で使うと幸せになれるグッツを買うか。
    • ランニングパンツと靴下を買う。帰省でランニングのズボンを置いてきたのと、靴下が大体ボロボロになってきたので。
    • 靴下は買った。ランニングパンツはまあいっかと思って買わず。そのほかに秋に向けて服を見たけどピンと来なかったので特に買わずだった。
  • 本読む。k8sのあれ。あとは認証の技術気になるので学ぶ。認可も気になる。
  • todoをリストアップする拡張の実装
  • todoの拡張、出先でチェック入れたくなりそうなので、githubでの編集へのリンクをつけたい
    • やっぱりいいや。出先ではのんびりしよう。todoのことなんて忘れればいい。

https://diary.nfurudono.com/todos/に実装した。これでもう過去のtodoを忘れない。収集とレンダリングの両方が必要でだるかった。特にレンダリングはunifiedのアーキテクチャを理解してなくて手間取った。今の実装がunifiedのアーキテクチャに沿っているか自信がない。

本棚を作って設置したところ、そろそろキャパシティが限界だと気がついた。本棚を増やすためには引越しが必要。そろそろ減らしてもいい本も増えてきたので、 2年周期の引越しで問題ないとは思うが。今で3/4年か…、今年のうちに西側の探索をしたいな。今度友達とどこに行くか決めてないので、そっちの方に雑に行ってみて案内してもらおう。向こうが詳しいかは知らないけど。

寝たり本を読んだり景色をみたり、考え事をしたりする環境として電車で過ごすのが好き。年末は北国に電車に乗りに行きたいな。高校生の頃に一週間電車に乗りっぱなしの旅行をしたけど、あんな感じのことをまたやりたい。それでいうとシベリア鉄道は憧れる。

景色が変わるのがいいし、椅子しかないのも良い。なので新幹線みたいな机があるのはそれほど好きじゃない。横に細いサイドテーブルみたいなのはok。ものを置けるけどそこで何かやる感じではないのがいい。集中できるし、パッと休憩しようと思ったら外を見ればいい。なので電車に乗るのは日中がいい。夜は外が見えないので興醒めする。

家にいても景色が変わらなくてつまらない。外に出るのも良いが、それだと本読んだりできない。電車の中は家と同様に自分が暇なのに快適で、移動しているのがいい。

金曜日の昼過ぎに三連休だということを知った。なんと来週も三連休だということだった。この三連休は本棚を作り、あとは家でまったりした。こういうのもあり。

2024-09-15

本棚を作った。2本目だけどすでに飽きてきた。慣れから余裕が出てきたことである程度精度が悪くても問題ないことに気がついてしまったところで敗北していて、「はいはい大体こんな感じでしょ」って作業になったのであまり楽しくなかった。今もさっさと油乾かないかなとか考えてる。改善の余地はあるのだろうが、前回作ったものが問題なく動いている(本棚なので動かないけど)し、物に満足しているのでまあこれでいいでしょとなってる。おかげで作業速度は改善していて、多分倍速くらいになった。でも幸せかというとなかなか…。

本棚に余裕ができるので凝った本の置き方をできるようになるのが楽しみ。図書館みたいに分類ごとに余裕を作るあれをする。そうすると本が倒れないようにするあの支えが欲しくなるな。https://amzn.asia/d/fUltqmB こういうやつ。

キングジムのやつを注文した。段によってはブックエンドいらない気がするので二つだけ。明日届くはず。昨日今日はだらだらしつつ本棚を作ったのだった。明日は何をしようかな。カスタムコントローラを作ってみたいが、デプロイ先のk8s環境がないし、用意したとしてもその使い道も特に思いつかないので困っている。

CNAMEを登録するだけでSSL証明書まで発行してもらえた。TLS証明書の発行には何か検証のためのDNS設定を通じた認証が必要だと思っていたのだがどうしているんだろう。なんか僕の知識が歪んでいそうだな。

2024-09-13

今日は(昨日は)会社の人とunrailedをやった。はじめてちゃんと一緒にゲームをしたのだけど楽しかった。またやりたいな。

明日は(今日は)会社で型の話をちょっとするので準備しなきゃ。

2024-09-08

代々木公園で会社の人たちとランニングをしたいのだけど、荷物をどうするかとかが悩ましい。

  • 銭湯に預ける
  • 会社に置いていく
    • 社員証を持って走ることになるのと、会社内をランニングの格好でうろつくことになるのがネック
    • あと目立ちやすい
  • 会社のジムに置いていく
    • 走った後にシャワーを使えるのがいいところ。社員証を持って走ることになるのと、会社内をランニングの格好でうろつくことになるのがネック

こう思うとジムで走る人の気持ちがわかってくる。あれはランニングの品質を犠牲にする代わりに着替えとかの便利を手に入れているのだろう。部室って偉大だったんだな。あと(地元の)オリエンティアが色々ガサツで公園でてきとうに着替えて荷物はその辺に置いておくスタイルだったので気が付かなかった。

今度一回一人かフットワーク軽い人(いれば)と銭湯から走りに行ってみようと思う。代々木公園のことほとんど知らなくて人を誘うときに何を期待してもらって良いかわからないので。

  • 洗い物
  • 洗濯
  • 部屋の掃除
    • 何か今までにない掃除を一個導入したい。何を最高にしようかな 換気してるのでクリアしたということで
    • ルンバを動かすのと、机の上を片付けることがマストかな。あと干した服をしまう
  • 次の本棚のパーツの切り出し方を決める 本を読むのを優先する。来週本棚を作ろうと思うので要求だけ出しておく。
  • 走る
  • 夕飯
    • 久しぶりにとりにくとか食べたい 買い出しで選ばられたのは鰹のたたきでした
    • 野菜はどうしよ。もやしかな、適当に炒める
    • 結局走ったあとは刺身を食べる気にはならず、プロテインを牛乳で飲んだのと、もやしとひき肉炒めたやつで満足したのだった
    • 本屋に行ってからお腹が減ったので鰹のたたきも結局食べた。うどんとビールも
  • WPのあれを 全部 いい感じに読む
    • 結構面白い。オブジェクト指向じゃなく関数型っぽく処理を合成するようなフレームワークはあんな感じになるのだろうと感じた。
    • まだまだ残りがあるので明日も読んでいく。
  • チェックボックスに対応する。GitHub flaveredマークダウンに対応するプラグインを入れるか迷う。あれにベッタリになると楽ではありそうだが、そこから抜け出してみたい気持ちもあるので。あと、引用でそれっぽいスタイルに変化させるのはあまり好きじゃない。Madokoみたいな独自に汎用ブロック定義するのが好き。 そんなに心躍るものでもないし、特に誰かが幸せになるわけでもないのでやらない
  • 池袋のジュンク堂いく
    • HTML5の本をあそこでみて面白そうと思ったのだが、本の名前を思い出せなかった。インターネットで探したけど見つけられず。気になる。
  • 検索機能を日記に入れたい
    • ブラウザで完結させたいわね。まずはキャッシュを使わずに実装して、そのあとでネットワークの節約を試みるかな。
    • これは今日じゃないかな。来週とか
  • TODOをリストアップする機能欲しいな。日記に箇条書きしたTODOアイテムで未解決なものに勝手にIDを降って、それを一覧表示するページを作る。便利そう。そういう、文章のアイテム(Notionでいうブロック)ごとに集計して新しい(記事ではない)切り方で表示する機能は楽しそう。目次はその一例かな。その辺りの意味論について議論している論文があったのでまた読んでもいいかも。まずは具体例としてこのTODOのやつを作るのが良いだろうけど

ReactやVue.jsとかNext.jsは基礎ではないはず。HTMLは割と基礎っぽいかな。ネットワークのあれこれとかブラウザのレンダリングの仕組みのあたりは基礎だと思って良さそう。 CSSもまあ基礎っぽい気もするけど、解釈するのは結局ブラウザなので、ブラウザのことを知っている人が高級なCSSを勉強するのが、基礎を押さえた上での応用の会得、みたいな流れを踏むように思う。

HTMLとかJSを解釈・処理したり、ネットワークのあれこれをするのはブラウザなので、 Webのあれこれをやるならブラウザのことを知らないと楽しくないだろう。バックエンドだけやるのでは片手落ちなはず。

HTMLの能力を理解した上でフロントエンドをやりたいわね。ブラウザはHTMLを大事に解釈するはずなので。

2個目の本棚が欲しい。一個目はいい感じにできたが全ての本を並べられていないのでもう一個作ろうと思っている。全く同じ寸法でもいいし、もうちょっと詰めてもいいかもと思っている。 1個目の寸法はTAPLとかPFPL、雑誌がギリギリ入るサイズにしているので余裕があるのだ。奥行きを変えるのはだるそうだけど、それぞれの段の高さは小さくしてもいいだろう。オライリーのでかい方のサイズがギリギリ入る高さを想定している。それで段数が増えるならそうしようと思う。増えないなら揃える。材質は同じでいいかな。パイン集成材を使ってみたいがちょい高いので。

あとはあれか、オライリーの小さいサイズに合わせた段があっても良いかもとは思っている。思っているけどまだいいかな。本屋さんみたいな並べ方ではなく図書館みたいな並べ方に価値があると思っているので、あまり小さいものに合わせると幸せになれない。やるなら三脚目を作るとき。

今回の本棚に何かひと工夫加えたい気もする。とはいえシンプルさを落としたくはないのでちょっと困る。やはり材料を変えるのは楽しそうではあるんだよな。板が厚いのと杉の木目がそんなに綺麗な感じになってないのが気になっている。

あれかな、本棚自体はいいので分類するあれ(ちょこっと飛び出て分類名が見えるやつ)を導入するのはどうだろう。あるいは棚板にラベリングしてしまうとか。棚板ごとに分類を分けるの、余裕が生まれて使いやすそう。ラベリングはどうするのがいいかな。まずは分類からか。そのためにも本棚を追加して一覧しないと。

ビールとかを飲むようなタンブラーを買った。ビールはうまかった。 ISEKADOのペールエールを飲んだのだった。グラスのサイズはちょうどショート缶が入るくらい。

Goのanalysisとtypesに入門する

Goで静的解析してリンターを実装したい。具体的には、あるT1インターフェース型の変数がスコープにあるときは、T1よりゆるい任意の型の使用を禁止する、みたいな制約を入れたい。その辺に転がっている記事ではASTを覗いてみたり、SSAを覗いてみたりするようだけど、ASTとその型をまともに扱っていつつ、いい感じに静的解析ツールとして仕上げる記事を見つけられなかった。

この記事ではGoプログラムの静的解析ツールを実装するために存在する標準的なツールチェーンの思想を説明する。Go Analyzerは静的解析ツールフレームワークとして用いる。具体的な静的解析には標準ライブラリを用いる。

具体的には、あるT1インターフェース型の変数がスコープにあるときは、T1よりゆるい任意の型の使用を禁止する、みたいな制約を入れたい。

これを検証するGoの静的解析ツール。例えば以下のようなrの使用を検知したい。

func parse(r io.Reader) (string, error) { ... }

func (rw io.ReadWriter) {
	var r io.Reader = getReader()
	s, err := dump(r) // 「rじゃなくてrwを使ってくれ〜!」と指摘したい。
	...
}

https://pkg.go.dev/golang.org/x/tools/go/analysis これ。準標準なパッケージ。ドキュメントの冒頭に思想がちゃんと書かれているのでそれを読むのが良さそう。

一個の解析ツールに対応する。Analyzer.Runに解析を実行する関数を定義する。この解析ツールを実行するとき(実行するのはフレームワークの仕事)に、Pass構造体が渡される。

Pass構造体は解析対象のパッケージごとに作成される。なので解析の単位はパッケージごとということになりそう。いいじゃん。

type Pass struct {
	Fset         *token.FileSet
	Files        []*ast.File
	OtherFiles   []string
	IgnoredFiles []string
	Pkg          *types.Package
	TypesInfo    *types.Info
	ResultOf     map[*Analyzer]interface{}
	Report       func(Diagnostic)
	...
}

こいつを通じて解析をする関数は処理対象のデータにアクセスしたり、処理結果を報告したりするぽい。モナドとか代数的エフェクトみたいで綺麗だ。そう思うとあれらは抽象化された一つの振る舞いの切り口を表現するための基本的な演算を定義していたのだから、まあそうだなと思える。Kokaで静的解析ツールを作るときにはpassエフェクトを定義するのだろう。

The Fset, Files, Pkg, and TypesInfo fields provide the syntax trees, type information, and source positions for a single package of Go code.

これは本質情報の予感。このあたりにうまくアクセスすることで、ぼくたちの頭の中で想像する型付き抽象構文木へのアクセスを実現できるんだろう。データ構造が思ったのと違いそうなことには気をつけよう。

これらに加えて、他のanalyzerが出力してくれる結果をこのanalyzerの入力として使える。それにアクセスするためには pass.ResultOf[a].(aResType)を参照すればよい。

診断(diagnostics)を出したければPass.Reportとか、パッケージで提供されているReportfとかを使うらしい。

ここまでで、モジュラーに静的解析ツールを実装するフレームワークの構造がわかった。それに乗っかれば静的解析をいい感じに動かすことはできそうだ。静的解析の処理を実装する方法もなんとなくわかった。Pass構造体の世界観に乗っかればokな感じがする。

次に自在にプログラムを解釈する方法を知りたい。プログラムはコンパイラに処理されていろんな形態に変換されるので、ユースケースに応じて適切な表現を選ぶ必要がある。今回は型付き抽象構文木を扱いたいので、Pass構造体のFset, Files, Pkg, TypesInfoあたりを上手に使えると良さそうだ。特にTypesInfoが気になる。これは types.Info型をとるみたいなので、typesパッケージを見に行く。

typesパッケージはこれ https://pkg.go.dev/go/types。冒頭の説明がスッキリしていてまだ何をやれば型付き抽象構文木に対してクエリっぽいことをできるか、どんなクエリっぽいことが許されるかを理解できない。なので貼ってあったチュートリアルのリンクを辿る。なお、スッキリしている説明自体は読んでよかった。このパッケージが扱うフェーズで何をやるか説明されていて、もっと詳しく読んで良さそうなことに自信を持てた。

なお、僕の目的のためには他の解析ツールの結果を使う方が良いかもしれないとも思う。暇だし気になるのでチュートリアルを読むのに時間をかけるけど。

脱線したがチュートリアルを読み進める。https://go.dev/s/types-tutorial これ。これを読む目的は、何をやれば型付き抽象構文木に対してクエリっぽいことをできるか、どんなクエリっぽいことが許されるかを理解すること。

このチュートリアルはジェネリクスには対応してないらしい。ジェネリクスのためのドキュメントは別途あるとのことだけど、今回は基礎を知りたいので気にしない。

イントロと例くらいは読んでみて、あとは斜め読みでいいかな。まずはイントロ。

Measured by lines of code and by API surface area, it is one of the most complex packages in Go’s standard library, and using it requires a firm grasp of the structure of Go programs.

とのこと。大変だ。

Starting at the bottom, the go/token package defines the lexical tokens of Go. The go/scanner package tokenizes an input stream and records file position information for use in diagnostics or for file surgery in a refactoring tool. The go/ast package defines the data types of the abstract syntax tree (AST). The go/parser package provides a robust recursive-descent parser that constructs the AST. And go/constant provides representations and arithmetic operations for the values of compile-time constant expressions, as we’ll see in Constants.

データ構造とアルゴリズムを分けるの賢そう。parserにastを定義しないとか偉い感じがする。色々あるんだろうな。どう嬉しいのかはわからないけど。定数畳み込みをastに対して実装したいが、parserに依存するわけではないよね、みたいな話かな。

名前解決、型検査、定数式の計算は一緒にやらないといけないなるほど。ここでいう名前解決とは、名前の出現に対してその宣言を対応させること。

例まで読んだがパッケージレベルの話しかわからないな。ぼくは式とかのレベルでプログラムを処理したいんだ!ということで本命のInfo構造体への言及を探すことにすると、TypeAndValueでそれらしいことを述べている。

Info.Typesは map[ast.Expr]TypeAndValue らしい。そろそろ手を動かして、プログラムのこの要素は式として扱われるか?とかをみたい。と思ったらドキュメントが例を出してくれた。こういうときが一番楽しい。式があったら型は得られるようになってるのね。ただまだよくわかってなくて、mapの定義域をast.Exprとしているが、そのExprとして本当に登録されるのはどの範囲のExprなのかがわからない。当然 ast.Expr{} なんて渡しても、その型を計算しているわけがない。どういう操作で手に入れたast.Exprに対しては、Info.Typeがその型を教えてくれるんだろうか。Infoを生成するやつが知ってるのかな。analysisパッケージはよくわからんPassがInfoを持っていたので微妙だけど、パッケージの単位で処理をするのでパッケージに存在するすべての式の型を教えてくれると思って良さそう?

確かにConfig.Checkはパッケージを型検査して、引数にInfoへのポインタをとって結果を書き込みそう。

次に、型同士の比較をしたい。具体的には、T1が必要な文脈でT2は使えるか (assignable) を判定する方法が欲しい。そのためにこれが使えるhttps://pkg.go.dev/go/types#AssignableTo。引数に渡すTypeインターフェースの値はTypeAndValueで取れるので、ほとんど勝ったようなもの。ちなみに僕は、最初ConvertibleToを使っていて全然ダメだった。ConvertibleToは数値が変換できるか判定するやつぽい。

2024-08-21

Zedエディタをずっと使っている。nvimを使う機会は無くなったと思う。ぼくにとってnvimを使うのは起動が爆速なvimモードで編集できるエディタであることだけがモチベーションだった。 Zedがそれをほぼカバーしているので、慣れとか不満をまとめることを目的としてZedを使うことにした。

Zedは速いし機能もしっかりあるし、設定ファイルのデザインが意味ある単位で残すモチベーションの湧くような設計になっていることろが好き。

Winsowsで使えないとか日本語入力に不満があるとかはまあいいかと思えるくらいには良いと思っている(そのあたりはコントリビューションチャンスということで)。

今年の夏休みは充実していた。

  • 実家に帰省
  • おばあちゃんハウスに帰省 (with 家族)
  • 高校の友達と会う
  • 大学の友達と金沢・高山観光
  • オリエンテーリング参加
    • 久しぶりにやった。楽しかった
    • 大学の別の友達とかと会う
  • 新しく人と関わり始める
  • k8s入門
  • Zed入門
  • unifiedとcloudflare入門(日記用のブログサイトの作成・デプロイ)

雑にメモ化して実行速度が倍くらいになったのだけど、嬉しいような何をやってるんだか、という気持ちになる。今回のは重複するファイルアクセスの結果を変数に束縛するだけなので、メモ化というかなんというかだけど。それくらい最初から作法としてやろうという感じはする。

2024-08-15

日記をnextjsでビルドして、cloudflare pagesにデプロイするようにした。cnameの設定が効くようになれば、https://diary.nfurudono.comから見えるようになるはず。

cloudflareのアカウントを初めて作って設定したが、体験よかった。デプロイとか周りの開発のためにCLIツールやそれのgithub actionsバインディングが提供されていて、サクッとデプロイできた。記念すべき初デプロイの成功をメモしておくhttps://github.com/naoyafurudono/naoyafurudono.github.io/actions/runs/10399555684/job/28798614059

Hugoの設定をたくさん書いていても楽しくないのでNext.jsでなんでもやってみよう、というモチベーション。unifiedがいい感じで楽しいので動くところまで持って来れた。

ソースコードはhttps://github.com/naoyafurudono/naoyafurudono.github.io/tree/main/tools/ttにある。

Neovimにlazyを入れてプラグイン管理することにした

これまで特にプラグインを使っていなかった(それくらいで済む用途にしか使っていなかった)のだけど、カラースキームを指定したくなったのでプラグインマネージャを入れた。

どれども大差ないといろんな記事で言われていたので名前とかが気に入ったlazyを使うことに。

https://github.com/naoyafurudono/dotfiles/blob/add-lazy/nvim/init.lua#L17-L55 で設定している。

2024-08-12

vimの sort コマンドを知った。設定ファイル書くときとかの、気持ち並び替えておきたいところに使えて便利。

週末は帰省して、さらに親の実家に行き親戚に会ってきた。いとこの子供にジュースをたかられて甘やかす体験を初めてした。あんなに食べて大丈夫かと思うほどよく食べる。

2024-08-03

ソフトウェアを設計するときにはどこを変えやすくしたいか(どんな変更をしやすくしたいか)を把握したい。 Expression probremは必ずしも解決しなくてよいと思っていて、変更に必要な気合がどれくらいかを把握したうえでそれを許容できるかが論点だと思う。

もちろん使う気合が小さいのに越したことはないのだが、コード読み書きするのはみんな好きだろうし、嫌いなひとは割とAIに任せられる世の中なのだから、小手先のテクニックでなんでもできる設計とかにしておくうまみはあまりないと思う。

会社ではmacbook proを使っていて、家ではmacbook airを使っている。使っているソフトウェアとか設定は大体同じにできていて便利ではあるのだけど、今日は手ぐせで会社でよく触っているリポジトリにcdしようとして失敗するのを何回もやってしまった。 lsのノリでそのディレクトリにcdすることに辛さを感じる。

  • 飲み会の場所を抑える
    • ビールをたくさん飲めるところでそう遠くないところがいい
  • 健康料理
    • 野菜を食べたいです
  • 外出
    • 15:30を回ったが、まだ外に出ていない。お日様が欲しい
  • 洗濯
    • あとは干すだけ
  • 運動
  • ルータを吊るす
    • そういえば家の壁に釘打っても怒られなさそうな板が壁に付いているので、そこにルータをなんとかつけたい

今日は小学校4年生の頃に転校してきた友達の誕生日。ブルーアイズホワイトドラゴンをくれた、寡黙なやつだった。元気だといいな。

2024-07-28

「ねこ かわいい」で検索してでてくるねこは可愛すぎて思ってたのと違う。子猫じゃなくて普通サイズの猫を想定しているんだよな。

猫と犬を飼ってこころを通わせることを一瞬夢見たけど、ふとしたタイミングでそう思ってるのは自分だけであって彼らは自分に依存するしかない生活を送っているのだから都合よく振舞っているだけなのではないか、とか思いそうなのでやっぱりいやと思ったのだった。

公園とか道端ででよく会って仲良くなれるのが最高かな。それでいうと前住んでいたアパートにいた猫は夜中にたまに遊んでくれてよい関係だったと思う。

猫はそれでいいんだけど犬が難しいよな。

あと、インターネットに放流する記事なので念のため。別にペットを飼うことに対して否定的に思っているわけではなく、ぼくがネガティブな思考に陥った場合にそういう考え方をする瞬間がありそうだと思っただけの話です。

AHK入門

Windowsマシンでキーボード操作が不便なので導入する。悪態をつきながらも使っている人を知っているので内容を理解していないが期待している。

https://www.autohotkey.com/ 公式ページからバイナリを落とせる。インストールするとwelcome画面が開いたのだが、そこに「コンパイルする」ボタンがあって、ちょっと不安になる。僕はプログラムをボタンを押してコンパイルしないといけない?

ついてきたマニュアルはいい感じのスタイリングでよみやすそう?

頭から飽きるまで読んでいく。

  • スクリプトの作成 (Create a Script)
    • Be sure to save the file as UTF-8 with BOM if it will contain non-ASCII characters. For details, see the FAQ.

    • BOMがいるらしい。そういえばBOMってなんなのだろう。結局まだちゃんと理解してない。
  • スクリプトの実行 (Run a Script)
    • なんかソースファイルをダブルクリックしたりして実行できて、実行してる間だけ効くらしい。
    • イベントハンドラみたいなやつの定義がそれぞれのスクリプトに対応するかと思っていたが、なんかメンタルモデルがあってなさそう
  • それぞれのスクリプト実行がWindowsのトレイアイコンに反映されるらしい。なるほど

飽きたのでhello worldする。

以下はCapsLockを押すとhello, worldと出力するよう設定するahkスクリプト。ちなみにこれらのhello, worldはCapsLockを打って入力している。

#Requires AutoHotkey >=v2.0.0

CapsLock::
  {
    SendInput "hello, world"
  }
  Return

CapsLockで英数変換するのは以下で実現できた。

#Requires AutoHotkey >=v2.0.0

CapsLock::
  {
    SendInput "^{Space}"
  }
  Return

紆余曲折あって、以下のようになった。Windowsでもいい感じにvim使えるようになって幸せ。

https://github.com/naoyafurudono/dotfiles/blob/main/autohotkey.ahk

#Requires AutoHotkey >=v2.0.0

IME_SET(SetSts, WinTitle:="A")    {
    hwnd := WinExist(WinTitle)
    if  (WinActive(WinTitle))   {
        ptrSize := !A_PtrSize ? 4 : A_PtrSize
        cbSize := 4+4+(PtrSize*6)+16
        stGTI := Buffer(cbSize,0)
        NumPut("Uint", cbSize, stGTI.Ptr,0)   ;   DWORD   cbSize;
        hwnd := DllCall("GetGUIThreadInfo", "Uint",0, "Uint",stGTI.Ptr)
                 ? NumGet(stGTI.Ptr,8+PtrSize,"Uint") : hwnd
    }
    return DllCall("SendMessage"
          , "UInt", DllCall("imm32\ImmGetDefaultIMEWnd", "Uint",hwnd)
          , "UInt", 0x0283  ;Message : WM_IME_CONTROL
          ,  "Int", 0x006   ;wParam  : IMC_SETOPENSTATUS
          ,  "Int", SetSts) ;lParam  : 0 or 1
}

IME_GET(WinTitle:="A")  {
    hwnd := WinExist(WinTitle)
    if  (WinActive(WinTitle))   {
        ptrSize := !A_PtrSize ? 4 : A_PtrSize
        cbSize := 4+4+(PtrSize*6)+16
        stGTI := Buffer(cbSize,0)
        NumPut("DWORD", cbSize, stGTI.Ptr,0)   ;   DWORD   cbSize;
        hwnd := DllCall("GetGUIThreadInfo", "Uint",0, "Uint", stGTI.Ptr)
                 ? NumGet(stGTI.Ptr,8+PtrSize,"Uint") : hwnd
    }
    return DllCall("SendMessage"
          , "UInt", DllCall("imm32\ImmGetDefaultIMEWnd", "Uint",hwnd)
          , "UInt", 0x0283  ;Message : WM_IME_CONTROL
          ,  "Int", 0x0005  ;wParam  : IMC_GETOPENSTATUS
          ,  "Int", 0)      ;lParam  : 0
}

IME_TOGGLE() {
  current := IME_GET()
  IME_SET(!current)
}

IME_OFF() {
  IME_SET(0)
}

CapsLock::
  {
    IME_TOGGLE()
  }

~Esc::
  {
    IME_OFF()
  }

2024-07-06

先週くらいに調査をした上で今日材料と道具を買ってきて、加工のための準備をしている。誤差は出るものとして、それを許容できる加工方法を考えるのが楽しいしめんどい。

今日で材料調達までやった。近所にコーナンがあるのでそこで木材を買って、カットサービスで板を切り出してもらいつつ工具の貸し出しとバンを借りての運搬をした。コーナンの皆さんはプロフェッショナルな感じがして最高だった。どこからどこまでが責任範囲かを明確に意識してらしているし、彼らの範囲内であれば柔軟に対応してくれる。僕の範囲の話をふるとそれはあなたの決めの問題だと言ってくれて最高。それでいてドライな感じではなくてHRTな感じがしてすごい。今まですごいスーパーと見ていたのはもったいなかったなと思っている。コーナンの彼らは専門性と職責を理解して遂行するプロフェッショナルだと感じた。サービスカウンターの方と木材カットの対応をしてくれた方とお話ししたがみなさん本当にすごかった。

一度設計をしたのだがでかい板からの切り出しの寸法を計算したタイミングで捨ててしまったので設計を書き直す羽目になってしまった。とはいえそこはサクッと復旧できて、今はちまちま補助線を木材に引いている。飽きて試しにした穴を開けたりしているのだが、意外と良い工作精度が出ているので心配しすぎだったかもしれない。

ツイッタを徘徊していると一緒に仕事している強い人の悩みをうかがい知れて楽しい(ぼくが楽しむことを分かった上で知らせてくれているのだろう)。分かっていることではあるが、向こうも不安を抱えながら決断して僕たちに指針を示して進んでいるのだよなと確認をした。どこかで飲みに行きたい気持ちになった。大体納得の上で一緒に動いているが数くないぼくがいだているちょっとした不満(納得はしている)を共有したりしたいなと思っている。

2024-06-25

本棚を自作する。清く正しい本棚の作り方が参考になりそうなので通読する。

通読した。以下の手順かな。今度ホームセンター行こう。

  • 材料の検討をつける
    • 21mm以上の厚さでカット可能でそれなりのサイズの板が必要
    • パイン集製剤はよさそう
  • 設計する
    • 自分の本のサイズとその量を見積もるかな
    • 僕の場合は専門書が3サイズ(A5?,A4?,教科書?)あるのと小説と漫画がある。それぞれのサイズを計り量を見積もる
    • その上で高さ180cmくらいかなのものを一旦設計して、入手できる材料のサイズを鑑みて調整する
  • 材料を調達する
    • 購入・裁断・運び入れが課題
  • 組み立て
    • 補助線の書き込みと穴あけ、ねじ止めとボンドでの固定がやること
  • 研磨
    • エッジの処理とかはこのタイミングで一度やる
  • 塗装
    • 材料によるがニスとかでいいかな
    • 蜜蝋とか油は本への影響がありそうでちょっと怖い
  • 乾かす
    • 塗料が乾くまで外で乾かす。天気が大切
  • 研磨
    • 最後にシュッとやれるとよさそう

認可に入門 wip

https://www.osohq.com/academy これを読んで認可に入門します。頑張るぞ〜!

https://www.osohq.com/academy/authorization-academy

Chapter II: What authorization is: how to organize your authorization code Chapter III: Role-based access control: grouping permissions in your app into roles like User and Admin Chapter IV: Relationship-based control: grouping permissions by relationship, like “the creator of a post may edit that post” Chapter V: Authorization enforcement: once your app has decided to allow or deny access, what do you do with that decision?

こんな感じとのこと。色々あるんだな。どれも気になるが、特にアプリケーションコードにどうやって統合していくかが気になるところかな。もれなく頑張らずに実現したい。

https://www.osohq.com/academy/what-is-authorization

具体例を挙げてWebアプリケーションにはレイヤがあって、それぞれのレイヤではどんな情報を取れて、どんな認可ができるかを議論する。

また、“4. Adding Authorization to an Application>”ではコードでの認可処理の書き方を比較する。

Naiveなアプローチだと以下のつらみがあると言っている。それな〜。

That quickly gets difficult. As the number of places where you need to apply authorization increases, you end up duplicating the same logic. Making any change then requires us to remember every place our logic is duplicated.

どうしたらいいんだ…

Formalizing Our Authorization Model なるほどね(以下を認識する)。

  • actor
  • action
  • resource

UNIXのファイルにつけるパーミッションもこの考えで整理されてそう。どのユーザがどのファイルに対してどんな操作をするかを気にして権限の管理をしてるイメージ。

グループIDみたいなのはactorを発展させたものぽい。 sudoもその辺をいじるのかな。Capabilityはactionsの部分かな。それだけでもなさそうか。

上の三つ組を考えるメリットは二つあるとのこと。

  • 言語を共有できる
  • 設計としてシンプル

設計がシンプルと言ってるのは、以下のように認可のインターフェイスを持てそうということらしい。

isAllowed:: (Actor, Action, Resource) -> Bool

こういうインターフェースを定めることで認可の周りで責務の境界を定められる。呼び出し側の責務にenforcement, 呼ばれる側の責務にdicisionという名前をここではつけている。

認可処理の結果をもとに何をするかを決めること。そもそも認可処理の呼び出しをするのもここの範囲だし、その結果アクセスがなければ403返すとかするのもここ。良いかどうかを気にしつつ、その結果どうするかを決めるのがここ。

基本はyes/noを返すやつ。さっきの関数の実装。警告とかは出したきゃ出せばいい。純粋である必要はなさそう。

5. Putting Everything Together がまとめだった。ここまでのメモが集約されてる感じ。

あとここには書かなかったけど、enforcementとかdicisionとかの話の後にenforcementをどこに実装する?みたいな話があるがマイクロサービスぽいアプリケーションを書いてないとそもそも問題にならなさそうで、一旦そこに僕は興味ないのでスルー。

アーキテクチャの話はなるほどって感じだが、まだ考えられることはたくさんある。

  • 権限が足りないときのエラーメッセージの返し方
    • 足りない場合は403だけじゃなくて何を足せば良いか知りたいとか
  • 管理者にアプリユーザがどんな権限を持ってるかを表示するとか
  • グループとか

https://www.osohq.com/academy/role-based-access-control-rbac

List

クラシックは全然聴かないのだけど、このリストのアルバムだけはたまに聴くし割と好き。不安定なのに気持ち良い感じというか、そこで音入るの!?でも良いな、みたいなところが好き。

「多崎つくると…」を読んで、その主人公が大変な時期をやり過ごした後にその友達に聴かされるのがリストの何かでせっかくだからと思って僕も聴いてみたのだった。彼とは多分同じ学校出身なので変な愛着がありそう。

高校生の頃エヴァのQがやっていて、それがなんだか刺さったのだった。 CDも買って鷺巣詩郎作曲の劇中曲を大学受験にかけてWalkmanに入れてずっと聴いていた。あのCDもたまに不安定な音楽が入っていた気がしていて、そういうのに差し掛かるとゾクゾクしたような気がする。そういえば勉強しながら音楽聴いたことはあったが音楽聴きながらプログラミングしたことはないな。明日やってみるか?

別に捗るわけではなくて、勉強が嫌すぎたのでせめてもの楽しみとして音楽を聴いて気を紛らわせないと勉強なんてできなかったから聴いていたのだが。それに対してプログラミングは普通に楽しいので(というか楽しくないと思うタイミングにはしない)音楽がなくてもよかったのだろうな。

2024-06-08

goconに行ったりscala matsuriで知ってる人が登壇してるのをみて、発信する人になるのが楽しいのだなと心に刻んだ。発信に対するフィードバックをもらえたり、自分を認識してもらった上で質問してコミュニケーションできるのは強い。

2024-06-05

https://www.kikumasamune.shop/c/notseisyu/whisky/nz971 これすごくおいしかったので買い足そうと思ったら売り切れてた。大事に飲もう。

フロムザバレルと似たものを感じる

https://www.kikumasamune.shop/c/seisyu/daiginjyou/nk220?top_pickup これはその逆かな。

半開閉区間

コンピュータで区間処理するときは半開閉区間で持つことが多い気がしている。もはや信仰のレベルで身についているので自分一人で決めて終わりなときはそれで良いのだが、説明が必要なときに困る。そのときのために良さげな参照を集めておく。

何というか区間は連続な集合の2端点を指定して定まる部分集合であって、その全体からなる集合族を扱おうと思うと半開閉区間にしておくと綺麗というのも関係する?

区間は全順序集合の部分集合で、それらを体系的に考えようと思うと区間の集合の性質を考えるのが良いはず。つまり区間からなる族を考えると良さそう。

考える全順序集合が連続な集合なら、半開閉区間からなる族を考えると、任意の区間は有限個の区間の非交和として表現できる半開では無い区間の族ではこの性質は成り立たなさそう。漏れとダブりがないように区間を分割する必要は実用的に割とあってそれをきれいにできるのは半開閉区間だけということになる。

ググってみると集合半環という概念があるみたいで、それにこの性質が効いてるぽい。集合半環 (wikipedia)をみると良さそう。

むずい。

https://chatgpt.com/share/4c778bf6-f43a-4230-825d-398ad025a457

結構良い回答をもらえた。

プログラミングで区間を表現する際に半開閉区間(半開区間、片開区間とも言う)を用いると良い理由は、特に次のような点にあります:

  1. 直感的なインデックス操作:

    • 配列やリストなどのデータ構造において、インデックスは通常0から始まります。半開閉区間 [start, end) を使うと、start から end-1 までのインデックスが含まれるため、範囲を扱う際に計算がシンプルになります。例えば、要素数が10の配列に対して [0, 10) という範囲を指定すると、全ての要素を含むことになります。
  2. 区間の連結が容易:

    • 半開閉区間は連結する際に便利です。例えば、 [start1, end1)[start2, end2) という2つの区間を連結する場合、end1start2 が同じであれば、それらを連結して [start1, end2) とすることができます。このように、区間の端点が明確に分かれているため、エッジケースが少なくなります。
  3. 境界の一貫性:

    • 境界条件を処理する際、開区間の端点は含まれないため、範囲外アクセスのリスクが減少します。これにより、特にループ処理や再帰的なアルゴリズムの実装が一貫しやすくなります。
  4. 数学的な整合性:

    • 半開閉区間の表現は、数学的にも広く使われており、理論的な背景からも自然な表現です。例えば、集合の分割や区間の分割などで、一貫した扱いが可能です。
  5. プログラミング言語のサポート:

    • 多くのプログラミング言語やライブラリが、半開閉区間をデフォルトでサポートしています。例えば、Pythonのリストスライスや、C++の標準ライブラリの範囲は、半開閉区間の形式を採用しています。このため、言語やライブラリの機能を活用する上で半開閉区間を使うのが自然です。

以上の理由から、プログラミングにおいて区間を表現する際には半開閉区間を用いることが一般的であり、推奨されます。

数学的な観点から見て、半開閉区間(例えば ([a, b)))を使用することにはいくつかの重要な性質があります。これらの性質により、一貫した扱いや直感的な操作が可能となります。以下にいくつかの重要な性質を挙げます:

  1. 区間の連結性:

    • 2つの半開閉区間 ([a, b)) と ([b, c)) を連結すると、新しい半開閉区間 ([a, c)) を得ます。これにより、連続する区間を簡単に扱うことができます。
    • 例: ([1, 3)) と ([3, 5)) の連結は ([1, 5)) となります。
  2. 区間の分割性:

    • 半開閉区間 ([a, c)) を点 (b) で分割すると、2つの区間 ([a, b)) と ([b, c)) になります。このように、区間を分割する際の扱いがシンプルです。
    • 例: ([2, 7)) を (5) で分割すると ([2, 5)) と ([5, 7)) になります。
  3. 一意性と包含関係:

    • 各点は1つの半開閉区間に一意的に属します。具体的には、点 (x) が区間 ([a, b)) に属するのは (a \leq x < b) の場合のみです。このため、区間の包含関係を判断するのが容易です。
    • 例: (x = 3) は ([1, 5)) に含まれますが、([3, 7)) にも含まれます。
  4. 空集合の扱い:

    • 半開閉区間において、区間 ([a, a)) は空集合となります。これにより、区間のサイズが負になることを避け、理論的な一貫性を保ちます。
    • 例: ([4, 4)) は空集合として扱います。
  5. 順序性と計算の簡便性:

    • 半開閉区間は順序を持っているため、数直線上の位置関係を直感的に理解できます。これにより、範囲の計算や比較が簡単になります。
    • 例: ([2, 5)) と ([5, 8)) の関係は明確に非重複であると分かります。
  6. 測度論との整合性:

    • 測度論(特にルベーグ測度)においても、半開閉区間は重要です。半開閉区間は測度が容易であり、特に区間の長さが (b - a) で計算できるため、実際の応用において便利です。

これらの性質により、半開閉区間は数学的に一貫した扱いが可能となり、プログラミングにおいても同様の利便性が得られます。このため、アルゴリズムやデータ構造の設計において半開閉区間を使用することが推奨されます。

閉じたとこから開いたと〜こ!

好き好き大好き〜

2024-05-23

https://youtu.be/hCuMWrfXG4E?si=Viiw626EEgkaP7p5 2000年代のアニメかってなった

コロナに罹って出社できず、会社の人たちは福岡オフィスから出張で来てる同僚を囲んで飲みに行ってるのが悔しくて、家でビールを飲みながらソファをデプロイしていました。

床を片付けてルンバに掃除してもらってからハイボールで優勝します。

2024-05-22

チーム開発でコードの品質担保するのむずい。足並みを揃えて品質を上げないといけないのがむずいところで、ふっと自分がやる気を出して勉強すれば済むものではないことがむずいのかな。レビューだときりないし。レビューはするのだけど、次はLinter自由自在になるのが次のステップかな。

プログラミングの酸いも甘いも知ってそうだろ!って人がプログラミングのお作法みたいな本を見て、「これ良い!」とツイッタでいうのは、全人類がこれを理解してくれたら最高だし、なんかあったらこの本読んでって言えそうだと思ったのかなと。

アルコールをとって音楽聴くと最高だという話をどこかで書いたし世間でもよく言われてるみたい(引用はないけど)。それで今気がついたのだけど、音楽がよくなるくらいの酔い方にはコツがあって、ちょっとお腹を空かせて空きっ腹状態でショート缶2本のウォームアップを済ませることが肝だと思う。その後ちょっとアルコールしんどいなと思いながら聴く音楽が最高。

いつだったか忘れたけど多分ここ数ヶ月のどこかの夢の記録をする。僕は最近引越しにハマっていて、今度も一目惚れした土地のある部屋に引っ越した。東京の都心かそのやや東にある部屋で、これまで東京の西を中心に一人暮らししてきた僕にとっては新鮮だった。東京西部はそもそも生活の軸を一つも置いたことがなかったのだ。

その部屋は大きな橋の近くにあって、ロフトがあったかは忘れたがロフトのありそうな天井の高い部屋だったと思う。玄関を入った細い廊下にキッチンが付いていて、そっから扉を隔てて天井の高いワンルームがあるような間取りだ。僕はそういう間取りは毛嫌いしているのだけど、何かの条件(立地と家賃だろうか)がよくてそこに一目惚れしてエイッと引っ越したのだった。

部屋ではなく土地を気に入っているのでそこでの記憶は散歩が中心だった(そう、僕は散歩が好きなんです)。道は雑然として曲がったり登り下りがあったりしてスラムな様相で、そこに生える建物の一つに立体駐車場みたいなやつがあった。それぞれの階に一店舗くらいちょっとした軽食やがあったりなかったりして、所有権の所在が不明な、リゾート地にありそうなプラスチックの円卓と椅子がいくつか置いてあった。その建物の雰囲気が良さげだったので入って中を見たから覚えているのだろう。人と話した記憶はないし、何か買ってもいないはず。時間は過ぎてやがて夜になった。もう少し都心の方へ向けて散歩を進めていた。周りは暗くて道路脇に立っている常夜灯くらいが光っている。テレビ局か工事中の駅の周りにそれらしいモニュメントか1/1ガンダム像があった気がする。それを見て写真に一応撮ったと思う。

他にも何かあったと思うけど、夢なのでこのくらい。

RubyKaigi2024参加メモ

RubyKaigi2024に参加したので、思ったことをメモしておきます。

参加したセッションはこちら: https://rubykaigi.smarthr.co.jp/2024/plans/d2350276-c631-4bdc-ad75-49e446e798a3

今回のセッションをいくつか聞いてShopifyのやり方に憧れるようになった。エンジニアリングをしていく上での姿勢として、課題に対して上流から対処しよう、みたいな箴言があってそれが心に残っている。 ShopifyのRuby周りのチームはまさにそれを地で行っていると今回のセッションを聞いて感じたそういうチームに所属して(作って?)良いエンジニアリングをしていきたいと思っていたのだが、これまでは具体的なイメージいを持っていなかった。

ShopifyのRubyチームによる貢献にはすでに自分が直接的に恩恵を受けているし、彼らがどういう思想で取り組んで具体的に何をしてきたか、これからどういう思想でやっていくかを生で聞くことができた。遠いけれども具体的に目標とする存在に出会えたことが今回の一番の収穫だったと思う。

バージョンとかライブラリのインストールとか大変だしよく分からないのでスッキリする方向に進んでいきそうで楽しみ。セッションも普通に勉強になった。

一方的に知っていた人もお互い初めましてな人もお話しできてよかった。今回存在を新たに認知した人ももちろんいて、いろんな人が色々やっていることとか、意外とコミッタ少ないこととか認知できて良い。 Rubyって人間が作ってるんだなと感じる。

現実味を感じる一週間でした。

2024-05-12

社内外のrubyistの人たちとたくさん喋れた。明日ruby.wasmの話を聞けるのが楽しみ。質問するぞ!!1

2024-05-12

チャットを読み書きするのが大変なのではなく、それらを始めるのが大変という話。ラインが嫌いとかでは全然ないし、会話が嫌いなわけでもない。

僕はラインを手紙くらいの速度でしか見たくないと思うような付き合い方をしてしまっている。議論とかすり合わせをガッとする文脈になれば集中して通知を気にするようにはなれるのだけど、そうではなくて雑談とか、会話ではなく外部の処理に時間のかかるイベントの後処理とかをする文脈だとなかなか通知を見れないというか、そこに意識と返信の気合を割けない。

そもそもラインとか会話に限らず、返信とかリアクションを外部からの割り込み契機で行うのに辛さを感じる気がしている。例えば宿題出されてそれをやるのがしんどいのと同じイメージ。自分からこの辺の分野・技術を学んでみようと思ってやるのは何も辛くないし、むしろ他の辛さを乗り越えてでもやろうと思うが、それが外部から要求されると辛くなる。

おそらく原因は人から指図されることではなく、自分がそれをやる体制に入っていない状態で、やる義務を感じてもやる気にならないことにあると思う。宿題はやり始めて意義を感じたり調子が出たりすることでやるのが辛くなくなる。それが2,3週間かかるものであったとしても、体制に入れると辛くなくなる。

ラインの件も同じだと思っていて、普段僕は会話や事務処理をするモードではない。そのタイミングで人からその依頼が飛んでくると、会話に返事する義務を感じはするものの、処理するやる気は出てこない。

雑談はしてると楽しいし、事務処理も乗ってくると楽しいものではあるのだが、それらを始めるのに時間がかかるし、大変なのだ。これは子供の頃から変わらない(なんなら全人類そういうものなのではないだろうか)ので受け入れて自分の問題として迂回するなり利用するなりしていこう。

ちなみに仕事でSlack使うのは全然苦ではない。仕事するためにSlackでコミュニケーション取るのは有効だと思っているし、始業はすでに始めるインセンティブを持てているので苦なくSlackコミュニケーションは取れる。プログラミング集中してるときとかは通知に気がついてもちょっと返信したくないときがあるにはあるが、それくらい。基本的に仕事するときにはリアクションを優先するモードになっているのだと思う。コードレビューと同じ意識を持っていて、普段のあれとは異なる。そして、仕事する時間は決めていて休日にSlackの通知は切っているがそれが他の人に対しても共通の認識になっているのは良い。

ラインでも時間決めてプロフィールに書くとかするか?(あまり書きたくないけど)。休日の作業しない時間とかになりそうではある。ちなみに今がほとんどそんな感じの運用になっている。

感謝を伝えるのが苦手で、ご飯奢ってもらったりプレゼントをもらったときとかどういう顔をすれば良いかわからなくなる。

ラインでそれをやらないといけない状況ではなかなかヤバい。気がつくとなぜだかわからないが(ライン見ないからなのだが)伝えたい感謝が2,3個溜まり、ついでに謝りたいことも少しできてたりする。早めに、こまめに連絡するのが良いのだろうな。

感謝を伝えるのは単に技術の問題な気がするのでさっさと習得しよう。特に複数溜まった感謝の意を伝える能力が欲しい。

会話やチャットに文脈があるように、僕が日々過ごすことにも文脈というかモードというかがあるみたいだ。仕事、雑務、おしゃべり、勉強、家事、読書(小説)、読書(技術書)、外出、網羅的でも排他的でもないが、それぞれに飽きて数ヶ月やらなくなることはないが、数週間くらいならおろそかになるものが出てくる。

排他的ではない例として、仕事な雰囲気になっているときに雑務、おしゃべり、プログラミングは全然する。ただし、雑務やおしゃべりはプログラミングに集中しているときはできないし器用に行き来も無理。

このセクションは、だからどうというわけではないのだけど走っているときにそんなことを思ったのでメモ。

2024年4月での振り返り

4月が終わるので(?)最近のことを振り返る。

1月に配属されて、2月開発にプロジェクトが始まってからずっとLOLIPOP! for gamersを作り続けている。今まで本で読んだようないろんな苦しみを体感できて楽しい。プログラミングに関することや、設計とか技術選定、開発体制や組織、チームとか締切とか工数みたいな大変さを一通り味わったと思う。

自分がうまくできなかった・できた経験や周りの人が自分より上手くやったりあるいは自分が彼らにアドバイスする経験を積めた。修行を積んでいる感じがする。

修行が必要なのはそれはそうと思うのだが、戦略的に仕事したいなとも思う。たとえば1ヶ月後は今の倍のスピードで開発できるようにしたいがどうすれば良いだろう、とか考えて立案して実行するとか。

学生の頃に感じていたプログラミングの課題が感覚としてわからない気持ちはだいぶ薄くなってきた。そろそろ腰を据えて課題を整理して解決を図る余裕が欲しくなってくる(自分で作るぞ)。

Webアプリケーションを作っている。知らない人が変更をするであろうプログラムを作ることが仕事。実行環境は不安定で、このプログラムは複数のプロセスで同時に走るし、どのタイミングでプロセスが落ちるかわからない。

DBとかの外部サービスは自分たちが実装しているプログラムよりも余程信頼できるもので、一貫性とかを担保しようと思うと外部サービスに頼ることになる。もちろん我々が実装するサービスを雑に作っている訳ではないが、外部サービスを選ぶときには厳しめな基準を持っているので信頼性が違うのは当然に思う。 Webアプリケーションはたくさんの人が作っているので、そのための外部サービスが成熟しているのは当然なのかな。一方で、プログラミング言語を設計するときに使えるツールってそんなになくて、自分で実装するものが理解できて使うの楽なイメージがある(僕はにわかなので見当違いなことを言ってると思った方が良いかもだが)。

そう思うと、Webアプリケーションを作る仕事はインターネットから情報を探し出して信頼できるツールにうまく責任をなすりつつ、本当にやりたいことを見失わないようにハンドリングすることなのかと思う。そのためにモデリングとか設計とかするのかな。インターネットから欲しい情報を探し出したりそれらを組み合わせて実装するのもまあ大変。

この解釈はなんだか悲しいな。プログラムを作ることが目的になっている視点な気がする。これを悲しいと思ったのは、ぼくが思う正しい仕事が事業で利益を上げることではなく、誰も知らなかったこと・できなかったことを明らかにして誰でもできるようにすることだと捉えているからだろう。やるのが大変で、それをやったのであれば誰もできなかったことをできたのは間違い無いのだろうが、後から来る人がそれをやりたいと思うかや、やりたいと思ったとして自分の影響で簡単にできるようになったかは別の問題。事業でやる分には競合が同じ苦労を味わったりするような状況で放置することも多いはず(この辺はペパボはいい感じだと思う)。

数年前よりも良いものを早く作れるようになることがWebのエンジニアリングでは求められていて、そのためには知見を集めつつそれでも叶わない課題を見つけてそれを解決する手法を提案・実装・共有することが必要なのだろう。その中でそれまでの仮説を否定するものがあると、パラダイムシフトが起きて自分も含めてみんなで楽しくなれるのだろう。仮説を否定するためには流れに乗るのではなくて既存の目的や仮説を理解した上で、自分が先端の課題に向き合って試行錯誤して課題解決することが必要なはず。そうやって狙ってやった提案がハマると気持ち良いだろうから、それをふんわりとしたエンジニアリングの目標にするのは一つの手だと思う。

インテリア

以前インテリアについて書いた続きを不定期でやっている。前回は以下のように書いていた。

今日たくさん寝て軽くランニングしたらなかなか幸せな時間を過ごせた。ただいまはそのクオリティが持続していない。夕食の目処が立っていないこととか部屋がちょっと寒いこと、姿勢が微妙なことが原因だろう。軽く座って作業する空間はやはり欲しい。机にがっつり向かうか後傾でノートパソコンを叩くか、床で作業するかの三択でQOLっぽい作業時間を過ごす空間がない。コメダで作業する姿勢を家でも取れるようにしたいイメージ。やはりベンチソファだと思うんだよな。僕のユースケースだとソファだけでなく机も欲しいことに気がついたのが今週末の成果。

あとは壁が寂しいことにも気がついた。なんか怖くないすっきりとした絵とか飾ればいいんだろうな。めんどいので誰かに決めてほしい。ああいうのってどこで売ってるんでしょうね。

以前はこんなことを書いていた。まったりした作業場所が欲しいのと殺風景なことが課題で、ソファや机と絵で手を打てるんじゃないかと思っていたのか。

今はソファは必ずしも必要じゃなくても椅子でも良さそうに思っている。休みの日に壁に向かって作業したくないくらいの気持ちであって、リラックスしたければ今まで通りで良さそうと思っている。

あと絵についてはいい感じの柄なカーテン(のれん?)を二つの部屋の間の間仕切りとしてかけると印象がだいぶ変わって良さそう。部屋とは別に玄関をのれんで区切りたい気持ちが芽生えた。

何を使うかも大事だろうが、間取りも大切だろう。現状と案を書き出してみた。

これまでは仕事する場所と生活する場所が一緒だった。寝室が分かれている感じ。

3850
2850
2350
2850

寝室と生活する場所を一緒にして、仕事する場所を独立させた。生活する場所を仕事する場所から切り離して棲み分ける。

3850
2850
2350
2.85
2r = 950

これ割と気に入っている。ベッドは居住スペースにあって良いと考えることにして、作業場所を分離する。作業場所で疲れたら居住スペースに逃げてきて、机でふんわり続きするイメージ。

作業スペースがあまり快適じゃなさそうなのが欠点かな。太陽を感じられなさそう。

3850
2850
2350
2.85
2r = 950

これはこれでありかなと思う。モニタもう一個買って居住スペースに置き出しそうではある。

3850
2850
2350
2.85
1200 x 800

970 x 1950
3850
2850
2350
2850
1500 x 800

仕事する場所が暗くてかわいそうだったけど、これで解決するのでは?

970 x 1950
3850
2850
2350
2850
1500 x 800

今回の提案では模様替えと机の導入を検討しているが、まずは可逆な模様替えを試してみた。

仕事する机を窓に向ける案を採用したらいい感じ。ベッドのサイズが狂っていて、本当はもっとデカかったのが誤算だった。よく見ると1950mmのベッドが1500mmの机よりも短くなってる。

ちなみに今ぼくは仕事から帰ってご飯食べた後で、椅子に座る元気はないので床でノートパソコンを叩いている。机買うの無駄か?目的を見直そう。

ゆるい作業場所がなくて困っていたと思っていた。でも会社帰りでパソコン叩きたいぼくは床で満足している。

思えばゆるい作業場所欲しいと思うのは、休みの日に体力はあるけど気合いはない状態で床だとQOLが上がらないからだったような気がする。「軽く座って作業する空間」が欲しいと書いてあるな。なんだよそれ…。

平日は本当に床で良いのかと、休日は本当に作業場所とは違う机が欲しいのかが論点かな。

追記:今週末はだいぶ床で過ごしてQOL低かったのでやはりソファを買おう。すぐ近くにベッドがあるのでソファは硬めにして使い分けたい。軽い作業や食事をしたり、まったり本読む時に過ごす場所を作る。なのでテーブルをおくことにもなる。

ソファ買うならしっかり座れないと座らなくなりそうと思って、カウチソファを買うことにした。STREAMLINEが良いものだと聞いてメルカリでちょうど売りに出されたので購入。机のことは届いてから考える。ソファでかい気もするけどなんとかなるでしょ。

ソファが来るまでに本をなんとかしないとだ。

こんな感じになった。ソファは良いもの。でかくて邪魔かとも思ったけど意外とそうでもないな。いいサイズ。

2100 x 910
3850
2850
2350
2850

2024-04-21

ボトムアップの学習と、トップダウンの学習の使い分けがずっとわからない。ボトムアップな学習は技術に対する好奇心からくると思っていて、トップダウンな学習は課題が動機になっていそう。

トップダウンな学習をすることで、課題解決のための技術を手に入れらる。ボトムアップな学習では既存の手法を理解して、それをベースにした課題解決方法の探索ができるようになる(キャッシュできる)。

課題解決の方法を模索するときには、問題を分割してそれぞれを解決する。筋の良い分割をして、それぞれの問題を解決できるようにしておく必要があって、逆に解決できる課題の組み合わせだと元のでかい課題を捉えられるか否かがその人の課題解決能力を左右する。

もちろん分割結果を元から想像できるわけがない(そういうものもあるけどそれはそもそもその人にとって課題って感じではなさそう)ので、問題のある分割による簡単さの増分を感じ取れると良いのかな。その増分を計るために経験を積むとかベストプラクティスを学ぶとかするのだろう。でもこれだと高々局所最適な感じがする。それが常に悪いわけではないだろうけど。なので人はいろんな方法を検討するのかね。単純にそんな綺麗に微分するみたいに問題を認識できないからか。

2024-04-20

あれ実装したいなと思って手を動かそうとしちゃうの良くないな。とはいえその直感を無視するのは悲しいので意義を議論して見るのはありかな。

最近だと複数プロセスのログが一個のログファイルに書き込まれるときに、プロセスごとにIDを振っていい感じにわかるようにしたい。プロセスもそうだしセッションでもそうしたい。おそらくotel?がその辺をやるやつなのだろうと想像していて、それを勉強して導入するのも良いしそれが合わなさそうなら自分の欲しいところだけ実装してしまっても良いかなと思っている。

なんだけどそれを実装したところで誰がどんな状況でどういうふうに幸せになるかをちゃんと説明できない。

ログ見やすくなって嬉しいのはそうだと思うが、じゃあいつログをどんなふうな目的で見るのか、そのときプロセスとかセッションで引けるとどう嬉しいかの説明は僕ができるものは弱そう。

こういうときに人格をふたつ用意してさっと議論に移れると良いだろうと思う。昔から何度もやってることではあるが、その作業に移るタイミングがランダムなのが課題だと思う。何が困るかというと、議論をしないで手を動かし始めてしうとか、重要性に気がつかなくてやりたいと思いつつ忘れしまうことがありそうなこと。あと課題を深掘りできてなくて、確かにその手段は良いものではあるけど、芯を喰った課題解決にはならないこともある。

2024-04-13

最近お仕事楽しいのだけど、ちょっと忙しすぎるかもしれない。

引越してから全然運動してないので、そろそろなんとかしたい。暖かくなってきたし会社にもだいぶ慣れてきたのでソリューションを編み出せる時期なはず。

2024-03-26

イベントソーシング?と言うのかわからないけど、イベントを全部持っておけば現時点での状態はイベントを全部みて計算できるので永続化しなくて良くない?みたいな考え方がある(はず)。

イベントを解釈する遷移規則が変わらなければそうだけど、実際のソフトウェアではプログラムは継続的に変わっていくもので、イベントの解釈が変わらないこと(もっと言えば解釈できること)を保つのは大変そう。検証するためにリグレッションテストみたいにスナップショットを取っておいて、遷移規則が変わるたびに新しい解釈結果と比較すれば良いかもしれないw。

世間ではその辺どうしているんだろう。遷移規則が変わらない範囲でこのアーキテクチャを採用することでクリアしてるのか、そんなことは気にしないのか(あるいは気にならないのか)、他に上手いやり方があるのか。

このアーキテクチャを採用する目的にもよるか。

Nextjsのプロジェクトにstorybookを導入してみた

https://github.com/naoyafurudono/timer/pull/1

このプルリクエストで頑張った。コミットメッセージにやったことは書いてある。

公式ドキュメントがしっかりしてそう。storybookが内部で使っているwebpackが@ インポートを読めないみたいで、プラグインを入れる必要があった。

2024-03-22

2年間くらい不在だったフライパンのふたの取手をさっきリニューアルした。取手の穴に割り箸を差し込む運用からついに解放される。

ふたを掃除するときに取手を外したら、乾かしている間にネジがどこかに行ってしまったのだった。それから2年間ネジを探し続けてきている(まだ諦めてないぞ)のだけど、イオンで取手だけ売ってたので衝動買いしてしまった。多分今年のベストバイ。

2024-03-20

Webアプリケーションのテストをどう実施したものかと最近考えることが多い。 Webアプリは雰囲気で変更したいはずで(ソフトウェアって大体そう?)、またテストは長持ちしてほしいと思う。

テストではなんらかの仮定のもとで実装がある条件を満たすことを検証する。その仮定を上手に置くことがテスト戦略を決める人の腕の見せどころだろう。

例えば関数の単体テストをする場合は、そこに渡す実引数を仮定して、その関数の出力が意図した通りになることを検証するし、モックを使うならそのモック対象の振る舞いを仮定することになる。 e2eではユーザの操作を仮定するのだろう。

いろんな仮定の置き方とその結果実現できる検証内容がある気がしていて、安定した仮定(覆るとテストを直さないといけない)を選びつつ、そこがクリアできれば安心と思える検証内容を取ることがテスト戦略の設計で目指すことなのだと朝の東横線で思ったのだった。

で、そういうお得さを出せるように実装するのも大事なんだろうなと思っています。

2024-03-17

今日はランニングして、いい坂を見つけた。暖かくなってきたしランニングを再開していこうと思う。

この辺りは道が入り組んでいて、良いルートがなかなかわからないのが困りどころだった。逆手にとって地図を読みながら走ればナビゲーションができて楽しいはずだと気がつき地図を用意することに。

何年か前にopen orienteering map を使ったことを思い出して生成したら意外といい感じになった。家のプリンタはモノクロなのでコンビニで印刷してこようと思う。ロゲインを見据えて名所探しをしてもいいかも。

2024-03-14

数列とか、関係とかを日常会話で使える環境にいたいと思うことがある。あと高山ラーメン食べたい。荻窪ラーメンでもいい。今週末荻窪行くか。

  • ラーメン
  • ランニング
  • 銭湯
  • 図書館
  • 前住んでたところ

2024-03-09

フロントエンドのモデルとRPCについて考えてみたい。

Webアプリケーションのフロントエンドがリッチなときに、テストをどんな感じで書こうかとか、そもそもアプリケーションをどんな感じで書こうかと悩む。僕は悩んでいる。

ユーザとページがあって、必要に応じてAPIを呼ぶ、その結果画面遷移が起きるくらいのものだったのが、しっちゃかめっちゃかしてきてそれを理解できるのはコードを書いた時空にいる人のみになる。

フロントエンド、副作用が多すぎるんだよな。レンダリング、人間、apiが絶対にいるのでそれは大変に決まっている。ログを気軽に残せないとか、エラーの出し方に気を使うのも辛い。Webアプリのバックエンドなら、しょうがないからログたくさん出して500返しとくかができるけど、フロントエンドで想定外が起きたときに、すまん壊れただけでは完結しない。

そもそも完結しないようなレイヤ分けが間違ってるのか?ネットワークの隔たりとレイヤ分割が一致してしまっているが、フロントエンドアプリケーションも気軽に壊れさせてあげてほしい。その内容をログに取ったりユーザに幸せになってもらうためのあれこれは他のレイヤでやるべきなんじゃないかと思ったりしました。

今お酒を飲んでいるし、今日会社で上司というか先輩というかがウイスキー好きだとしって酒モチベが高い。最悪だな。

お酒を楽しく飲める会をしたいね。酒の好きなところを語ると良さそうに感じたのでやります。

まずいやつはまずいけど、美味しいやつは本当に美味しい。他の食べ物と同じで体調とか好みによるのだけど、摂取するもので酒が一番美味しいことはままある。ウイスキーとビールは特にそう感じる。日本酒とかワインはそんなに美味しくないと思います。

アルコールを摂取するといわゆる常識を司る理性が外れて、あらゆる人と小学校の友達のように接することができるようになって楽しい。それっぽい言い方をした(?)けど、僕が小学生みたいな動きをしてるだけかも。

あと音楽聴くときにはアルコール入ってるともっと楽しめて好き。

インカレの1,2週間前くらいな感じがして楽しい。フルタイムで専門目な領域なのが痺れる。

2024-03-07

昔はIPAが好きだったのだけど今はハイネケンが好き。理由は今も昔もなんか甘い気がするからで、味を認知してからそれを好みと判定するところは変わってないけど味覚を認知するところが変わったのだろうと思う。

そういえば麒麟のIPAが好きだったんだけど最近見ない。https://drinx.kirin.co.jp/beer/grandkirin/ipa/ と思ったら終売していた。https://drinxfaq.kirin.co.jp/faq_detail.html?id=12066。悲しいね。

学部生の頃に研究室のゼミ前の小ネタで喋ったスライドにグランドキリンのことを書いていた。slide (pdf)

(合掌)

今見返すとグランドキリンへのコメントがよなよなエールに似てるとしか書いてないな。本当に好きだったのか?

2024-03-02

op inject が欲しいやつだった。テンプレートに1passのURLぽいやつを書いてコマンドに渡すと、そこを埋めたファイルを出力してくれる。埋め込むときに環境変数を読んで、URL内での参照を置換した上で1passのレコードを参照することもできる。

https://developer.1password.com/docs/cli/secrets-config-files/

2024-02-27

  • 職場が遠い
  • ネット回線の契約が不自由
  • 間取りがそんな良くない
  • 浴槽がちょっとせまい
  • ゴミ出しの曜日
    • いまだに覚えられない
    • 資源ごみが土曜日だとgood
    • いつでもだせるとbetter
  • ベランダでタバコ吸う輩がいる
    • 洗濯物ほしてるとにおっていや
  • 外からたまに塩素臭がする
  • 和室を洋風に改装しているのでところどころ微妙
    • 収納が押入れであることとか
  • 洗濯機が室外に置く間取りなのでドラム式を買いにくい
  • 食洗機がない
  • 段差があるのでルンバしにくい
  • 電車で横にいる人がにおいがち
    • これは不思議。座る頻度や時間が増えたことも関係するかも

2024-02-26

人間失格の主人公はそんな失格っていうほどやばい人には思えないというのはあるあるだと思っていて、そういう感想を抱いたことで自分を許せるようになったと思う。そういう人も結構いるんだろうと思う。

太宰修がまともじゃない人間について描写したおかげで、それを読んだぼくみたいな他人がもっと救いのある解釈を手に入れられたのだ。当の太宰修は自殺してしまった(理由をぼくは知らないけど)が、彼の残した解釈のおかげでぼくはそれなりに幸せに生きているのでなかなか感謝している。昔は太宰修は愚かだと思ったけど、たたきを作った人は偉いし、その恩恵を自分は受けているのだった。

久しぶりにUbuntuでブログを書いのだけど、入力がキビキビしていて気持ちがいい。最近は会社や私物のmacを使っていた。何が違うんだろう。

2024-02-18

今の家に初めて人を呼んだ。酒を飲んでタバコを吸い、餃子と焼きそばを作って食べた。どれもうまかったけど寝起きにタバコとコーヒーを一緒に摂取したことでキャパオーバーしてしまった。

The Pieceという良さげなタバコを3本もくれたのは感謝だしおいしかったのだけど、適量を超えてしまった感じがする。がっつりタバコにやられた感じがあるので、今後はもう少し避けるようにしよう。

2024-02-17

glangにgeneraterを入れようというプロポーザルがあって、試験的に実装されているみたい。いくつかのパターンがあるけど、だいたいこんな感じで使える (The Go Playground)

ジェネレータとして使われる関数は定義の段階では普通の関数と区別がつかないような構文定義をされている。コンパイラやランタイムの実装が気になるし、静的解析ツールが大変なことにならないかが心配。

気が向いたらプロポーザルを読もう。ジェネレータが引数にとる関数がブールを返すけど、どちらを返すかを誰が決めているかも気になる。

第一印象ではgolangには入らないで欲しいなと感じた。

2024-02-13

今日1on1で教えてもらった。ロールモデルとして追っていく。https://scrapbox.io/kawasima/%E3%82%A4%E3%83%9F%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%96%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%83%A2%E3%83%87%E3%83%AB

2024-02-12

管理画面の設計について考えてみる。 Webアプリケーションでもろもろを設定する際のUI設計を考えている。

設定の初期化時や更新時でフローが異なるはずだ。

初期化のタイミングでは、氏名やメールアドレスの設定・認証や、オプショナルな事項(決済情報とか追加の契約事項とか)の設定が挟まり、最後に確認してよければコミット、ダメなら修正する。

更新では最初の設定で気に食わなかったところを修正したり、追加の設定項目をいじったりするだろう。

それぞれのタイミングで何を設定させるかや、どれだけサクサク入力できるかによってユーザの体験が左右されそう。例えば初期では認証情報だけをコミットして、その他の情報は更新で登録する手もあれば、ファストバスを登録時に持ってきてしまって、8割のユーザが最短で使用を開始できるようにするパターンもあるだろう。

ユーザが行うそれぞれのフローはアプリケーションというかシステムにどのような影響を与えるだろうか。というよりも、ユーザがそれぞれのフローの結果及ぼせる作用をどのようにデザインすると良いだろうか。

この作用をデザインするにあたって、アプリケーションで表現するモデルがどんなであるかを明らかにしておくと良いはずで、そのモデルに対する作用の一つの実現方法としてユーザが操作するフローがある、と思えそう。

ユーザによる操作じゃない作用としては、決済が行われたとか権限が時間経過で失効したみたいな作用がありそう。

データにもいろいろありそう。モデルを表現するためのデータと、作用を実現するために一時的に保持するデータは異なる。

例えばユーザが登録されているか登録されていないかしかないモデルでは、メール認証中にはユーザが登録されていないけど、メール認証のためのトークンとかはサーバにデータとして持っていないといけない。

もちろん、そういう一時的な状態もモデルに含めるてもあるはず。RDBで実装する場合delete操作が激しくなりそうだけど。セッションキーもそうかな。セッションキーはモデルを表すデータに持つことは少なさそう。モデルの表現には含まれないログイン状態として扱われるイメージがある。揮発性のあるデータストアで保持しそう。

全部モデル化してしまうのが教科書的なんだろうな。汚いとわかるならあえて汚いことをやる必要はないだろう。

モデルではないけど、DBMSの都合について説明する記事があったので貼っとくセッションの保存などにRDBMSよりもRedisやmemcachedのような、NoSQLが向いているのは何故ですか?他にNoSQLの用途として向いている(いない)処理にはどのようなものがありますか? (Quora)

TTLが欲しいよね、という感じか。確かにそもそもセッションキーにはTTLが欲しい気がするし、モデルを考える上でTTLはあまり意識したくない気もする(頭弾けそう)。

反面、TTLもうまく表現したら面白そうな気もするし、割と欠かせないんじゃないかという気もする。そのときに普段のモデルを表現するのに使うDBとTTLを複雑さを吸い取らせるために導入したDBが異なると不必要な複雑さが生じたりするかもなと思った。

今日たくさん寝て軽くランニングしたらなかなか幸せな時間を過ごせた。ただいまはそのクオリティが持続していない。夕食の目処が立っていないこととか部屋がちょっと寒いこと、姿勢が微妙なことが原因だろう。軽く座って作業する空間はやはり欲しい。机にがっつり向かうか後傾でノートパソコンを叩くか、床で作業するかの三択でQOLっぽい作業時間を過ごす空間がない。コメダで作業する姿勢を家でも取れるようにしたいイメージ。やはりベンチソファだと思うんだよな。僕のユースケースだとソファだけでなく机も欲しいことに気がついたのが今週末の成果。

あとは壁が寂しいことにも気がついた。なんか怖くないすっきりとした絵とか飾ればいいんだろうな。めんどいので誰かに決めてほしい。ああいうのってどこで売ってるんでしょうね。

2024-02-10

このブログを読んだと感想をいただいた。初めて読んだ人を認識したのでなかなか恥ずかしかった。読まないで欲しいわけではないのだけど、これは人に読まれると恥ずかしいやつだよなと日々思って書いている。

人間性が出ているみたいなことを伝えてもらった。確かに隠し事をしないように(というか内面を晒すように)書いているつもりなので、その意図が叶っていたようで嬉しい。

ファインディング・ニモという映画が好きだった。ニモは僕が言葉を音でしか認識せずに見て記憶している映画だ。なので「ニモ」という表記がなんだか変な感じがする。あと、昔はfindingではなくfightingだと思っていた。その間違いは以前から認知していたのだが、主人公がニモではなくてお父さんであることに(タイトルから察した場合はだが)今気がついた。ニモが主人公だと思い込んでいたのと、お父さんとニモのビジュアルが似すぎているので英語の間違いは腑に落ちていたなかった。僕の父親からドヤ顔でファインディングだぞ言われたときにはうるさいぞと思った。今考えてもどっちでもいいんじゃないかと思っている。

プラットフォーマの良心

プラットフォーマとして、つまり場を提供してその場を幸せな環境として維持するものとしてリーダーシップを発揮することは綺麗なことだと思う。

gmailやyahoo mailがメール送信者のガイドラインを発表して、それを元に受信者・送信者双方にとっての利益を追求したことは記憶に新しい(少なくとも僕にとっては)。風当たりのあることだし、プラットフォーマにとって利益のあるものではない(よね多分)が、それを主導したメールのプラットフォーマたちは綺麗なことをやったと思う。

僕はビジネスとか損得勘定のことはわからないのだけど、あれは間違いなく正しいことだと思う。例えば、あの声明を立案して推進して実行したのが僕だとして(そんなことはまず無理だけど、その責任を僕が負ったとして)、仮にそれが原因で責任を追及され非難を浴びたら、その非難を挙げた人々を憐れむ自信がある。憧れてしまう。ああいうことができる力やセンス・良心をもったプラットフォーマになりたいと思う。自分の良心に従って人の幸せを実現した彼らを尊敬するし、そうなりたいと思う。

ぼくの母校である大和小学校の校歌は「強く、正しく、美しく」を掲げていた。今回掲げた、憧れるプラットフォーマは強さと正しさを持っていた。では美しさはどこにあるだろうか。

RFC8058には美しさを感じた。実際的かつシンプルで、僕の尊敬するエンジニアが美しいと言ってくれそうな哲学を持っているように感じた。ああいう美しさをお前も表現しろよな!というのを校歌は僕に要求しているのだろうか。

あと僕がGAFAに目指すなら絶対Googleに行きます。Googleは美しさと正しさを持っていると思う。ブランディングが大きいのだろうけど。

話が二転三転したけど、正しさや美しさを体現できるだけの強さを手に入れたいと思っています。また、その強さを手に入れる過程で追い求めていた正しさと美しさを忘れずに、むしろよりしっかりしたものにしたいと思う。

2024-02-07

家の環境を良くしたい。家でやることの幅を広げていく。今までは衣食住に加えてパソコン触るかコーヒー飲むかくらいしか快適にできなかった。読書とかゲームとかを快適にできるように – 生活を快適にできるように – したい。

たぶん家具が足りないことが問題。居心地の良い場所がベッド・机・風呂・台所・トイレだけで、リビングみたいな概念が僕の家には7年間存在しなかった。リビングを作る。2月の目標にしよう。

あと福岡ってごぼう料理が得意だな?なべのごぼうっうまいんだなと、旅行で気がついたのだった。多分しばらくはすべての煮物に薄切りのごぼうを入れると思う。

https://www.youtube.com/watch?v=xTRx39EtPZ4

2024-01-22

今日は仕事で最近やってたやつをガッと片付けて褒めてもらった。やったね。近所の八百屋が復活していたので豪遊してきた。飽きたのでこれくらいで。

関数型言語の会に今度参加する。楽しみ。どんな人が集まるんだろうか。仕事でどんなふうに関数型言語を使っているかを知りたいし、語りたい。どんな論点がありうるだろうか。

2024-01-18

どっかで見たのでやってみたhttps://16test.uranaino.net/share/fjv4MRBoFqNv7yYuaOwO ぼくはうさぎ型らしい。ぴょんぴょん

2024-01-14

引越しの片付けがひと段落した。片付けてみると意外と片付くものでそれなりに快適。これから細々としたところを詰めていく。シンクのスポンジ置き場とか延長コードの配置とか。

狂言の附子はなぜか黒いイメージがある。水飴みたいなやつだったはずなので透明とか茶色がかった色が妥当なのだとは思うのだけど初めて演目を聞いたときからずっと附子は黒いイメージ。サトウキビを精製するときに黒いタイミングがありそうなイメージもある。多分石油に引っ張られている。

ぼくが小説を読むときは物語ではなく文章を読んでいるのだと気がついた。ちなみにこの気づきは過去に何回かやっている気もする。なので小説や純文学、エッセイやブログはぼくの中で割と近いポジションにある。

砂糖を入れておくための瓶を買った。欲しかったのは蓋が薄い金属でできた、ジャムとかハチミツとかご飯ですよとかが入っていそうなタイプのいい感じのサイズ感なやつ。見つけるのに難儀したが結局ダイソーで見つけられた。凝ったギミックとかいらなくて、「こういうのでいいんだよ」と言いたくなる。実家であのタイプの瓶に砂糖を入れているのを帰省したときに観測してよかったので模倣。お手軽で気密性がそれなりで、可用性もあるのが良い。母は偉大である。ちなみに附子の話は砂糖を瓶に入れようとして気がついた。さっき瓶を洗って乾かしているので明日砂糖を入れる。楽しみ。

生活水準ってなんなのだろうなと思った。引越しで生活水準を上げた実感を得たがじゃあ生活水準とは何かと問うてみたら上手い答えが見つからなかった。なんなんでしょうね。

クックパッドに登録したお汁粉のレシピが誰かにブックマークしてもらえた。嬉しい。写真の全くないレシピなのによく保存したなと思う。お汁粉レシピマニアとかだろうか。ちなみにぼくはこのブログにメモってしまったので参照していない。ログインしなくてもアクセスできるのは偉大。オープンなインターネットの良さ。でもブログページを仮にブックマークしてもらってもぼくはその事実をしれないので喜べないから悲しくもある。上手いプロトコルがあるといいのだけど(ありそう)。

2023-12-31

質量ベース。

  • あずき: 1
  • 砂糖: 0.5
  • 水: 4

  1. 渋抜き: 茹でてタンニンとかを抜く
    1. 水から茹でる。沸騰してから20min蓋をして火を止める。
    2. 煮汁を捨てる
  2. 煮込み: 柔らかくしたり味をつけたりする
    1. 45-75min煮る: 豆の4-5倍の水を用いる。指で潰せるようになったらok
    2. 30min蒸らす。加熱むらをなくす
    3. 汁を捨てたり水を加えたりしてバランスを整える
    4. 火をかけつつ砂糖を加える。沸騰後5minで火を止める

  • 修論を提出して卒業した
  • 入社した。7月までずっと研修をしていた。
  • 7月末からOJTを始める。12月末までずっと。
    • かっこいい先輩たちのかっこよさをたくさん見れたのが良かった
  • インカレの運営で演出のパートチーフをやる
    • 多方面に迷惑をかけつつ、仕事を人に丸投げすることを覚えた
    • しっかり進めるのは僕より得意な人がたくさんいるので基本人に任せる方がコミュニケーションコストを込みにしても早い
    • 自分がやった方が早いことは特に思いつかないのが寂しいところ。仕事を説明したのが偉かったのだと思うことにすると幸せになれる?
  • 同期が人生を進めているのも印象的
  • お金の自由が効くようになった
    • 引越ししちゃった
    • 行動範囲が劇的に広がったかというとそんなことはない。店入る頻度が増えたとかそういう程度。生活水準が微増した感じ。
  • 出社の影響で運動が減った。8時間も働くと疲れちゃうので。翌日のことを考えて0時に走り出すのを恐れるのも要因だと思う。
  • 学習時間はどうだろう。仕事で学習するからなんともか。自分の意思で選んだコンテンツを学ぶことは減った。

  • 人生をやるぞ
    • お金の自由が増えた分はここで生かす
  • 走る。サブ3を達成する。マラソン大会を探そう。
  • 自炊を増やす
    • 夕飯の少なくとも一品は自分で作ったものにしよう
  • 技術の話はまた別途

2023-12-26

ついったで同僚が panicIndex と言っていて、なんだそれと思ったので調べた。golangの文脈だったので想像はある程度ついて、golangのランタイムの一部として?実装されている関数でインデックスに関するパニックを投げる関数だった。

https://go.dev/src/runtime/panic.go

来年はついに配属される。小Rまでもそうだったけど求められることが変わるので楽しみ。今度は長くなるので、そこで効きそうな技術を特に強くしておきたい気持ちと、自分の主張を通しやすそうな環境なので好き勝手とがりたい気持ちがある。

どっちもやればいいかな。

2023-12-21

ターミナルのプロンプトを に一瞬変えたのだけど、心が荒みそうになったのですぐに 🐧 に戻した。

2023-11-25

依存性逆転の原則の何が嬉しいか思い出せなくなったので考えてみる。

ぼくが今思い出せる依存性逆転の原則は、抽象度の高いロジックを表現するのにそれを実現するために必要な部分問題の解決があるとき、抽象度の高いロジックが部分問題の解決方法に依存しなくなることが嬉しい。

Dependency injectionでは抽象度の高いロジックは部分問題に依存するけどその解法には依存しないことで依存性の逆転を実現する。関数呼び出しみたいな感じで、ロジックの使い手が解法をロジックに適用する。

最初の文で終了していた。気が向いたら答え合わせしよう。

ティッシュ箱の製造が寡占されているか知らないけど、なんだか寡占されてそうだなと思った。構造はだいたい同じだし。口にあるビニールの素材は材料も分厚さも違いを感じたことがない。箱の紙も違うことがあるんだろうか。ペットボトルも寡占されてそう。なんというか要件はどの消費者に対しても均一な商品は寡占しやすいのかなと思う。ペットボトルは自由度が高くて消費者の要求も色々ありそうだが、ティッシュ箱はだいぶ均一そう。局所的なシェアを確保しにくいことが寡占の要因なのかな。

感性で評価するものは寡占しにくい。反対に評価関数が定まるものは寡占しやすそう。プログラミング言語は寡占しにくいがコンパイラは寡占しやすい。食品は寡占しにくいが、精密機械は寡占しやすい。アイドルは恋人に比べて寡占しやすい。

2023-11-22

高校生の頃、進路を考えるにあたって自分は何を求めているかを真剣に考えて幸せになることだと行き着いた。幸せにも色々あるはずで、僕の幸せはなんだろうかと思った結果、いろんなことに理解を深めることかなと思い至って進路を決めた(理学部に進学した)。大学で少し考えを変えて色々うまくできるようになることに重きを置くようになった。その中で理解することに重きをおいてはいるけど。

今日本屋さんでニコライ倫理学に出会って幸福が大事だよね、みたいな考え方に出会ったし、昨日同僚と理解とか認識・意思の話をした。昨日今日で自分探しの旅の振り返りタイムが訪れたような感じ。記念にメモしておく。

TypeScriptを最近書いているのだけど、型をどこで定義してどのように依存関係を表現するかで迷い続けている。構造的部分型を許すとこういう悩みが生じるのかという感じ。むずい。自由なのは難しい。

割といいノイキャンヘッドホンを買ったのだけど、おかげで音楽を聴く時間が増えたし好き嫌いがはっきりした。感動する時間が増えた。道具がいいとそれを使った営みが幸せになる。パソコンや家とかも大事な道具だろう。やはり道具は大事だし、それを揃えたり試すためのお金も大事。

道具を作る能力も大事だ。 Unixっぽい環境やオープンソースなツールは自分の意思であれこれできて道具を作りやすい点が良い。幸せになれそう。

何回読んでもいい。こういうのをツイートすべきなんだろうな。

吹き出しの外でぼそっと発言するやつできるとうになりたくなる。

グラスに注いだビールの上の方に泡があるのはそれっぽく見えるけど、実際に飲むときには泡はおいしくなくて全部液のままであって欲しいと思う。

ぼくが日常会話で使える絵文字は :tada: くらい。あとは絵文字の名前を覚えていられない。おかげでなんでも祝えるようになりそう :tada:

国産のりという表記を見つけた。イタリア産なら勝てそうだけど、他には無理だろうなと思った。

2023-11-16

家ごとにホコリに傾向があるんじゃないだろうか。家人の髪やシーツ、カーテンなどホコリを左右するファクタは多そうで、ホコリは家の特徴を切り取っていそう。猫の味は分かるか知らないが、猫のいる家はホコリを見ればわかる。味覚ではなし得ないテイスティングをホコリで実現できるのだ。

掃除機はそんなホコリを集める機械で特に集塵ボックスとでも呼ぶのかわからないけど、ホコリが溜まるパーツは家の特徴を凝縮した場所だと言えるはず。

ぼくの家では顆粒だしをこぼしてルンバに食わせた。ルンバの集塵ボックスでテイスティングしたらどんな判定になるだろうか。

2023-11-14

このブログのデプロイに使っているgithub action workflowを読んでいたら、外部リポジトリにデプロイするのも簡単なことに気がついた。https://github.com/peaceiris/actions-gh-pages/tree/v3/#%EF%B8%8F-deploy-to-external-repository-external_repository

たとえばプライベートリポジトリでマークダウンを管理して、公開したいアセットだけを今のリポジトリに置く運用を実現できる。公開したくない文言はどこにも書かない運用にしているのだけど、限界はたまに感じるので移行しても良いかも。とはいえ情報はできるだけオープンにしたい信仰があるのも確かなので悩ましい。

2023-11-07

ドキュメントを読むときに参考文献が適切に使われていないと辛い。ドキュメントには2種類あると思っている。

  1. 水先案内
  2. 主張をするドキュメント

主張をするタイプのドキュメントで参照先を読まないと主張を理解できない場合は辛い、というのが今回の主張。

水先案内のドキュメントとしては、wikipediaの水先案内ページやgoogle検索の結果ページが該当する。水先案内のドキュメント自体は主張をしておらず、その水先案内ページに辿り着いた読者が適切なドキュメントにたどり着くためのサポートをする役割を持つ。

主張をするドキュメントとしては、この記事やAPIの仕様を説明するページなどが該当する。参考文献とか例を上げる目的で引用とか他のドキュメントへの参照を持つことはあるけれでも、そのドキュメントを全く読まないでも主張を理解できることが期待される。もしも読まないと理解できないのであれば、その文章は主張をできていないんじゃないかと思う。サーベイ論文は主張をするドキュメントだと思う。参照を探す目的で使うこともできるけど、対象をサーベイしてこういう歴史があるとか界隈はこういう感じになっているよねといった主張をすることが目的なはずなので。論文のアーカイブページは水先案内。

ドキュメントはそれ自体で完結していて欲しいので、参照先に主張の内容が書かれているはドキュメントとして不十分で読むのが辛い。内容ではなく根拠を委譲するのは良いし、よくある引用のスタイルだと思う。

2023-10-29

新書で勉強しようとしても失敗する。話がまどろっこしく感じてしまって途中で投げてしまう。推敲していらないところを削ってくれ、読者はたくさんいるはずだから全体の利益を考えればそれがプラスになると思うんだ!みたいなことを思いだして読む気が失せてしまう。教科書とか読めばいいんだろうな。心理学の概論っぽい教科書は割と読めた記憶がある。暇で時間を持て余していた時期だったというのもありそうだが。あとおすすめされて読んだ社会学の新書は面白かった。民主主義とか共栄圏?だったかみたいな話が書いてあって今も多少影響されている。

民主主義の話っていろんな話があってかなんでかわからないけどこんがらがる。今僕がイメージしているのは、社会があって、その中の個人はそれぞれ独立していて互いに適宜頼ったりしながら、だけど依存とか支配とか隷属みたいなことはしないで、あるいは全く関係を持たないで営む社会のことを想像している。そういう社会では個人は日本国憲法を遵守しているようなイメージ。

独立の概念が難しいよなと思う。どういう考え方をするのがみんな幸せになれるんだろう。完璧超人がたくさんいる社会ではなくて、いい感じにみんなが仲良くできるような社会を構成するための個人の振る舞いのことを、独立した振る舞いというんだろうな。頼ったり失敗したり負担をかけるのは(程度の問題はあると思うが)okだと思う。この辺はきっと公共の福祉を害さない範囲ってことなんだろう。

飽きたのでこの辺で。

今日は大学の友達と走ってご飯を食べて、そのあと風呂に入って帰ってきた。バーミヤンでしゃぶしゃぶ食べ放題をやっていそうだったのでチャレンジしたのだが、残念ながら今はやってないとのことだった。結局普通のメニューから注文して満足している。もっとエンジョイする余地があったと思っている。みんなの近況をもっと聞けばよかったな。次の週末に会うのでそのときにしよう。

ご飯を食べたあとお風呂行く手前で御嶽山のイオンでウイスキーを買った。今はそれを炭酸で割って飲んでいる。山桜というウイスキーでなんかうまい。日本で作っているみたいだけどニッカみたいに甘くはなくて焼酎とかジンにあるようなアルコールの味がする。ドライな感じ?たしかに桜ではなく山桜がしっくりくる。以前飲んだときにフロムザバレルを持っていったことで友達を一人ウイスキー好きにできたようなので嬉しい。人を引き込むには好きにさせてモチベーションを持ってもらうのが良いんだろう。

昨日は家に引きこもっていたし、今日も夕方まではずっと家にいた。まったりした週末だった。こういうのもたまにはいいと思いつつ、もっと気合い入れてまったりしたい気持ちもある。この辺りは一人暮らしの弊害なんだろう。人と一緒に暮らしていたらまったりしようと話を合わせて、じゃあ何をアクセントにしようかと計画しそう。いい酒を買っておくから昼から飲もうとか、アニメやドラマを3クール一気に見るぞみたいな。

次の土日は千葉に行くが金曜日は暇なので何か計画しようと思う。会社の同期を誘ってもいいか。三連休なので向こうも何か予定が入っているかもだが。

2023-10-28

ジャンププラスの表示がどなっているか気になって開発者ツールでみたらなんかすごかった。アプリケーションのストレージにページをバラバラにしてパッチワークみたいにしたデータがあって、恐らくそれをいい感じに繋ぎ合わせて表示する感じでcanvas要素を使っているみたい。スクレイピングとかで漫画を引っこ抜かれないための仕組みなんだろうし、パッとわかるものではないだろうけど気になる。はてなのGigaViewrが使われているとのこと。ヒントとか開発話みたいなものが聞けないかなと思ってポッドキャストを聞いている。

2023-10-27

https とかで通信をするときはローカルにインストールされているCA証明書を参照する。 ubuntuの場合 /etc/ssl/certs/ca-certificates.crt がそれで、適当に名前を変えるとhttpsでcurlできなくなる。

🐧 curl https://pepabo.com -vvv
*   Trying 13.225.183.31:443...
* Connected to pepabo.com (13.225.183.31) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* error setting certificate file: /etc/ssl/certs/ca-certificates.crt
* Closing connection 0
curl: (77) error setting certificate file: /etc/ssl/certs/ca-certificates.crt

2023-10-24

hugoでCJKの文章で改行を無視できるようになった。 platexとかでは当たり前のように単独の改行は日本語文中で無視されていたが、巷のmarkdownエンジンはそうとは限らない。 hugoがデフォルトで使うgoldmarkではオプションで指定できていたようだが、 hugoではそのオプションを活用しないでいたみたい。

v0.118.0に更新される際に、hugoの設定でサポートされるようになった(リリースノート)。とてもめでたい。

昔は改行しない人間だったのだけど、論文を書くときに教えてくれていた先生が綺麗に改行しているのを見てそれに倣うようになった。テキスト処理は人間の仕事ではなくて、ソースコードは読み書きしやすい形であることだけを気にするべきだと信じているので改行は自由に行いたい気持ちがある。

先月PRを書いたやつがシュッとマージされていた。本当にそれでいいんか?という感じがするが、何はともあれコントリビュータになれたのは嬉しい。好きなツールに貢献できる喜び。

世の中にはいろんなソフトウェアやシステムがあって日常的にそれらを使っているわけだが、いざ何かを作りたいとなったときに何をするのが楽しそうかは悩んでしまう。何が面白そうかわからないのだ。普段使っているあれこれが100倍早くなったらどうなるかを想像して幸せになれそうならそれを実現するために頑張るのは便利な考え方かもしれないと思った。

2023-10-09

テキストを扱うツールをたくさん知れたことが情報系に進んで一番お得なことだったなと感じている。エディタ、git、その他CLIツールを日常的に使う環境に身をおけたことは幸運だったと思う。というか、これが幸運ではなく当たり前な世の中になって然るべきな気がしてきた。

2023-10-05

風邪を引いた。最初は喉が痛くて、次にはなが出るようになり何だか体がだるくなった。体がだるくなった時点で体温計で熱を測ったら37度あってなるほどなって感じ。これは無理だと色々諦めて会社を休みやるべきことを放棄した。

朝イチで病院の予約をしたのに予約がすでに7人も入っていてなんだそれってなった。世の人は暇なのかと実感した。病院にかかってから処方箋を手に薬局に行ったら1時間かかるとのことで一旦家に帰ってできたときに電話してもらうことに。電話を受けてからも気力が湧かず、30分ほど行かなきゃと思ってから薬局に伺った。結局薬を受け取れたのは午後だった。お昼を食べてから薬を飲んでたくさん寝た。

そろそろ飽きたので話を省くが、二日目の夜と三日目は頭の痛さとの戦いだった。ずっと寝ていたからかわからないけど頭がとにかく痛くて寝るのがつらかった。とはいえ寝るのが仕事だと思っていたので頑張って寝ることに徹した。起きている今はそれなりに楽。キーボード打っていると調子が出ないことはわかるのだけど。

2023-09振り返り

今月はインカレの運営準備と仕事を頑張った。またカレーとボルダリングを始めた。

インカレでは人に仕事を回す仕事でしっかりキャパオーバーした経験をできた。おかげで価値観を少し変えることができて、瞬殺できるタスクはすぐに瞬殺するのが楽だと思えるようになったし、瞬殺できない仕事もなんとか小さくしようともがけるようになった。この辺りは仕事でも意識しているところで、二つのサンプルがうまいこと僕の中で補い合って学びを得る機械になってくれた形だと思う。どちらもちゃんとした人たちが一緒に仕事をしてくれてフィードバックもくれる環境だから実現しているのだと思う。感謝だし、この環境に身をおけた運と自分を褒めてあげたい。

カレーもオリエンテーリングと職場の人たちが相補的に絡み合って好きになり始めた。ボルダリングもそうか。今の僕は職場とオリエン界隈の二つのコミュニティに支えられて生活を営んでいるみたいだ。充実している。いいこと。

ここまではいわゆるソフトスキルみたいな仕事をする上での能力とか趣味の話だったけど、純粋な技術の話でいうとWebアプリケーション開発のレイヤが低めのところが(どのくらいかわからないけど)強くなった。Rackみたいな構成とかDNSの話(間接参照は偉大だ)、アーキテクチャの成長のさせ方とかを新たに腹落ちさせた。

10月は趣味を深めつつ、ソフトスキルっぽい面ではきっちり仕上げるところを重視する。ガッとやる。技術はネットワークとかを深められると嬉しい。趣味は今のを深めていく。ボルダリングは週2回いけるといいなと思う。

GASでスライド生成

Google Slidesで作成したテンプレートファイルに文字列を置換する形でスライドを生成するスクリプトをChat GPTに書いてもらったのでメモ。

+--------------------------------+
|                                |
|  {{氏名}}                      |
|                                |
|                                |
|     {{住所}}                   |
+--------------------------------+

みたいなスライドを作って、

氏名,住所
佐藤太郎,日本のどこか
田中一郎,東京のどこか

みたいなスプレッドシートでスクリプトを実行すると以下のようなスライドをテンプレのあるスライドに追記する。

+--------------------------------+
|                                |
|  佐藤太郎                      |
|                                |
|                                |
|     日本のどこか               |
+--------------------------------+

+--------------------------------+
|                                |
|  田中一郎                      |
|                                |
|                                |
|     東京のどこか               |
+--------------------------------+

スクリプトは以下。

function createSlidesFromSheet() {
  var slideId = 'ここにスライドのIDを入れる'
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  
  var slide = SlidesApp.openById(slideId);
  var templateSlide = slide.getSlides()[0]; // テンプレートとして使う最初のスライドを取得
  
  var headers = data[0]; // ヘッダー行を取得

  // データ行をループ
  for (var i = 1; i < data.length; i++) {
    var row = data[i];
    var newSlide = slide.appendSlide(templateSlide); // テンプレートスライドをコピー
    
    var shapes = newSlide.getShapes();
    for (var j = 0; j < shapes.length; j++) {
      var shape = shapes[j];
      var text = shape.getText().asString();
      
      // スプレッドシートのヘッダーを参照して、対応するデータでプレースホルダーを置き換える
      for (var k = 0; k < headers.length; k++) {
        var placeholder = '{{' + headers[k] + '}}';
        text = text.replace(placeholder, row[k]);
      }
      
      shape.getText().setText(text);
    }
  }
}

2023-09-25

昔スプレッドシートを頑張ってこねこねしてこなしていたような作業をsqlでしゅっとこなせるようになったことに気がついて。こういう成長なんだよなと思っている。

初ボルダリング

今日会社の人に誘ってもらって、初ボルダリングに行ってきた。だいぶ楽しかった。

意外と登れるけど結構腕にくる。現代社会で腕の筋肉使う機会なんてないだろと思うくらいに腕を使わない人生だったので、だいぶ衝撃を受けている。定期的にやりたい。出社するときは毎回やるくらいの勢いでもいいかも。

最初は登れなかったところをプランを考えて攻略するのが一番楽しい。競争相手がいた方が長続きしそう。議論もできて楽しいし。

2023-09-22

仕事とか技術っぽい話をするときに背景が揃っていて欲しいと思う。議論や質問、ミーティングでは背景を合わせることを大事にしていく。背景がわからないとモヤモヤしてときにはイラっとするし、見当違いな方向に話が進んだりするので。

逆にそもそも背景が共有できている人との議論は楽で気持ちいい。そこから考えると以下をいかにさっとできるかで、話の通じる人になれるかが左右されそう。

  • 常識みたいな考え方を(輪郭だけでも)把握しておくこと
  • 自分が足りなさそうなときは(申し訳ないけど)質問すること
  • 常識から外れたことが背景にあるなら共有すること
  • 反対の状況では質問すること

2023-09-21

gh コマンドを使うとPRの番号とタイトルを取得できる。

gh pr list --search "<SHA>" --state merged`

https://cli.github.com/manual/gh_pr_list

"<SHA>" の部分は一般にクエリを指定できるそう。多分 pr:open みたいなやつ。逆にコミットハッシュを指定できることが驚き。

2023-09-19

ドキュメントを読むときにパッと見で読んだ気になってしまったので反省。とはいえドキュメントを使うときに理解しきるまで常に頑張るのもどうかと思うので難しい。

ちょっと二つのcsvをinner joinしたくなってtextqlを見つけて使ってみた。わりかしいい感じ。ファイルからsqlのソースを読めればなおよい。気が向いたらPR作ろうと思ったけど、最近コミットがないな…。

https://github.com/naoyafurudono/textql/tree/read-sql-from-file に実装した。go build textql/main.go でビルドできる。PR送りたいところだけど、テストも書いてない上に試してすらおらず流石に無責任すぎるので自重した。

使ってまあ大丈夫だろという気になったのでPR投げてみた。実はこれが通りがかりのOSSへの初めてのPRかもしれない。メンテナが気づいて気に入ってくれるといいな。

PR通らなくてもgolangなのでビルドが簡単でローカルに自分で書いたやつを置きやすいのが救い?

日記に書いた

ベストバイ

酔っていて興が乗ったので「しばらくの間で買って良かったもの」N選をやります!!

本棚を買いました!横に長いタイプの本棚で、高さは太ももくらいです。二段だけで、本棚の上にも物を置けるような感じ。幅は120cmくらい(ところでセンチって微妙ですよね)で、横に長めの本棚です。 2cmくらいの厚さのベニヤ?でできていて、それなりに丈夫そうな雰囲気があります。 minneで買いました。一階にプログラミング言語のほんを置いて、2階にそのほかの本を置いています。本棚にある本の中でのおすすめは、『数学の基礎 集合・数・位相』です。これを読むと実数の作り方がわかって感動できます。また、眠れない夜にぴったりで、楽しめるときには存分に興奮できるし、そうでもないときには眠くなります。ホテルに聖書の代わりにこれを置いたらいいのにと思ってます。

M2 macbook airを買いました!これはいい物です。ノートパソコンのいいところは椅子に座らないでも使えるところです。仕事で疲れた体でも、ノートパソコンならさわれます。退勤後もキーボードを触る幸せを感じられるのはノートパソコンのおかげです。ところで酔った状態でキーボードを叩いていると、タイプミスが頻発します。タイピングに頭のリソースを使っているようです。 m2 macbook airはキーボードがいい感じだし、性能もいいのがいいところです。メモリは16GBにしています。細かいことはよくわからないので、考えないことにします。

キリがない気がするので個数制限を設けましょう。 N=5にします。あと3個。

ルンバを買いました。ルンバのいいところは、掃除でstuckしている光景がちょっとかわいそうなところです。彼は頑張って掃除してくれるのですが、たまに段差に座礁して身動きが取れなくなります。その姿は少し傷ましくて、それを避けるための掃除をしないとなという気持ちにさせてくれます。一人暮らしの家に優しさを発揮する機会を与えてくれるのがルンバのいいところなんじゃないかと思います。こういうふうに書くと彼はポンコツみたいな表現になってしまいますが、彼は僕より掃除が上手いです。頼りにしてるよ。

会社に入るよりかは前に、echo dotを買いました。 echo dot自体がもたらす利益よりも、そのインターフェイスがあることを前提とした環境構築への影響がノミネートの理由です。 echo dotのおかげでルンバやswitch botを導入できました。音楽も流せるしアラームも設定できる。

5月の頭にリュックサックを買いました。新宿の駅の近くの百貨店で見つけて、ゴールデンウィークいっぱい悩んでから購入に至りました。出勤も旅行もオリエンテーリングの遠征も全てこのリュックと一緒です。ちょっと小さいけど必要十分な機能提供してくれている感じが好き。

いかがだったでしょうか? この記事ではベスタバイ5選を紹介しました! この記事が皆さんの参考になれば幸いです。よかったらチャンネル登録と高評価、よろしくお願いします。

<!-- エンディングテーマが流れる -->

2023-09-13

今家のトイレで気がついてんですが、冷蔵庫と自分の体にはどんな落書きしても人に迷惑かけないので落書きし放題です!! 何書こうかな…。

人生楽しくなってきた。今度人生つらそうな人を見たらこれを教えてあげつつ、鏡のある場所を教えつつ、マッキーをプレゼントしよう。

ちょっと前に買ったbowmoreが美味しい。味の表現はさておき美味しいからそれでいいんです。テイスティンググラスでストレートで飲んでいます。 aged 12 yearsと書いてあります。

350ml瓶を買ったんですが、このサイズの便が一番かっこいいです。他のサイズでかっこいいのはフロムザバレルくらい?

350のbowmoreはリュックの横に挿してもいいかなというくらいかっこいい。

会社ではあだ名で呼ぶ文化がある。それはなかなか楽しくて好きなんだけど、人生のほとんどを苗字呼びの文化で過ごしてきて、会社の飲み会で苗字よびをしてもらって、「ああ、こんな感じだったな」と昔の感覚を思い出した。新しく上の人から苗字呼びされる経験は僕にとって深いところに刻まれた体験なのかもしれない。

ホッピー師匠とも知り合えたことだし、今日の飲み会は僕にとっていいものだった。明日は走って帰るか。判断は夜にするとして、ランニングシューズを履いて、ジャージを持って出勤する。

まふまふの夢花火を久しぶりに聴いている。中学生に頃に友達にまふまふのCDを貸してもらって夢花火をしり、高校までめざましは夢花火だった。懐かしい思い出。

去年の暮れに会社の同僚がまふまふファンだと聞きちょっとテンションが上がったことを思い出した。今はまふまふの他にもdazbeeやado、co shu nieとかのアーティストが好き。オタクって感じがする。

オタクっぽくない歌手っているかと思うと、どのアーティストもそのアーティストが好きというと途端にオタクぽくなる気がするので気にすることではなさそう。 AKBもSMAPもheysayjumpも何もかも、アーティストが好きって言ったらおタックぽい気がする。

オタクっぽさを排除して「この曲が好き」みたいなことを表明しようと思うと、自身の音楽性に芯があるか流行りに乗っていくミーハーみたいになりそう。

そろそろ世間体について考えるのに疲れてきた。このくらいにしよう。僕がコモンセンスとして取れている自信を持っているのは、新劇場版のエヴァの最後のやつで「よかったねぇ」と思えたことです。ATフィールドは全ての人の間にあると思っているタイプの人間です。よろしくお願いします。

オフィスカジュアルっていうのやめません? 曖昧で、インターフェースで要求しているような感じがしつつ、実装する側にはその要件が伝わらない。コミュニケーションのための符号としてあまり良く機能していないように見える。

  • ジャケット
  • シャツ
  • パンツ

以上の四つについての要求を書いて欲しい気持ちが芽生えた。これらが指定されない限りは、どれだけフォーマルに寄っても、喪服まで行かない限りは文句言えないと思うし、喪服まで行かなくても服を着てくる側に対して不親切だろう。

2023-09-12

以下のあたりを完全に理解したらだいぶ楽になる気がする。

  • エラー処理
  • イテレータ
  • 借用とcopy

エラー処理やイテレータの周りはrustに限らずどの言語でも乗り越える一つの壁な気がする。例えばpythonに入門したときは、フランクにExceptionを継承したクラスを定義して、それを投げたりキャッチしたりすることを覚えたり、ジェネレータやリスト内包表記を覚えたりしたときに楽になった。そのほかはモジュールとかパッケージ周りの仕組みが新しく言語を学ぶときの障壁だと思っている。

借用とcopyは割とrust特有な気がする。似たところで、rubyの構文はその言語特有の難しさだと思う。 rubyの構文は慣れないとパースが難しいと思っている。実際に書いてみると、そう書きたくなる気持ちはわかるし書いていて気持ちいのだけど。

エアダスターを買ってノートパソコンのキーボードを掃除したら幸せになれた。ちょっと前にUキーの裏にゴミが入って、たまにかちゃかちゃ言って鬱陶しかった。そして週末にオリエンの都合で外でパソコンしたときに、たくさんゴミが入った気がする。

Amazonで400円くらいのエアダスターを買って使ってみたら、なんとなくよくなった気がする。昔の自分だったら圧縮した気体を吹き出すために400円かけるなんて、とか思っていただろうから成長した。手段ではなくそれがもたらす価値に対してお金を払えるようになったので偉い。

この価値観は、賢く生きるためには逆手に取ったり取られないようにしたりしないといけないんだろうなと思う。例えば自分が提供する価値を売るときには、この価値観を持つ人に対して安価な手段で高い見返りを得られると良いし、自分が目的を達成するために人のリソースを買うときは、リソースの売り手が想像もつかないような価値を見出すと有利だろう。

読んでいる。https://dl.acm.org/doi/10.1145/2660193.2660223

threaded codeの何がいいかを理解しないまま今に至っていたけど、ループ構造を変えることで分岐予測の精度を高めるみたいなことが書かれていて、そうなんだとなった。バイトコードハンドラのディスパッチをループの末尾で行うようにするらしい。ループの末尾でディスパッチするってどういうことだ? それぞれのハンドラが相互再帰な関数として定義されていて、全てのハンドラの末尾で次のバイトコードを読み込み次のハンドラを末尾位置で呼び出す、みたいな感じかな。分岐予測の仕組みは僕の中でブラックボックスになってしまっているのだが、めっちゃすごいやつだと思うことにすると、コードパスと次に実行されやすいハンドラの間に確かに相関が生まれそうなので、分岐予測の精度は上がる道理があるかもしれない、という気持ちになる。逆にループの頭でディスパッチすることにすると、ハンドラの末尾でループ先頭への無条件ジャンプを経由してからディスパッチすることになる。この一回挟まる無条件ジャンプが邪魔なのかな。この論文に飽きたら答え合わせしよう。

2023-09-10

昨日は大会運営の準備で一日外にいた。楽しいので後悔はないのだけど、だいぶ疲れて今日の夕方になったのにまだ疲れてぐたっとしている。

僕は疲れに気が付きにくいようで、周りが疲れたと言っていたり、翌日ダメージが残るよう場合でも、そのときは特に気が付かない。パフォーマンスには影響していると思うのだけど、気持ちは疲れていないので実際どれくらい疲れているかはわからない。酔っているとか深夜テンションとかみたいな感じに普段からなってしまうのだろう。

疲れや体調不良に鈍感なのは、子供の頃からずっと変わらない気がする。やる気が出ないのと体調が悪いのの区別はずっとつかない。一度インフルエンザにかかったとき、病院にかかったりする前に塾に行きたくなさすぎて、だるいと言って仮病を使ったら仮病じゃなかったことがある。その他にもなんか調子が出ないと思ったら花粉がすごい飛んでいた、みたいなことはよくある。

こういうことを書くと、やる気が出ないときは体調不良を疑おう、みたいな学びを得たくなるのだけど、単にめんどくさくてやる気が出ないことの方が僕は多いので、そんな甘えた学びを得てしまうと色々立ち行かなくなる(経験済み)。

今のところの付き合い方は以下の通り。

  • 原因が明らかにわかっているだるさがあるときは、自分を甘やかすことにして、
  • よくわからんけどだるいときは、寝る、走る、食べる、手を動かすを試してみる。
  • 大抵は手を動かすと動き出すのだが、それでもダメなら人と喋ったり病院いくのが良いだろう

今日は疲れているのにVSCodeで使うフォントをノートパソコンにインストールした。とても偉い。これでターミナルの一部でレイアウトが壊れていたのが直った。やったーー。

5月くらいに秋吉台に行ってロゲインしたときに買ったちんぐを飲んでいる。ちんぐは麦焼酎で、黒麹を使っているのが特徴。

ちんぐは親友という意味らしいのだが、あのとき一緒に行った友達とはしばらく会っていない。元気だろうか。

SlackとかDiscordみたいなチャットで議論の最中に、議論に参加していない人に質問とかしたくなる。そのときどこでメンションを飛ばすか選択肢があるけど、議論の場でメンション飛ばす形で召喚するのがいいよなと思った話をする。

選択肢としてはいかがありそう。

  • 議論の場
  • DM
  • その人がよく出没するチャンネル
  • LINE、電話、メールなどの違う媒体

相手に文脈を理解する余地を残すためにも、議論の場に呼ぶのが誠意なんじゃないかと思っている。

今日久しぶりに静的型付けな言語(Rust)を書いて、 match式は書くブランチの型が一致しないといけないことを思い出して、じゃあreturnする場合はどんな型をつけるんだ、と思ったので型規則を定義するならこんなふうになるんだろうなと想像してみる。

returnがあるってことは、関数があるということだ。その関数の返り値の型とreturnの部分式の型が一致しないといけないはずだ。これをトラックするために、型は3項関係ではなく、今の関数の返り値型を表す項が必要なはず。

型規則では、次のような関係を定義すれば良さそう。 $\Gamma \vdash e : \tau | r$ ここで $r$ は今の関数定義の返り値の型。

関数定義では、次のような感じになるだろう。

G, x: t1 |- e: t2 | t2
-------------------------------- (fun)
G |- lam x: t1. e: t1 -> t2 | r

そしてreturn式はこんな感じだ。

G |- e: r | r
--------------------- (return)
G |- return e: t | r

こうすることで、returnに任意の型をつけられるので、フランクにブランチの末尾でreturnできる。任意の型ではなくてユニット型とかを不用意につけるとearly returnをしにくくなったりしそう。

書いてみると意外と単純だった。本当にこれでうまくいくかは知らないけれど。

2023-09-09

tomlもyamlも難しいので、みんなjsonを書けばいいのにと思う。 Goとか静的型付け言語とかが流行って、読みやすさの意義が重要視されている時代なはずなのに、設定ファイルは書きやすさとか、見栄えの良さが重視されていそうなフォーマットが人気なのが解せない。 jsonがナウいんじゃないかと思うし、好みとしてもjsonがいいなと思う。

jsonは誤解することが一番少なそうだし、みんな何が嫌なんだろう。編集がちょっとたいへんとか? そんなに設定ファイルを編集している時点で大変なことになっているのだから、それは妥当な大変さ何じゃないかと思うのだけど。

ブログを分割したい

このブログは日記も開発っぽいことも両方書いてある。これらを別のサイトに分けようと考えている。

  • 開発の記事が日記に埋もれるのが嫌だから
  • 今の環境だと開発の記事を書きにくい・表現しにくいから
    • コードや数式を書きにくい・表示が微妙など
    • madoko使いたい

そのための準備としてnetlifyを試しに使ってみた。このブログのリポジトリを登録したら、特に細かい設定をしないでもシュッとデプロイできてしまった。すごい。DNSとかSSLとかの設定を試していく。

ところでデプロイの設定は何もわからないのでチュートリアルが必要。madoko使うなら設定ちゃんとしないとだろうし。

2023-09-06

今日から有給明けて仕事に復帰した。リモートワークで少し緩めに働けた。気温が低いからか今までとちょっと違う気分だった。同期のノリも少し変わっていて、前よりもっとはっちゃけた感じになったと思う。どんどん楽しくなる。

昔、コンパイラとインタープリタの違いがわからなかった。コンパイラはプログラムを機械語とかの低級な言語に落とすやつのことで、インタープリタは落とすかどうかは知らないけど、実行するやつのこと。コンパイルしてもどうせ動かすのだから、cpuとセットで考えたらどっちも同じようなものだろと思っていた。

そういうわけで、コンパイラとインタープリタの分かれ目がどこにあるんだろうか(、いやない)みたいな気持ちを抱いていた。ちょうどjitコンパイラを知ったタイミングだったのもあり、この辺りの知識がこんがらがっていた節がある。あの頃の僕のために今の理解を書いておく。

  • コンパイラ: プログラムを低級な言語(主に機械語やアセンブリ、バイトコード)に変換するやつ
  • インタープリタ: (主に高級な言語で書かれた)プログラムを実行するやつ
    • パソコンは機械語のインタープリタだというのは、まあそうかなと感じる。物理的なインタープリタ。
  • トランスパイラ: プログラムを別の言語に変換するやつ。コンパイラと大体同じ意味だけど、トランスパイラはターゲットがコンパイラよりも高級な雰囲気がある
  • JITコンパイラ: 最近のインタープリタに組み込まれているコンパイラ。最適化のために、普通にプログラムを実行する代わりに(多くの場合入力に制約をつけた)プログラムの一部をコンパイルして実行するときに使われる。

2023-09-05

9/1-4で北海道旅行に行っていた。オリエンテーリングをするのがメインの目的で、向こうで働いている同期に会ったり美味しいもの食べたり観光したりした。

やはり美味しいご飯は印象に残っている。特にスープカレーが忘れられなくて、これから好きな食べ物を聞かれたときにはアイスではなくスープカレーが好きだと答えることになりそう。 15時頃に成田を出て、宿に着いたのが夕ご飯どきだった。気になるお店も他にあったが、時間の兼ね合いで近所のスープカレー屋さんに入ったらとてもおいしかった。狙ったところに入っていたらどうなってしまったかわからない。それ以降毎日スープカレーを食べたいと言い続けている。

札幌の回転寿司やさんもおいしかった。こちらは会社の人に教えてもらったお店に入った。なごやか亭だったかな。会社の関連でごく稀にいただける美味しい寿司をが回っていて、幅広い選択肢から好きなものをチョイスできる、みたいな感覚だった。鯵とかが特においしかった気がする。友達曰く、この旅行で一番おいしかったのはここの寿司だったそう。僕はスープカレーとどっちがおいしかったかいまだに悩んでいる。

その他にもジンギスカンやラーメンを食べた。そういえばラーメンは2回食べたな。

夜の札幌を散歩したり、スプリントのテレインであるゆにガーデンで遊んだりした。小樽や余市、千歳のあたりやesconにもいった。それぞれに異なる印象がある。

最初の観光は9/2に訪れたゆにガーデンでのスプリント。オリエンテーリングのテレインがゆにガーデンで、お花畑のあたりでのスプリントが楽しかった。競技後にアイヌの衣装を着させてもらった。僕は長老の子供にいそうな見た目だと友達に言われた。素材は綿っぽいんだけど、風を通さない感じがする硬めの布だった。刺繍が凝っていてすごい。

その後esconで日本ハムとオリックスの試合を見た。普段は野球を見ないのだけど、結構楽しかった。友達の解説と会場での演出、試合運びが良かったんだろうと思う。両チームともピッチャーが強いらしくて(日本代表だとか)、試合がテンポよく進んだ。友達の解説では、例えば2アウト2ストライクの状況でバッターが球を打ったら、それがどうなろうが走り得だから塁にでているランナーはみんなめっちゃ走る、みたいなことを教えてもらった。おかげで試合で起きたイベントを解釈できるようになって楽しかった。選手がどういう局面に立たされていて、それが次のアクションへの意思決定にどう結びつくかがわかると、イベントを解釈できるようになる。

その日は札幌に帰って、先述した回転寿司にいき同じ宿でもう一泊した。回転寿司で食べ過ぎたので、寝る前に札幌の中心街のほうへ散歩しにいった。終電まで散歩を続けてすすきのの、繁華街を詰め込んだ雰囲気を味わってきた。

9/3はロングを走った。久しぶりの森でのオリエンテーリングはなかなか厳しく、プランを立ててから走るんだったなと途中で思い出した。そこで何人かのオリエンティアとおしゃべりして、味噌つけ麺を食べて小樽の宿へ移動した。テレインは札幌の南東の方だったので割と長めの移動で、途中で豊平峡温泉に寄った。鉄っぽいお湯が特徴で1時間くらいお湯に浸かった。小樽ではジンギスカンを食べて、毛無山展望台から夜景を長め、宅飲みした後やはり散歩した。

9/4はなぜか早起きしたので手宮公園まで走った。海沿いに泊まるとランニングしたくなるのは不思議。最初は天橋立に1人で行ったときかもしれない。

その後余市に向かって観光をしつつ、小樽北部のお店で焼き魚を食べた。海でちょっとはしゃいでから、余市でウイスキーとリキュールを買って、スイーツを食べてから札幌、新千歳の方に帰った。

スープカレーをやはり食べたくて自炊してみた。ある程度美味しいものはできたけど、北海道で食べたのとはやはり違うものになってしまう。甘味やスパイスの風味が足りない気がする。

ナスやオクラは美味しくできた。玉ねぎも炒めるだけじゃなくて素揚げも作れば良かったな。スープをフライパンで作るようになってから保存方法に迷う。

フライパンを使うようになったのは、引越しでコンロが一つになったから。並列作業できないので鍋やフライパンを同時に使うメリットが薄いし、むしろフライパンだけを使うことで洗い物が減るので今の運用に落ち着いている。

近頃タスク管理に追われていて、心のモヤモヤと闘っている。思えば小学生の頃から長いことこのモヤモヤと付き合っている。タスクを追うのではなく追われるようになるとこういう気分になるようだ。

小学生の頃は宿題がタスクだった。今は職場とかでの仕事関連や日々の事務タスクが追ってくる。小学生の頃とは違って今の環境は99%くらい自分で選んで身を置いている環境なので、バランスをちゃんと取ればタスクに追われることはないはず。そういうわけでtodoリストをいい感じに運用することでバランスを取ろうとしている。

モヤモヤする原因は何をやるべきかわかっていないことや、やるべき(だと感じている)ことをやらずに放置していることが原因な気がする。しっかり整理して正面から向き合うとタスクは消化されていなくてもモヤモヤは消えるし、タスク進行も捗る。

todoリストの運用が難しいのが今の課題で、何に記録して管理するかや、確認と更新のタイミングがうまく行っていない。

今の感じだと確認の頻度を上げるのが良さそう。毎朝確認するか。カレンダーに入れたい気持ちもあるけど連携がうまくいかない。それぞれのタスクをオブジェクトとして表現して、それらにurlを割り当てて、任意のドキュメントから参照したり、内容の表現や状態管理できるようにしたい。カレンダーともいい感じに統合されていて、期限や気にするべき期間をうまいこと設定して、通知や表示をしてほしい。 google todoリストは個人利用の範囲では良さげ。共有機能がないので人とタスクの共有はできない。悩ましい。

2023-08-31

今月はOJTが始まって、大変だなあという感想と自分成長できているなという喜びがあった。毎月力不足を感じて反省をし、できることが増えて次でそれを活かしつつ、次の力不足を感じる、というのをやっている。いい流れ。ポケモンみたい。

残念ながら自分のキャパはそんなにないことを痛感している。悲観するほどキャパがないわけでも将来に期待できないわけでもないが、気合いがあればなんでもできるというわけではなくて、気合いの入れどころを工夫しないとできないことはあるよね、という気づきが今月のホットトピック。

まだ短期的な実感しかないけど、人生を通して自分ができること、人に頼りたいこととかをみえるようになると一歩真人間ぽく幸せに近づけるのかなと思ってる。

大学を卒業して会社に入ったことで、自分とは異なるバックグラウンドの人ばかりいる環境に身を置くことになった。それをうまいこと使って、良い影響を僕から広げるためにできることを考えている。

  • 契約と型
    • 契約って概念があって、言葉を知っているかは知らんけど、内容自体はみんな日頃から思うところがあると思う。
    • 型は多かれ少なかれ思うところがあると思うけど、こういう使い道があるんやで、という話
    • 特に契約の延長線上にある型は結構便利で、単にプログラムがデータ型の違いでぶっ壊れるというよりか、最初の設計通りにプログラムをかけていそうなことを安心してコードを信頼するための便利な仕組みなんだよ、という話
    • 特に代数的データ型はいいぞ
      • 帰納法と場合わけ
      • それのコンパイラによる支援

2023-08-30

dotfileを整備して、シェルの設定を複数のマシンで共有していると、あるコマンドがインストールされている場合にのみ、有効にしたい設定が出てくる。僕が今回遭遇したのは、k8sのcontextをプロンプトに表示する設定をなんとかしたいという欲求。いい感じに表示するコマンドが入っていれば、プロンプトに反映したいけど、入っていなければ別に表示しないのもありで、無理して全てのマシンにコマンドをインストールしたくはない。

コマンドの存在をチェックして、設定を条件分岐するのがナイーブな解決方法で僕もそうした。そこで気になるのが、コマンドの存在チェックのベストプラクティス。

command -v が良さそうだった。https://qiita.com/kawaz/items/1b61ee2dd4d1acc7cc94 fishでもbashでも使える。

コーヒーとハンバーガーを食べたらいつもより夜に動けている。不健康は一時的な動作を促進するのかもしれない(本当か?)。

昼健康な食事を摂ったのでバランス。

2023-08-19

能力はすごいと思っているのだけど、使うと部屋にいるだけで体調が悪くなるので苦手。換気とか空間の隔離をうまくやれれば良いのだが、僕のやる気と部屋の構造の問題でうまくいっていない。今日は頭がクラクラする。シャワーを浴びて少しマシになった。

dotfilesのセットアップスクリプトを書いた

dotfilesをGitHubで管理しているのだが、今までは設定ファイルの管理だけで、インストールは手動で行なっていた。設定ファイルを使いまわせるだけでだいぶ便利なんだけど、コンテナ環境の中で作業したくなると、手動インストールに耐えられなくなる。そこで重い腰を上げてセットアップを自動化した。

git のインストールと以下の実行でok。 nvimとかfishとかcargoとかが入る。

git clone https://github.com/naoyafurudono/dotfiles.git
bash dotfiles/setup.sh

test

arm環境かつubuntuだけでしか動かしていないが、dockerコンテナでセットアップスクリプトを動かして、正常に終了するかを確認するテストを書いた。

この手のセットアップスクリプトのテストって、世の中ではどのようにテストしているんだろう。以下の難しさがテストを大変にしている気がする。

  • 環境依存な部分をうまく吸収する必要があること
  • インストール失敗の判定が難しいこと

2023-08-16

夕飯に味噌ラーメンを作って食べた。自作したスープがうまくて今晩は天才。味噌と本だしは正義。スープを自作したのはインスタント麺が高くて安い生麺を買ったから。 3食分残ってるので頑張って食べないといけない。

falseとlambdaは手癖で打つ。街頭インタビューでfalseのスペルを聞かれたら、キーボードがないと答えられない気がする。 faulseとか言いそう。 lambdaはギリいけそう。

2023-08-13

この前の水曜日から帰省していた。今回の帰省では地方都市の幸せな家族みたいな過ごし方をした。イオンにいったり外食に家族でいくと雰囲気が出る。高校の同期にあったりゲームをしたのもポイントが高い。

初任給で親に贈り物をするイベントをやっと終了できたので安心している。イオンでめがねを買ったのだが、直接会ったのだから夕飯をおごるとかでもよかったかもしれない。

新幹線の改札内で8個入りの赤福を買った。賞味期限が明日までで人に会う予定がないのでたくさんたべないといけない。

帰省をするとエネルギーを使う配分をミスって睡眠リズムが毎度崩壊する。今回は途中までいい線いっていたのだけど、漫画を読んだ日と星を見に行った日が連続してやはりリズムが崩れてしまった。今日はとても眠い。新幹線のホームできしめんをたべてお腹いっぱいになったのも効いていそう。次回からは運動を計画的にしよう。ちなみに星は見えなくて、岐阜タンメンをたべて帰ってきた。

帰ったらスマホの通知設定を調整して、がんばるモードになる。

2023-08-10

ルンバを買った。少し前にレンタルして、返却してから生活が崩壊したので買うことにした。この書き方だとレンタルして甘やかされたから掃除能力が落ちたみたいに見えるが、そうではなくて、もともと生活が崩壊していたことがルンバのおかげで判明したという感じ。今度家に届く予定で楽しみ。

2023-08-04

今日は会社の飲み会で夏祭りしてきた。その前にインターンの人たちとご一緒させてもらって楽しかった。僕も頑張らねば、という感じ。

夏祭りでお酒を入れると終わりが寂しくないことに気がついた。悲しいライフハックを覚えてしまった。浴衣を頂いて、おそらく人生で初めてきた。結構テンション上がって楽しめたのでこれからも積極的に着ようと思う。おかげさまで就職してから新しい経験をたくさんできてる気がする。

昨日から違国物語を読んでいる。結構面白い。今リンクを貼るために検索したら映画化すると知った。だから推薦されたのかな。

ここ最近は24時間楽しい。

too long to tweetというタイトルのブログを昨日か今日に読んだのを思い出して、今いいなと感じたのでブログのタイトルを変えてみた。今度こそしっくりくるといいな。

ガスバーナを買ったのだけど、お酒が進んでよくない。明太子を炙るとうまいしレンチンしたものを炙ってもうまい。お酒が進む。今度実家に持って帰ろう。

ここまでjamesonを飲んできたが、今からラフロイグかフロムザバレルに移る。どうなってしまうのか!

選ばれたのはフロムザバレルでした。やっぱりスモーキーさがあるのは良い。

なんかTwitterでやってろって感じがする。明太子って可算名詞なんだろうか。this is a mentaikoといって、英語のせんせいは満点をくれるだろうか。

5年くらい前にバイトでまふまふさんのライブの設営に行ったことを思い出している。まふまふさんは中学のとき(もう10年以上前!)から好き。友達にCDを貸してもらって、目覚ましや定期試験のお供だった。それから大学受験や諸々のタイミングでお世話になった。まふまふさんの歌がなかったら人生が違っていたかもしれない。そう思うと友達やまふまふさんに感謝してもしきれない? もっといい人生があったのかもしれないけど。今の人生は割と頑張ってきたなりの結果で頑張りのためにはまふまふさんの歌が必要だったことは間違いない。頑張りの良し悪しはわからないけど、頑張れたこと自体は良かったと思っているので感謝していることは見当違いではないはず。歌ってみたとかボカロ、高音ボーカルにハマったのはまふまふさんが始まりな気がする。話を戻してなんでまふまふさんのライブのバイトを思い出したかというと、co shu nieのライブに申し込んだから。人生始めてのライブ。前から気になってはいたけど、ついに人生初のライブに申し込んでしまった。ライブの設営は何回かやったのに、観客として参加するのは初めて。来月末が楽しみ。

今気がついたのだけど、音楽ってでかい音で鳴らすと楽しいな? んにゃって言える仲は割と仲良いと思う。

2023-07-29

ARM64でいろんなサイズの整数の足し算をする方法を整理する。サイズごとに演算が用意されているわけではなく、レジスタの指定方法(x,wの使い分け)や、レジスタのコンテンツをいい感じにすることで、 byte, half, word, double wordの足し算を実現する(と思ってよさそう)。

  • レジスタどうしの足し算では、destinationとその他の二つのsourceレジスタのサイズが同じじゃないといけない。結果のサイズがdouble wordならXnを使えばいいし、word以下ならWnを使う。
  • レジスタのコンテンツをいい感じにする方法は二つありそう
    • 適当なマスクとandを取る
    • 専用の命令を使う。二種類観測した。
      • Armv8-A Instruction Set Architectureが優しい。7.4節Extension and saturationに説明がある
      • 一つ目は拡張命令を使う方法。符号{あり,なし}と拡張前のサイズについて、それぞれ定義された拡張命令を使うと、destinationレジスタにsourceレジスタを拡張したビット列がセットされる。
      • 二つ目は足し算で追加の引数として拡張方法を指定する方法。拡張命令と似たような感じのenumが定義されていて、それをadd命令のsourceレジスタの後にしていすると第二sourceレジスタを指定した方法で拡張した上で足し算する。

朝はお茶漬けを久しぶりに食べた。朝にお米を食べようと思うと、やっぱりお茶漬けがいい。子供の頃に抱いた感覚が長持ちしている。一時期パンに手を出したこともあったけど、なかなか難しい。食パンは口の中の水分を持っていくので惣菜とかが一緒にないとちょっと難しい。小倉トーストとかは好きなので、全くダメというわけではないと思うのだけど。

2023-07-22

コンパイラの実装で、次はポインタ算術をやる。演算子がオーバーローディングされているので型検査が必要。今は環境とかのデータ構造を設計する気力がなくて、パソコンを前にふにゃっとしている。お昼ご飯食べたら考える。

興味本位でコンパイルしたプログラムの実行速度を測ってみた。時間計算量が試数時間なfibの実装(あのみんな大好きなナイーブなやつ)で、 fib(40)を計算してみた。自作コンパイラだとuser時間が1.3secくらいなのに対して、 gccのO3でuser時間が0.3secくらいだった。 O3を指定しないと(多分O2)0.5secくらい。 Inliningとかは効かないだろうし、ループ周りでの最適化もできないはず。スタックマシンではなくレジスタマシンとして動かすことで(無駄なpush/popを排除することで) O2くらいの速さになってる感じかな。 O3では何が早くなってるんだろう。気が向いたら調べるか、実装するかしたい。

お昼を食べて買い物に行ったあと、型検査器を実装した。がんばった。 strcmpがboolを返すと思い込むやつをやって時間を溶かした。ランニングをしてオーバーロードに取り組む。今はintもポインタも64bitにしているけど、abiをみたらintは32bitっぽいので合わせる。オーバーロードは楽しそうだけどintを32bitにするのが面倒。 ASTに型を行き渡らせたので難しくはないはず。

買い物ではズボンを買いに行った。涼しい長ズボンが欲しかったので。初めて買う感じのやつを変えて満足している。サンダルも欲しかったけど、僕の期待が矛盾していることに気がついたので断念。来年は期待を変えられることを願って今年はスニーカを履き続ける。

Cとかその辺の関数型言語を使っていると欲しくなる言語機能第1位は動的束縛だという説を提唱したい。代数的エフェクトほどのことを普段使いに人類は求めているとは僕には思えなくて (普段使いと言ったのは、凝った仕組みを作る場合はのぞきたい気持ちの表れ)動的束縛が欲しいんじゃないだろうか。オブジェクト指向でインスタンス変数を使うのもこの用途が多いんじゃないかと勝手に思っているんだけどどうだろう。

とにかく、動的束縛が欲しい。動的束縛はいいぞの会を結成するまである。

Uを叩くとメチって音がする。髪の毛でも入り込んでしまったかもしれない。割とストレス。

2023-07-21

https://github.com/naoyafurudono/comp

早いもので作り始めてから2週間たったみたい。もっとサクサク進むと思っていたのだけど、しばらく楽しめそう。

自作CコンパイラでCのプログラムの一部をコンパイルできるようになった。これまでは変数宣言をできなかったので型宣言のあるmain関数を読めなかったが、 intだけ許容するようになったので、初めてCのプログラムをコンパイラが受け付けたことになる。

こんなコードをコンパイルすると、

int main()
{ 
  int a; int b; int i;
  a=0; b=1; i=0;
  while(i < 10)
  { 
    int t; 
    t=a+b; a=b; b=t; 
    i=i+1; 
  }
  return a;
}

こんなアセンブリを吐く。 SSAみたいな中間表現を挟んでレジスタ割り付けを真面目にやるのはいつがいいんだろうか。

.globl _main
.text
.balign 4
_main:
    stp x29, x30, [SP, #-16]!
    mov x29, SP
    sub SP, SP, #32
    mov x0, #-16
    str x0, [SP, #-16]!
    mov x0, #0
    str x0, [SP, #-16]!
    ldr x0, [SP], #16
    ldr x1, [SP], #16
    str x0, [x29, x1]
    str x0, [SP, #-16]!
    mov x0, #-24
    str x0, [SP, #-16]!
    mov x0, #1
    str x0, [SP, #-16]!
    ldr x0, [SP], #16
    ldr x1, [SP], #16
    str x0, [x29, x1]
    str x0, [SP, #-16]!
    mov x0, #-32
    str x0, [SP, #-16]!
    mov x0, #0
    str x0, [SP, #-16]!
    ldr x0, [SP], #16
    ldr x1, [SP], #16
    str x0, [x29, x1]
    str x0, [SP, #-16]!
.L0:
    mov x1, -32
    ldr x0, [x29, x1]
    str x0, [SP, #-16]!
    mov x0, #10
    str x0, [SP, #-16]!
    ldr x1, [SP], #16
    ldr x0, [SP], #16
    cmp x0, x1
    cset x0, lt
    str x0, [SP, #-16]!
    ldr x0, [SP], #16
    cbz x0, .L1
    mov x0, #-40
    str x0, [SP, #-16]!
    mov x1, -16
    ldr x0, [x29, x1]
    str x0, [SP, #-16]!
    mov x1, -24
    ldr x0, [x29, x1]
    str x0, [SP, #-16]!
    ldr x1, [SP], #16
    ldr x0, [SP], #16
    add x0, x0, x1
    str x0, [SP, #-16]!
    ldr x0, [SP], #16
    ldr x1, [SP], #16
    str x0, [x29, x1]
    str x0, [SP, #-16]!
    mov x0, #-16
    str x0, [SP, #-16]!
    mov x1, -24
    ldr x0, [x29, x1]
    str x0, [SP, #-16]!
    ldr x0, [SP], #16
    ldr x1, [SP], #16
    str x0, [x29, x1]
    str x0, [SP, #-16]!
    mov x0, #-24
    str x0, [SP, #-16]!
    mov x1, -40
    ldr x0, [x29, x1]
    str x0, [SP, #-16]!
    ldr x0, [SP], #16
    ldr x1, [SP], #16
    str x0, [x29, x1]
    str x0, [SP, #-16]!
    mov x0, #-32
    str x0, [SP, #-16]!
    mov x1, -32
    ldr x0, [x29, x1]
    str x0, [SP, #-16]!
    mov x0, #1
    str x0, [SP, #-16]!
    ldr x1, [SP], #16
    ldr x0, [SP], #16
    add x0, x0, x1
    str x0, [SP, #-16]!
    ldr x0, [SP], #16
    ldr x1, [SP], #16
    str x0, [x29, x1]
    str x0, [SP, #-16]!
    b .L0
.L1:
    mov x1, -16
    ldr x0, [x29, x1]
    str x0, [SP, #-16]!
    ldr x0, [SP], #16
    mov SP, x29
    ldp x29, x30, [SP], #16
    ret
    mov SP, x29
    ldp x29, x30, [SP], #16
    ret

2023-07-19

実装しているCコンパイラ で関数定義をできるようになった🎉。今までも既存のコンパイラで作ったオブジェクトファイルとリンクすれば呼び出すことはできていたが、自分で定義した関数がある程度ちゃんと呼べるようになった。

まだ型がlongしかないので道は長い。

https://github.com/atweiden/fzf-extras ここが良さげ。

2023-07-17

Cコンパイラをarm macで実装しているのだけど、a=b=0; return b;"みたいなコードがセグメント違反で落ちる。 lldbで調べてみると、main関数は正しい値をw0にセットしてretできていそうなんだけどその後の動的リンクされたコードでエラーが発生しているみたい。設定する値を変えるとエラーにならずに実行が終了する。謎である。

ABIを守っていないのが悪さをしているかも。

土曜日はパソコンしてた。お昼頃に連絡が来ていたことに気がついて、翌日の約束をした。

勢いで日曜日は丹沢に行くことになって、卒業ぶりに会った友達と2時間くらいの登山をしてきた。コースタイムが4時間だったのでいいペースだった。最近登山をしておらずペースタイム通りの時間でいく想定をしてしまっており、思ったよりもあっさりと終わってしまった。友達の靴が下山した後の道で壊れてしまったのでサンダルを貸して歩くことに。風呂に入ってからはま寿司で3時間くらいお茶を飲んで帰宅した。

日曜日は海の日なので海を目指して部活の後輩と走った。天王洲アイルが海の近くだったのでそこまで行ったのだが、思ったよりも海っぽくなかったのが残念。久しぶりに走ったので走り始めがだいぶ辛かった。

久しぶりの人と会うと時間の流れを感じる。

arm64のメモ

Cコンパイラを実装するためにarm64のことを調べている。この記事はそのメモ。

よくあるソフトウェアのライブラリについているドキュメントとは毛色が違う。

Arm macを使っている人の話です。

  • 既存コンパイラがはくアセンブリを覗く方法
    • アセンブリをはく: gcc -O0 -S
    • ディスアセンブル: otool -vVt
  • デバッガで調査する

アセンブリ命令って割と体系的になってなくてやばいイメージがあったけど、 arm64は秩序がある程度あるように感じている。まだ深淵を覗けていないだけかもしれないが。汎用レジスタの名前が簡単なことが大きいかもしれない。

2023-07-08

椅子に座るほどの元気がなくてもパソコン座れるので楽しい。気軽にコーディングできる。

cコンパイラ実装するやつは、今からローカル変数の定義に入るところ。ここまでで、四則演算と比較をコンパイルできるようになった。 armでやっているのだが今のところそんなにx86と違わない。 push/popでスタックポインタがarmだと16byte境界にしか設定できないとか、割り算がシンプルだとかくらいの違いしか観測していない。

そういえばenumは値だった。変数名みたいにコンパイラがよしなにするやつというイメージが強くて戸惑ってしまった。今回初めてcファイルを頭を使って分割した。定義と宣言の違いを認識して活用する日強がある。

パーサ前はサクッとできて、コード生成も一応形にはしたのだが、生成したアセンブリをアセンブルして実行するとセグフォで落ちる。 x29にSPをmovするだめみたい。x29以外にしたらどうだろうと思い、x9を使ってみたらセグフォのタイミングが変わった。ちゃんと追ってないので明日起きたら追ってみよう。

とりあえず、armのマニュアルを落とした。めちゃ長いけど良さげ。ソフトウェアと違って、ライブラリが無い分こういうふうに一つのでかいドキュメントが提供されるのはなんかそうなんだろうな、という感じがする。Web版よりも検索しやすいのはいいこと。今日はこれくらいにしよう。

ちなみに今はラフロイグ10年を飲んでいる。いいでしょ。

動画を見たり手を動かすことが増えた。あとは仕事でドキュメントを読む時間が増えて、活字が安定供給されているのが影響しているかも。

とはいえ仕事で読むドキュメントは、読み物としてはそんなに面白く無いことが多い。その分手を動かしてものを作るのが楽しいからいいのだけど、小説を読む楽しみとか、心に響く論文を読む感覚が足りない。小説とか論文とかに飽きてきたのはあるのかもしれない。残念ながら深掘りできる人間ではなかったのか。広く学ぶ好奇心とかがあるわけでもないのだけど。

話題になっていたのは当時から認識していたが、ずっとみていなかったユーフォを見た。特に第一シーズンが好きで、上手くなりたい、のあたりが響いている。僕がある程度まじめに考えて方向性を決めるときには、上手くなりたいが奥底に合ったなと再認識させられた。

頑張っているときはわからないけど、少し環境が変わると上手くなっていたことがわかる。加えて、そのときになって周りから、それが上手い人というラベルを貼られることに気がつくし、振り返ると上手くなったなと気がつく。上手くなりたいと憧れた、あの頃の自分からすると今の自分は割といい線行ってるんじゃないかと思う側面がある。全部が全部上手くなってるわけじゃないけど。

この頃は、上手くなった先に何があるのかということをちらほら考える。幸せがあると思っていたのだが、実際のところはどうなんだろうか。今は体力と好奇心と自尊心がボトルネックになって、ボトルネックになってることがそれらを削っていくんじゃないかと思う。また、自分が上手くなるのにかかる時間が実感を通して認識できたことで、自分の限界を認識するようになるのだろう(僕はまだ認識してない。アカデミアのスターにも総理大臣にも、経済界のドンにも縁があればなれると思ってる。巡り合わせに依ると思ってる時点で擦れているのかもしれないけど)。

僕はアニメを見て、アニメの感想ではなく内省をアウトプットしたくなってしまうので自分から進んでアニメの話をしたくならない。聞かせるのは悪いなという気持ちとなんか恥ずかしい気持ちがある。日付が変わってしまいそうなのでこのくらいで。ところでフロムザバレルは甘い。干し芋っぽい風味がする。

明日はランニングしよう。午前中に走ってみる。

2023-07-06

そういえば 社会人 になったわけで、そろそろ子供の頃に思い描いていた大人(僕はまだ自分のことを子供だと思っているのだがここでは5歳くらいの意味で)になったはず。あの頃大人に抱いていた感覚は、なんでもできる自分とはどこか遠い人だった。今の自分は子供の頃の自分からしたらどう映るんだろう。

大人は子供の前では大人ぶるものなので、子供の頃の僕の前で今の僕が大人っぽく見せようとしないとは思えないけど。

そっけなかったのでChatGPTに相談して新しくした。解釈は以下の通りとのこと。

「星影のメモランダム:キラキラ上弦の月が見守る心の手記」というタイトルは、幾つかの意味やイメージを含んでいます。以下に説明いたします。

  • 「星影のメモランダム」: 「星影」は夜空に広がる星の光を指し、その美しさや神秘的な雰囲気を表現しています。また、「メモランダム」は手記や書き留めたメモの意味であり、心の中に浮かんだ思考や感情を記録するという意味を持ちます。このフレーズは、夜の静けさの中で思索や独り言が交錯し、心に残るメモとして綴られる様子を表現しています。
  • 「キラキラ上弦の月が見守る」: 「キラキラ上弦の月」は、満ち始めた月の美しさや輝きを表現しています。上弦の月は成長と新たな始まりを象徴し、それが心の手記や冒険を見守る存在として描かれています。上弦の月がキラキラと輝き、心の手記や冒険を照らし、導いてくれるイメージが込められています。
  • 「心の手記」: タイトルの中で「心の手記」というフレーズは、内面の思考や感情を綴る日記や手記を指しています。主人公や著者の心の中にある思いや経験が、その手記として表現されていく様子をイメージさせています。

これらの要素が組み合わさり、「星影のメモランダム:キラキラ上弦の月が見守る心の手記」は、静かな夜の中で心に浮かぶ思考や感情を記録し、上弦の月の導きと輝きによって心の手記が見守られる様子を表現したタイトルとなっています。

かっこいいので採用。

2023-07-05

プロトタイプベースのオブジェクト指向言語について、哲学の方面から議論したエッセイを読んだ。クラスベースなのは古典的なアリストテレス的な分類の考え方に基づくもので、プロトタイプベースなものはヴィトゲンシュタインっぽい考え方に基づくとのこと。

アリストテレス的な考え方では、物事は分類できて、しかもいろんな分類があったとしても最高の分類みたいなものがある、みたいに捉えるそう。分類の中でその類を象徴する代表みたいなものも取れてしかるべきみたいな。一方でヴィトゲンシュタインっぽい考え方ではアリストテレス的なのには割と無理があって、そんな考え方が通用するのは数学の概念くらいとしていて、分類は観察する主体に依るし、文化とかの影響を受けるもので「科学」みたいに自然に導かれるようなものではない、みたいな考え方をするらしい。

リアルワールドを表現、分類しようと思うと確かにヴィトゲンシュタインの方がしっくりくるというか、矛盾が少なさそうな雰囲気がする。だけど、独自の世界を作ろうと思うとヴィトゲンシュタインの考え方に基づくのは骨が折れそう。

では、関数型言語とか意味論の人たちの視点だとどうなるだろうか。オブジェクト指向は哲学の話に基づいて議論しているみたいだが、型システムとか意味論は論理学をベースにしがち。型は命題でプログラムは証明。

ところで

型は命題でプログラムは証明。

この標語はしっくりきていない。型に入る_項_を僕は証明だとは思えない。依存型は項に依存する型だとは思えるけど、証明に依存する型と言われるとなんだかなと思う。まあ、その項にも型をつけるので、その型の証明にはなっているのだけど。Numみたいな型を命題というのがしっくりこないのと同じか。

依存型でも依存する項の型が関数型とかの命題っぽい型だったら証明に依存している雰囲気を味わえるかもしれない。帰着を考えればいいのかな。この命題が成り立つなら、これこれが成り立つ。これは依存型じゃないな。帰着は型をとって型を返すだけなので、type operatorだ。

ところでラフロイグの10年おいしい。

nが2より大きい、みたいな命題は依存型がないと表現できないか。簡単だ。

\Pi n: Nut. (n > 2 -> \Pi x,y,z: Nut. x^n + y^n != z^n)

ここで _ > _ は依存型。普通だね。

話を戻す(ラノベだったらここで閑話休題って言ってた)。オブジェクトと抽象化の話をしていたのだった。オブジェクト指向では、分類を動的な性質としてみるきらいがありそう。それに対して関数型っぽい世界では、分類は静的にできる型判断でしかないイメージ。型によって動的な振る舞いは変わったり変わらなかったりするけど、とりあえず型は静的につけるものだと思う。その情報を実行時まで持ち越すかは好きにすればいい、くらい。

動的メソッドディスパッチはいまだにしっくりこないし、メタプログラミングに関しては勝手にやってくれって思ってしまう。

ディレクトリの構造で投稿の分類を決めるのはよくないと思う。分類なんて書いているうちに変わるのだし、その方が便利そうなので全てはフロントマターにお任せしてしまえばいいと思った次第。そんなこという子はhugoユーザには要らないのだろうから、そのうち独立するのがいいんだろうな。

明後日が七夕だ。花金なので会社の人と七夕のみをできるかもしれない。

七夕は織姫と彦星が一年に一回逢瀬を重ねられる日。天の川に橋がかかるんだったか川の水が引くんだったかで会える。ここでは皮の水が引く説を採用する。

旧暦では時期的に川の水が引いたかもしれないが、現代では7月の頭はまだまだ梅雨みたいなもので川は元気だ。このままでは織姫と彦星は約束の日に会えない。かわいそう。なのでいつも夏の大三角に心を癒してもらっている僕たちは、せめてもの恩返しに川を飲み干して、逢瀬を支援することにした。これが七夕のみ。幸いなことに梅雨の雨で薄まった川はアルコール度数が比較的低く、ほろ酔いくらいのイメージ。だからこの日は梅雨がもたらす潤沢な量のほろ酔いを飲む。

エンジニアリングは手段でしかないと今は本心で思っている。とはいえ、プログラミングやエンジニアリングをしていて幸せを感じるタイミングもある。このギャップはエンジニアリングの成果を確かめることにあると思う。

例えば家に電気が通っていることは感動的なことだと頭ではわかるが、その恩恵を享受することは特に幸せだとは思わない。それに対して、新しくプログラミング言語を学んで、これまではできなかった表現でこれまではできなかった解決策を実現するのはとんでもなく楽しい。さらにはこれまでは明らかではなかった解決の方法を明らかにするのは結構な幸せだ。

このギャップは成果を確かめること、差分を観測することにあると思う。微分係数が大きいときが一番やりがいを感じる、みたいな話に通じる気がする。

  • 会社の人の親切に触れたこと
    • 一人だけじゃなくて4,5人くらい
  • 会社じゃない知り合いとちょっと仲良くなれたこと
  • ラフロイグがおいしいこと
  • オブジェクト指向の話が面白かったこと
  • 権八に行けたこと

こんなしょうもないことを書いていたせいで、今日の元気が終わってしまった。ラフロイグに完敗。またこんなことをインターネットで公開するおかげで恥の概念がなくなってきた。これは良し悪しありそう。

2023-07-02

末尾位置での関数呼び出しは、継続渡し形式ではcaleeに渡す継続をcallerが大きくしないで、 callerのcallerから渡されたものをそのまま渡す点で特徴的だ。レジスタマシンではcallerのスタック領域をcalleeが上書きして使うことに対応するのだろう。こういうcall命令はどのくらい実用されているのだろうか。

https://www.sigbus.info/compilerbook これを読んでいる。

高校の化学の授業でナトリウムをどうやって保存するべきかと先生が問いを投げて、追い討ちをかけるようにそのまま先生が水筒ですか、と言ったのをたまに思い出す。確か灯油とかに放り込んでおくのが定石だった気がする。

今日は水筒を買った。会社で水をもっと飲みやすくなる。水筒にはお茶もコーヒーも入れないつもり。レジで「ご自宅用ですか?」と聞かれたのが印象的。プレゼントか否かを暗に問われたのだと思ってそうですと言ったのだが正しく意図を汲み取れていたのだろうか。家で水筒使うことなかなかなさそうなので明には嘘をついてしまった。

意図が自明ではない発言にはその背景を添えて欲しいし、自分も添えるように気をつけよう。

報酬主義を超えてを読み始めた。思ったよりも面白い。ある程度、当たり前の主張をさも常識を疑って得られた結論みたいな書き方をするけど、それでも僕の立脚する価値観を疑うようなことも書いてありそうなので期待している。

2023-07-01

envsubstを使うと標準入力の環境変数の参照っぽいところに環境変数の値を埋め込んだテキストを吐ける。 readmeにコマンドのヘルプメッセージを載せたいときに便利。例: https://github.com/naoyafurudono/tools/tree/main/cl

gitで管理しているファイルのパスが得られる。 git grepみたいに管理対象だけに興味があるときに便利そう。 fzfとの相性が良さげ。

2023-06-30

すでにgit管理されているファイルをgitignoreでマッチするようにしても、管理から外れない。外すためには以下のようにすると良い。

git rm -r --cached .
git add .
git commit -m 'update with .gitignore'

2023-06-29

crate.ioに初めてコードを登録した。cargo install で入るから便利。ちょっとしたCLIツール書く体験がなかなか良い。 copilotが面倒なことやってくれる。

crates.io

Railsとか書いてると深いところに元からあるファイルをコピーしたいことがちょいちょいある。そのときに長いパスを2回打ちたくないので作った。

2023-06-25

今日は親戚のお家にお邪魔してきた。だんだん親戚のことがわかるようになってきた。たくさん構っていただけてありがたい。ここ1,2年くらい、人の人生を聞く機会が増えたように感じる。

その後に荻窪に住んでいた頃に通っていた銭湯に行った。あそこは熱めのお湯と水風呂があって良い。安定感がある。そういう安定感に対してシャンプーが置かれるようになったりタオルが有料化したりして、変えていく部分もあるみたいだ。

今週末はlinuxの鈍器な本を割と読めたし、sedとawkの理解も深めた。いい週末だったと思う。今週も頑張ろう。

VoltaはJSツールチェーンのマネージャ。 Copilotをnvimで使うためにnodeが必要だったのでnvmを入れようと思ったら、 fishではうまく動かないとのことだったので他をあたることにして出会った。ちょっと触ってドキュメントを覗いた感じ、シンプルそうで好感を抱いた。“The Hassle-Free JavaScript Tool Manager"を謳っているので狙い通りな感想を抱けたのだろう。

Pixel6aを使っているのだけど、この度初めて壁紙とロック画面を設定した。デフォルトだと時刻が大きく表示されていて見やすいのだけどあまりかっこ良くはない。また、壁紙もボヤッとしててそれっぽいのだが、ピンとはこない。時刻の表示はコンパクトにできたし、壁紙はビビットな感じのものに設定した。満足している。

2023-06-24

macのタイムゾーンの設定が狂っていて、今日の投稿がこれと前回の二つに分かれてしまった。

今日はmacの設定と、以降に伴って壊れたちょっとしたCLIツールの修正した。昔Rustで雑に書いたもので、エラー処理が辛そうだったので少し勉強して改善した。 anyhowを使ってみたい気持ちが湧いたけど、まずは基本的なところからということでトレイトオブジェクトを使うことにした。type Result<T> = std::Result<T, dyn Error>みたいな感じにすることで、いろんなエラーを孕んだresultに?を使うことができて幸せ。

一箇所ムムッとなったのが、クロージャの中で?を使う箇所。dyn Errorの気持ちで書いていたら、推論器はもっと具体的な型を推論していたみたいで、二つ目のエラー型の式に対して?したら型エラーになってしまった。こういうときはアノテーションをつければ良い。 Rustの型推論の割り切り方に慣れていない。

2023-06-23

macを買って環境構築をしているのでメモしていく。

  • capslock -> eisu toggle
    • システム環境設定 > キーボード > テキスト入力 > 入力ソース > Caps LockキーでABC入力モードに切り替える
    • 最近のmacは組み込みの設定で変更できるようになった
  • 1Password
  • CLIツール: 以下の順で入れると良い。気が向いたらインストールスクリプトを書こう
    • brew
    • fish
    • nvim
    • .config
    • その他
  • gitでsshを使うための設定: この投稿のおまけを参考に
    • 鍵を生成
    • githubに公開鍵を登録
    • .ssh/configを書く

個人メモ:dotiflilesに書いてあるのでコピペは不要。

# for fish
function _ssh-keygen
  set name $argv[1]
  mkdir -p "$HOME/.ssh/$name"
  ssh-keygen -t ed25519 -f "$HOME/.ssh/$name/id_ed25519"
  chmod 600 "$HOME/.ssh/$name/id_ed25519"
end
#!/bin/bash

name=$1
mkdir -p "$HOME/.ssh/$name"
ssh-keygen -t ed25519 -f "$HOME/.ssh/$name/id_ed25519"
chmod 600 "$HOME/.ssh/$name/id_ed25519"

Host github.com
  User git
  IdentityFile /Users/naoyafurudono/.ssh/github/id_ed25519

Terraformでローカル環境の管理とかできないだろうか?

2023-06-17

ルンバをレンタルして今日から使い始めた。結構細かく動いてくれて僕より掃除がうまい気がする。 7時/19時で掃除するようにしたので、目覚まし代わりになるはずだし、寝る前と出勤前に床を片付ける習慣がつきそうで期待してる。

日中に運動するとその日の体力とやる気を使い果たして何もできなくなる。やはり夜に運動するのが性に合っていそうだ。

2023-06-16

話題だったので読んでみている。手塚治虫っぽい印象を受けてる。

ある程度目を通したけど、村上春樹の小説のような例え話が実用書で延々と続いて途中で読むのをやめてしまった。たまに話題にでてきていた模倣理論とかは気になるので、そっちを調べてみようかしら。

2023-06-11

舌の奥の方や、先端よりも少し奥、中央くらいで味わううまみやとろっとした感じが好き。苦味とか酸味にはなれてしまってあまり感じなくなったみたい。

美味しいコーヒー屋さんででてくるやつは大概美味しいと感じるけど、自分で淹れたりそのへんのお店で飲むならアメリカンが美味しいと感じやすい。

最近家でパソコンに向き合っていると腰が痛くなる。今に始まった頃ではないけど、職場ではそんなことにはならないので対策しだいではよくなるはずだ。職場と全く同じ環境を整えるのも手ではあるけど、それだとつまらないし、切り替えもしたいので却下。スタンディングデスクを使うようなやり方を最近は考えている。

本屋さんとかで技術書を立ち読みするときが、図書館にこもるときの次くらいに集中できる気がする。図書館的な集中の仕方を会社でやってると思うことにして、家では試しに本屋さん的な集中をできないか挑戦してみたい。椅子が邪魔だと思っているので、座らなくて良いならそんなに嬉しいことはない。また、PCに向き合ってだらだら動画とかをみるのはあまり気持ちのいい過ごし方ではなくて、それを予防できるのならなお良い。

昨日本棚を注文して一週間ほどで届くとのことなので、それと合わせて家をいい感じにしたい。

2023-06-10

共感できるところが多かったし、なるほどなと思うところもあった。なにより読んでて楽しかったので読んでよかった。

野崎まどの本を読むのは、野崎まど劇場を友達に借りたのが最初だった気がする。かれこれ10年くらい前の話かも知れない。

天気予報を確認したいのだけど、テレビを見たり朝スマホを確認する習慣がないし作る気もないので、なにか方法が必要。ちょうどラズパイが手に入ったので、毎朝どこかから引っ張ってきた天気予報を喋ってもらおうかと考えている。

読み上げは、voicevoxがいろいろいい感じなので試してみるつもり。ドキュメントがあまり充実してなさそうなのがたまにきず。やってみた系のブログ記事が有ったのでメモ https://ponkichi.blog/raspberry-voicevox/

天気予報はどこから取ってくるのがいいんだろう。とりあえず、傘が必要かどうかを知りたい。

CAMPHER-が主催した植山類さんの講演でyoutube配信があったので視聴した (youtube)。リンカの話はよく知らなかったので楽しかった。「『CSの大体の問題は間接参照で解決する』という言葉がある」という発言がなかなか面白かった。使いたくなるときに我慢して使わずに乗り越えられたら幸せになったりするだろうか。

2023-06-06

昨日は退勤後にランニングをして銭湯に行ったあと、お酒を飲んで今にいたる。ランニングをしてアパートに帰ると、階段の近くで猫が鳴いていた。一旦スルーしたのだけど、気なって戻ってからじっと見ていると近づいてきてくれた。僕は昔猫カフェに行ったときに一匹にも懐かれずに悲しい思いをしたことがあったので、近づいてきてくれた時点で感動した。猫はめちゃかわいかった。

首輪がついていたので、きっと飼い猫で人懐っこいのだろう。よふかしのうたで野良猫と遊んだあと手がすごく臭いみたいな描写があったので試しに匂いを嗅いだら虫が嫌いそうな葉っぱの匂いがした。シャンプーのにおいだったのかも。猫欲が増したイベントだった。また会えるといいなと思う。

近所にいい銭湯を見つけた。水風呂がないところは残念だけど、シンプルなお風呂と熱めお湯を提供してくれるお風呂やさんに巡り会えた、毎日通ってしまうかもしれない。明日回数券を買おう

見た感じ、今日は満月だった。

今日はいい日。

2023-05振り返り

月末なので気まぐれに今月を振り返る。

エンジニア研修が始まった。ビジネスっぽい話も面白かったけど、エンジニアっぽい話とは違う面白さだった。プログラムに関して議論するのはやはり楽しい。

蓼科と山口にいったし、日本ダービーにも行った。だいぶ遊んだ気がする。静かな週末は一回くらいだったかも知れない。読みたい本が溜まっている。

走る機会を減らして筋トレを増やしている。体重計に乗っていないので成果の程は定かでないが、体感筋肉が増えた気がする。たまに13km走るとしんどい。

  • 親に初任給で何買うか決めてない
    • 個人的に気になっている家電を送りつけて、レビューをもらう案が今のところ最有力
      • いいトースター
      • ルンバ
    • その他の案
      • 置き時計・壁時計
      • ケーキ(一緒に会えれば)
  • いらないものを処分したい
  • 本棚がほしい
    • これは6月の課題にしよう
    • いい感じの本棚を選んで、それに見合った量の本だけ残してあとは処分する
  • オリエン大会の運営2つに参加することになった。どちらもまだ、そんなに動いていないけど放置はできない感じ。楽しみ。

すべて6/30 9:00が締め切り。来月は振り返りと次の目標策定をする。それは6/30 23:00締め切り。

  • 親に初任給でなにか贈る
    • 喜んでもらえるもの
    • ついでに僕も楽しいもの
    • 兄に酒でも贈るか
  • 部屋をいい感じにする: 読書と衣類を最適化する
    • 本棚を一つ買う
    • 本と服を処分する
    • 夏っぽい服を買う

  • クラウド・インフラの理解を深める
    • ラズパイ買ったのでそれで遊ぼう
    • ネットワークとOSをいじる
  • 仕事の議論についていけるようになる

  • 月間120km走る
    • 2日あたり8km
  • 自炊写真をインスタする
    • 食器がネック
  • 運営で友達を増やす
    • 試走で運営に関係ない話をするひとが増えるとよい
  • PC環境をなにかしら改善する
    • 開発環境系がいいな。キーボードショートカットとかウィンドウマネージャもあり

2023-05-31

初めて家の近所にあるコンパスコーヒーに行った。

日替わりの浅煎りをダブルで頂いた。今日はコロンビアらしい。あまり酸っぱくなくて後味がうまい。コーヒー豆も買ってしまうかもしれない。後味がうまいコーヒー好きで、苦くても酸っぱくても多少ならどちらもおいしいと思う。

  • 今日はコンパスコーヒーで浅煎りのコロンビアをいただいた。とてもおいしかった。酸味が少しあるのだが控えめできつい感じはしない。それよりもあとを引くうまみが印象に残っている。
  • 野崎まどの新作がでていることに1年くらい気づいていなかったので今日読む。
  • 今日はペペロンチーノを昼に作った
    • 明日からはインスタに写真を上げる

2023-05-26

クラフトビールを飲むと走りたくなるのをなんとかしたほうがいい気がする。心臓に悪そうだし、生活リズムが崩れる。

今日は宇宙ビールのなにかとBrasserie KnotのMOONを飲んだ。残念ながらそんなに好きな感じではなかったが、単に飲み方を間違えた感じがする。有識者から学ばないといけない。ただ、お酒を飲むと記憶が失われてしまうので知見をどうやって残すかが問題。

今夜(25日よる)は退勤後に筋トレ、本屋さんへGO、ミーティング参加、資料の読み込み、ランニングをして気分がいい。明日もがんばるぞ〜。

これまで存在を知らなかったのだが、actionsにはwate timerという設定項目があって、デプロイを許すまでの時間を設定できる。デフォルトでは5minとなっているようだ。 actionの初回トリガーについてのみ有効っぽい。

2023-05-22

週末に山口旅行に行ったのでメモしておく。秋吉台ロゲが目的な旅行で、せっかくなので前日入りした。 1日目が観光で、2日目がロゲイン。

  • 1日目
    • 移動(新幹線)
    • 焼肉
    • 秋芳洞
    • 秋吉台
    • 酒蔵
    • 宿
    • 中原中也記念館
    • 風呂
    • 飲み会
    • 散歩とほたる
  • 2日目
    • ロゲイン
    • 風呂
    • ご飯
    • 移動
    • 日焼けとの戦い

観光の日。Google mapででてきた一番早い行程で移動して時間を作った。いままでは学割だったので初めて新幹線のきっぷを普通の値段で買った。それにともなって、きっぷをネットで買ったり、モバイルPasumoと紐付けることができて楽しかった。スマホで新幹線に乗るのはすこしどきどきする。

僕と同じような思惑の人が多いのか、自由席は混み合っていた。座れない人がいて僕も危なかったが、荷物を座席においている人に声をかけて座ることに成功した。すこしコミュニケーション取れると得する。名古屋から一人と合流した。たまたま横の人たちが名古屋で降りたので、合流したもう一人は入れ替わりで座ることができてよかった。ついている。名古屋が行程のちょうど真ん中くらいで、合計で4時間ほど新幹線に乗り新山口に辿り着いた。新山口で熊本から車を運転してきてくれたもう一人と合流して、あらかじめ目星をつけておいた牧場併設のステーキハウスで早めの昼食を頂いた。

あのあたりにも地場の牛がいるみたいで少し推しているような雰囲気だった。頂いたお肉は(僕は焼肉をいただいた)やはりおいしかった。食べ放題で舞い上がる年齢は過ぎ去ったようで、いい肉をいい感じの食べ方でいただくのが最近は幸せだと感じる。食べ放題はおいしいというより楽しい感じ。そういう幸せもあるけど。

お昼を頂いてからは、すこし離れたところにある秋芳洞にいった。行くまで記憶から抜けていたが、中学三年生のころの修学旅行で秋芳洞には行ったことがあった。当時お土産に買った湯呑みが今も売られていて記憶が蘇った。二回目とはいっても違う面子で訪れているし、感性も変わっているおかげで純粋に楽しめた。あそこは今行ってもまた楽しめると思う。次行くときはもう少し地学の勉強をしてから行きたい。秋芳洞は往復することも可能だが、片道で抜けてしまうこともできて、今回は片道で地上にでることにした。地上は特に面白い感じではなかったので、特に目的がないなら往復したほうが良いだろう。

秋芳洞の入口まで帰ってから、そのあたりで売っているアイス(炭のはいった、鮮やかなアスファルトの色をしていた)を食べて、口や手を汚してから翌日訪れる秋吉台を見に行った。秋吉台の展望台の看板で知ったのだが、秋吉台は割と下の方にある鍾乳洞で、もっと上にも2つほど名前のついた、観光で入れる鍾乳洞があるらしい。そこからは車でカルストロードを抜けつつ(景色がとてもよかった)なんとか弁財天という、青くてきれいな泉を見に行った。泉では軟水を汲めて、そこそこのおいしさだった。水を汲むためのペットボトルを開けるのに1L一気飲みしたからそう感じただけかもしれない。

併設されている地域のものをうっているお店で唐辛子を買って(ペペロンチーノを作りたい、ちょうど今日の昼にペペロンチーノをいただいて、ハーブを入れるとおいしいことを知った)、宿のある湯田温泉へと移動した。

その途中で思いがけず酒蔵を見つけて覗いてみるとたまたまイベントをやっていた。おしゃれ系の酒蔵として売っているみたいで、雑誌かなにかと手を組んでいるみたいだった。酒蔵の設備を友達に解説してもらいながらおしゃれ甘酒を飲み、日本酒と関係ないところで作られたビールを買って道に戻った。

宿は青年のなんとか、みたいな行政が一枚噛んでそうなところで特にこれといった魅力はないが欠点もなく、部屋が異様に広いことが印象的だった。冷蔵庫にお酒をいれたものの電源を入れ忘れたまま街に繰り出した。だいたい16時すぎくらいだったか。

街には意外と見どころがたくさんあって、ザビエルのゆかりのところとか、芸術関係の施設、温泉、酒蔵や酒屋など、時間は足りなかった。熱意と多数決によって中原中也記念館に行くことをぬるっと決めて、詩人の石碑とかを見つつ向かった。

中原中也は「よごれちまったかなしみに」くらいしか知らなかったが金曜の夜に少しだけ予習していたので楽しみだった。行ってみると特別展として「山羊の詩」の出版にまつわることが取り上げられていて集中した。集中しても僕は早くは文章を理解できないし、閉館まで1時間もなかったので消化不良である。もう一回くらい行きたい。作品は韻がとても良かったし、原稿とか解説を通じて作品をつくるプロセスとかを知れた。あんなにすごい、自然な詩を書く人も試行錯誤をするのだと知ると勇気が湧く。作品を読むだけでは沸かない感情をいだけたので、行って良かったのだろう。

18時に閉館してしまったので、それから風呂にはいった。あのあたりは温泉がたくさんあって、そのうちの一つに入った。このときは行った温泉は、そんなに温泉っぽくなくて、次の日にロゲインの帰りに入ったほうがぬるぬるしててそれっぽかった。ロゲインの温泉は源泉かけ流しなんだとか。夕飯は目星をつけていたところはおろか、他のところにもなかなか入れず、3人で電話をかけまくってようやくカウンター席が空いているお店に巡り会えた。日本酒を中心としたお魚系のおいしい料理を頂いた。

いったん宿にもどって、荷物をおいてから(夕飯の前に中原中也記念館の隣の酒屋で買い物した)翌日のための買い物をしつつホタル見るために3kmくらい散歩した。出かけるときに冷蔵庫の電源が入っていないことに気がついたが、背に腹は変えられないので室温のビールを3人で2つ回し飲みながらの散歩になってしまった。途中のコンビニで焼きそばを補給して(一応翌日の朝ごはんとかも買って)川までたどり着くと想定外にホタルを見ることができた。町中の川にホタルが本当にいるとは思っていなかったが、しっかり光っていた。

帰りは途中まで歩いたのだが、疲れ(と酔い?)が回っていて歩きたくない雰囲気になりタクシーに少しだけのった。そのあとはすぐに就寝。

夜はよっていたわけではなく疲れていただけだったようで、みんなしっかり起きた。いつもどおり支度を済ませてロゲイン会場の秋吉台へ。秋吉台のロゲインも書くことがそれなりにあるけど、疲れたのでとりあえず省略。

秋吉台の眺め

走り終わってからはアイスを食べ、大会がもう開催されないことやその経緯に少しの悲しみを覚えつつ風呂に向かう。閉会式は時間かかる予感がしたのででなかった。お風呂は湯田温泉まで戻り、いい感じのところでいただいた。風呂ではゆっくりしたが、時間がないのでご飯を食べるところを急いで決めて、新山口駅へと移動。道中にある店を選んだのでそこで瓦そばと天丼をいただいた。

新山口には目標の範囲内でたどり着けて、お土産を見る時間もとれた。熊本の友達とはここで解散。途中までは完璧だったのだが、途中で乗りたい新幹線が車両点検をして30分ほど待った。不幸中の幸いで、路線の端の方からのったので、席には座れたが社内は混み合っていた。

名古屋でもう一人の友達と別れたあとは、新幹線のすごく硬いアイスのキャラメル味を食べた。多分初めてあの硬いアイスを食べたと思う(もしかしたら小さい頃に親にかってもらったかもしれない)。新横浜線に乗って家へ帰った。

秋吉台で派手に日焼けしたのを家で冷ましてから就寝。長い週末だった。

2023-05-19

明日は秋吉台に行く。楽しみ。新幹線を初めてスマホで買った。どうやらモバイルパスモで乗れるみたいなのでワクワクしてる。更に今日、仕事が終わってからJINS MEMEを買ったのでそのあたりでも楽しみが止まらない。

明日は早いのでさっさと準備して寝ないといけない。

2023-05-17

今日同僚と話していて気がついたのだが、僕は呼び方を腹に落としたい人みたいだ。新しく学んだ概念をなんて呼べば良いかがはっきりすることが大切で、単に記号として確立しているだけでは不十分みたい。たぶん、英単語を覚えるときに日本語訳より発音記号を大事にしたことが元凶だろう。

呼び方は僕の中でそれなりに重きをおいている概念な気がする。人をなんて呼ぶかは気を遣うし、呼び方が人間関係をある程度定めるとも思っている。たとえば「おまえ」と呼べる人は信頼できる人で、それが昔ながらの意味で失礼に当たらない人である、とか。

こういうふうに、名前とか呼び方を真剣に考えるのは研究室に入ってからのことだと思う。なんで考えるようになったかというと、社会学の講義で役割や役割期待について知ったことが影響していそう。もっとさかのぼると、中学で習った縁の概念も関係しているし、僕の縁の解釈には物理とか数学も絡んでいる(お酒を飲んでいるとどんどん話が発散していく)。

回線速度が良いと自己肯定感が高まってとても良い。git push が終わるまでのレイテンシでその日の幸福度の半分くらいが規定されているんじゃないだろうか。

2023-05-16

日曜はトレランして昨日は筋トレ、今日は走った。えらい。明日は夜に髪を切ってもらうのでおやすみ。今日は丸子橋で引き返した。退勤後はこれくらいがちょうどいい。

週末のロゲが楽しみ。今日、靴が届いてそれで走ってきた。フィット感はバッチリで、アウトソールが合うかの問題。というか遊歩道しかはしらなさそうなのでランニングシューズが正解かもしれん。そうなるとあの靴は普段づかいしたりたくさんトレラン・オリエンしないとかわいそうだ。

2023-05-14

高尾山で走ってきた(strava)。雨が降ったりやんだりしていて、濡れながら走った。僕ともう一人しか集まらなかったので二人でいったが、楽しかった。向こうにペースをだいぶ合わせてもらった。今回は高尾山の山頂を迂回して、小仏峠、景信山まで行った。陣馬山までいくことも考えはしていたけど、帰れるか不安だったので引き返すことにした。

景信山で持参したたべっ子水族館を食べて帰ってきた。会社の先輩が猛プッシュしていて気になったので持っていったのだった。おいしかったけど、シルエットが崩壊していて、どれが何なのかは全然わからなかった。水族館の生き物を山の上に連れて行ったのがまずかったかもしれない。

二人トレランはなかなか楽しかった。お風呂に入ってご飯を食べて帰宅。今日はからっぽになってしまった。ガッツリ運動したあとはなにもできないことを思い出した。近場のトレランだと明るいうちに帰ってこれるのでなんでもできる気になるがそんなことはない。ほわほわしてても楽しめることをあらかじめ用意しておかないともどかしい気持ちになってしまう。

2023-05-13

もともとbashで書いていたスクリプトを拡張したくなって、普段ならPythonで書くところを今日は新しいことをしてみようということでRustをつかってみることにした。

Rustはまったく初めてと言うわけではなくて、ちらちらドキュメントを読んだり、ノリで学校の課題をRustで書いてみたり(痛い目にあった)したことがある。所有権のあたりで苦労はあまりしなかった(というかPythonっぽくヒープを贅沢に使うコードを書いた)のだが、Result / Optionの変換で発狂しかけた(メソッドが定義されていることに思いをはせられずに自作してしまった)。

あまり苦労しなかったと言いつつ、所有権のあたりで困りはしている。参照を受け取るコンストラクタに、その場で作ったオブジェクトを渡したいときに、一旦変数に束縛しないと、渡すオブジェクトが即死してしまっていけない問題が面倒。名前をつけるまでもない、式が体をを表しているような値にまで名前をつかないといけないのはしんどい。コンストラクタが所有権を奪うようにすればよいのだろうか。いらないから参照にしたのだよな…。

今ではそこそこなれてきて、代数的データ型とまともな型検査器がついたPythonくらいの書き方はできるようになった。 Rustのライブラリがイケイケに作られていて(エラー処理周りは辛いと感じるけど)、プログラムを書いていて楽しい。すごく汚く書いてしまった。当面の目標はまともにかけるようになることかな?ちょっとしたCLIでは大差ないのかもしれないけど。

ブログのGitHubのプログラミング言語構成比がカオスなことになってきた。

ここ何日か胃腸炎でつらい。今日はだいぶ回復して、Rustを勉強できるくらいになったけど、まだつらみを感じる。とはいえ三食たべても大丈夫な体に戻りはしたので問題なし。何日か会社に行けなかったのがなかなか悲しい。

今日は以前もらい忘れた診断書を書いていただいた。前回の診療に対して診断書を出してもらうことはなんだか難しそうで、もう一度診察していただくことになってしまった。自分の中では治ったと思っていたけど、見ていただいたらまだ治っていないとのことだったし、今はそう感じる(流されやすい性格なのか?)ので、忠告していただけてよかったと思うことにしている。

病院の帰り道で食器のフリマ的なことを日本料理屋さんがやっていた。普段使っている食器を入れ替えるのかなにかで、安く売り出してくださっていたようだ。胃腸炎になるまえに、会社のランチで「おいしそうな自炊の写真はくろっぽい器が大切」とのアドバイスを頂いていたことを覚えていたので、これは運命だと思い食器を購入した。黒っぽい器はどんぶりしか出会えなかったけど、それがなかなかいい感じだし、白っぽい器もいい感じのにいくつか巡り会えたのでほくほくしている。

あとはおいしそうなご飯をつくればよい。

夕飯につかってみた。いい感じ。味噌汁のお椀(蓋付き)が小さいやつで、フリーズドライの味噌汁一杯分しか入らないやつ(褒めてる)。感動している。

(アマプラ)。グレンラガンの監督?が制作しているらしい。ノリが楽しい。

2023-05-09

コロナの時期に入ってから使っていたロケットモバイルを解約して、ahamoに乗り換えることにした。ロケットモバイルでは神プランという、通信制限が常にかかっているようなプランがある。通信の最初のうちだけ少しまともな速度が出るようになっているので、お財布の代わりにするくらいの用途なら困らない。電話回線込みで月に1000円程度しかかからないので、コロナ時代で引きこもっている身にはちょうど良いものだった。

外に出る機会が増えたて、会話で聞いた情報をその場で調べたり、google mapを使ったりする場面が増えて、QOLへの影響が大きくなってきたので回線を乗り換えることにした。お給料もいただけるし(明日は給料日!)。たくさん調べ物するぞ!

ahamoに乗り換えようとしていたのだが、しかしMNPがもつ契約者名義のあれこれの縛りを回避できそうになくて諦めることにした。電話番号はロケットモバイルに任せて、デュアルSIMで強く生きる。 IIJmioで10GB/monthのプランを契約した。割とすぐに使えるようになったし、1100yen/monthなのでそれなりに安く済んでいるんじゃないかと思う。試しにgoogle mapを使ってみたがいい感じ。

2023-05-07

5/4-5/6で親戚と会ってきた。少し遠目の親戚が多くて、はじめて会う人も少なくなかった。たくさんお世話になって、楽しませて頂いた。小中学生と一緒にたくさん遊んだのだのと、大人たちと夜中まで飲んでお話したのが印象的。こどもたちとはシーツをネットにしたバトミントン(相手の動きが見えない!)とかバスケやバレーっぽいことをした。時間を追うごとにルールが洗練され、楽しみを見出す場所が移ろっていた。おとなとは、持ち寄ったり、その辺においてあったりしたお酒(おいしいのばかりだった、ナポレオンの容器に入ったウイスキーと、名前を忘れたスコッチが特においしかった)を飲んだ。子育てとかキャリアの話題が中心だった。

2023-05-04

  • 昨日スクワットしてからランニングしたら、今日トレランに行った翌日みたいな感覚になっている。手軽に足の疲労感を感じられておとく。
  • この間オンライン飲み会をしたときに秋吉台ロゲに参加することを決めてしまった。 5/21に5時間走る予定。競技エリアが「秋吉台山焼きの実施範囲」とされていて絶対楽しい。 5時間走って新幹線に飛び乗り、翌日仕事できる体力をつけないといけない。まずはたくさん走ることに慣れよう。5/6の午前中にたくさん走ることにする。ロゲイン的な走り方をしたい。平野ではないけど山でもないところをのっぺり走り続けるようなスタイルをイメージ。

2023-05-02

DDD周りを最近漁っている。原著はオブジェクト指向で説明されているけど、関数型で説明している本を直近で読んでいる。僕はプログラミングを関数型から始めた人間だし、集合論や関数解析が好きだったからかオブジェクト指向があまりしっくり来ない。インターフェースとかクラスでモデルする気持ちはなんとなく分かる気がするし、拡張性とか再利用性を考えたときに既存のコードをできるだけ壊さずに機能追加できるのは強いと思う。なんだけど、そういう変更ありきで書かれたコードが素直に対象を表現しているとは思えなくて辛さを感じてしまう。それに対して型とか関数型のあれこれを考えるときは、まだ分かる感じがして救いがある。モナドとかが普通のプログラミングに入ってくるとやはりこんがらがってくるのだけど。きっとパラダイムの問題ではなくて、抽象化になれてないとか親しんでないみたいなところが問題なのだろう。

話をDDDを漁っている件に戻そう。オブジェクト指向と関数型のそれぞれで同じようなことを表現しようと思ったときに使う言語機能を比べられて楽しい、ということを言いたかっただけなのだった。こういう見方をしていると、代数的エフェクトやエフェクトシステムのもたらす幸せがもっと浮かんできて本当に欲しくなるし、どんな側面が役立ちそうで、どんなところは妥協して良さそうかが感じ取れるようになってくるような気がする。

Ulauncherを使い始めた。とりあえずはただのランチャーとして使うけど、拡張機能をpythonでかけるのでターミナルの代わりのCLIとしても良いかもしれない。

2023-04-29

Money Forwardの連携を頑張った。あれだけ連携できるのはすごい。 APIを提供しているように見えない機関はどうやって対応しているのだろうか。 RPA的なものを使うのがうまかったり、営業を頑張ったりしている感じな気はする。なかなか便利。

もう少し分析をしやすいと嬉しいのだが…。 BQとかにエクスポートする機能があったらそのために課金してもいい。

CSVを落とせるので、SQLとかで分析することは可能か。 IDまでつけてくれているので、更新時に差分をとるのも簡単そうだ。

今まではChromeの機能を利用していた。便利になる。

2023-04-28

今日は意味論の直感が少し生えたので機嫌がいい。寝て起きたらもう少しまじめに考えよう。

完全に忘れていた。一回捨てた継続渡しスタイルで考えるのがやはり良いだろうという直感のもとでの考えだった。細かいことは忘れてしまったが、少し考えれば再現できる程度だったと思う。継続フレームを生むときと、式を評価するタイミングを明示的にわけるとか、反対にそういうくくりで共通化することでこれまで見えていなかったアスペクトが表面化していい感じになりそう、みたいな直感だった気がする。

alcoholタグの運用

ブログの"alcohol"タグをいつからか使い始めた。当初はお酒に関する記事につけるタグのつもりで使い始めたのだが、この度アルコールが入った状態で書いた記事にもつけることにした。

この記事の"alcohol"タグはどういう意味なのかはクイズにしたらおもしろいだろうか(こういう書き方をすると、お酒が入っているとばれるのだろう)。

2023-04-27

人と語るわけでもなければ、熱狂的に推すわけでもないのに、僕はなにのためにアニメを見たり、小説を読んだり、音楽を聞いたりするのだろうか。アニメはほぼ毎日みるし、小説は人並み以上に読むと思う。漫画もそれなりに読むし、音楽もなんやかんや毎日聞いている。これまでそういう作品の良さをまともに語ったことはないし、積極的に人と共有したりもしない。物語のキャラクターを推したいと思ったこともない。アーティストを好きになることはあっても、エッセイを読みたいとはあまり思わなくて、あくまでその人の作品が好きだからアーティストを好きになっているように思う。

アニメや漫画は単に面白いからだろうか。少なくとも日常的に触れる作品はそういう毛色が強い気がする。たとえば、鬼滅の刃やかぐや様のアニメはおもしろいから見ている。その一方で、ゾクゾクする経験があって、それが好きだという側面もある。たとえば91daysは面白かったがそれ以上にゾクゾクしたから記憶に残っている気がする。 Fate heaven’s feelやヴァイオレット・エヴェーガーデンも僕にとってゾクゾク系。

音楽はゾクゾクするのを求める気持ちがより強い。Co shu nie には特にゾクゾクを求めている。その他アニソンやボカロ、ピアノ、その他jpopも、そのときの気分にあったゾクゾクを求めて聞いている気がする。横道だけど、900STを買ってから飛躍的に音楽を聞くのが楽しくなった。幸いなことにヘッドホンはまだこれしか買っていない。初手でいいものを買う戦略が功を奏した。昨日くらいから電車通勤で音楽を聞くことに良さを見出してしまい、ワイヤレスでノイキャンのついたいいヘッドホンが欲しくなってしまった。

話を戻そう。ふんわり楽しい時間を求めるのと、ゾクゾクするのを求めるのの、2つの欲求があってそれらを満たすためにアニメとか音楽とかを浴びているようだ。それらの限らず、僕の幸せはそのどちらかにあるような気がする。ゾクゾクするほうが刺激的で楽しいので、今後はそっち方面の体験を増やすために意思決定を進めようと思う。

散歩をしてきて、本当に音楽とかに限らない話だと思った。プログラミング言語や数学のことを考えたり、プログラミングをしたり、オリエンテーリングをするときに、僕が一番好きな瞬間でモチベーションになっている体験はやはりゾクゾクしたときのことだと思う。今挙げた分野でのゾクゾクは、ハイになって、理解のぎりぎりのところで間に合ってというか、手が届いて自分のものにできた感覚だ。それに対して音楽とかアニメとかでのゾクゾクは、与えられた気持ち良さですごく心地良い体験だったり、強く共感したり、よくそこまでいった!すごい!みたいな感動から来る気がする。どちらのゾクゾクも僕を幸せにしてくれるけど、なんとなくプログラミング言語と戯れているときみたいなゾクゾクのほうが欲しい気がする。

2023-04-26

おいしいご飯を食べたら感想を残すことにする。お昼に会社近くのご飯屋さんに行く機会が多くなりそうなので、その話が多くなりそう。 Instagramに写真をあげていく。気が向いたらうまく連携する仕組みを考えよう。

月曜日は同期の紹介で焼肉屋さんに行った。お昼から焼肉を食べるのは初めてかも知れない。わさびカルビ定食をいただいた。聞いたことはあったが、わさびと油っぽいお肉は合う。塩とわさびで味付けした肉を焼いて、必要に応じて後からわさびをつけて頂く方式だった。

火曜日は先輩の紹介で中華料理屋さんに行った。パンダレストランというところで、何かが創業100年とのこと。青椒肉絲をいただいた。期待を裏切らない青椒肉絲で美味しかった。定食についてきた卵スープがコーンスープの風味もして不思議だったことが印象的。

今日も先輩の紹介でイタリアンに行った。会社近くのビルの一階にあって、雨の中でも快適でありがたかった。スパゲティをいただいたのがが、細かい名前を見忘れてしまった。そもそも書いてなかったかも知れない。きのことかナッツとかがトマトと合わさったソース(というほど液状ではなかったけど)とがパスタと絡んでおいしかった。自分で料理するときにナッツを使ったことがないので挑戦したい。

毎日おいしいものを教えていただけて幸せ。来年後輩に教えられるように、やはりメモしておくのが良いだろう。

2023-04-16

午前中はChatGPTとかであそんでいた。ブログを書いていたおかげで、AIに食わせる自分の書いた文書に困らないのが嬉しい。

文書から自分の人柄を表現してもらって、それをもとにSNSで使えるアイコンを生成しようとしたのだけどうまくいかない。人柄の表現はそれっぽいのができるのだけど、表現が抽象的になってしまうので、そのままアイコン画像を生成につかうと小学生のときによんだ漫画にでてきそうな怪しくて怖い宗教っぽい画像がでてきてしまう。

インターネット上でのキャラクタに合わせたアイコンを提案してもらえたら楽しくないだろうか?

ちなみに生成できた画像はこんな感じ。改善のしようはいくらでもありそう。

DALL-Eで生成したもので、権利の問題はなさそう (2023年4月16日閲覧):

Starting today, users get full usage rights to commercialize the images they create with DALL·E, including the right to reprint, sell, and merchandise. This includes images they generated during the research preview.

本腰を入れて文書を読むときは印刷して読みたい。なので長いWebドキュメントを読むときは少し辛いし、論文を読むときは(本腰を入れて読むなら)印刷する。本はたいてい物理の書籍を買っていた。印刷するのが面倒だし、書き込みを残しやすいので。

ただ就職して出社するようになって、移動中に文書を読みたい機会が増えた。そんななかで本を持ち運ぶのは大変で、その日に読みうる範囲だけを持ち運びたくなった。そういう経緯でPDFみたいな印刷しやすい形式で購入できる場合は積極的に電子書籍を買うようになってきた。本のサイズが小さければこれまでと変わらず物理で買ってしまうのだが、面積が大きかったり鈍器の形をしているものは電子書籍を買う。

書き込みが残らなくなる問題は解決できていないが、書き込みたくなるほどまじめの読むことは少ないし、そこまで腰を吸えられるのは結局家の中のはずだ。今の生活ではそんなに困らないだろう。余談だが、EoPLを物理でもっていないのは数少ない書き込みが大切な機会を逸しているように思える。

SNSで情報発信するのがあまり得意ではない。もともと会話があまり得意ではなくて、インスタントに情報を発するのが苦手なのだと思う。なにか考えてから言葉にするのにある程度時間がかかるし、言葉にしてから吟味したくなってしまいもする。

お酒が入ると吟味したい気持ちがどこかにいってしまうからしゃべる量が増えるのだろう。

話を戻そう。SNSは思ったことをパッと書いてそのまま発信することを重視したようなUIをしているように思う。たぶんそういうところで苦手意識を持っている。とはいえ情報発信の場としてSNSがメジャーなのは間違いないだろうし、ここみたいなブログはほとんどの人にみられないだろう。ブログを更新したときにSNSにリンクを投稿すると良い気もするが、それはそれでSNSの苦手な部分がブログ投稿に侵食してきそうで嫌な感じもする。悩ましい。

2023-04-10

この頃「詳解システム・パフォーマンス」を読んでいる。チューニングをする機会はないのでツールの説明は読み飛ばしているが、それに入る前の基礎的な概念を勉強している。学部の授業でやった理論的な基礎から復習して、もう少し具体的な実装とか最近のアーキテクチャのこととかまで勉強できている気がする。

今からファイルシステムの章を読み始める。

2023-04-06

今まではレイテンシを減らすために改札をくぐった際の処理をローカルで行い、その後まったり同期する、みたいな方式をとっているという記事をみた記憶がある。

これからそのように凝ったことはしないで、改札機はクライアント、処理は中央のサーバで行うそうだ。時代が変わったのでそれでもいけるとか。なかなか驚きだ。どんなパフォーマンスチューニングやUXまわりの工夫がされているのだろうか。 Suicaの話は何回聞いてもロマンがあると感じる。運用開始が楽しみだ。

昔Fitbitを使っていたのだけど、日々の記録が安定していておもしろくなかったから一年ほどでやめてしまった。最近通知を腕で受け取りたいとか、ランニングのときにつける時計を変えたいみたいな欲求がでてきて探してみると、 Fitbitが良さげだったので再開することにした。Charge5を使っている。必要十分プラスアルファくらいの機能でいい感じ。ただSlack返信機能を誤作動させてしまったので対策したい。ぱっといじった感じでは無効化する設定を見つけられなかった。あとは腕時計をつけなれてなくてうっとうしく感じるのが欠点。

それ以外はばっちり。ランニングの記録もとれるし、通知もしっかり気がつける。ディスプレイの常時点灯を時間をしていして有効にできるので時計としても完璧につかえる。

2023-04-03

オリエンテーリングの人たちと飲み会をした。社会人としての心構え()を教えて頂いた。今日の入社式から頑張って行こうと思う。

こういう書き方をするとふざけているようにしか見えないだろうけど、内心ではそれなりに不安に思っているし、しっかりとしたフィードバックも受け取れたと思う。

今日、明日で良い出会いをできるといいな。

2023-04-02

CPythonの開発者向けドキュメントがとてもよい。今はコンパイラの構成に関する部分を読んでいる。抽象構文木の扱いやメモリ管理の方針など、コンパイラ開発の方針を説明している。ドラゴンブックとかからは得られない、開発手法の知識を得られて幸せ。

好きな言語にドキュメントがたくさんあることは本当に嬉しい。

学生生活の振り返り(技術)

昨日学籍を失って、こんど入社式に出る。学校に入ったり研究室に所属したり、就職したりするときには自分が抱える課題と向き合い、自分の幸せについて考えて進路を決めてきた。これから先はそういう機会が来たことに気が付きにくくなるだろう。

高校生のころ、大学にはいることは周りの雰囲気からして僕の意思が入る余地はなく決まっていた。そのなかで進路を悩んだ。理学と工学のどちらかにしようとは早く決めたのだが、そこからの踏ん切りがなかなかつかず、出願するときにエイヤと決めた。学問自体の面白さは理学に惹かれていたけど、就職とかキャリア的なことを考えると工学がよいのではないだろうかみたいな悩みかただったと思う。結局目先の面白さを優先して理学を選んだのだった。就職はなんとかなるだろうと踏んでいたし、学問の選択でなんとかならないのなら、自分は他の要因でなんとかならない人間であるはずなので、学問の選択でキャリアが狂うことを心配するのは無駄だと結論づけた。

高校生のころは化学が好きで、特に化学反応に惹かれていた。水素と酸素を一緒にしてエネルギーをかけると十中八九水に落ちるのが不思議だと感じた。統計的にそうなるのは受け入れらたのだが、反応の過程でなにが起きているのかがとても気になったし、この好奇心は普遍的なもので、すでに賢いひとが調べているはずなので大学で勉強したいと思っていた。大学で蓋をあけると、学部でやった化学や研究室で行われている研究は思ったよりもぼくにとって腑に落ちない考え方をしていて、そのなかで勉強してもぼくはあまり幸せになれないだろうと感じた。

では腑に落ちるのはどういうときだろうか、みたいなことが気になりだした。これは学部一年の後期くらいのこと。論理学とか心理学とか数学とかに答えがあるかもしれないと思いはじめて、論理学と数学を扱う数理計算科学系に所属することにした。所属のためにはある程度の成績が必要だったのだが、勉強が楽しかったのと、なにより友達に恵まれたおかげで、無事に所属できた。

数理計算の学部の講義(2018年4月から2020年3月)はどれも大体おもしろかった。集合論とか解析の話をしっかり数学者に教えていただけたのは幸せだったと思う。議論を正面からできる相手も複数人いてだいぶ恵まれていた。

学部では、数学の基礎や応用数学の入門や基礎(ORや確率・統計など)、計算機科学を学んだ。どれも専門的な議論はできるほどにはならないが、その手の書籍が怖くない程度には身につけることができた。数理論理学の講義も取り、不完全性定理の証明を追うなどした。これらの学問は現象を表現する数理的な手段を追求するものとしての側面をもち、当初の想定以上にぼくがかかえていた「腑に落ちること」の解釈(?)に影響を与えてくれた。

心理学とか小説とか、数理的とは限らない本を読むこともしていた。そういう本を本で、自分の中で巡らせていた理解を答え合わせしていたのだと思う。なんやかんやあって理解することとか腑に落ちること自体にはある程度の安定した解釈を持てて、実用上困らなくなった。

ここまでが学部3年のこと。学部3年の後期に研究室に体験所属みたいなことをして、輪講みたいなことをする機会が会った。そこで型理論に入門した。それまではプログラミングが好きじゃなかったのだが、プログラミング言語はおもしろいと思うようになった。研究室の先生方がとくに魅力的なことを決め手にして、所属を決めた。

プログラミング言語の理論の勉強、研究はおもしろかった(2020年10月から、研プロを含む)。論文や教科書はいままでで一番熱心に読んだし、人と議論して楽しいと感じた。研究でも小さなものではあるが世の中の知見を広げた感覚は得られた。この感覚は個人として、とても大切なものだと思っている。数学のゾクゾクする定理の証明を理解したときの感覚を、だれから教えられるわけでもなくて、自分で考えて得られたことが嬉しかったし、それを人に共有できる喜びもあった。

プログラミング言語についていると、嫌でもプログラミングのことを考える。この型システムを持つ言語は使いやすいだろうか、どういうふうにプログラミングがかわるだろうか、など。残念ながら僕にはプログラミングの経験があまりなく、その思考の幅が広がらなかった。このままではだいぶ人生損すると思ってプログラミングをがんがんやりたいと思うようになった。修士1年のころにはこの思いはそれなりに持っていた。

はじめの頃はどこから手を出していいかわからずだいぶ迷走した。コンパイラ最適化の実装やインターンへの参加もして、ある程度開発をしたが世の中で行われているプログラミングとの乖離を感じていた。

転機になったのが、mepayでtentenさんが主催して開催されたGo関連の短期インターン(2022年3月)だった。そこでGo言語に触れたことも大きかったし、なによりエンジニアやそれを志向する学生とコミュニケーションを取れたことでいわゆるソフトウェアエンジニアがどんなことをしていて、彼らがするプログラミングを垣間見た。その後友達の紹介でキャディでのアルバイトをはじめて、プログラミングの幅がさらに広がった。

今のぼくの関心事は上手に楽しくプログラミングをすることにある。きれいに書くとか、メンテナンスできるとか、思ったことを自然に表現できるとか、どういう考え方がいい、みたいなことに興味がある。これからはプログラミングの幅をもって広げつつ、上手に表現することを直近では追求したい。さらにそのためのプログラミング言語や環境などについても考えて、形にできたら楽しそうだと思う。

腑に落ちて、自由自在に扱えるようになると楽しいと僕は感じるのだろう。そのための過程にも楽しさを感じるように思う。

2023-04-01

久しぶりにロードバイクに乗った。名古屋に帰ったとき以来かもしれない。3年くらいぶり? 腕が疲れてしまった。姿勢が良くない。町中を走って信号にたくさん捕まったことで、ブレーキをたくさんかけたり、停止からの加速をたくさんしたことが原因かもしれない。荻窪から今の家までの16kmの道のり。

2023-03-31

東大の田浦先生が公開されている大規模ソフトウェアを探るがとてもよかった。 GDBを使って大きなソフトウェアの振る舞いを理解する方法を学べる。 2年ほど前に、こういう資料が喉から手が出るほどほしいと感じていた記憶がある。

今日はこのあと研究のことを少し考え、後輩とお酒を飲む。どちらも楽しみだ。

午前中には入社や書類を仕事をした。 Macのターミナルが重い。今まで使っていた研究室のでも重かったし、新しく使い始めたものでも重い。原因を調査中。アプリを起動するのも重いし、コマンド実行が終了してプロンプトが返るまでのレイテンシもある。

GitHub Actionsの実行結果をDiscordに通知

このブログはGitHub Actionsでデプロイしているのだが、ここしばらくデプロイに失敗したことに気が付かずに放置してしまっていた。

Actions Status Discordというアクションをデプロイの最後に叩くことで、いい感じの通知をDiscordにWebhook経由で送れる。

こんな感じに実行条件を指定しないと、デプロイが失敗したときに通知が実行されないことに注意。デフォルトでは if ${{ success() }} が指定されたものとみなされるとのこと。

Hugoのマークダウン処理をカスタム

HTML文書のheading要素の周りにはidがついていてほしいし、それへのリンクは手軽にコピーできて欲しい。その点Googleのドキュメントはとても好き。人に文書コンテンツを渡すときにこちらの意図がURLで表現できるし、そのリンクを踏んだ側も見るべき箇所にスムーズにたどり着ける。このブログを書くのに使っているHugoでも同じことをした。

このコミットのように、headingのHTMLへの変換を定義する

示したコミットではaタグで囲むだけでなく、heading levelを増やしている。 Hugoではタイトルをh1にするにもかかわらず、マークダウンの#h1にする。そのせいで、本文を書くときは##から始める必要があって気持ち悪い。この気持ち悪さを解消するために、マークダウンのheading level+1をhtmlのheading levelとしている。

2023-03-29

今日はアルバイト先のキャディの方々に送別会を開いていただいた。一年弱お世話になった。あのころはいろんなプログラミングの経験を積みたくて入社し、結果としてキャディのあの部署(秘密なわけじゃないけど、名前がよく変わるので明言しない) じゃないと積まなかっただろう経験を積ませて頂いたと思っている。僕はだいぶ一緒に働いた方々に恵まれていて、こんなにぼくに都合の良い環境でいいのだろうかとなんど思ったかわからない。機会があれば(つくれれば)また一緒にぜひとも働きたいと思っている。それまではいわゆる大学で教わる「お行儀のよいプログラミング」しかしらなかったのだが、仕事を通じてどのように僕の仕事に価値をつけるかを意識するようになった。

例えば研究でできないことがわかったと共有することはひとつの貢献だと教わって言葉ではわかっていたことを、キャディでの仕事を通じて、実際にアウトプットとして共有できたし、他人ができないといっていたことをぼくにとっての利益として活用する経験を得られた。僕のキャリアを考える糸口にさせていただいたし、何人かの方々には相談にのっていただいた。そもそも相談する機会をいただけたこともありがたい。一重に感謝している。すこしでも皆さんに僕が貢献できたのなら光栄だと思っている。

送別会では、スポーツ羊羹とキャラメルを頂いた。エネルギーが凄そうなので、日本のどこにいても駆けつけられるだろうと思う。みなさんお世話になりました。ありがとうございました。

2020年から(学部は2017年から)通っていた東京工業大学を卒業した。晴れてぼくはmaster of scienceとして認めていただけた。心残りは多々あるし、これからもやることは山積みだが、一つの節目は迎えられたのだろう。これからは積み残しと社会でのよしなしごとに精進する(心持ちは変わらないだろうけど。ぼくは自分と他人の、幸せと自由を追求し理解することをライフワークとするのだろう)。大学でもぼくは人間関係に恵まれていた。友達にも恵まれたし、先生や先輩、後輩にも恵まれた。みなさんの優しさのおかげでいままで楽しく生きてこれたと思うし、今の僕の人格があると思う。もちろん僕の至らぬ点は僕の責任である。それでも僕が人に感謝できるのは周囲の人に優しくしてもらったからだと思う。これからも人の優しさを享受しつつ、それ以上に人に優しくしていくことを目指す。そして、優しさの価値観を洗練させていきたいと思う(たとえば厳しいことを受け入れられるように伝えるとか)。

僕の大学での生活は研究に限らず他者との交流に強く幸せが依存していた。学部のころはオリエンテーリング部での活動や、学科の友達、一年生の頃からの友達との交流でいろいろなことを構成してきた。それとは独立して本を読んだり一人で考え事をする機会もあったが、それは人との交流と必ずしも独立していなかったと思う。僕の中で際立っている人間関係はあるが、ここでは明言しないでおこう。研究で3人、一年生からはひとり、部活はいろいろ、その他はインターンやアルバイトという感じ(今の僕にはわかるように表現したつもり)。僕が他者にどんな影響を与えたかはわからないが、たまには思い出してもらえたら嬉しいと思っている。

卒業に際して旅行と飲み会をした。いつものメンツや久しぶりの人たちと互いの卒業とこれからの人生を祝福した。楽しいし、彼らとずっと一緒にいたいと思う。

僕が所属した(所属している)増原研では、この時期に先輩が新入生に対して自身の研究内容を紹介する。僕も自分がやってきた研究を紹介した。僕自身も学びがあるし、新入生は無知の知を得られるのだろう。今日のミーティングが少しでも彼らの糧になれば幸いだ。次にいつ彼らと交流できるかわからないが、話したりアウトプットを観測するのが楽しみだ。

4月から入社する会社(秘密というわけではないが、まだ入社していないので明言しない)で最初のころはオフスカジュアルとお達しを受けた。オフィオスカジュアルを一ミリも理解していなかったので、研究室の先生方や後輩、 お店の店員さんに質問しまくり、ある程度落ちつけた。感想としては、スーツを指定されたほうが楽だなと思っている。それでも僕はいろいろな有識者の「オフィスカジュアル」を研究した上で出社する。最高のオフィスカジュアルで望むのご期待ください。

2023-03-21

今日は久しぶりに自転車をいじった。しばらく乗っていなかったのでタイヤとチューブを交換して、移動のために外していたリアディレーラを取り付けた。チェーンオイルを注せばある程度の遠乗りはできるだろう。

ライトとヘルメット、夏用のグローブを買わないといけない。アイウェア(なんていうんだったか)も必要か。自転車はお金がかかって良くない。でも深夜に自転車で走るのが一番どきどきするし、ランニングとかでは使わない筋肉を使う楽しさがある。それなりに遠くにいけるのも良いが、関東は広すぎる。遠くまで来た気になるにはだいぶ頑張らないといけない。箱根を越えるとだいぶ来た気になるが、それ以上に大変。

2023-03-19

最近AIが流行っていて、精度がすごいと話題で、生活が多かれ少なかれ変わっていくのだろうなという感じがする。ああいう機械学習ベースのAIは学習で直感を鍛えて、それに基づく出力をするものだと僕は解釈している。人間が頭を使うときには直感を論理とか議論で検証して、主張の穴を見つけて改善するサイクルを回すはずだ。今の機械学習っぽいAIは直感で得た主張を論理で解釈しないだろう(NECがそういうことを考えていそう。それができればAIはもっとつよくなるはずだし、そういうAIを見てみたい。

実現するためにはAIの入出力に使う「言語」に解釈を入れることと、それをもとにして論証を行うことが必要だろう。今のAIは抽象構文木を操作の対象にしていて、それを意味を解釈するようにしたらいいんじゃないかという想像だ。

今ある論理が世の中の事象を扱うのに十分かはわからないし、多分結構不足しているはずだ。機械学習AIのための論理体系の研究とかあったら楽しいだろう。NIIとかでやってないだろうか?

おととい届いたBig Peatがとてもおいしい。明日の研究室飲み会にもっていこう。ちょうど二年くらい前に部活の先輩に勧めていただいたのだが、懐具合の問題で飲めずにいた。少し無理してでも飲んでおいたほうが良かったかと思うくらいには好き。ストレートで飲んでもおいしいし、ハイボールにしてもおいしい。天才か? ぼくはスコッチウイスキー?が好きなのかもしれない。

学部2年のころ、確率論基礎の試験の前日にウイスキーを飲む会に誘っていただいたとき、ラフロイグ・ロアを味見させていただいて半分感動したのを覚えている。あのころは二十歳になりたてでお酒のおいしさは今よりも分かっていなかったのだが、それでもいいかんじなことは分かった。それからラフロイグ・ロアには縁がなかったのだが今気になっている。数量限定なようで、毎年11月ころに発売されそうな雰囲気がある。今もアマゾンで売ってるが、転売価格に見えるので時期がくるまで我慢しよう。

ちなみにBig Peatと一緒に勧めていただいたジョニーウォーカーのグリーンラベルはすでに飲んでいて、 やはり好きな感じだった。

2023-03-17

ホットクックで鶏大根を作った。大根に火がうまく通っていて本領発揮を感じた。

注文していたBig Peatが届いたので、走ってから飲もうと思う。楽しみ。

クラス指向のOOPがわからない。クラスを作ってそのインスタンスを量産するようなプログラムを書いた経験がないからだろう。

そもそもクラスインスタンスを作った経験が乏しい? 文字列みたいな基本的なオブジェクトや、 REST APIのクライアント、イテレータとかくらいのデータ構造くらいは確かにクラスが必要でお世話になっている。

インスタンス変数を定義するのが苦手なのかも? コンパイラみたいなデータ構造に対して一回処理をしておしまいなプログラムでは、そういう一回の処理をメソッドとして定義するのが不自然? そういうコードを書いているときに、クラスに押し込もうとするとインスタンス変数がモジュール変数に見えてくる。これは別に問題ないか。

なにがつらいのかわからなくなってきた。

2023-03-14

TODO: 割と眠いときに書いたのでまとまっていない。気が向いたら書き直す。

日常のおしゃべりではなくて、仕事や練習、議論の場でどれくらい「優しく」するべきかは悩ましい。真剣に、最短でコミュニケーションするといわゆる優しさが欠けがちなのだが、いわゆる優しさを優先してコミュニケーションしていると本来の目的が疎かになる。

例えばコードレビューでイカれた名前をつけ、グローバル変数を好き放題使っているコードを出されたときにはそれらを指摘して改善に導くのが本来の目的だ。コードのまずい点を明確に指摘して、それが及ぼす悪影響なんかも添えると親切だろう。さらに改善案を示して、その変更を採用した場合の影響を示すのも有効だと思う。ただ、こういうことを最小限のコミュニケーションで提示すると、レビュイーは自分がバカであると感じたり、最初からレビュワーがやればいいではないかと感じることが多そうだ。それを避けて、正面から改善のために向き合えるように「優しさ」を発揮して、生じるのが今回議論したい優しさ優先のコミュニケーションだ。

ぼくは優しさ優先のコミュニケーションはいらなければそれに越したことはないけど、一般的には必要なものだと思っている。不要な情報は発せられないことは当然望ましいけど、モチベーションみたいなものは大切で大事に扱わないといけないだろうから。

優しさのない、そっけない態度で議論とかを振られると、そのときむっとすることはあるが、あとから信頼みたいなものを感じて嬉しくなるのはぼくだけだろうか。ある程度信頼している相手にそういうそっけないやり方で議論を振ったときに、向こうに分かってもらえず少し嫌われたことがあってちょっとしたトラウマになっている。

これを読むと、僕は冗談とかが嫌いな人間に思えるかもしれないが、そんなことはない。議論に冗談が挟まるのは割と好き。でもその余裕がないときとか白熱したときとかにダイレクトに主張を交換できる関係は幸せだという認識がまずある。その上で、まだそこまで至っていない関係では、コミュニケーションを工夫して補うのがいいんじゃないか、という考え方をしている。

これを書こうと思ったのは、優しさを脇においたコミュニケーションに反感を買う様子を目の当たりにしたからだ。そこで気づきを得て、内容をぼかして抽象的なことを書いてみた。だれも悪くないし、みんないい人なのであの環境のもやもやを解決できるといいなと思っている。

2023-03-09

昨日PPLから帰ってきた。初めて対面で学会に参加した。対面だと変な疲れ方しないし、コミュニケーションを取りやすいのがいい。ポスター発表が特に楽しかった。

研究室の人とバーに行った。初めてのバーだった。初めて飲むたぐいのお酒を飲んだし、初めての飲み方をした。僕はやはりウイスキーが好きなことがわかった。

ふんわり想像していたことを2つ実際に経験できたわけで、それぞれ期待を上回る部分や下回る部分があったのでメモ。学会は思ったより楽しいし、普段合わない人に話が意外と通じる。とはいえ常に話が盛り上がるわけではなくて、お互いにある程度深い話ができないとそんなに盛り上がらない。話がわからないと全然盛り上がらないのは結構強く感じた。研究分野に流行り廃りができるのはこのあたりが大きな要因なのではないだろうか。そして友達はそうそう簡単にはできない。アウトプットがベースにある交流の積み重ねが必要なのだろう。

2023-02-27

Gentooが入った。基本的に待っているだけではあるのだけど、それがなかなか大変。パッケージを一瞬でインストールできる幸せに気がついた。割とすぐにUbuntuに戻るかもしれない。今はnodejsとtexliveをコンパイルしている。未だかつてなくCPUが仕事をしている。かわいそうに。とはいえportageに触れるのはなかなか楽しい。

mozcの設定はこのブログのメモに助けられた。過去の自分に感謝。

(追伸) Gentooを入れるためにssdを付け替えたのだけど、そのときにじゃまで外したCPUクーラーがうまくはまっていなかった。このPCはまともな冷却なしでもろもろをビルドしていたのだ。本当にかわいそうなことをしてしまった。ずっとうるさかったのでさっさと気がつくべきだった。今はこれまでがうそのように静か。

2023-02-26

Golangをすごく久しぶりに書いた結果、構造体の要素がコピーされることを忘れておりデバッグに時間を溶かした(コピーした構造体のフィールドを書き換えて、コピー元に変化が起きると思い込んでいた)。最近はPythonやTSか、関数型言語ばかり書いていて、Cっぽい構造体の扱いをしていなかったので忘れてしまっていたのだろう。忘れていたけど、CやGoのように構造体の要素をコピーする意味論は好き。直感的というか、明示的にポインタを表現することが好きなのだろうか。

2023-02-24

最近は時間とベーシックな元気が足りない。この時期にやりたいこと/やるべきことがたくさん押し寄せてくるのはどうしてだろう。変わり目だからか。これまでぼちぼちやっていたものを、みんなが足並みをそろえて一段落つけようとするから忙しいのだろう。意識的に間引く必要があるかな。

2023-02-21

昨日まで4日連続で人とご飯を食べた。いろんな人と話せて楽しかった。今日は研究室に行くし、昨日はオンラインでのコミュニケーションで別のコミュニティの人と話したので、社会性週間だ。てんやわんやしている。(追記)研究室ではお土産を持ってきてくれた人がいて、お茶した。だいぶ話し込んでしまった。

ご飯がおいしかったのは、昨日のカレー屋さんで、カレーコース?を食べさせてもらった。行く前のイメージはカレーを何種類も食べるカレーバイキングみたいなものを想像して楽しみかつ戦々恐々という感じだったのだが、蓋を開けるとカレーは一つだけでそこにたどり着くまでに野菜や肉を出してくれた。その後にアイスとチャイを出していただいた。ビールやラッシーが飲み放題で、ラッシーを浴びるように飲んだ。あんなにラッシーをたくさん飲んだのは初めて。こういう料理は食べて美味しいけど家で作る感じではないな。お店の味と言う感じがした。

昨日はご飯がおいしいのも嬉しいポイントだが、初めての人たち(それも楽しいひと)と話せたのが嬉しかった。社会は大変だということを教えていただいた。宿題でバーキン(バーガーキングではない、パーマンの音程)をググったのでメモしておく。値段の桁に驚いてしまった。「一生ものとして日常使いにこそ活躍できるバッグです」と紹介されている。煽りとか皮肉とかではまったくなく、どういう日常をおくるのか気になる。ちなみに、バーガーキングは Burger King でバーキンは Birkin なので、英語表記では少しずれる。惜しい。

昨日以外は学科同期や部活同期とご飯を食べたのだった。餃子のタレをジントニックに入れるとおいしくない。日本酒にわさびをいれるのは美味しいらしい。

Linuxシステムプログラミング(アフェリエイトリンク)を読み始めた。 Linuxでのファイルとプロセスについて説明されている。これまでIO周りのバッファとかよくわかっていなかったけど、ここまでの読書でスッキリした。こういうことはただの知識な感じがして、学校で教えられても忘れそうではあるのだけど、必要になったときに勉強する戦略が通じるとは思えない。必要なときに必要だと気がつくのは難しそう。こういうのを教養というのだろうか。だとしたら学校で教わって覚えておくべきなのかも知れない。

OSとプログラミング言語の間のところを勉強している感じがして楽しい。このあたりが分かれば、手を出せる幅がだいぶ広がるんじゃないかと思っている。システムプログラミングをゴリゴリやるのも楽しいかも知れない。ゴリゴリやらないにしても、ソフトウェアを作るときの一つの課題の解決策としてシステムプログラミングを常に選択できるようにしたい気持ちがある。

仕事に絡めたいかは別にして、パソコンの操作性を上げたい。キーボードの設定・設計やIME、アプリケーションの(ショートカット)キー設定とかで、飛躍的にパソコン操作が快適になるはずだ。難関はブラウザやSlackなどのGUIアプリだろう。

Fluent Pythonと言う本が面白そう。最近英語で第二版がでたようだ。

2023-02-16

Jane Streatのテックブログで単体テストの書き方が紹介されていた。記事ではその手法をexpect testと呼んでいて、プログラムを書いてその結果を確認してokだったら受け入れる、というものだ。受け入れた結果はソースファイルに保存されて、その後は単体テストとして機能する。

IPythonとかで書いて、試して書き直すループを繰り返し、良さげな結果が得られたら良しとするスタイルの開発の改良版だと思える。 TDDの人が見たら気になる?のかもしれないが、記事ではTDDについても言及していた。

僕はIPythonを最近使う機会が多くて気に入ってしまっているので、expect testも良さげに思えた。昔学校の授業で単体テストを書かされて飽き飽きしていたのを思い出した。

  • Jane StreetはなんでもOCamlで作っていてすごい
  • 動作のGIF画像がSpacemacsで動いていた
    • 昔Macで動かしていて、もっさりしていたのといろんな言語に手を出す時期で拡張が面倒でVSCodeに移行してしまったのだった。今はPCのスペックが上がったので戻ってもよいかもしれない。言語はまだfixできていないが(一生fixしない?)。
  • この記事以外のブログポストもなかなか面白い(link)

2023-02-15

Real World OCaml FUNCTIONAL PROGRAMMING FOR THE MASSESを読み始めた。 Practicalで面白いと伺って、目次を見たら実際そのようだったので読んでいる。 3年前にプログラミング in OCamlで入門したのが懐かしい。 Real World OCamlはOCamlらしいOCamlの書き方を教えてくれている感じがする。まだ最初の方なのでレビュはできないが。

最近出版された本ということもあり、サポートページやそれぞれのツールのREADMEに従えばすんなり環境構築できた。プラスアルファでduneを使うことにしたのだけど、その使い方が公式ドキュメントを読んでも不思議な感じで苦労したからメモしておく。

  • dune init project <name>でプロジェクトを作成
  • dune buildでmainをコンパイル
  • 依存を加えたいときは、該当するduneファイルのlibraliesフォームと、dune-projectdependsフォームに依存ライブラリ名を追加する。そのうえでdune buildすると処理してopamファイルを上書きしてくれる。dune-projectに追記しなくてもコンパイルはできるが、opamファイルが更新されない。IDEはopamファイルを見ているようなので、linterのお世話になるためにdune-projectにも書き込む必要がある。

2023-02-12

ドメインを取得して、サーバを借りた。もちろんムームードメインとロリポップを使っている。

ブログのドメインを独自ドメインに変更したらhttpsが無効になってしまった。読むときに怒るブラウザいるかも知れないのが怖いけど、お金がかかるし面倒なのでこのままにしておく。 httpsを有効にした。お金はかからなかった。ロリポップが無料で引き受けてくれた。感謝。 Hugoのbase URLの設定をし忘れて、CORSとかで怒られたのでメモしておく。

サーバへのデプロイを初めて行った。クラウドサービスをずっと使っていて、サーバにファイルを上げるとかその前にビルドするみたいな作業は初めてだった。今日は独自ドメイン記念日であり、デプロイ記念日でもある。デプロイ記念日は微妙か。サーバで動くプログラムを走らせたりしてないし。

そういうわけで今日は独自ドメイン記念日ということにしよう。

2023-02-10

髪を切ってもらった。2ヶ月くらい切っていなかった気がする。今回は引っ越してから初めて近所で切ってもらった。なかなかいいかんじのお店、 店員さんに巡り会えた。嬉しい。

修論発表お疲れ会を学科同期とした。九絵でいいご飯(九絵定食なめろうつき)をたべてカラオケ、ビリヤード、ダーツをして解散。卒業すると会う頻度が今よりぐっと減るのだろう。

2023-02-08

昨日、修論発表をした。発表する部屋が想像より大きかった。発表の内容はなかなか未熟だったけど、あれよりいいものを作る時間があったら研究をもっと進められると思うので、発表の準備作業に改善点はあまりないと思う。

これからも研究を改善していくのだが、方針を変えるのが良いだろう。これまでの方法では一つのステップがいろんな概念と絡まりすぎていて理論的に難しい。ラムダ抽象はラムダ計算ではきれいなだけで、僕たちが扱うシステムでは素直な言語機能ではないはずだ。ラムダ抽象にはやりたいことが詰まっていて魅力的な目標だけど、今はぐっとこらえて問題を分割するのがやるべきことだと思う。

値としてのデータ構造の表現が問題になるだろう。一口にデータ構造といっても、ヒープ領域とポインタで表現するか、TaPLのレコードのような値を扱うかでだいぶ雰囲気が変わってくる。どちらをモデルしたいかで決めるのが良いのだろうと思う。

ここまで書いたが、僕と一緒に研究している人以外はなんのことだかわからない内容になってしまった。目を通してくれた人には申し訳ないが、他に適切な放流場所もないのでこのままブログに流してしまおう。

ウイスキーの甲州 韮崎を買った。スッキリしてる。おいしい。ウイスキーを飲みまくる飲み会をしたいわね。おいしいものからそうでもないものまでいろいろ飲み比べたい。

2023-02-03

自分のご機嫌をとるのは難しい。睡眠やエネルギーが足りていないだけのこともあれば、体を動かしていなくてつらいこともある。気持ちが足りないこともあれば、気温が低いことが原因で機嫌が良くないというか、パフォーマンスがでないこともある。他にもモニタの見すぎとか眼精疲労みたいなものが原因なこともある。

それぞれを回復する手段はある程度もっているのだが、座って作業をするなかではどれが原因なのかをなかなか判断できない。すべてうまく回すような、余裕を持った生活をできれば良いのだが、そうも言ってられない時期はどうしてもある(今がそう)。

特効薬はおそらくなくて、余裕をできるだけ長くもてるように日頃から負荷分散に務めることが肝要なのだろう。

2023-01-24

この前みそしるを作ったのだけど火にかけたことを忘れて2,3時間放置してしまった。水分は完全に失われ、具のもやしとは白菜が完全に炭になっていた。幸い火事とかにはならなかったが、炭の匂いがなかなかとれない。

そこで人生初の消臭力を買って置いてみた。またたく間に匂いは和らぎせっけんの香りが心を安らかにしてくれたのだが、次第に残った炭の匂いと調和してタバコくさい、芳香剤の効いた車の匂いになってしまった。なかなかうまくいかないものだ。

2023-01-15

カタログギフトで頂いたお茶が届いた。煎茶の詰め合わせで、いい感じの缶に入っている。 300gもあるのでうまい運用を考えたいところだ。研究室で飲むか。

メーカが紹介しているお茶の入れ方をメモしておく。

2023-01-13

鼻セレブを使い切ってしまった。

熱も引いてるし喉の痛みも大体おさまったのだが、鼻だけがおさまらない。いいティッシュ買い足さないと、週明けには擦り切れてなくなっているかも知れない。

家に引きこもっているので、一人で議論している。なかなか楽しいし、進捗も生まれやすいように感じる。

議論は仮想的に二人で行っていて、チャット形式でおこなう。先に喋りだしたほうがaで、もう片方がbだ。 aがアイデアを提案して、それにbがツッコミを入れることが多い。 aはツッコミから防衛したり、主張を取り下げたりする。防衛したら、bは確かにそうだねとなるか、さらなるツッコミをいれるのが定番の流れだ。

とはいえ、aが防御でbが攻め、みたいなふうに固定するわけではなく、bが自説を振りかざすこともあるし、 aの主張を補助することもある。逆もまたしかりだ。

チャット形式にすると、途中で疲れて中断しても復帰できるのがいい。議事録もとれているのでしばらくたってから見返すこともできるかもしれない。とりあえず議論の結論がでたので、一息ついてから作業に取り組もうと思う。

2023-01-12

36.8

風邪は大体治ったように感じるのだが、鼻水だけが止まらない。おかげで鼻セレブを手放せない体になってしまった。パッケージがうさぎなので縁起物である。

2023-01-10

Value independeceという言葉をVIMPL 2023のcall for papers経由で知ったのだが、それがどういう概念かを説明するドキュメントは見つからなかった。頑張って検索すると、VIMPLの組織委員であるDave Abrahams (twitter) (GitHub)のCPPCon2022での公演を見つけた: Value Semantics: Safety, Independence, Projection, & Future of Programming - Dave Abrahams CppCon 22。 Valueが指すのはC++のvalue semanticsのvalueらしい。一年くらい前にちらっとvalue semanticsを覗き見ていいなと思った気がする。ここで再会できて嬉しい。公演はすごくよくて、value independenceが表現したい概念がなんとなくつかめた気がする。僕の理解が追いついていないのでそのうち復習しよう。 value independenceを説明するだけの公演ではなくて、示唆に富んだ内容に思えた。彼が今度日本に来るなんて最高だ。3月13-17は空けておこう。

最近研究で値と参照のことを考えていたのでちょっと親近感を覚えたというか、勇気やモチベーションみたいなものが湧いた。

関連リンク:

2023-01-09

念願かなって時計を壁にかけた。今までは机の上に置いていたのだけど、なにかの拍子に落としたり、モニタを見るときの邪魔になったりしていた。

壁にかけると邪魔じゃないし、位置が固定されるのが良い。それに時計が見える範囲が広がったのも嬉しい。これまではベッドからは時計が見えなくて、朝起きたときは何時かわからなかった。これからはすぐに時刻がわかる。だから何というわけではないけど。よかったね。

体温は37.1度だった。あんまり下がりませんな。

2023-01-08

体温: 37.1

かぜが治らない。なんなら体温が少し上がっている。熱は感じないけど、体がだるい感じがする。背中や腰が痛いというかしんどい。部屋が少し埃っぽいので今日は掃除をする。来月の頭までもつくらいに、がっつりきれいにしたい。

夜になった。体温はあまり変わらず36.9度だった。だけど体は結構楽になった。部屋をきれいに掃除してご飯をしっかり食べた。作業も少しできたので幸せ。

2023-01-07

体温: 36.7

かぜが悪化している。今日の昼に病院に行った。引っ越してから初めて病院に行ったのでどこに行こうか迷ったけど、見てもらった病院や薬局の方が良い方ばかりだったので良かった。コロナとか肺炎とかではなさそう。たくさんもらった薬を飲んでさっさと調子を取り戻したい。

体温計を持っていなかったので買ってきたのだが、最初検温に10分かかるモデルを買おうとしており、レジで店員さんが指摘してくれた。違うモデルを案内してもらって、少し高いけど15秒で測れるモデルを買うことができた。混んでいたのに優しくしていただいて、二重でありがたい。

このあたりは物価が高いのは悪いところだが、民度も高いように感じる。献身的というか、振る舞いの端々に人の幸せを願っている節を感じる。

2023-01-06

昨日の朝からのどが痛い。それ以外の症状はないので単に乾燥とかにやられただけだと思う。とはいえ確証がないので学校にはとりあえず行かないようにしている。おしゃべりと作業を学校でしたい〜。週明けにたくさんたのしい議論ができるように(それをモチベーションにして) 研究とかの作業を進めておこう。

2023-01-05

年末にPython向けのGoogleのスタイルガイド を読んでからPythonを書くのがとても楽しい。知らなかった言語機能やその有効な使い方とその理由をコンパクトに説明してくれる。言語機能の使い方は補足程度で、機能そのものは知っていたりググって理解することを読者に期待していそう。言語に入門したあと、息を吸うようにかけるようになるまでの間を埋めるのに役立ちそう。

その他の言語についてもGoogleはスタイルガイドを公開しているので折をみて目を通したい。

UbuntuでPDFを印刷するときに拡大縮小ができなくて困っていた。たまたま巡り合ったこの記事のおかげで解決した。

2023-01-02

名古屋の地下鉄に久しぶりに乗った。桜通り線は電車がホーム来る前後の音楽や音がいい。特に構内放送が始まる前の音楽がかっこいい。ギターっぽい少し高めの音を出す弦楽器で奏でられた5秒くらいの曲が流れる。

今日は栄まで行ってきた。正月の栄という感じだったが、そもそも正月に行くところではないような気がする。来年は熱田神宮や伊勢、東京のお社に行くと楽しいだろう。思いきりまったしたい。

帰りは散歩をしたい気分だったので、少し遠いけど歩いて帰った。僕は走るのが好きなのだが、体を動かすというよりぶらぶらするのが好きなのかもしれない。歩くよりも走るスピード感が好きだし、自転車とかでは交通ルールに縛られるから何にしても走るのが好きではある。

明日から学校には歩いて行こうと思う。走って登下校は大変なので一回でやめたのだが歩いて登下校なら特に無理もないし楽しいと思う。

今日はいとこ3世代が実家に来るので楽しみ。

P.S. 一緒に遊んだ。20こくらい離れているが昔僕が楽しいと思ったことを割と同様に楽しんでいたようだ。子供(男の子?)はそんなものなのか、親戚だからなのか、それともたまたまだったり僕の思い過ごしだろうか。何にしても楽しかった。

プロファイラに詳しくなりたいし、使い勝手の良いものを実装したい。最適化をする前のターゲットや目標、成果の見積もりをするためにプロファイラが必要だ。一口にプロファイラと言ってもその対象はいろいろあるわけでこれを使えば万事解決みたいなものはないだろう。プログラミング言語に向き不向きがあるようにプロファイラにも向き不向きがあるはずだ。プロファイラの使用や設計には広いCS領域についてある程度の深さの知見が必要だろう。結構楽しめるはずだ。絶対楽しいだろうしやりがいもありそう。手始めにPython, Java, C++あたりのプロファイラやプロファイリングテクニックを学ぶのが良いだろうか。

2022-12-30

昔聴いていた音楽を久しぶりに聞きたくなったのだがSpotifyで配信されていなかった。ローカルにデータがあったのでそこからSpotifyかVLCとかで使えるようにしようと思ったのだが、ローカルデータのファイルフォーマットが変だったりディレクトリ構成がイマイチで体験が良くない。

そこでメタデータをもとにフォルダに振り分けたりフォーマットをmp3に変換するスクリプトを書いた。量があったので並列化したところ割といい感じになった。

せっかくなのであとで使いやすいようにCLIを調整した。コードをGitHubにアップロードしてある。 できることや使い方はreadmeを参照すること。

ffmpegはすごいし、Pythonもすごい。

型ヒントに関する記事で欲しい要点がまとまった記事 と出会ったので共有。 Enumはしらなかった。これまではLiteralとUnionでしのいでいたのでありがたい。

最近Pythonを好きになりつつある。4月からキャディで使っていた下地と、最近学んだ人権のための機能のおかげ。

別に職を探しているわけではなく、気になった人のプロフィールを見たかったので。スキルをテストして、パスするとバッジとして自慢できる機能がある。 OOPで試したらパスした。やったね! クラスベースのOOPLに関する知識を見ている感じだった。

世の中にはいろんな機能があるのだなあという感想。自己申告でスキルを履歴書とかに書くよりも客観的な感じがして良いかもしれない。

公開したいと思ってきたのだけど、スパムが嫌でずっと避けてきた。 Base64でエンコードして公開するアイデアを思いついたので試しにやってみる。このブログの自己紹介ページに載せてみた。この方法の問題点は面倒なことと、なれてない人には難しい点だろう。

それなりに頑張らないと収集できないだろうからスパムが来てもどんなところがそんなに頑張ったかを知れて楽しいだろう。

風の噂でこの方法は対策してあるソフトが存在すると聞いた。それではつまらないのでもう少し凝ったことをしてみた (該当コミット)。

Base64でhtmlにアドレスを書いておいて、JSで一定時間後にhtmlに書き込むアイデア。伝えたい人にとって楽になるのが何より良いし、クローラのタイムアウトにある程度期待できるのも良い。無限に対策と不安点は出てきそうなのでこのくらいにしておこう。

実現のためにHugoのショートコード機能を使った。もっと楽しい使いみちがあるようなので気が向いたら導入する。

2022-12-28

就職先のイベントに参加してきた。想像以上にたくさんの方に認識していただいていた。僕が初めて認識した方や、ネットで認識していた方、面接などでお世話になった方から、たくさんお話をうかがえて楽しい時間だった。みなさん、ありがとうございました。

入社が楽しみ。入社するまでに学校でのやり残しを作らないように気合を入れて頑張ろう。

Python bug trackerに議論があった。

Py_DECREFは参照カウントのオペレータか。初めてPython VMのソースを垣間見たけどなかなか面白そう。

2022-12-21

最近ちいさな言語処理系(検証器)をPythonで実装している。学校の講義でそういう講義があって、好きに言語を選んでよいということだった。参加者の間で関数型言語がメジャーな感じではなかったのこともあり、怖いもの見たさでPythonを選んでみた。ちなみに今回の実装は性能を問題にしておらず、動くことが大切。

Pythonをつかうだけでも少しドキッとするのだが、 ASTとかにクラスを使わないとどうなるかを試している。クラスとかADTを使いたくなるときはすべて辞書かタプルでゴリ押す実装をしている。

意外となんとかなるけどしんどさはある。結局ADTを自分で書いているだけなので、型システムという友達を失っただけかもしれない。クラスを使うのと比べてどちらが楽かは疑問。流石にクラスが楽であって欲しい気はするけど、 expression problemに思いを馳せるとクラスよりADTの方が今回の処理系の実装に向いている気がする。

文字列処理をググりやすいのはPythonのよいところだと思う。そもそも文字列処理を僕がPython以外でほとんどやったことがないだけかもしれないが。

今のところ、型システムがなくて絶望したことはない。(ほしいとは常に思うが)

型システムがなくて絶望した。 Dataclassを使うことにした。抽象化の機構はやはり欲しいことがわかった😇。

2022-12-18

昨日は服を買いに行った。引っ越すときに薄々気がついてはいたのだけど、冬に着る上着が一枚も手元になくてこのままでは凍えて外出できなくなるところだった。

ずっと服を買いに行くことに抵抗があったのだが、最近薄れてきた。そもそも大学に入るまでは基本的に自分で服を買いに行くことがなかった。服は親が買ってきてくれたり、一緒にお店に行ってなんやかんや言いつつ選んでもらうもので自分で買いに行くという概念が未知ですこし怖かったのかもしれない。大学生になると一人で服を買いに行く機会がでてくる。量販店にいってよくわからないという感想をもって結局なにも買わずに帰ってくることがしばしばあった。お金の使い方がつかめていなかったことが原因だと思う。

お金に困っていると感じたわけではなくて、自然にお金を出し渋っていた。無条件にお金をあまり払わなくて済むことが正義だという価値観があった。なのでよさげに見える服があっても多少高いと避けてしまってなにも買えなくなっていたのだ。話がそれるけど、高い服がいい服に見えていたということはずれた価値観は金銭の感覚だけで審美眼みたいなところは世間とあっていたのかもしれない。

本やご飯、パソコンやネット環境とかにお金を割いて幸せになる経験を通じてお金の使いかたを学んだ気がする。昨日買った服はこれまでの感覚からすると高くて買わないようなものだったけど、ここ何年か冬が寒くて悩んでいたのがある程度解決できると思うと嬉しい。何より服自体を気に入っている。

服の話と見せかけたお金の使い方の話でした。 2年ごとかに見たら愚かな考えに見えたりするのだろうか。

ここ2、3年の間で価値観が変わってきた。もうしばらく変化は続きそうなので楽しみにしている。

お金を使う話を書いたので、お金を稼ぐ話も考えてみる。当分の間は僕がお金を求める動機は先程書いたような生活水準をあげることでありつづけるだろう。気持ちとしては水準をあげるというか、自由を増やすことが達成したいことで、リッチな暮らしをしたいわけではないが、もともとお金を使わないような制約を精神的にかけて暮らしていた気がするので、自由になることとリッチな暮らしをすることは同じ向きを向いているのだろう。

なんてリッチな暮らしへの移行は一過性であるように書いたけど、そうでもないかもしれない。基本的にお金は価値の代替で、価値をアウトソーシングして自由を求めているのだから僕のお金を使うモチベーションはリッチな暮らしと表裏一体なのだろう、とも思える。

動機は何であれお金を使うためには稼ぐ必要がある。必要な額がいくら位で、そのためにこう働けばいい、みたいな考え方では長続きしないだろう。生活をどんな風に送るかを考えて、それが金銭的に破綻しないことを検証するスタイルが良いだろう。

検証する系はタイピングしながらでは辛いので、ここではやらない。その代わりに僕の社会との関わりかたを考えることにする。

僕は技術的な/理屈っぽい話が好きで、なにかにうまい説明をつけられるととても嬉しい。技術っぽい話は説明をつけがちで良い理屈からは頑強な技術を産めて、そこからさらに理屈をつける対象が得られるので都合が良いのだろう。反対に抽象に抽象を重ねるのは苦手だしあまり楽しくない。

こういう営みを続けたいと思う。気合と体力と時間を持っていかれるので、これでお金をもらえると嬉しい。他に仕事をする余裕はおそらくないだろう。その中で楽しく作業をしたり生活を送るために追加でお金をかけることになる。まともな食事や健康が必要だし、気に入った服や道具を使いたい。友達と交流するのは楽しいし一緒に理屈をつけるのは一人でやるよりも楽しい。そのための環境を用意するコストは、僕や友達の社会的な価値が上がるほど高くなるだろう。同好な人が会社に集まっていて一緒にしゃべることでお金をもらえるなら、きっと環境をだれかが用意してくれていることだろう。

いろんな欲求があって、それをお金をはらって満たすのか、ひとにお金を払ってもらって満たせるような環境を手に入れるのか、そもそもお金では解決できないものなのか異なる。お金で解決できないことはたくさんあるだろう。そのあたりは頑張ったり人を頼りにするしかない。人を頼るにしても、そのためにはまず自分が頑張らないと引き受けてもらうところまでなかなか行けない。このあたりの頑張りかたをある程度ここ2、3年で学べたと思う。これから強く生きよう。

それ以外の部分をお金で殴って解決すると幸せな空間を作れるだろうと思う。使うのと稼ぐのは対立した概念でマイナスを補うようなプラスを作るイメージではなくて、上手にバランスをとると幸せになれるパラメータの一つなのだと思う。

あたりまえの結論しかでてこなかった。いまさら主張することでもない気もするけど、まっとうな考え方は大体そんなものだろうから良かったことにしよう。しばらく経ってから読み返すとまっとうに見えなくて、過去の自分の異常性を楽しめるかもしれない。

2022-12-10

公開範囲を限定する機能をこのブログにつけたい。技術的なメモを書くこともあればちょっとした考え事をメモをすることもある。大体のことはガンガン公開すればよいと思うのだけど、勤務中に出会った技術的なことでコンプライアンス的に公開できないものや、人を傷つけるかもしれない考え事もたまにある。そういうものは公開していないところに吐き出しているのだけど、メモは一箇所にまとめたい気持ちがあるのでこの体験は良くない。今日の考え事は今日の日記にまとめたい気持ちがある。

静的なサイトでは厳しいだろうか。 AWS Lambdaくらいなら使ってもいい気がすることにしたらいい感じに実現できるだろうか。でもこの機能を入れるとソースコードをprivateにしないと意味がないのが悲しい。

今日の考え事は今日の日記にまとめたい気持ちがあると言ったがトピックごとにまとめたほうが楽しいのでは? それ系ではScrapboxがタグ機能で関連付けと表示をしてくれるのでいい線いってる気はするのだけど、タグを打つのが面倒ですぐにやめてしまった。皆さんどうやってタグを打っているのだろうか。そもそも適切なタグを用意するのが難しいことだと思う。

話がそれたけど、文章の関連付けと公開の仕方が難しいという話でした。タグは四半期に一回くらいブログを振り返って、共通性を見出すことでひねり出すのが良さそう。ひねり出したあとにそれぞれの記事にタグを振れば良い。全体との共通性を記事を書くときに考えるのは無理な話だと思う。

少し前から腕立て伏せをやることにしている。昔は腕立て伏せをすると折れるんじゃないかと感じるほど筋肉がなかった(骨が一部弱いのもある)のだが、昨日今日くらいで余裕が出てきた。これからはフォームとか効かせる部位とかを意識するのが良いだろう。

始めたきっかけはコーディング中に首の筋を痛めたことだった。淡々とキーボード叩いてるときにびきっときた。キー入力以外に動いていなかったので静かに驚いた記憶がある。

腕立て伏せをしても体調は良くならなくて、ランニングの代わりにはならない。呼吸とか全身運動を体が求めているのだろうか。外の空気? 明示的な空腹と食事?インプットの中断?目をディスプレイからそむけることかも。

運動しないときは大体パソコンと向き合っているせいでランニングが与える健康そうな要因が多い。

2022-12-07

Pythonによるデータ分析入門を眺めている。これまでpandasのDataFrameを使う機会があったのだけど、ググった知識でごまかしたり、dictとlistを駆使してなんとかしてきた。そろそろインデックスや配列指向を活用したい気持ちが抑えきれなくなったので本を買ってみた。

概念の理解は公式のAPIドキュメントではなくこういう本で仕入れるのがやはり楽に感じる。まだ自在というわけにはいかないが、違和感を感じることと探すあてを思いつくことくらいはできるようになったきがする。

オライリーの読み放題プラン気になるけど高いんだよな…。そういえばPDFの横ぐし検索はどういうソフトが良いのだろう。むかしMacを使っていた頃はspot light検索を使っていた。Linuxではなにが良いのだろうか。

年末調整とか転出届けみたいな書類作成が苦手。込み入った指示にたくさん従うのがつらいのだろう。よくわからなくてコピペでプログラムを動かさざるを得ないときと同じ感覚がある。

コピペはつらいので理解した上で記述できるようになりたい。ググってもよい記事が見当たらないのが辛い。本屋にいっても似たような本がたくさん目につく。どう学ぶのがよいのだろうか…。

EchoをPCにBluetoothペアリングしたら接続するときに「<PCの名前>に接続しました」と喋ってくれて楽しい。最初は「何事!」と思ったけど、落ち着いて反芻すると気分がいい。

2022-12-03

昨日は研究が進捗した。嬉しい。

この前カルディで安いベルギービールをまとめ買いした。甘めのビールでおいしい。家に安くて美味しいビールがあるのは精神的にとてもよいのでこれからも継続的に買いたい。Engelchenという名前。

2022-11-28

AmazonでEchoが安かったので買ってしまった。特に使いみちは考えていなかったのだけど、プログラミングの新しいエントリポイントとして楽しい。

とりあえずハローワールドはできた。設定したフレーズでechoに話しかけると、設定したとおりに会話できる。プログラムが会話を通じて対話的に進行するのが新鮮だ。なかなか便利そう。定型的な記録をとるのには使えるだろう。

プログラムを書くときには発話自体を処理せずに、それをライブラリが処理した結果得られるインテントで実行を分岐させる。ビルトインのものもあるし、開発者が文字列でしていすることもできる。文字列で指定した場合、その聞き取り方?を学習してくれるみたいだ。

ついでにLambdaにも入門してしまった。Functionsの方が使い勝手が良い? pythonの依存ライブラリをrequirements.txtで指定できないのが悲しい。

2022-11-27

タイトルを見たときには、アーキテクチャ的な話が中心なのかと思っていたけど、蓋を開けると、それを構成するための技術を基礎から説明してくれた。たとえばデータベースの種類(関係、ドキュメント、グラフ)とその実例や特性、インデックスのデータ構造の説明、比較など。データベースだけの本でもないけど、そのへんはまだ読んでいないので触れない。

そういう話が終わると、分散システムを考えだす。こういう話の持っていきかたは読者として嬉しいし、文書を書くときに見習いたい。

D2はテキストから図を生成するツールで、マーメイドとかが競合になるようなイメージだろう。企業がオープンソースで開発している。設計思想が良さげ。まだやりたいことをあまりやりきれていないようなので、開発を追いかけたいし、実際に使ってみたい。修論で使えるかな。

2022-11-25

ディスプレイの配置を変えたら首が楽になった気がする。今まではモニターアームを使って机の天板ギリギリの高さに設置していた。もっと低く、遠くに置きたかったのだが机に設置するモニターアームでは限界だった。

机の奥に椅子をおき、その上にモニターを置くようにした。モニタースタンドが優秀で、良い高さと傾きを実現できている。目線の高さには奥の窓やカーテンがある配置で、モニタは完全に目線の下になった。

昨日初めてオリジン弁当に行った。回鍋肉を買って食べたらおいしくて、今日は自作してみた。オリジン弁当のレシピはわからないし、どんな味だったかも割と忘れてしまったが、参考にしながら作った回鍋肉はおいしかった。作り方をメモしておく。

材料:

  • 豚バラ肉
  • キャベツ
  • たまねぎ
  • 味噌
  • みりん
  • 醤油
  • めんつゆ
  1. 味噌をみりんと水でとかしておく。
  2. キャベツ、たまねぎ、肉の順にフライパンにいれて炒める
  3. 適切なタイミングで味噌を溶かしたやつをフライパンに入れる
    • ここで入る水分で火を通すので、炒めるのは雑でok
  4. おいしそうになったら完成

醤油とかは気分で入れる。

今日はみりんをたくさん入れたので甘めになった。コツは肉に火を入れすぎないことと、キャベツに玉ねぎよりも火をいれることだろうか。しっかり火が入ったキャベツは美味しい気がする。

おいしかったけど回鍋肉っぽい味ではないと思う。

今まで写真をまじめに保存/整理/運用してこなかった。たまに過去の写真が欲しくなるので、良い運用を考える。

  • 手間をかけない
    • 手間がかかる方法では続かないので
    • たとえばスマホでとった写真やPCの特定ディレクトリの写真がすべて自動で保存されると良い
  • 頑強
    • データを失いにくい
    • ストレージの物理的な故障やクラウドサービスの停止/制限が怖い
  • アクセスしやすい
    • 検索しやすいと良い
    • 日付
    • 位置情報
    • 拡張子
    • ソースになったデバイス
    • 顔認識
    • タグ付け

クラウドはamazon photoが良さげだけど、そもそもクラウドはサービス内容の変化が怖いのであんまりかも。

NASをたてて、Syncthingで同期とか?検索はスクリプトを書けばある程度できる?写真なのである程度GUIが欲しい?gThumbがGUIとしては良さそう。タグもつけられるらしい。

当面はこんな運用が便利だろうか:

  • syncthingでファイルを同期
    • スマホ –> デスクトップPC
    • スマホからはlineの写真とカメラの保存領域をソースに指定
    • デスクトップPCの写真ディレクトリに送信
  • 外部からもらった写真はすべてデスクトップPCの写真ディレクトリに展開
  • amazon photoでディレクトリをバックアップ

2022-11-24

トップページでのページネーションは利益がだれにもないと判断して削除した。

  • 検索機能がこのブログにはないので一覧表示するページがあるとテキスト検索である程度探せて便利
  • 読み込み速度は問題にならなさそう
    • トップページに画像がのることはない。
    • 記事リストは静的にトップページに埋め込まれるので、ページングしてもhtmlのテキストの量がすこし減るだけ。

これからはすべての日記と普通の投稿がトップページにすべて掲載される。

設定が少し面倒だったので記事にしておく

最近短めにしか走っていなかったのだが、今日は13kmくらい走った。心身が回復した感じがする。生活リズムもこの調子で改善したい。

2022-11-23

日記を書き始めるためのシェルスクリプトを書いた。今まではタイトルの指定が面倒だったので、日付をタイトルとして設定するようにした。

フロントマターつきのファイル作成後にエディタを勝手に起動するようにしたのも大切。 Hugoに--editorオプションがあって、newしたファイルを開いてくれるとのことなのだが環境変数の読み込みの問題を解決する必要があって諦めていた。今は愚直にスクリプトを使っているのでとくに問題はないはず。

ところで日記ファイルのディレクトリ構成はどうするのが便利なんだろう。今回はdaily/以下に2022-11-23.mdみたいなファイルを保存している。daily/2022/11/23.mdみたいにするのもありだろう。年月ごとに分けるのは自然ではないと感じたので今回はすべてまとめた。

デフォルトではcontent/postsにある記事しかトップページに表示されなかった。今回の変更でcontent/daily以下に記事を置くようにしたので、このままでは日記がトップページに表示されない。テーマで定義されているトップページのテンプレを見ると、HugoのmainSections変数を設定すれば良いことがわかった。常にこの変数を編集すればよいわけではなくて、使っているテーマがこの変数を使っていい感じにトップページを定義している必要がある。とはいえ公式で推奨されている方法なので多くのテーマがこの方法で制御できるだろう。

Goのテンプレートを勉強したい気持ちがでてきた。

今から久しぶりに多摩川に走りに行ってくる。最近体調悪いので直したい。