[速報レポート] try! Swift TOKYO 2017 1日目 午前I #tryswiftconf
はじめに
こんにちは。モバイルアプリサービス部の平屋です。
プログラミング言語Swiftに関するカンファレンス「try! Swift」にやって来ました。Developers.IOでは、今日から3日間にわたって開催されるこのイベントの模様をお届けしていきます。
イベント情報
概要
「try! Swift」はプログラミング言語Swiftに関するコミュニティ主催のカンファレンスです。ベストプラクティス、アプリケーション開発、サーバーサイドSwift、オープンソースSwiftなど、Swiftに関する技術情報とコミュニケーションを目的に2017年3月2日〜4日の3日間にわたって開催されます。 3月2日、3日はSwiftコミュニティのエキスパートによる講演、4日はハッカソンを行います。 すべての講演は同時通訳されます。(日本語→英語、英語→日本語)
「Swift開発者が知りたかったけど聞きにくい機械学習のすべて」Alexis Gallagher さん
概要
ニュースでは、機械学習は次の大きなものだと言っています。
しかし機械学習は大学や大きな企業のサーバーの _あちら側_ でビッグデータとともに行われています。それはいったい何なのでしょうか? _こちら側_ であるモバイル、Swiftにとって何を意味するのでしょうか?私たちはレガシーな技術を --がっついている-- のでしょうか?
このトークではiOSとSwiftの観点から迅速で具体的で現実的な機械学習の調査し、主なテクニック、ツール、学習素材をまとめます。TensorFlowがAVFoundationのようなものであること、モデルトレーニングがUIデザインのようなものであること、そして高速なネイティブコードを使ってどのようにiOSで十分に大きいデータを収集し、最新のモデルのエクササイズができるということをお伝えします。
スライド
説明
- セッションの内容
- 機械学習について、Swift開発者視点で話していく
- 発表者の背景
- カスタマイズメガネの装着感を試せるアプリ作ってる
- 機械学習
- かっこいいもの?
- CVにかかせない
- 最新情報がすぐ移り変わる
- データを集めて、関数を定義する
- 例えば: イベント会場の参加者の身長を予測する
- 線形回帰
- 18世紀からある
- 花の研究がきっかけ
- スマホの普及によりデータ集まりやすくなっている
- ニューラルネットワーク
- 1950年ぐらいからあるが、なかなか進歩してこなかった
- ものを分類して教えこむ
- Appleがサンプルコード提供している
- iOSでも使える
- 画像からものを認識サンプル
- 物を認識させること
- 最近簡単になっている
- 飛躍的に伸びている
- Swift開発者にとっての機械学習
- Swift開発者に関係ある?
- Yes
- 数学者でなくても?
- Yes
- 現在の機械学習: Swift1.0のような状態
- いずれ、機械学習も現在のSwiftのようになる
- Swift開発者に関係ある?
- GoogleがTensorFlowというライブラリを提供している
- Swiftで機械学習できる
- フロー
- モデル定義
- 訓練
- デプロイ
- TensorFlowライブラリ使う
- Appleのフレームワーク使う
- Metal
- Accelerate
- フロー
- 機械学習で課題を解決すること (APIを活用する視点)
- TensorFlow: AVFoundation, CoreImage使うような感じで扱える
- 遅延実行モデル
- TensorFlow: AVFoundation, CoreImage使うような感じで扱える
- 機械学習のモデル
- UIデザインのような感じ
- UIデザイン: ユーザーテストするまで、正解かはわからない
- UIデザインのような感じ
- 機械学習はiOS環境に向いている
- 入力があいまい
- 例:顔を画像キャプチャ
- 曖昧な世界とやりとりする
- 入力があいまい
- 機械学習
- 曖昧な世界をとりこんで、精度の高いものに変換する
- 機械学習のはじめかた
- 様々なリソースある
- TensorFlowのチュートリアル
- スタンフォードのビデオ
- 本、Youtube
- 様々なリソースある
- まとめ
- 注目されている
- ただの流行ではない
- すぐに始められる
- すぐに使える
- やりたければ、深掘りできる
- 質問: 「メガネアプリの事例について、処理はサーバーでやってる?」
- 演算はサーバーで
- レンダリングはiOSで
- 今後はiOSに寄せていきたい
「Swift on Android」Eric Wing さん
概要
この講演ではSwiftがAndroidでどのように動作するかという概念とどのようにすればSwiftをAndroidで動かせるかということをご説明します。前半はどのようにコア言語としてのSwiftをAndroidで動作させるのかということをAndroid NDKへの入門も含めてお話します。後半はAndroidでSwiftを使う際のライブラリや(リリース可能な)アプリの書き方をお話します。ネイティブのAndroid APIのことだけでなくSwiftでクロスプラットフォーム開発(iOS, Mac, Linux, Windows?)をするための興味深いアイデアについても議論したいと思います。
説明
- セッションの内容
- Swiftを使用したクロスプラットフォーム開発について
- 発表者の背景
- クロスプラットフォーム開発をやっている
- macOSアプリへの移植
- ゲーム用のOSS開発
- etc ...
- 必要に迫られてAndroidやりはじめた
- クロスプラットフォーム開発をやっている
- C言語
- クロスプラットフォーム開発に向いている
- 移植性高い
- 安定している
- あらゆる言語とやり取りできる
- Swift on Android App はどうやって実現する?
- エントリーポイントはJava、C経由でSwiftを使う
- アクティビティで、ダイナミックライブラリをロードする
- Cのコード呼ぶ
- Cの実装でSwiftの関数呼ぶ
- ビルドシステム、IDEはそれぞれ違う
- Xcode, Android Studio, Visual Studio
- クロスプラットフォーム開発者にとってつらい部分がある
- CMake
- LLVM, Clang, Swiftまわりで使われている
- Android Studio でも扱いはじめている
- Native Android in Swift
- できるけど、難しい
- クロスプラットフォームなCのライブラリ
- 特にゲーム業界で多い
- SDL, OpenGL ...
- クロスプラットフォームなGUI
- 難しい試み
- 例:Nuklear
- 例:IUP
- GUIにフォーカスしたライブラリ、Cで書かれてる
- モバイルアプリでも活用できそう
- ダイアログとボタンを表示するサンプルについて
- Swiftで書かれている
- Linux, macOS, ios, Android, Windowsで動く
- 各プラットフォームでは、それぞれのコンポーネントにマッピングしている
- Githubでサンプルコードを公開している
- クロスプラットフォーム開発
- 魔法はない
- 複雑な作業続く
- Blurrr SDK Open Beta | Blurrr SDK