LoginSignup
176
106

More than 3 years have passed since last update.

API Diffsから見るiOS 13の新機能 #WWDC19

Last updated at Posted at 2019-06-04

本日からはじまったWWDC 2019、SwiftUIをはじめ実にワクワクする新機能が盛りだくさんでした。iOS 13のドキュメントが公開されたので、明日からのセッションでどのへんを勉強するかの予習をかねて、気になった新APIをピックアップしておきます。

IMG_3800 copy.JPG

Vision

人間検出

  • VNDetectHumanRectanglesRequest

人間を矩形で検出。

↓はOpenCVを使った結果ですが、こういうのです。

pedestrian_detection_person_265.jpg

ARKitのpeople segmentationがインパクトありすぎて「矩形で検出」というのは印象薄いですが、「こういうのもあったな」と頭の片隅に置いておくといつか用途があるかもしれません。

文字認識

  • VNRecognizeTextRequest

文字認識。従来から備えていた文字領域検出ではなく、文字認識、いわゆるOCR的なやつです。

今まで無料で使えるやつだとtesseractとSwiftOCRぐらいしか選択肢がなかったのが、ついに標準でサポート・・・!感無量です。

対応言語はsupportedRecognitionLanguages(for:revision:)というメソッドをたたけば調べられそう。あとでやってみます。

続報: 対応言語一覧

動物検出

  • VNDetectAnimalRectanglesRequest

VNAnimalDetectorのtype propertyとして今のところcatdogが用意されており、つまりイヌネコ認識が可能となります。ペットが写ってる写真とかを判別できるようになったわけですね。

画像の類似度を計算

  • VNGenerateImageFeaturePrintRequest
  • VNFeaturePrintObservation

"Analyzing Image Similarity with Feature Print"というサンプルが公開されており、画像間の類似度が計算できるようになったようです。後でコード読んでみます。

画像分類?

  • VNClassifyImageRequest

画像分類は前からできたはずだけど、この新クラスは何だろう?

Image Saliency

State of the Unionでも出てきたこのキーワード。"salient"は辞書によると「顕著な」(英英では"most noticeable or important.")の意味。

  • VNGenerateAttentionBasedSaliencyImageRequest

Generates a heat map that identifies the parts of an image most likely to draw attention.

画像内で、もっとも注意を引く部分を特定するヒートマップを生成・・・?"draw attention"な箇所ってのがよくわかりませんね。試してみます。

  • VNGenerateObjectnessBasedSaliencyImageRequest

Generates a heat map that identifies the parts of an image most likely to represent objects.

画像内で、もっともオブジェクトを表している部分を特定するヒートマップを生成する。ここでいう「オブジェクト」はこちらで指定できるのでしょうか。あとでもうちょっとAPIを見てみます。

  • VNSaliencyImageObservation

上2つのrequestの結果として得られるクラス。VNPixelBufferObservationを継承し、グレースケールのヒートマップデータを持つ。

var salientObjects: [VNRectangleObservation]? { get }

というプロパティを持っていて、salient Objectsの矩形を複数保持できるようになっています。

  • Saliencyのサンプルコードとドキュメント

この"Saliency"関連では、"Highlighting Areas of Interest in an Image Using Saliency"というサンプルコードと、"Cropping Images Using Saliency"というドキュメントがあります。

Core ML公式配布モデル

以前の公式配布モデルと言えば、imagenetベースの物体検出がほとんどで、あまり新鮮味のあるモデルは配布されていませんでした。

なので、自作するか、サードパーティ製のを探して使うことがほとんどでした。

・・・が、今日見てみると、楽しそうなモデルがたくさん追加されているではありませんか!

デプス推定

  • FCRN-DepthPrediction
    • Depth Estimation

redict the depth from a single image.

画像からデプスを「推定」します。つまり、単眼カメラでも、デプスデータを持っていない既存写真からも、デプスが取得できるようになる、ということです。ここからAVDepthDataを生成することもできるはずです。

・・・ということはデプスを利用する機能が実質的にデバイスを限定する機能ではなくなるといえるのではないでしょうか。今まではデプスを使う機能を提供しようにもiPhone X系とか7 Plus, 8 Plus系のハイエンドデバイスのユーザーしか使えなかったので、興味やアイデアはあってもなかなか採用しづらかったのではないかと思います。

これでついにデプス利用機能が多少は普及しそうですね。参考書籍を貼っておきます。

(もちろん今回の発表をふまえてアップデート予定です)

セグメンテーション(領域分割)

  • DeeplabV3
    • Image Segmentation

Segment the pixels of a camera frame or image into a predefined set of classes.

Segmentation_2x.png

サムネイル画像によると人間のセグメンテーションのように見えますが、解説を読むと"predefined set of classes"とあり、複数のクラスに対応しているようです。

試しに.mlmodelファイルをダウンロードして埋め込まれているdescriptionを読んでみると、

person, dog, cat and so on

とあります。人の他に犬や猫もセグメンテーションできるようです。

関連: http://shu223.hatenablog.com/entry/2018/08/22/200226

物体検出(YOLO)

  • YOLOv3

    • Object Detection
  • YOLOv3-Tiny

    • (Real-time) Object Detection

Locate and classify 80 different types of objects present in a camera frame or image.

物体を「画像内のどこにあるか」の情報を含め検出してくれるモデル。リアルタイム検出用の"Tiny"版もあります。

Screen Shot 2019-06-03 at 18.20.19.png

質問への回答を生成

  • BERT-SQuAD
    • Question Answering

Generate answers to questions about paragraphs of text.

公式配布モデルでは唯一の自然言語処理用。

指定したパラグラフ内のテキストに関して、質問を与えると回答を生成してくれるようです。

AnsweringText_2x.png

セマンティック・セグメンテーション / 髪・肌・歯のマスク

  • AVSemanticSegmentationMatte

Portrait Matteの汎用版。Portrait Matteは人間の全身専用マスクを意味しますが、こちらはその他の領域分割用マスクを意味します。

AVSemanticSegmentationMatte.MatteTypeという構造体があり、今のところ次のような種類があるようです。

static let hair: AVSemanticSegmentationMatte.MatteType

A matting image that segments the hair from all people in the visible field of view of an image.

static let skin: AVSemanticSegmentationMatte.MatteType

A matting image that segments the skin from all people in the visible field of view of an image.

static let teeth: AVSemanticSegmentationMatte.MatteType

A matting image that segments the teeth from all people in the visible field of view of an image.

iOS 12の"Portrait Matte"は全身セグメンテーション用のマスクだったのに対して、それの「髪・肌・歯」版が取れるようになったわけです。

これに関連して、Core ImageでもCIImageOptionに次のような種類が追加されています。 1

static let auxiliarySemanticSegmentationHairMatte: CIImageOption
static let auxiliarySemanticSegmentationSkinMatte: CIImageOption
static let auxiliarySemanticSegmentationTeethMatte: CIImageOption

前述のCoreML公式配布モデルの「DeeplabV3」がMatte抽出にあたって内部で使われているのか、別の仕組みなのかは気になります。

AVCapturePhotoOutputの追加API

AVCapturePhotoOutputにセマンティック・セグメンテーション関連APIがいくつか追加されています。2

var availableSemanticSegmentationMatteTypes: [AVSemanticSegmentationMatte.MatteType]

An array of semantic segmentation matte types that may be captured and delivered along with the primary photo.

var enabledSemanticSegmentationMatteTypes: [AVSemanticSegmentationMatte.MatteType]

The semantic segmentation matte types that the photo render pipeline delivers.

AVCapturePhotoの追加API

AVCapturePhotoにも。

func semanticSegmentationMatte(for: AVSemanticSegmentationMatte.MatteType) -> AVSemanticSegmentationMatte?

Retrieves the semantic segmentation matte associated with this photo.

CIImageのAVSemanticSegmentationMatteからの初期化メソッド

AVSemanticSegmentationMatteはまだ紹介してませんが、名前からしてPortraitMatteの汎用版(Portrait Matteは人間の全身専用マスクだが、もうちょっと汎用的に領域分割するマスク)で、そこからCIImageを生成するメソッドが追加されています。

init?(semanticSegmentationMatte: AVSemanticSegmentationMatte)
init?(semanticSegmentationMatte: AVSemanticSegmentationMatte, options: [CIImageOption : Any]?)

パパッと既存の(≠オリジナルの)画像処理を適用するにはやっぱりCore Imageが簡単なので、これは必須ですね。

CGImageSourceを渡すイニシャライザも追加されています(今までなかったんだっけ。。?)

init(cgImageSource: CGImageSource, index: Int, options: [CIImageOption : Any]?)

AVSemanticSegmentationMatteオブジェクトにはプロパティからアクセスできる(持っていれば)ようです。

var semanticSegmentationMatte: AVSemanticSegmentationMatte?

Core Image

デプスブラー

CIContextにデプスブラーフィルタを生成するメソッドが追加。disparityImage(視差画像)、portraitEffectsMatte(全身セグメンテーション用マスク画像)、hairSemanticSegmentation(髪のセグメンテーション画像)を渡せて、出力としてCIFilterオブジェクトが返ってきます。3

func depthBlurEffectFilter(for image: CIImage, 
            disparityImage: CIImage, 
      portraitEffectsMatte: CIImage?, 
  hairSemanticSegmentation: CIImage?, 
               orientation: CGImagePropertyOrientation, 
                   options: [AnyHashable : Any]? = nil) -> CIFilter?

allowLowPower

CIContextOptionに以下の型プロパティが追加されていました。

static let allowLowPower: CIContextOption

ドキュメントには解説がありませんが、ヘッダになにか書いてあるかも知れません。パフォーマンスかなにかを犠牲にして消費電力を抑えるオプションでしょうか?

CIFilterの各フィルタの初期化メソッド

今までは次のように文字列でフィルタ名を指定して初期化しないといけなかったのですが、

let filter = CIFilter(name: "CISepiaTone")!

iOS 13ではドーンと(たぶん)全フィルタの初期化メソッドが追加されました。

一覧は長いので本記事の末尾に載せますが、たとえば上に示したsepia toneフィルタは次のメソッドで初期化できます。

class func sepiaTone() -> CIFilter & CISepiaTone

一色のCIImageを生成する?

ドキュメントには解説がなかったのですが、CIImageに以下のような型プロパティが追加されています。一色塗りのCIImageオブジェクトを生成するのでしょうか?

class var black: CIImage
class var blue: CIImage
class var clear: CIImage
class var cyan: CIImage
class var gray: CIImage
class var green: CIImage
class var magenta: CIImage
class var red: CIImage
class var white: CIImage
class var yellow: CIImage

SoundAnalysis

Analyze streamed and file-based audio to classify it as a particular type.

機械学習ベースで音を分類したりするらしい。何の音を分類してくれるのかAPIリファレンスからはわからなかったのだけど、ドキュメントで、

The SoundAnalysis framework operates on a model that you’ve trained using a Create ML MLSoundClassifier

と書いてあって、Create MLでつくったCore MLモデルを使って音を判別するようです。

ってことで、レイヤーとしてはVisionの音声処理版(Visionは画像処理版)と解釈しとくとよさそう。

AVCaptureMultiCamSession

A subclass of AVCaptureSession that supports simultaneous capture from multiple inputs of the same media type.

"AVMultiCamPiP: Capturing from Multiple Cameras"というサンプルがあるので、あとで実行してみる。

Core Haptics

Compose and play haptic patterns to customize your iOS app's haptic feedback.

サンプルもあります。

このドキュメントも興味深い。"Apple Haptic and Audio Pattern (AHAP)"なるファイルフォーマットがあるらしい。

Audio Effects

そんなに新機能を期待してなかったAudioToolboxのリファレンスを見ていたら、iOS 13+なサンプルが2つもあった。

どちらも"Audio Effects"関連。どのへんがiOS 13なのかまだちゃんと読んでないのですが、あとで見てみます。

AVSpeechSynthesisVoiceGender

以前からある音声合成機能の、合成音声に男女の区別が追加されました。

case female
case male
case unspecified

これに伴い、AVSpeechSynthesisVoiceにはgenderプロパティが追加されました。

var gender: AVSpeechSynthesisVoiceGender { get }

AVSpeechSynthesizer

ちょこちょこと新APIがあります。

var mixToTelephonyUplink: Bool
var synthesizerAudioSession: AVAudioSession
func write(AVSpeechUtterance, toBufferCallback: AVSpeechSynthesizer.BufferCallback)

詳細はいずれ。

MKPointOfInterestCategory

MKMapViewに次のようなプロパティが追加されていて、

var pointOfInterestFilter: MKPointOfInterestFilter?

地図上の"Point of Interest"をフィルタできるようになっています。めちゃくちゃ多くの種類が定義されているので、ここでは触りだけ。

static let airport: MKPointOfInterestCategory

The point of interest category for airports.

static let amusementPark: MKPointOfInterestCategory

The point of interest category for amusement parks.

MKMultiPolygon

MapKitの新クラス。WWDCキーノートを聞きながら

こんな妄想をしてたのもあって、「ポリゴン」という字面からSceneKitと連携するなにかかと一瞬期待したのですが、よく考えたらMKPolygonというクラスは昔からあって、3Dメッシュ表現手法としてのポリゴンではなくて普通に本来の意味での「多角形」でした。(で、どういうものなのかはまだわかってない)

Create ML

いずれ別記事で書きたいので省略しますが、つくれるモデルの種類が増えています。

Create MLって何だっけ?という方はこちらの記事をどうぞ:

VisionKit

Visionとはまた別の新フレームワーク。ドキュメントスキャナ的なものをつくる機能を提供してくれている?

VisionKit is a small framework that lets your app use the system's document scanner. Present the document camera as a view controller, which covers the entire screen like the camera function in Notes. Implement the VNDocumentCameraViewControllerDelegate in your own view controller to receive callbacks from the document camera, such as completed scans.

watchOSのIndependent App

これめっちゃいいじゃないですか。今まで2つのApp Extensionで構成されてたのがどうなるのか気になる。とりあえずプロジェクト生成してみます。

On-device speech recognition

オンデバイスで音声認識。SFSpeechRecognitionRequestに、以下のプロパティが追加されている。

var requiresOnDeviceRecognition: Bool { get set }

その他もちろん気になるフレームワーク群

(SwiftUIとかCombineとかはもちろんキャッチアップするとして)

  • ARKit 3
  • RealityKit
  • Reality
  • Core ML 3
  • Metal
  • MetalKit
  • Metal Performance Shaders
  • Natural Language

etc...

おまけ1: CIFilterに追加された初期化メソッド一覧

上で解説した、CIFilterを生成するメソッド一覧です。しれっと新たに追加されたフィルタもあるかもしれません。

class func accordionFoldTransition() -> CIFilter & CIAccordionFoldTransition
class func additionCompositing() -> CIFilter & CICompositeOperation
class func affineClamp() -> CIFilter & CIAffineClamp
class func affineTile() -> CIFilter & CIAffineTile
class func attributedTextImageGenerator() -> CIFilter & CIAttributedTextImageGenerator
class func aztecCodeGenerator() -> CIFilter & CIAztecCodeGenerator
class func barcodeGenerator() -> CIFilter & CIBarcodeGenerator
class func barsSwipeTransition() -> CIFilter & CIBarsSwipeTransition
class func bicubicScaleTransform() -> CIFilter & CIBicubicScaleTransform
class func blendWithAlphaMask() -> CIFilter & CIBlendWithMask
class func blendWithBlueMask() -> CIFilter & CIBlendWithMask
class func blendWithMask() -> CIFilter & CIBlendWithMask
class func blendWithRedMask() -> CIFilter & CIBlendWithMask
class func bloom() -> CIFilter & CIBloom
class func bokehBlur() -> CIFilter & CIBokehBlur
class func boxBlur() -> CIFilter & CIBoxBlur
class func checkerboardGenerator() -> CIFilter & CICheckerboardGenerator
class func circularScreen() -> CIFilter & CICircularScreen
class func cmykHalftone() -> CIFilter & CICMYKHalftone
class func code128BarcodeGenerator() -> CIFilter & CICode128BarcodeGenerator
class func colorBlendMode() -> CIFilter & CICompositeOperation
class func colorBurnBlendMode() -> CIFilter & CICompositeOperation
class func colorClamp() -> CIFilter & CIColorClamp
class func colorControls() -> CIFilter & CIColorControls
class func colorCrossPolynomial() -> CIFilter & CIColorCrossPolynomial
class func colorCube() -> CIFilter & CIColorCube
class func colorCubeWithColorSpace() -> CIFilter & CIColorCubeWithColorSpace
class func colorCubesMixedWithMask() -> CIFilter & CIColorCubesMixedWithMask
class func colorCurves() -> CIFilter & CIColorCurves
class func colorDodgeBlendMode() -> CIFilter & CICompositeOperation
class func colorInvert() -> CIFilter & CIColorInvert
class func colorMap() -> CIFilter & CIColorMap
class func colorMatrix() -> CIFilter & CIColorMatrix
class func colorMonochrome() -> CIFilter & CIColorMonochrome
class func colorPolynomial() -> CIFilter & CIColorPolynomial
class func colorPosterize() -> CIFilter & CIColorPosterize
class func comicEffect() -> CIFilter & CIComicEffect
class func convolution3X3() -> CIFilter & CIConvolution
class func convolution5X5() -> CIFilter & CIConvolution
class func convolution7X7() -> CIFilter & CIConvolution
class func convolution9Horizontal() -> CIFilter & CIConvolution
class func convolution9Vertical() -> CIFilter & CIConvolution
class func copyMachineTransition() -> CIFilter & CICopyMachineTransition
class func coreMLModel() -> CIFilter & CICoreMLModel
class func crystallize() -> CIFilter & CICrystallize
class func darkenBlendMode() -> CIFilter & CICompositeOperation
class func depthOfField() -> CIFilter & CIDepthOfField
class func depthToDisparity() -> CIFilter & CIDepthToDisparity
class func differenceBlendMode() -> CIFilter & CICompositeOperation
class func discBlur() -> CIFilter & CIDiscBlur
class func disintegrateWithMaskTransition() -> CIFilter & CIDisintegrateWithMaskTransition
class func disparityToDepth() -> CIFilter & CIDisparityToDepth
class func dissolveTransition() -> CIFilter & CIDissolveTransition
class func dither() -> CIFilter & CIDither
class func divideBlendMode() -> CIFilter & CICompositeOperation
class func documentEnhancer() -> CIFilter & CIDocumentEnhancer
class func dotScreen() -> CIFilter & CIDotScreen
class func edgePreserveUpsample() -> CIFilter & CIEdgePreserveUpsample
class func edgeWork() -> CIFilter & CIEdgeWork
class func edges() -> CIFilter & CIEdges
class func eightfoldReflectedTile() -> CIFilter & CIEightfoldReflectedTile
class func exclusionBlendMode() -> CIFilter & CICompositeOperation
class func exposureAdjust() -> CIFilter & CIExposureAdjust
class func falseColor() -> CIFilter & CIFalseColor
class func flashTransition() -> CIFilter & CIFlashTransition
class func fourfoldReflectedTile() -> CIFilter & CIFourfoldReflectedTile
class func fourfoldRotatedTile() -> CIFilter & CIFourfoldRotatedTile
class func fourfoldTranslatedTile() -> CIFilter & CIFourfoldTranslatedTile
class func gammaAdjust() -> CIFilter & CIGammaAdjust
class func gaussianBlur() -> CIFilter & CIGaussianBlur
class func gaussianGradient() -> CIFilter & CIGaussianGradient
class func glideReflectedTile() -> CIFilter & CIGlideReflectedTile
class func gloom() -> CIFilter & CIGloom
class func hardLightBlendMode() -> CIFilter & CICompositeOperation
class func hatchedScreen() -> CIFilter & CIHatchedScreen
class func heightFieldFromMask() -> CIFilter & CIHeightFieldFromMask
class func hexagonalPixellate() -> CIFilter & CIHexagonalPixellate
class func highlightShadowAdjust() -> CIFilter & CIHighlightShadowAdjust
class func hueAdjust() -> CIFilter & CIHueAdjust
class func hueBlendMode() -> CIFilter & CICompositeOperation
class func hueSaturationValueGradient() -> CIFilter & CIHueSaturationValueGradient
class func kaleidoscope() -> CIFilter & CIKaleidoscope
class func labDeltaE() -> CIFilter & CILabDeltaE
class func lanczosScaleTransform() -> CIFilter & CILanczosScaleTransform
class func lenticularHaloGenerator() -> CIFilter & CILenticularHaloGenerator
class func lightenBlendMode() -> CIFilter & CICompositeOperation
class func lineOverlay() -> CIFilter & CILineOverlay
class func lineScreen() -> CIFilter & CILineScreen
class func linearBurnBlendMode() -> CIFilter & CICompositeOperation
class func linearDodgeBlendMode() -> CIFilter & CICompositeOperation
class func linearGradient() -> CIFilter & CILinearGradient
class func linearToSRGBToneCurve() -> CIFilter & CILinearToSRGBToneCurve
class func luminosityBlendMode() -> CIFilter & CICompositeOperation
class func maskToAlpha() -> CIFilter & CIMaskToAlpha
class func maskedVariableBlur() -> CIFilter & CIMaskedVariableBlur
class func maximumComponent() -> CIFilter & CIMaximumComponent
class func maximumCompositing() -> CIFilter & CICompositeOperation
class func median() -> CIFilter & CIMedian
class func meshGenerator() -> CIFilter & CIMeshGenerator
class func minimumComponent() -> CIFilter & CIMinimumComponent
class func minimumCompositing() -> CIFilter & CICompositeOperation
class func mix() -> CIFilter & CIMix
class func modTransition() -> CIFilter & CIModTransition
class func morphologyGradient() -> CIFilter & CIMorphologyGradient
class func morphologyMaximum() -> CIFilter & CIMorphologyMaximum
class func morphologyMinimum() -> CIFilter & CIMorphologyMinimum
class func morphologyRectangleMaximum() -> CIFilter & CIMorphologyRectangleMaximum
class func morphologyRectangleMinimum() -> CIFilter & CIMorphologyRectangleMinimum
class func motionBlur() -> CIFilter & CIMotionBlur
class func multiplyBlendMode() -> CIFilter & CICompositeOperation
class func multiplyCompositing() -> CIFilter & CICompositeOperation
class func noiseReduction() -> CIFilter & CINoiseReduction
class func opTile() -> CIFilter & CIOpTile
class func overlayBlendMode() -> CIFilter & CICompositeOperation
class func pageCurlTransition() -> CIFilter & CIPageCurlTransition
class func pageCurlWithShadowTransition() -> CIFilter & CIPageCurlWithShadowTransition
class func paletteCentroid() -> CIFilter & CIPaletteCentroid
class func palettize() -> CIFilter & CIPalettize
class func parallelogramTile() -> CIFilter & CIParallelogramTile
class func pdf417BarcodeGenerator() -> CIFilter & CIPDF417BarcodeGenerator
class func perspectiveCorrection() -> CIFilter & CIPerspectiveCorrection
class func perspectiveTile() -> CIFilter & CIPerspectiveTile
class func perspectiveTransform() -> CIFilter & CIPerspectiveTransform
class func perspectiveTransformWithExtent() -> CIFilter & CIPerspectiveTransformWithExtent
class func photoEffectChrome() -> CIFilter & CIPhotoEffect
class func photoEffectFade() -> CIFilter & CIPhotoEffect
class func photoEffectInstant() -> CIFilter & CIPhotoEffect
class func photoEffectMono() -> CIFilter & CIPhotoEffect
class func photoEffectNoir() -> CIFilter & CIPhotoEffect
class func photoEffectProcess() -> CIFilter & CIPhotoEffect
class func photoEffectTonal() -> CIFilter & CIPhotoEffect
class func photoEffectTransfer() -> CIFilter & CIPhotoEffect
class func pinLightBlendMode() -> CIFilter & CICompositeOperation
class func pixellate() -> CIFilter & CIPixellate
class func pointillize() -> CIFilter & CIPointillize
class func qrCodeGenerator() -> CIFilter & CIQRCodeGenerator
class func radialGradient() -> CIFilter & CIRadialGradient
class func randomGenerator() -> CIFilter & CIRandomGenerator
class func rippleTransition() -> CIFilter & CIRippleTransition
class func sRGBToneCurveToLinear() -> CIFilter & CISRGBToneCurveToLinear
class func saliencyMap() -> CIFilter & CISaliencyMap
class func saturationBlendMode() -> CIFilter & CICompositeOperation
class func screenBlendMode() -> CIFilter & CICompositeOperation
class func sepiaTone() -> CIFilter & CISepiaTone
class func shadedMaterial() -> CIFilter & CIShadedMaterial
class func sharpenLuminance() -> CIFilter & CISharpenLuminance
class func sixfoldReflectedTile() -> CIFilter & CISixfoldReflectedTile
class func sixfoldRotatedTile() -> CIFilter & CISixfoldRotatedTile
class func smoothLinearGradient() -> CIFilter & CISmoothLinearGradient
class func softLightBlendMode() -> CIFilter & CICompositeOperation
class func sourceAtopCompositing() -> CIFilter & CICompositeOperation
class func sourceInCompositing() -> CIFilter & CICompositeOperation
class func sourceOutCompositing() -> CIFilter & CICompositeOperation
class func sourceOverCompositing() -> CIFilter & CICompositeOperation
class func spotColor() -> CIFilter & CISpotColor
class func spotLight() -> CIFilter & CISpotLight
class func starShineGenerator() -> CIFilter & CIStarShineGenerator
class func straighten() -> CIFilter & CIStraighten
class func stripesGenerator() -> CIFilter & CIStripesGenerator
class func subtractBlendMode() -> CIFilter & CICompositeOperation
class func sunbeamsGenerator() -> CIFilter & CISunbeamsGenerator
class func supportedRawCameraModels() -> [String]!
class func swipeTransition() -> CIFilter & CISwipeTransition
class func temperatureAndTint() -> CIFilter & CITemperatureAndTint
class func textImageGenerator() -> CIFilter & CITextImageGenerator
class func thermal() -> CIFilter & CIThermal
class func toneCurve() -> CIFilter & CIToneCurve
class func triangleKaleidoscope() -> CIFilter & CITriangleKaleidoscope
class func triangleTile() -> CIFilter & CITriangleTile
class func twelvefoldReflectedTile() -> CIFilter & CITwelvefoldReflectedTile
class func unsharpMask() -> CIFilter & CIUnsharpMask
class func vibrance() -> CIFilter & CIVibrance
class func vignette() -> CIFilter & CIVignette
class func vignetteEffect() -> CIFilter & CIVignetteEffect
class func whitePointAdjust() -> CIFilter & CIWhitePointAdjust
class func xRay() -> CIFilter & CIXRay
class func zoomBlur() -> CIFilter & CIZoomBlur

おまけ2: MKPointOfInterestCategory一覧

static let airport: MKPointOfInterestCategory
static let amusementPark: MKPointOfInterestCategory
static let aquarium: MKPointOfInterestCategory
static let atm: MKPointOfInterestCategory
static let bakery: MKPointOfInterestCategory
static let bank: MKPointOfInterestCategory
static let beach: MKPointOfInterestCategory
static let brewery: MKPointOfInterestCategory
static let cafe: MKPointOfInterestCategory
static let campground: MKPointOfInterestCategory
static let carRental: MKPointOfInterestCategory
static let evCharger: MKPointOfInterestCategory
static let fireStation: MKPointOfInterestCategory
static let fitnessCenter: MKPointOfInterestCategory
static let foodMarket: MKPointOfInterestCategory
static let gasStation: MKPointOfInterestCategory
static let hospital: MKPointOfInterestCategory
static let hotel: MKPointOfInterestCategory
static let laundry: MKPointOfInterestCategory
static let library: MKPointOfInterestCategory
static let marina: MKPointOfInterestCategory
static let movieTheater: MKPointOfInterestCategory
static let museum: MKPointOfInterestCategory
static let nationalPark: MKPointOfInterestCategory
static let nightlife: MKPointOfInterestCategory
static let park: MKPointOfInterestCategory
static let parking: MKPointOfInterestCategory
static let pharmacy: MKPointOfInterestCategory
static let playground: MKPointOfInterestCategory
static let police: MKPointOfInterestCategory
static let postOffice: MKPointOfInterestCategory
static let publicTransport: MKPointOfInterestCategory
static let religiousSite: MKPointOfInterestCategory
static let restaurant: MKPointOfInterestCategory
static let restroom: MKPointOfInterestCategory
static let school: MKPointOfInterestCategory
static let stadium: MKPointOfInterestCategory
static let store: MKPointOfInterestCategory
static let theater: MKPointOfInterestCategory
static let university: MKPointOfInterestCategory
static let winery: MKPointOfInterestCategory
static let zoo: MKPointOfInterestCategory

176
106
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
176
106