現代のアプリ開発では、ライブラリやフレームワークをまったく使わないということはほとんどありません。
OSが提供するUIKitやSwift標準ライブラリを使用しますし、サードバーティの便利なライブラリを使用することもあります。
そして、誰もが1度はリンクエラーや重複したシンボル、パッケージマネージャが出力するエラーメッセージに悩んだことがあることでしょう。
リンクエラーの解決が難しいのは、問題の原因がプロジェクト設定、ライブラリの種類・配布方法、実行先(デバイスやシミュレータ)の環境など多岐にわたるためです。
導入したライブラリがインポートできない、リンクエラーで難しいエラーメッセージが表示されている、ビルドは成功しても起動時にクラッシュしてしまう。
誰もが一度はこのような問題に直面し、解決のために長い時間の試行錯誤をしたことがあるでしょう。
モジュールのインポート・リンクがどのように解決されるのか、リンクとはいったい何をしているのかを学ぶことで、システマチックに問題を切り分け、解決できるようになります。
この講演ではライブラリとフレームワーク、スタティックとダイナミックの違い、それぞれのメリットとデメリット、Swiftからインポートするために必要なこと
を知り、外部のライブラリがどのようにして自分のアプリから利用できるようになるかという仕組みを解説します。
リンクの仕組みを知ることで悩ましいリンクエラーを論理に解決できるようになるとともに、CocoaPods、Carthage、Swift Package Managerといったライブラリ管理ツールもより高度に使いこなせるようになります。
カラーコードとUIColor (or SwiftUI Color) さえわかれば色の話は十分だと思っていませんか?残念ながら違います!私たちが色に関するガイドラインを覗いたとき、謎の数式と用語も私たちを覗き返してくるのです。そこから逃げ出して曖昧な理解のままアプリを作ったら、きっと使いにくいものになってしまうでしょう。
本セッションでは、知っておくと心強い光と色の知識をみなさんと一緒に確認していきます。
色の決まりや仕組みを理解することで、ドキュメントやガイドラインの意図を正しく掴むことにつながり、私たちが気をつけるべき点をしっかり抑えることができるようになります。小難しい話の並んだドキュメントももう怖くありません。
もちろん、色のお話はiOSやiPhoneだけのものではありません。他のアプリやスライド資料などを作るときにも役立ちます。読みにくいスライドで聴衆のみなさんをがっかりさせてしまった……ということがないように、この機会に色への意識を変えていきましょう!
【対象】
【取り扱うテーマ】
また、これらの問題の理解に必要となる光の仕組みや色の定義の説明、関連するガイドラインの紹介も行います。
シェーダアートとは各ピクセルの座標値と共通のデータからそのピクセルの色を決定し、様々なイメージをスクリーン上に表現する手法のことです。時にシェーダ芸と呼ばれることもあります。
これは主にシェーダと呼ばれるGPUで実行されるプログラムを記述することで実現します。
様々な手法が編み出され、そのシンプルな原理とは裏腹に実に多彩な表現が可能となっています。
Web上にはシェーダを閲覧/投稿できるGLSL SandboxやShadertoyといったサイトがあり、多くの驚くべき作品を目にすることができます。
もちろんWebに限らずiOSでもシェーダアートは実現できます。
本セッションではまずシェーダアートの動作原理を解説します。
次にstep関数やfract関数といったシェーダ用の組み込み関数をいくつか学んだ後、距離場・極座標など表現方法のヒントとなる概念に加えて、複製・ノイズなどの基本的なテクニックも紹介します。
また、共通データに時間を渡すことでアニメーションを行ったり、加速度センサーやマイクの音量を渡すことでインタラクティブな表現ができるデモも披露します。
さらにレイトレーシングの一種であるレイマーチングを用いた3次元的な表現も紹介します。
普段のプログラミングとはまた一味違う体験を、そしてあなた独自の世界を表現してみませんか?
Value SemanticsとProtocol-Oriented ProgrammingはSwiftの根幹をなす概念です。Swiftの言語そのものや標準ライブラリ、SwiftUIの設計とも密接に関わっており、Swiftという言語を特徴づけるHeart(心、中心)と言えます。
Value SemanticsとProtocol-Oriented Programmingについては、WWDC 2015でのSwift Core Teamメンバーによる解説がよく知られています。しかし当時はSwift 2ベータの時期で、解説に用いられたコードには現在Swift 5で動作しないものも多いです。
また、Swift 5.1で導入されるOpaque Result Type(ORT)や、その後を見据えて議論されているリバースジェネリクス、Generalized Existential、any修飾子との関係など、現在ではより広い視野でValue SemanticsとProtocol-Oriented Programmingを考えることができます。
iOSアプリ開発についても、WWDC 2019で発表されたSwiftUIによって、iOS 13以降状況が大きく変化しそうです。これまではUIKitを用いたクラスベースの開発が必須でした。しかし、SwiftUIではprotocolとstructが中心になり、ORTが多用されます。それらを使いこなすために、Value SemanticsとProtocol-Oriented Programmingの理解がますます重要になるでしょう。
本トークでは、それらの関係を示しながらSwift 5.1時代のValue SemanticsとProtocol-Oriented Programmingを解説し、SwiftのHeartを描き出します。
アンカンファレンスで講演された内容です。
iOSDC 2017 でのトーク「Swift で数学のススメ」から 2年を経て、 SwiftyMath は ver 1.0 となりました。
このトークでは SwiftyMath のコードをベースに、抽象代数学の入門として
・基礎的な概念である「群・環・体」
・具体例としての数(整数・有理数・実数・複素数)・行列・多項式
・剰余類環、中国剰余定理、代数拡大
などについて解説します。これらの概念は数学専攻で学ぶもので、初学者にはハードルの高いものですが、抽象的な公理を protocol として、具体的な対象を struct として実装したコードと合わせて解説することで、Swift に慣れている人ならスンナリと理解できるようになることを目指します。
Swiftで代数学入門: https://qiita.com/taketo1024/items/bd356c59dc0559ee9a0b
SwiftyMath: https://github.com/taketo1024/SwiftyMath
あらゆる人が、あなたの提供するアプリの恩恵を受けられるように。
あらゆる人が、あなたの提供するアプリをより便利に使えるように。
アクセシビリティ対応と言うと特定の誰かのための対応だと思われ、優先度が低くなってしまいがちです。確かにアクセシビリティ対応は特定の誰かのための対応という側面もありますが、すべての人のための対応でもあります。いつも使っているアプリが、手を使わずに使えるようになったら。もっと使う手間を省けたら。夢は広がるばかりです。
「とはいえアクセシビリティ対応をしても一般ユーザは使ってくれないのでは?」そう思う方もいると思います。しかしアクセシビリティ対応で可能になることをきちんと理解して実装、広く告知をすれば、一般ユーザも便利に使えるような体験革命ができるかもしれません。
このトークでは、Appleがどのようなアクセシビリティ機能を提供しているのか、そして私たちiOSアプリ開発者はどのような実装を経て、どのような体験をユーザに提供できるのかについてお話します。
【目次】
・アクセシビリティ最新情報(WWDC2019 Keynoteより)
・設定 - 一般 - アクセシビリティから何ができるのか
・視覚のアクセシビリティ
・文字サイズの変更に耐えうるデザイン作り
・VoiceOverにきちんと対応するには
・アプリデザインとコントラスト
・聴覚のアクセシビリティ
・Siriはどこまでユーザを楽にするのか
・身体のアクセシビリティ
・Voice Controlに見るアプリの未来