私たちは、今までとは違う新たな方法で TensorFlow を使うというアプローチをとっており、それによって、新しい設計を導入する機会と、既存の問題を解決する新たな方法が開かれています。プロジェクトはまだ開発の初期段階ですが、オープンソース化して、設計についての議論を公開メーリング リストで行うことが決まっています。そのため、プロジェクトに興味のある方は、誰でも参画できます。

設計ドキュメント


私たちは、このアプローチの概要や動作の仕組みを詳しく解説したドキュメントを作成しました。プロジェクトの README から、すべてのドキュメントにアクセスできます。まずは、Swift for TensorFlow Design Overview(Swift for TensorFlow の設計概要)から読み始めることをお勧めします。プロジェクトの主要コンポーネントや、それらがどのように連携しているかが説明されています。

次は、プロジェクトの重要な箇所を解説したドキュメントをご覧ください。設計の基礎となっているのは、Graph Program Extraction(グラフ プログラム抽出)と呼んでいるアルゴリズムです。これにより、グラフのメリットをすべて維持しながら、Eager Execution スタイルのプログラミング モデルを記述できます。この設計には、高度な自動微分のサポートを Swift に直接組み込むことも含まれています。また、Python と Swift の統合も深く考慮されており、Swift コードから直接任意の Python API を使用できます。

最後になりますが、Graph Program Extraction というアプローチをとったことで、実装にいくつかの技術的制約が課されることになりました。Swift をホスト言語として選択することになったのは、そのためです。トレードオフや、その選択に至った決定プロセスについては、Why *Swift* for TensorFlow?(なぜ Swift for TensorFlow なのか)で詳しく説明しています。

参加をお待ちしています


Swift for TensorFlow を使ってディープ ラーニング モデルを書き直すにはまだ少し早すぎますが、ML や言語、コンパイラに興味がある方は、さまざまな方法でプロジェクトに参加して貢献することができます。すぐに試せる macOS と Linux 向けのビルド済みパッケージが公開されており、シンプルな MNIST モデルも付属しています。さらに、ソースからビルドするための手順も掲載されています。プロジェクトのこのフェーズでは、既知の問題が数多く存在します。問題が発生した場合は、メーリング リストでご連絡ください。

ユーザーの皆さんに愛される、美しい TensorFlow インターフェースを新たに構築できることは私たちの喜びです。ぜひ、プロジェクトに対する皆さんの意見をお聞かせください。


Reviewed by Takuo Suzuki - Developer Relations Team



Todd Kerpelman
デベロッパー アドボケート

最新かつ最高のテクノロジーを導入した環境で、自身のアプリを正しく動作させることは非常に重要です。iOS 開発について言えば、近々リリースされる iOS 10 向けにアプリをサポートしようと考えているデベロッパーの方も多いと思います。

Firebase チームでは、iOS 10 が一般公開されてすぐに、デベロッパーの皆様が自身のアプリを iOS 10 上で実行できるように準備を進めています。本記事では、Firebase CocoaPod の最新バージョン(3.5.1)における変更点を改めて紹介します。あわせて、今後予定されている変更点のうち、iOS 10 向けの開発を始めるにあたり影響がある内容についてお伝えします。

Dynamic Links、Invites、App Indexing

最新版の Firebase ライブラリでは、iOS 10 向けのディープリンク機能が新たにサポートされています。自身のアプリで Dynamic Links、Firebase Invites、App Indexing などのディープリンクを活用する機能を使用している場合は、ライブラリを最新版に更新してください。これらの機能は、(コードを変更しなくても)アプリを再ビルドするだけで正しく動作するようになります。

Firebase Analytics

Firebase SDK の最新版では、検索機能と連動した AdWords 広告経由でのアプリのインストール状況を、より正確にトラックできるようになっています。この機能は Firebase SDK のバージョン 3.3.0 で追加済みなので、既にご存じの方もいると思いますが、今回はさらに iOS 10 向けのサポートを追加しています。上述のディープリンク機能の更新と同様に、新しいライブラリを用いてコードを再ビルドすると、自動的に新機能が有効になります。

Firebase Cloud Messaging

iOS 10 では通知関連の機能が大幅に進化しており、デベロッパー側で受信したユーザー通知を処理するための新たな方法も提供されています。具体的には、 application:didReceiveRemoteNotification などの古い UIApplicationDelegate メソッドの廃止に伴い、UNUserNotificationCenterDelegate プロトコルのメソッドで通知を処理するようになっています。

ただし、お気づきの方もいるかと思いますが、Firebase SDK の最新版では、まだ古い appDelegate メソッドを使用しています。新しい UNUserNotificationCenterDelegate プロトコルのメソッドについては、近々サポートを開始できるように努めています。ライブラリを更新した際はお知らせしますので、今後の配信情報をチェックしておいてください。

Firebase Auth と Xcode 8 に関するお知らせ

最新の iOS 10(この記事を書いている時点では ベータ版 6 まで)のシミュレータでは、キーチェーンに値が書き込めず、Firebase Auth がエラーを返すという問題が発生することが判明しています。なお、この問題による実機への影響はありません。

本件は、既に Apple のバグ トラッキング システムに報告済みですので、近いうちに解決されると見込まれますが、それまではシミュレータで Firebase Auth の試験を実施すると、エラーが発生する可能性があります。この問題を回避する方法として、Auth の試験は iOS 10 が搭載された実機で実施することをお勧めします。実機をお持ちでない場合は、 アプリの Capabilities セクションで Keychain Sharing を有効にしてください。 詳しくは StackOverflow の投稿をご覧ください。

Swift 3 対応

既にお気づきの方もいるかもしれませんが、ドキュメントのサンプルコードでは、まだ Swift 2.3 を使用しています。Swift 3 は現在も開発中であるため、バージョン 3.0 が正式にリリースされてから、ドキュメント内のサンプルコードを入れ替える予定です。

もちろん現段階で、Swift 3 でサンプルの動作を試すことも可能です。最新のサンプルコードをダウンロードして、Xcode の Swift 変換ツールでサンプルを変換すると、ご利用いただけます。また、近日中にサンプルアプリ用に Swift 3 の専用ブランチを作成する予定です。そちらのブランチを GitHub からチェックアウトすれば、変換処理をしなくてもソースコードをご覧いただけます。

フィードバックをお待ちしています

今回は、ベータ版のオペレーティング システム向けにライブラリをリリースしているため、厄介な問題が発生することが見込まれます。iOS 10 の新バージョン公開に伴い、さまざまな不具合が検出された際は、できるだけ迅速に改修するよう努めてまいります。皆様の方でも iOS 10 固有の問題を発見しましたら、ぜひお知らせください。まずは Google グループ をご活用ください。


Posted by Khanh LeViet - Developer Relations Team