2024/01/07

2024年今年もよろしくお願いします

喪中ですが

去年親父が亡くなったので、新年のご挨拶はできませんが、皆様にとって良い一年になりますように!!

今年のプログラミングに勉強をどんどんやっていこうと考えております。私は去年末、親父の件が一段落したあたりから、py_optionというPythonのライブラリを作成し始めました。PythonでもRustのOptionのようなものを使えればいいなぁ、なんてなんとなく思って作り始めました。あと、Elixirも少しかじったりしました。

今年も好奇心、興味だけは失わずにがんばっていこうと思います。

py_optionについて

py_optionですが、Pythonでは別にいらない説があるのですが、そんなことは気にせず作っております。

ソースコードはまだ途中ではありますが、GitHubにあげています。

具体的な話になりますが、Pythonにはインターフェースの機能がないので、抽象クラスOptionTypeクラスを作成し、それをもとにSomeNonを作成しました。NonとなったのはPythonではNoneがすでに存在しているためです。PythonのNoneは特にメソッドを持っているものではありません。

SomeNonでそれぞれOptionTypeは作成できますが、Optionクラスを作成し、Option.new()というスタティックメソッドで値xを与えた場合はSome(x)、値がない場合はNonをそれぞれ作成できるようにしました。

Rustでは変数束縛する際let x: Option<i32> = Option::default();とすると、Option<i32>Noneが束縛されますが、Pythonでは型は動的に決まるので、単純にOption.new()という形にしてみました。

また通常PythonのNoneではメソッドを持っていませんが、こちらのNonの場合、Some(x)同様のメソッドを使えるようにしました。

ちょっと悩んだところは、RustのOptionにandorというメソッドがあるのですが、これらを実装しようとした際、最初は特殊メソッド__and____or__でやってみたのですが、どうも挙動が望むものにならない。しかし、andorもキーワードなので、そのまま使うことができない。なので、とりあえずand_or_というメソッド名でお茶を濁しました。このあたりは、今後いい感じにしていきたいと思っています。

今年は…

いきなり、北陸で激しい地震がありました。

住んでいたことがあるので、知り合いや友達、親戚もいるのでかなり心配になりました。

とりあえず連絡がとれて、ほっとしていますが、これからまだどうなるかわかりません。

ひょっとしたら、明日、我々が住んでいる地域が同じようになるかもしれない。そう思って生活していくこと、助け合うことが大事だと心に留めて生活していこうと思います。

また、ちょっとずつ進行している母の認知症に合わせた生活、ごまかしごまかしでも母が楽しく最後まで生きれるように、何とか工夫して生活していこうと考えています。

なかなか難しいですが……