週報 - 2020年7月第1週
週報 - 2020年6月第4週
前週はこちら
やったこと
Scala3でライフゲームを書いてみました。
UIは任意のものを組み合わせることが出来ますが、せっかくなので、先日から取り組んでいたJavaFXで描画してみました。
効率的に処理するための賢いアルゴリズムもあるようですが、とりあえず愚直にフィールド全体をループで処理するように実装して、それを分割統治するようにしてみました。
今回のJavaFXのように、勉強がてら書いていたものが他で再活用出来るのは喜ばしいです。
やること
今のところ、次に何をするかは決めていません。
インフラ系の何かをやってみようかな、などとぼんやり考えていますが、はっきりはしていないです。
その他
イオンの抽選でSwitch購入権に当選したので、念願の2台目をゲットしました。
そのせいで、ゲームをやっている時間が長めになっていて要注意。
週報 - 2020年6月第3週
前週はこちら
やったこと
- Akka ClusterにKamonを導入してみました。が、最新のバージョンのAkkaだとまだ動作しなかったです(Kamon自体は動くのですが、Akka関連のメトリクスが収集されない)
- 以前触ったScala3+JavaFXの続きをやっていました。淡々とサポートするLayout(Pane)やControlの追加をして、それなりに使えそうという感触を得ています(今後も使えそう)
やること
少し、他の言語に出稽古に行ってみようかな、などとも考えていますが、まだノープランでした。
その他
身内に不幸があり、かなりバタバタしていたため、更新が遅くなってしまいました。
週報 - 2020年6月第2週
前週はこちら
やったこと
先週に引き続き、Scala3 + Akka Cluster
Distributed DataとCluster Shardingを使ったグラフデータベース風のサービスを構築してみました。
あくまで、Scala3でのAkka Cluster(Typed)の書き味、動作確認のためと、Akka Clusterそのもののキャッチアップのための実装なので、細かいことは気にしない感じです。
ワークアラウンド的な部分もありますが、概ね当初想定した実装を行うことが出来たので、満足しています。
やること
せっかくAkka Clusterを触ったので、ついでにKamonを導入してメトリクスの収集が出来ないか試してみようと思います。
その他
そろそろ次のお題を考えたいところ。
Scala3のメタプログラミング方向に戻るか、あるいは別な方面に行くか。
少し、インフラ方向に旅をしても面白いかな、などと考えてもいます。
週報 - 2020年6月第1週
前週はこちら
やったこと
1)Scala3のマクロ周り、軽く触ってみました(ただし、TASTy周りはまだ)
https://dotty.epfl.ch/docs/reference/metaprogramming/macros.html
Quotes と Splices の概念をそれとなく把握。
Scala3ではinline、Type Class Derivationなども使えるので、そちらでかなりな要求を満たせるような気がしました。
が、さらにメタなことをやろうとすると、やはりQuotes と Splices 、ひいてはTASTyも触ることになるので、追って、さらに深く触ってみたいと思います。
2)Context Functionsを試してみました。
https://dotty.epfl.ch/docs/reference/contextual/context-functions.html
ドキュメントのサンプルにはTableを構築する例が載っていましたが、このパターンでJavaFXのGUIを組み立てられないかと。やってみたら意外にサクッとできたので、今後使うかもしれません。
3)先週、しばらく保留と書きましたが、ちょっと気が向いたので、Typed Akka Cluster with Scala3に着手してみました。
TypedなAkkaとScala3の相性はとても良いと思っていて、例えばBehaviorに指定するメッセージの型は、enumを使うと非常にシンプルに表現できます。
Clusterはさわり(メンバーシップの動作確認あたり)だけ動かしてみましたが、全然動作には問題がなかったです。
やること
引き続き、Scala3でAkka Clusterを実装してみます
その他
部屋が暑くなって来ました...
リモートが続いていますが、自室に冷房がないので夏はどこで作業しようか模索中
週報 - 2020年5月第5週
前週はこちら
やったこと
今週Type Class Derivationを試してみました
https://dotty.epfl.ch/docs/reference/contextual/derivation.html
ADTに対してMirrorと呼ばれる付加情報が生成されて、それを使ってよしなに型クラスのインスタンスを導出しよう、というものです(雑
今回は、case classに対して、JSON文字列を生成する、というのを、上記のページの例を参考にしながら自作してみました。
(泥臭い実装になりましたが、ちゃんと動くものが出来上がりました)
あとでshapeless3も触ってみたいと思います
GitHub - milessabin/shapeless at shapeless-3
やること
次はいよいよScala3のマクロに突入してみたいと思います!
その他
Akka Clusterはしばらく保留
週報 - 2020年5月第4週
前週はこちら
やったこと
引き続きScala3のTuple周りあれこれ触ってみました。
https://dotty.epfl.ch/api/scala/Tuple.html
Scala3のTupleはHListなので、再帰的な処理が書けます。
先頭要素を処理する型クラス+残りの要素(Tuple)を処理する型クラスを二つ取り、これを *: で結合するだけです。
詳細はShapelessのPDFが分かりやすいと思うので、ぜひ(Scala3のTupleの解説ではありませんが、(HListで)やってることは一緒です)
https://underscore.io/books/shapeless-guide/
やること
引き続き、Scala3キャッチアップしつつ、隙をみて久々にAkka Clusterを触ってみたいと思っています(Split Brain ResolverがOSS化されたらしいので)
その他
Scala3最高に楽しいです