勉強している
新型コロナウイルスのせいばかりではないんだけども、4月5月はほとんど仕事がありませんでした。
まあ、これはウチの会社がっていうのではなく、私がってことです。たまたま長期のプロジェクトを終えたばかりで、その次にアサイン予定のプロジェクトが延びたり、始まりそうで始まらなかったりということがコロナのせいで起こったというだけ。普通にプロジェクトにアサインされている人は、普通に働いてます。
そんな中、去年から部門の勉強会のとりまとめみたいなことをやっていたので、「ヒマだから」と2本とりまとめて、1本参加して、週3回勉強会をやってます。んとね、おかげで普通に忙しい(笑)。入社して以来、そんなに真面目にがっちり勉強する機会はなかったんで、なんだかすごく賢くなった感じです。
まず、「データ指向アプリケーションデザイン」という去年邦訳が出た本の読書会。ノートを取りながら毎週1章ずつがっちり読んでます。クラウドやNoSQLが前提になった世界を前提にした、分散システムの解説書。これはめちゃめちゃ良い本ですけど、1人でさっと読んだんではたぶん挫折しただろうなと。レプリケーションやトランザクション、合意のあたりとか、いかに自分の理解がいい加減だったかを痛感してます。
次に、「マイクロシステムパターン」の読書会。上の本と合わせて読むと、マイクロサービスが何を捨ててメリットを取ろうとしているのかがよく理解できます。うん、マイクロサービス大変だ。こっちはがっちり読み込んでるわけではないのですが、とりあえず、言葉は通じるぐらいには理解できてきたかな・・・。
3つめの会は、ケント・ベックの「テスト駆動開発」の第1部の写経の会。メンバーには普通にJava/JUnitで写経してもらっているんだけど、私はJavaでやってもつまらないので、Rustでやってます。普通のOOP言語とRustの違いを認識するのに非常に役に立った。いや、別にRustを仕事で使うってわけじゃないんですけども。
印象的だったのは、2つの似たクラスを汎用化して表現するのに、JavaだとInterfaceを使い、それに相当するものはRustではTraitを使う・・・と言ってしまいがちだけど、そこには結構な思想の違いがあるということ。Interfaceに宣言されたメソッドを実装クラスで実装したとして、どの実装クラスのメソッドが呼ばれるかはJavaは実行時に決まる一方、Rustはできる限り静的に解決したいわけ。この辺りの考え方の違いがコードに出てくる辺りが面白くて、とても楽しみました。あと、第1部は一通り読んではいたんだけど、実際に写経してみると結構違うことを感じるのも楽しかったです。
で、そのためもあって、オライリーのRustの本もなんだかんだで1/3ぐらいは読みました。Rust Bookのおおよそは2年前の勉強会で読んではいたんだけど、その上でこの本をじっくり読んで、だいぶRustに親しんできた感じはあります。ポインターが連鎖してくると、ライフタイムで頭が大混乱するけども。
というわけで、今年になってからこんだけ勉強しているわけで、なんだかすげぇ賢くなった様な気がします。気のせいかもだし、大学院時代のボスには「勉強は楽しすぎるから気をつけろ」とよく言われたものですが(その当時は勉強は勉強でイヤだったですよ。学生なんてそんなもんでしょ)、たまにはこうやってがっちり勉強する機会があるというのも、人生において良いモノですね。
「パソコン・インターネット」カテゴリの記事
- USBを挿さないでiPadを充電したい(2025.04.18)
- 仕事用ディスプレイを買い換えた(2022.02.14)
- Windows 10にインストールしていた Adobe Acrobat 9が消えた(2022.01.15)
- Scansnapを買い換えた(2021.02.02)
- ケータイをiPhoneに戻した(2020.11.09)
Comments