2018-08-29
僕が Swift 4.2 および 5.0 の新機能で特に注目しているのが @dynamicMemberLookup
と @dynamicCallable
です。これらは Swift の生みの親である Chris Lattner が提案 したもので、僕はこの二つを Swift の今後にとって、とても重要な新機能だと考えています。
@dynamicMemberLookup
と @dynamicCallable
はそれぞれ次の Proposal で提案されています。
これらの Proposal の Author はどちらも Chris Lattner です( SE-0216 は共著)。どうして彼はこの二つの機能を提案したのでしょうか?
Swift を発表した後、 Chris Lattner は Apple を辞めて、今は Google で働いています( Swift と関わるのを止めたわけではなく、今でも Core Team の一員です)。 Google では機械学習・人工知能関連のチームで、 Swift for TensorFlow のプロジェクトを率いています。
Swift for @TensorFlow Talk video and announcement are up! Check it out: https://t.co/3B4127kbFZ and join the conversation: https://t.co/dNIpVzphLO
— Chris Lattner (@clattner_llvm) 2018年3月31日
Python は機械学習で一番用いられている言語です。
そして、 @dynamicMemberLookup
と @dynamicCallable
は Python との連携を容易にします。これらを使って Python 連携機能を作れば、たとえば次のような Python のコードを
# Python
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5], [6]])
c = np.matmul(a, b)
print(c)
Swift で
// Swift
import Python
let np = Python.import("numpy")
let a = np.array([[1, 2], [3, 4]])
let b = np.array([[5], [6]])
let c = np.matmul(a, b)
print(c)
と書くことができるようになります。 Swift から Python のライブラリである NumPy が違和感なく利用できています。
@dynamicMemberLookup
と @dynamicCallable
は Chris Lattner が提案した@dynamicMemberLookup
と @dynamicCallable
は Python との連携を容易にする糸がつながってきましたね。
この @dynamicMemberLookup
と @dynamicCallable
を軸に、 “iOSエンジニアのための、SwiftからPythonのライブラリを使って機械学習する方法” というタイトルで、 iOSDC Japan 2018 で発表します。上記の内容に興味がわいた方、より深く知りたいという方は是非お越し下さい。
ちなみに、 @dynamicMemberLookup
と @dynamicCallable
はそれぞれ Swift 4.2 および 5.0 の新機能ですが、すでにこれらを使って Python 連携をすることができます。 一足先に、 Swift の未来に触れてみることができます。
なお、 iOSDC 参加者は機械学習には詳しくない人が多いと思うので、機械学習未経験者でも取り扱う内容が理解できるように 機械学習入門についても話します。さらに、せっかくの iOS DC なので、学習したモデルを Core ML 用に変換して、 iOS アプリから使ってみる ところまで説明します。
そのため、次のような幅広いトピックについて知ることができるおトクな発表になっています。
↓の広範囲のトピックを扱うおトクな発表をします。 #iosdc
— koher (@koher) 2018年8月27日
単に浅く広くになってしまわないように、発表を聴いて理解することと後から学ぶことを区別して話します。まずこれを知っておくと学習効率が良いだろうという内容を説明し、後から自分で学ぶための方法を示します。https://t.co/MMMpYrYG30 pic.twitter.com/ITgwgLqSKJ
一つでも気になるトピックがあった方は是非お越し下さい!