try! Swift Tokyo 2017
3月2日〜3日の二日間、東京で開催された try! Swift
というカンファレンスに参加してきました。
世界中の Swift エンジニアと交流できる貴重な機会で、できれば二日間がっつりと参加したかったのですが、仕事の都合により両日とも半日ずつの参加となりました。3月4日(土)にはハッカソンやハンズオンも開催されたようですが、こちらもプライベートな事情で参加できず残念でした。
try! Swift の中でも、個人的に興味深かったテーマについて紹介していきたいと思います。
Swift on Android
まず1つ目は SwiftによるAndroidアプリに関するセッションです。
私はこれまで iOSアプリとAndroidアプリの両アプリを開発してきましが、ここ2,3年は Androidアプリ開発をメインで行っており、モダンな言語 Swift を使って、どの程度 Androidアプリが開発できるのか、大変興味深いテーマでした。
Eric Wing さん
発表者の Eric Wing (Twitter) さんは、クロスプラットフォームでのゲーム開発を専門とされる方です。
Beginning iPhone Games Development
という書籍も執筆されたり、CMake などいくつかのOpenSourceプロジェクトにも参加されています。
このため、単に Swift で Android アプリを開発する、というテーマではなく、Swift でマルチプラットフォームなアプリ開発を行う、という大きな壮大なテーマの一部として Androidアプリの開発を取り上げた、という感じでした。
Ouroboros
セッション中、Ouroboros
と呼ばれる、蛇が自分の尻尾を食べるイラストが何度か出てきました。 What’s old is new again
という意味で、このセッションの中に新しいことはなく、古い概念を適用するだけ、ということでした。
- コンパイラとネイティブコード
- C言語とアプリケーションバイナリインターフェス(ABI)
- Unix / Linux / Android
C言語最強
C言語は最強というお話。
- C言語は互換性が高く、全てのプラットフォームでコンパイラが用意されている
- C ABI は安定しており全てがその上に構築されている
- 多くの言語がCとのインターフェースを持っている
- 何十年も昔から存在するソフトウェアで今もなお使われている
言語とライブラリの切り分け
開発言語とライブラリについての切り分けが重要というお話。
Native iOS App の場合
swiftCore
↓
Swift C library , Darwin
↓
libdispatch, Foundation
↓
UIKit, CoreAudio
Native Android App の場合
swiftCore
↓
Swift C library , Bionic
↓
Android SDK, OpenSL ES
ross-platform Game
swiftCore
↓
SDL, Open AL
Getting Started with Swift on Android ?
AppleがGitHubで Getting Started with Swift on Android というドキュメントを公開しており、このタイトルからは 「Swift でAndroid アプリが開発できるんだ!!」 と期待してしまうのですが....
手順1
1. Downloading (or building) the Swift Android stdlib dependencies
Swift stdlib をダウンロードしろ
→ わかる
手順2
2. Building the Swift stdlib for Android
Swift stdlib をビルドしろ
→ わかる
手順3
3.Compiling hello.swift to run on an Android device
hello.swift をコンパイルしてAndroidデバイスで実行しろ
- hello.swift :
print("Hello, Android")
- 実行 :
adb shell ...
- 出力 :
Hello, Android
(コンソール上に)
→ Why ?!
UIをもつアプリを開発したいのに、コレジャナイ...
(続く)