Apple Engine

Apple, iPhone, iOS, その周辺のことについて

RealityKit の説明と SceneKit との違いについて考える (Xcode 11.0 Beta 1)

3DCG レンダリングと AR 補助機能を持った RealityKit が発表された。
RealityKit の説明をしつつ、最後に SceneKit との違いを考えてみる。
今回はコードでの説明はないので注意。

現状 Beta 版であるため公開されている情報からのまとめ。
以下の情報に関しては今後変更される可能性がある。

 

RealityKit とは

RealityKit は Metal 新たにつくられた 3DCG レンダリングを行うビューで ARKit 共に使用し AR 体験を手軽に体験するコンテンツを作成することができる。

ノードベースでシーンを作成するのではなく、ゲームなどで使用される Entity Component System でシーンがつくられている。

 

RealityKit が現状サポートされている OS

iOS と macOS(UIKit for Mac)

Reality Composer アプリ用に macOS でも動くようになっているのだと思われ。
そのため tvOS は対応されていないのではないかと予想される。

というか、Apple TV HD は Apple A8 なので、サブディビジョンサーフェイスなど RealityKit で実装されている機能が動作しない。

 

RealityKit の主な機能

  • Entity Component System でのシーン構造
  • Reality Composer アプリで作成したシーンアセット
  • 立方体や球やカプセル型などのシェイプや USDZ を使用したカスタムシェイプ
  • 物理ベースやアンリットのマテリアル
  • カメラとライト
  • アニメーションと物理シミュレーション
  • 空間オーディオ
  • 画像、オブジェクト、フェイス、ボディトラッキング設定
  • 多人数で AR を体験する為のデバイス間での同期

 

RealityKit のシーン構造

f:id:x67x6fx74x6f:20190607114620p:plain
RealityKit の構造

 

RealityKit のシーン構造は、基点となる View である ARView があり、View にはシーンが設定され、シーンには ARKit 使用されているようなアンカーを設定し、そこにエンティティを設定することができる。
(RealityKit のアンカー自体もエンティティではある)

ビューを除くと主な要素は以下のものとなる。

  • シーン
  • エンティティ
  • コンポーネント
  • リソース(reality ファイル、USDZ、画像、効果音や音楽)

 

RealityKit のエンティティ

エンティティとは機能を設定したコンポーネントを集めた塊で、SceneKit でいうノード、Unity でいう GameObject のこと。

AR アンカーもエンティティにぶら下がるコンポーネントとして扱っており、 エンティティをエンティティの入れ子にすることができる。

 

RealityKit で用意されているコンポーネント

エンティティに対してコンポーネントはなんらかの機能を付加し、
エンティティ設定時に、移動、回転、拡大縮小の設定やアニメーションを行う Transform のコンポーネントは必ず設定されている。

以下、RealityKit で用意されているコンポーネント。

  • AR アンカー
  • ジオメトリを表示するモデル
  • カメラやライト
  • 物理シミュレーション、物理アニメーション
  • 物理ボディ、物理判定(コリジョン)
  • ボディトラッキング
  • トリガーボリューム

 

AR アンカー

シーン直下にはエンティティではなく1つ以上のアンカーを置くことになる。
基本的はこれまでの ARKit で設定してきたようにモデルを置くか、画像、物、顔、人のトラッキングを行う。

人のトラッキングのみ、ボディトラッキングのコンポーネントでジョイント(ボーン)を設定し使用する。

 

モデル

USDZ で読み込んだジオメトリか、RealityKit で用意されている立方体、球、カプセル、頂点を設定した自前のシェイプを表示する。
USDZ の方がマテリアルの設定が多いため、基本的には USDZ を使う形になると思われる。

また、移動、回転、拡大縮小や衝撃、トルクなど物理動きを与えたアニメーション、物理ボディ、物理判定はここで行う。

 

シェイプ

RealityKit で用意されているシェイプは立方体、球、カプセルのみ。
それ以外は自前で作る必要がある。

 

モデルのマテリアル

種類は以下の3つ。

  • 物理ベースマテリアルの SimpleMaterial
  • シェーディングせずにベタ塗りで表示する UnlitMaterial
  • 領域内にあるモデルを隠し背景画像を表示する OcclusionMaterial

SimpleMaterial は baseColor (diffuse, albedo), metallic, roughness のみでテクスチャ画像か、数値 (Float) が設定可能

UnlitMaterial はテレビ画面など光っているものに向いており、
OcclusionMaterial は机の下からモデルを出したい場合、モデルを OcclusionMaterial で設定したモデルでおおうことで表示されなり、
OcclusionMaterial のモデルから離れた部分から表示される。

 

カメラやライト

カメラは PerspectiveCamera のみ存在しており、カメラモードを nonAR に設定するとデバイスのカメラを使用しなくなる。
nonAR は VR 用や Reality Composer で使用しているものだと思われる。

ライトはポイント、スポット、ディレクショナルライトのみ設定が可能。
設定することがあまりないかもしれないが影を表示しないようにすることも可能。

 

物理シミュレーション関連

一般的な物が設定できるが、物理フィールドが設定できないため、基本的には重力のみの物理シミュレーションと考えてよい。

物理ボディの動作設定は static、kinematic、dynamic。 SceneKit の過去記事を参照。

マテリアルで摩擦係数、反発係数を設定できる。
物理ボディの形状は用意されているシェイプを使用するか自前で生成する。

物理判定は SceneKit 同じ用に Began、Updated、Ended で評価され、CollisionGroup で物理判定へのフィルターができる。

 

トリガーボリューム

物理判定のみを持つエンティティ。
何かの当たり判定やこの領域にキャラが入った時に何かするなど、モデルを必要としない場合の物理判定。

 

RealityKit でその他の設定

AudioPlaybackController に音を設定して、再生やループ、停止、一時停止、音量やリバーブなどをエンティティに設定する。

3D 環境で再生される為、鳴らしているエンティティから近くに行くと音が大きくなり、遠ざかると音が小さくなる。
コンプリートハンドラーから再生完了後に任意の命令を実行が可能。

 

デバイス間での同期

Bluetooth を使用した Multipeer Connectivity を使用しデバイス間での同期させることができる。
基本的には ARKit でやってるように ARSession を端末間で渡し合う。

 

ビュー (ARView)

以下設定できるもの。

  • ARKit の ARSession
  • 空間音響
  • 物理シミュレーションの原点
  • ヒットテストやレイキャスト
  • エンティティへのジェスチャー(移動、回転、拡大縮小など)
  • タッチ、キーボードのダウンアップ、マウス設定、
  • 表示されているビューを画像にするスナップショット
  • デバッグオプション
  • 表示機能を有効・無効にするレンダーオプション

 

レンダーオプションで設定できるもの

  • 光の自動調整
  • カメラゲイン(ノイズを乗せるエフェクト)
  • 被写界深度
  • 平面に投影させる影
  • モーションブラー
  • HDR
  • フェイスオクルージョン
  • ピープルオクルージョン

 

Reality Composer

RealityKit のシーンファイルを構築するためのアプリで、reality という名のカスタムファイルが作成できる。

また、タップ、接近、物理接触字の処理、シーンスタート時などにビヘイビアとしてトリガーや動きや操作(アクション)を設定することができる。

アプリでシーンのリソースとして読み込んだり、
作成したものを iOS、iPadOS 端末でプレビューしたり、QuickLook での表示が可能で、 一部ユーザー操作とデバイス間の同期以外はだいたい設定できる模様。

詳しい操作はこちら(英語だがスクリーショットが多いので雰囲気がなんとなくわかると思われる)

developer.apple.com

 

また、reality ファイルはバイナリを埋め込んだ zip ファイルと予想される。
scn や USDZ ではないっぽいので他との互換性はないと思われる。

互換性があるのであれば、WWDC のセッション内で言うはずなので。

 

SceneKit との違い

SceneKit は ARKit よりも前に作成されており汎用的な 3DCG レンダリングやその操作するもの。

RealityKit は AR 用かつ手軽に作成できるようつくられたもので、現状は SceneKit より機能が絞られている。

また、SceneKit は設定されている機能のほとんどがカスタマイズ可能だが、RealityKit で可能なものは、カスタムモデルとコンポーネントぐらい。

現状 RealityKit は主に AR 用、SceneKit は 汎用的な 3D 用だと考えて良いと思われる。

以下、違いをまとめてみる

SceneKit RealityKit
学習コスト 高い 低い
ビルトインジオメトリ 多い 少ない
マテリアルとパラメーター 多い 少ない
エリアライト ×
SS Reflection ×
SSAO ×
ライトプローブ ×
リフレクションプローブ ×
物理フィールド ×
パーティクル ×
モーフ アニメーション ×
コンストレイント ×
背景画像 ×
カスタムシェーダー ×
マルチパスレンダリング ×
SpriteKit ×
2Dオーバーレイ ×
エディタ Scene Editor Reality Composer
エディタでのビヘイビア追加 ×
シーンファイル拡張子 scn, scnz reality
対応 OS iOS, macOS, tvOS, watchOS iOS, macOS
対応言語 Objective-C, Swift Swift

 

まとめ

RealityKit は、機能的に SceneKit よりも劣るものの、Reality Composer の発展も含めて今後有力な開発環境にと思われる。

今後や来年の WWDC でどのような機能が実装されるかで、Apple プラットフォームで新しい汎用の 3D レンダラーになる可能性もあり楽しみである。

 

UI デザインで今後丸ゴシックが使用される可能性

iOS 12.2 以降の Wallet アプリ で Suica を開くと価格部分に「SF Compact Rounded」という丸ゴシックのフォントが使用されている。

f:id:x67x6fx74x6f:20190530170512j:plain

 

また、噂されている iOS 13 で Apple が提供しているアプリでも「SF Compact Rounded」が使用されているスクリーンショットがリークされているため、
この流れから、丸ゴシックが使用される可能性もあるだろう。

Wallet アプリ で丸ゴシックが使用された理由はよくわからないが、
昔は欧文フォントでは丸ゴシックが少なく、わりとここ何年かで増えた感じはしており、珍しさがあるのかもしれない。

また、日本での広告や公共交通機関での情報表示ではわりと丸ゴシックが使用されているので、その影響もあったりするかもしれない。

 

macOS で使用できるもの

現状、macOS で使用できる丸ゴシックフォント。

  • SF Compact Rounded
  • Arial Rounded MT Bold
  • ヒラギノ丸ゴ Pro w4
  • 筑紫A丸ゴシック
  • 筑紫B丸ゴシック

f:id:x67x6fx74x6f:20190603153634p:plain

 

個人的に好きな丸ゴシックフォント

  • AXISラウンド 50 / 100
  • イワタUD丸ゴシック
  • Sofia Pro Soft
  • Akko Rounded
  • DIN Next Rounded / FF DIN Round

 

今後期待している丸ゴシック

Fontworks で新しい丸ゴシック「筑紫アンティーク丸ゴシック」が開発されているらしい。
期待している。

WWDC 2019 の発表をなんとなく妄想する

いつも通り妄想してみる。
主に妄想してみるのは以下3つ。

  • ARKit を含む Metal や SceneKit の 3D Graphic
  • Core ML や Create ML の強化
  • macOS での UIKit の使用

 

ARKit を含む Metal や SceneKit の 3D Graphic

ARKit で Swift 専用のフレームワークが増える

ARKit で Swift 専用のフレームワークが増えるという噂だが、もしそうなら Create ML のような macOS でつくる事前処理か、それとも Apple のプラットフォームで Objective-C のサポートがなくなるのか。

Objective-C のサポートがなくなるのなら Unity や Unreal などゲームエンジンが死亡する。

 

ARKit で人間のポーズの検出機能

ARKit で人間のポーズの検出機能もつくと噂されている

人間のポーズが取れるなら、SceneKit 側で人体の基礎となる骨格、CG 用語でいうリグが実装される可能性ある。

また、キャラクターアニメーションの機能が強化される可能性がある。

 

ARKit で遮蔽物の認識ができるようになる

6D.ai など他のライブラリーでも行なっているので、できるようになる可能性はある。

ARKit 2.0 で実装された WorldMap から遮蔽物を保存できると思われるので、同じ位置で遮蔽物の復元をかければ、正直リアルタイムに遮蔽物をスキャンしなくてもよいは気がする。

 

ARKit でイメージやオブジェクトトラッキングの向上

イメージトラッキングの場合、トラッキングする画像に欠損があると認識が落ちるので、参照画像に透過が使えると嬉しい。
例えば、参照画像のロゴの背景が透過しているものを設定し、トラッキングの際はロゴをデータの合致だけを見て背景色は変わっていてもよいとか。

また、オブジェクトトラッキングは止まっているものを認識するようになっているため背景が変わると認識できない。
カメラ画像から特徴点を取っており、木目の上にのっているオブジェクトと大理石にのっているオブジェクトでは別のものになってしまう

そのため、現状ではいくつかの背景のものをスキャンして、結合する必要がある。

それをせずに背景だけ外して認識するできるようになるなど。
(ロジック的に想像できないので多分かなり難しい)

また、手や指のトラッキングなど。

 

SceneKit でマルチプルビューポート

A12 の Metal の機能で複数のカメラを使用した画面を表示する機能が追加されているので、このような機能が実装されれば確実に AR グラスの製品が出る日が近い。
また、外部ライブラリを使用しなくても、この機能があれば VR も可能になる。

実はアプリ申請できないプライベートフレームワークで iOS 10 までマルチパスレンダリングで同じことができる API が存在していた。

 

その他で SceneKit で増えそうな機能

去年は SceneKit で新しい機能が一部しか変更がなかったため、今年はかなり更新されると思っている。

以下、完全に妄想。

  • ジオメトリのパーティクル
  • Animoji で耳などに使われているようなダイナミックボーンやスプリングボーン
  • クロスシミュレーション
  • ML 使用した流体シミュレーション
  • スクリーンスペースベースの SSS や屈折
  • ヴォリュームレンダリング
  • ジオメトリのボロノイ分割
  • レンズフレアなどのカメラエフェクトの追加
  • SceneKit でシェーダーを作成を簡単にする仕組み
  • SceneKit でのパストレースの実装、もしくはオフラインレンダラー
  • シーンエディターでのタイムライン操作の強化

 

Core ML や Create ML の強化

Core ML では音声周りの機能が増えそうではある。

Create ML が iOS で使用できる可能性がある。
現状、iPhone XS よりしょぼい Mac の Swift Playground でも動くため、動作しそうな感はある。

ただ Create ML 自体、元が Turi Create なので、Python が使用されている可能性があるため、Python 自体が実行できるようにかもしれない。
macOS では Swift から Python を実行できるため。

また、これに伴い Vision Framework も大幅に拡充もされそうではある。

 

macOS での iOS の UIKit の使用

macOS で UIKit が使用できるようになのであれば Cocoa と UIKit で追加の API が多く実装される可能性がある。

例えば、View にマウスイベントが動く必要がある。
そのため、ブラウザーの Pointer Event のようにタッチ、ペン、マウスを統一された API 取得できるものが用意されるとか、
Touch Bar の処理を UIKit の View に渡したり、ショートカットを渡す処理など軽く考えるだけでも色々 Cocoa と UIKit で処理をつなげなければいけないものが多い。

 

その他

OpenGL/GLES、OpenCL が廃止される中、Maya など 3DCG DCC ツールが Metal に対応されるとは到底思えない。
多分 Metal で対応される可能性が低いので Apple 自体が用意するかもしれない。

UIKit の実行に関しては、もしかすると発表される Mac Pro には T2 チップとは別にアクセラレータとして Apple A チップが搭載される可能性も考えられる。
もし、UIKit をシミュレーションさせているなら Mac 自体に Apple A チップ 側で処理したほうが速いから。

あと、Mac Pro と共にディスプレイを出すらしいが、eGPU が搭載されていそうな感はある。
GPU が付いていたら便利だし、値段が高くてもある程度言い訳ができるし。

 

まとめ

あくまでも妄想の範疇で書いてみたが、実際のところ全体で大幅に変わると予想されるので、明日以降更新を調べていくのが大変になりそうではある。

Pokémon GO における Apple Watch のサポート中止と Apple Watch のこれから

Pokémon GO では Apple Watch のサポートを終了いたします。 2019 年 7 月 1 日以降、Apple Watch では Pokémon GO にアクセスできなくなります。

niantic.helpshift.com

 

「いつでも冒険モード」で代用できるとのこと。

 

機能的には「いつでも冒険モード」より、Apple Watch の方が色々できるが、 モンスターボール Plus、Pokémon GO Plus の方が利便性があるだろう。

ただ、個人的には Apple Watch のアプリのサポートを中止する理由があまりわからない。

思う部分は2点。

  • モンスターボール Plus、Pokémon GO Plus、Pokémon GO Plus+ の販売拡充のため
  • サポートや開発コストが掛かるため

 

モンスターボール Plus、Pokémon GO Plus、Pokémon GO Plus+ の販売拡充

可能性は高いし、Apple Watch が使用されていない可能性も大いに。

ただ、WWDC 2019 直前に発表する意味はないのではと思っている。

 

サポートや開発コスト

正直、コストに関しては問題はないと思うが書いてみる。

今も Unity でアプリがつくられているだろうが、Unity では Apple Watch のアプリ制作をサポートしていない。
ちなみに、ロードマップからも消えたので今後サポートされるかはわからない。

そうなると、Objective-C か Swift のブリッジを使って Native Plug-in と watchOS アプリコードを書くことになるし、多分 Pokémon GO もこのように実装しているだろう。

また、Apple Watch 対応発表後かなり経ってからリリースされているので、正直 Apple プラットフォームでの開発力があるかよくわからない。

watchOS 自体 Metal を使用して 3DCG を表示することができるので、ネイティブでつくっていれば iOS から watchOS への移植もさほど難しくなかった気はする。

 

Niantic の対応から見る今後の Apple Watch

現状、Apple Watch のアプリは iPhone からデータを送るため単体で動くものは Apple がつくっているものしかない。

噂されているように WWDC 2019 で Apple Watch 単体で使用できる App Store が発表される可能性があり、もしかすると単体で動くアプリが開発できるかもしれない。

そうなった時、Apple Watch が Android など他のプラットフォームでも対応されるかもしれないので、Niantic での対応コストが上がる。
これを予想しているのであれば、WWDC 2019 前に発表したのわかる気はする。

で、Apple Watch 単体でアプリが動くことができるようになれば、小型端末でこのようなハードが動くこととなる。

例えば AR グラスとか。

Google の Material Design の UI があまり好きではない

Android が嫌いとかいうわけではなく、UI に関して一貫性がないため。
iOS が完璧かと言われるとそうは言えないが、いくつか問題がある。

 

Material Design の概念の崩壊

まず、Material Design で紙のメタファーの様に言っていたが、ダークテーマ適用の際にその概念が意味をなくした。
そして、概念を変更した説明がない。

 

Material Design でコンテンツ以外の部分が目立つ場合がある

ヘッダーやタブ、フローティングのボタンなどに色を付けるため、本来アプリで注目させるコンテンツが目立たなくなる。
謎である。

f:id:x67x6fx74x6f:20190602084137p:plain f:id:x67x6fx74x6f:20190602084201p:plain  

iOS でも Material Design を押し通す

iOS での Google のアプリのデザインは Material Design を押し通している。

ちなみに Android 版の Apple Music アプリは Material Design に添う様にデザインしなおされている。

 

まとめ

Material Design が自分はよいものだとは思えないのが現状の考えである。

Game Controller フレームワークについて電子書籍を書いてみた

試験的にまた電子書籍を書こうかなと思い、
ゲーム系の仕事をしてた過去があり、Apple プラットフォーム (iOS, tvOS, macOS) で物理的なゲームコントローラーに関して知見があったので、Game Controller framework について書いてみた。

x67x6fx74x6f.booth.pm

 

Game Controller framework に関して公式ドキュメンと Web 検索でほぼ情報入手できるし、動作サンプルを公開しているのでこの本が必要かと言われると微妙ではあるが、
まぁ、若干の罠があるのでそれを知るためのものという位置付け。

また、Unity などゲームエンジで Apple プラットフォームでゲームコントローラーを対応するための基礎知識とはなると思う。

 

Game Controller framework について

Game Controller framework は操作されている値を取得するだけなので、ゲーム以外でも使用でき、用意されている API も少なく変更も少ないため、おぼえてみるのもよいかもしれない。

MIDI コントローラー、MIDI キーボードなど、パラメーターを Core MIDI で取得するはそこそこ面倒だが、
ゲームコントローラーだと 14 ぐらいの操作を手軽に取得でき、
インスタレーションで表示を変化させるトリガー、サイネージでの操作、ARKit を使用した AR コンテンツの補助的操作など、ゲーム以外に使用できる用途は沢山ある。

ARKit をビルドして動かすだけでも面白さがあるように、物理的なコントローラーでコンテンツが操作できるだけでも面白さはあると個人的に思っている。

 

注意点

ちなみにサンプルは tvOS + Siri Remote か iOS デバイス + MFi 認証取得のゲームコントローラーがないと試すことができないので注意。

 

その他

本で記載したコードは Swift。
PDF をオーサリングしたアプリは Re:VIEW から Apple の Pages に移行した。

今回使用した Pages のテンプレが必要であれば公開する。

 

この本の更新について

WWDC 2019 で Apple Arcade の詳細が発表された際に、Game Controller framework 更新があった場合は、
この本の更新を予定はしていおり無料でアップデートされる。

ただ、更新する量が多い場合はアップデート時に価格を変更するかもしれない。

その後は多分大幅な更新はないとは思われるが、 更新内容が全体の 1/3 を超える場合は新しい電子書籍としてリリースする。

 

本で紹介したコントローラーで購入可能なもの

2019年版の iPod touch が発表された

f:id:x67x6fx74x6f:20190529031243j:plain

A10 Fusion に変更された新しい iPod touch が発表された。
約4年ぶり。

謳い文句は、従来品より最大2倍パフォーマンス、最大3倍グラフィックスが向上し、AR 対応端末となっている。

6色展開かつ値段据え置きで、スペック上は SoC と ストレージに変更があるだけな模様。

www.apple.com

 

SoC

追記: バッテリーの問題かクロック周波数が抑えられている模様。

どうやら Single : 2700, Multi : 4700 ぐらいなスペックっぽい

www.macotakara.jp

 

A10 Fusion となっており、iPhone 7 と同様となっている。
以下、Geekbench のマルチコアで並べてみた。

Single Multi
Google Pixel 3
Snapdragon 845
2249 7772
Google Pixel 2
Snapdragon 835
1836 6060
iPhone 7
A10 Fusion
3410 5744
Google Pixel 3a
Snapdragon 670
1609 5133
iPad Pro 12.9-inch 1st
A9X
3059 5123
iPhone SE
A9
2407 4167
Google Pixel
Snapdragon 821
1625 4009

 

CPU 的には、最初の iPad Pro の A9X より速くなっている。
(Metal の性能は GPU 数が多いため A9X は A11 よりスコアが高い)

また、CPU 性能だけであれば、最初の Google Pixel や Google Pixel 3a より速く、Google Pixel 2 にほぼ近い。

GPU 性能的にも CPU に近しいものになり、iPhone 7 より画面が小さいため処理能力は高いと思われる。

 

価格(以下税別)

  • 32G ¥ 21,800
  • 128G ¥ 32,800
  • 256G ¥ 43,800

 

この端末を出した狙い

需要を考えている 

以前の iPad touch の端末のサポートが切れることと、iPhone や iPad の価格が高騰しているため開発向けの意味合いもあるだろう。
教育や業務用の端末として使用されているケースがまだあり、これらを考えるとまだ需要があるのだろう。

 

AR を進めていきたい

今年のラインナップで AR を推すのであれば A9 以前のチップを一掃したいのではと思わないでもない。
(そうなるのであれば噂されていない Apple TV HD も消えることになる)

 

Apple Arcade などゲーム発展させたい

A10 Fusion は 2 世代前のハイエンドと同じようなスペックを持ち、Android では1世代前に近いスペックを持つため十分使用できるだろう。

もしかすると、Apple Arcade の最低スペックが A10 なのかもしれない。

 

Apple TV+ などの再生端末として

端末自体での再生や AirPlay での再生が予想される。

海外では TV に AirPlay をサポートし始めたものが出るらしいので、Apple TV を使用したり間に挟まず、この端末から TV で再生する流れもありうる。

 

同スペックの iPhone 7 との比較

現状の iPhone 7 が以下の価格で、価格差が ¥29,000。

  • 32G ¥ 50,800
  • 128G ¥ 61,800

画面解像度、カメラ性能、セルラー回線、GPS、Touch ID、Suica(FeliCa)が使え CPU スペックが抑えられているため、
正直なところ、iPhone 7 の方が価格差以上の機能はあると思っている。

 

まとめ

ゲームなどで iOS の端末が使いたい、開発向けなどにはよい端末だと思われる。

個人的には A10 系と A11 以降で GPU の機能が異るので、A11 にしてもらかった。

いい加減 Touch ID を実装してほしいところではある。