今、僕が一番注目している Swift の新機能について、 iOSDC Japan 2018 で話します

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 のプロジェクトを率いています。

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 が提案した
  • Chris Lattner は機械学習関連のプロジェクトに従事している
  • Python は機械学習でよく用いられている
  • @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 アプリから使ってみる ところまで説明します。

そのため、次のような幅広いトピックについて知ることができるおトクな発表になっています。

一つでも気になるトピックがあった方は是非お越し下さい!