行列をSwiftで実装する話をしました #関モバ

kanmoba.connpass.com

ブログを書くのが遅くなりましたが、先週水曜日、「帰ってきた関西モバイルアプリ研究会」に参加しました。 しばらく開催されていなかった関モバですが、ついに復活となったようです。すばらしいですね。

僕は、以下の内容で発表しました。あんまりモバイルの話ではないんですが、そこはそれ・・・。

speakerdeck.com

また、サンプルコードを以下の場所に置いています。Xcode Playground で書いています。

github.com

Swift の Array はサイズが固定ではないため、行列を初期化するときに与える Array のサイズが期待するものでないことがありえます。 一応 assert で防ぐことはできますが、ちょっとつらいところです。 C# だと固定長配列があるから解決できるとコメントをもらいました。確かに。C# でも実装を試してみるべきかもしれません。

サイズ情報を、プロパティでなく型に持たせたほうがいいんだろうなあと思います。 言語やライブラリによっては、3次行列とか4次行列とかサイズごとに型を定義している場合もあるとコメントいただきました。 確かに、それがひとつの解決策です。ただ、様々なサイズの行列を扱いたいという気持ちもあって、両立させるのが難しい。

なお、実用的には GPU で計算するほうが良いでしょうから、今回の実装が実際の役に立つとはいえません。 しかし、プログラマが数学を勉強するなら、コードで書いたほうが理解できるんじゃないかと思います。 つまり、実用目的というよりは勉強目的になります。

GPU つながりで、GPU のコーディングを Swift でできたら面白いのでは、というアイデアも出ました。 その発想はなかった。実現したら面白そうですね。

関モバは、今後も引き続き開催されるようなので期待しています。もちろん、できる限り参加したいです。