FRMSKI開発ブログ

AWS、iOS、AR/VRなど開発メモ

RxSwiftのbindでテキストフィールドと変数の値を直結させる

RxSwiftのbindを使えばテキストフィールドの値を変更したタイミングで変数を書き換える処理を簡単に実装することができます。 //TestViewController.swift側 @IBOutlet var testTextField : UITextField! let model = TestModel() let disposeBag = DisposeB…

Human Interface Guidelines④ - App Architecture / Loading 和訳&まとめ

前回のアクセシビリティに続いて今回はLoadingについての和訳です。 Loading(ローディング) コンテンツが読み込まれると、空白の画面や静的な画面では、アプリがフリーズしているように見えることがあり、混乱と不満を招き、ユーザーがアプリを離れる可能…

Human Interface Guidelines③ - App Architecture / Accessibility まとめ&和訳

iOSのアーキテクチャのアクセシビリティについての和訳です。 Accessibility(アクセシビリティ) iOSは、視力喪失、難聴、およびその他の障害を持つユーザーに、幅広いアクセシビリティ機能を提供します。UIKitベースのアプリケーションは、ほとんど手間を…

Human Interface Guidelines② - Interface Essentials 和訳&まとめ

前回に引き続きHIGの和訳を紹介します。今回はインターフェース要素について。 前回の記事 → Human Interface Guidelines① - iOS 和訳&まとめ - FRMSKI開発ブログ Interface Essentials(インターフェース要素) ほとんどのiOSアプリは、共通のインターフェ…

Human Interface Guidelines① - iOS 和訳&まとめ

AppleのHuman Interface Guidelineについて少しずつまとめたいと思います。今回はiOSのデザインテーマとデザイン原則について。 iOSデザインテーマ 下記はiOSが他のプラットフォームと区別される3つの違いです。 Clarity(明快さ) 見やすいテキスト、明瞭な…

ライブラリ管理ツールCocoaPodsの使い方

iOS

CocoaPodsはiOSアプリ開発に使用するライブラリ管理ツール。今回はインストール手順をご紹介します。 ①ruby gemを最新に まずはMacにはデフォルトで入っているRubyを最新のバージョンにアップデートします。 $ sudo gem update --system ②CocoaPodsをインス…

RxSwiftの基本を学ぶ

RxとはReactive Extensionsの略で非同期処理やイベント処理などを宣言的に記述することができる便利なライブラリです。 RxのSwift実装なのでRxSwiftと言います。 インストール方法 pod 'RxSwift'をPodfileに記述しpod installでインストールできます。 Obser…

報酬をコントロールしてモチベーションを保つ方法

認知科学や心理学を通したモチベーションを保つ方法について、ソフトウェア開発や仕事にも役立ちそうなのでまとめてみました。 目標に近づくほど「ヤル気」が出る 目標に向かって進む時、「すでに完了したものに注目する」よりも「残されているものに注目」…

SCNPhysicsBodyのプロパティ一覧

SceneKitの物理シミュレーションはSCNPhysicsBodyを使えば簡単に実装することができます。物理演算を正確に制御するためには重力や摩擦についてのプロパティを正確に知ることが重要です。 下記表でSCNPhysicsBodyのプロパティを一覧にしてまとめてみました。…

Swiftにおける基本のMVCアーキテクチャについて

デザインパターンといえば、MVC・MVP・CleanArchitectureなど様々なアーキテクチャありますが、今回は基本の基本、であるMVCについて、Swiftにおける基本をまとめました。 MVCについて説明 まずMVCとはアプリケーションを実装するためのデザインパターンで、…

【ARKit】lightEstimateでカメラ画像の明るさを環境光に反映

上画像のようにARKitでカメラ画像の明るさをライティングに反映する方法をご紹介します。 ①SceneKitのライティングを作成 まずはライティング用ノードを作成してrootNodeに追加します。 var sceneLight: SCNLight!//シーンのライト override func viewDidLoa…

Swfitでアプリ内にテキストファイルを書き出す

テキストファイルを書き出してiTunesで取り出す手順を紹介します。 ①FileManager.default.urlsでドキュメントのパスを取得 let documentDirectoryFileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last { ②テキストファイ…

CoreLocationで位置情報と方角を取得する

CoreLocationで位置情報を取得する方法を紹介します。 ①CoreLocation.frameworkを追加 「General>Linked Frameworks and Libraries」にCoreLocation.frameworkを追加しimportします。 import CoreLocation ②info.plistにKeyを設定 info.plistでPrivacy - Loc…

スマートフォン史上最強「A12 Bionic」とは

9月に発表されたiPhone XS/XS Max/XRには「アップル A12バイオニック(Apple A12 Bionic)」が採用されています。 世界最大の半導体製造ファウンダリ「TSMC(台湾)」で製造された7ナノメートルプロセスラインで生産される最新鋭のモバイルプロセッサです。 …

分かりにくいSwiftのオプショナル型「?」と「!」の違いについて

オプショナル型について簡略に説明している記事が少なかったので短くまとめて見ました。 オプショナル型とは? オプショナル型は変数にnilの代入を許容するデータ型です。nilはデータがない状態。 そして、オプショナル型の変数には「?」か「!」をつけます。…

フリーランスとしてのカスタマーサクセスとは

友人に進められて読んだビジネス本『カスタマーサクセス――サブスクリプション時代に求められる「顧客の成功」10の原則』が、今の自分の働き方と重なる部分があり面白かったので紹介します。 カスタマーサクセスとフリーランスの仕事 カスタマーサクセス(顧…

Swiftでプロパティ監視(willSet/didSet)

Swiftで変数の変更を監視するには「willSet/didSet」を使います。 プロパティ監視はsetterやgetterなどのプロパティ代入とは違い、プロパティの変更時に呼ばれます。 プロパティ変更前に呼ばれるのは「willSet」、変更後に呼ばれるのが「didSet」になります…

超簡単SwiftのInterfaceBuilderでジェスチャー取得

SwiftのInterfaceBuilderを使えばタップやスワイプなどジェスチャーを簡単に取得できます。 【手順】 ①ライブラリからViewのストーリーボード へTapGestureRecognizerオブジェクトをドラッグドロップ ②ViewController.swiftに@IBActionでタップ関数を作成 @I…

ARKitでカメラの位置を取得する

ARKitでカメラの位置を取得する方法です。 ARSCNView.sessionのデリゲート(ARSessionDelegate)をViewController自身に設定します。 sceneView.session.delegate = self セッションのイベントにアクセスしてフレームからカメラを取得出来ます。 func sessio…

SceneKitで3Dシーンを作成「SceneKit Scene File(.scn)」

SceneKitではSceneKit Scene File(scn)を新規作成することでシーンを作成できる。 シーンでは3Dオブジェクトの配置などがエディタ上で可能。 作成したシーンファイルは下記ソースでARSCNViewに配置できます。 let scene = SCNScene(named: "ship.scn")! scen…

Xcodeの過去バージョンをダウンロードする

iOS

Xcodeの過去バージョンは下記リンクからダウンロードすることができます。 Sign in with your Apple ID - Apple Developer

【ARKit】ARSCNDebugOptionsで特徴点と座標軸を表示する

CoreML開発に特徴点もしくは座標軸を表示する方法を紹介します。 ARSCNDebugOptionsを設定します。 特徴点を表示するにはshowFeaturePoints、 座標軸を表示するにはshowWorldOrigins。 下記は両方表示するコードです。 self.sceneView.debugOptions = [ARSCN…

CoreML + ARKit【調査編】

CoreMLの調査のためApple公式のドキュメントを調査しました。↓ Apple Developer Documentation 【調査内容】 ・機械学習のモデルは.mlmodelを使用 ・ドキュメントからプロジェクトのサンプルをダウンロードできます。 ・既存の機械学習モデルもmlmodelに変換…

UnityでARkitをはじめる

ARkit開発環境(Unity) ・iPhone6s〜 ・iOS11〜 ・Xcode9〜 ・Unity5.6.1.p1〜 bitbucket.org ARKitで出来ること ・ポジショントラッキング ・壁や床などの平面検出 ・二次元画像の認識 ・ポイントクラウド(3次元の点座標情報)取得 ・周囲の明るさ推定 ・…

「Enable gradle instead of ant」でビルド時にエラー

4.19からデフォルトとなったGradleでのビルド時にエラーが出る場合の対処法。 1.NVPACK/android-sdk-windows/tools/android.batを実行 2.Deselect Allにチェック 3.Extras/Android Support Repositoryにチェックを入れてアップデート で解決します。

UE4で空気遠近法を再現する

空気遠近法(Aerial perspective)は、大気が持つ性質を利用した空間表現法です。 例えば戸外の風景を眺めてみると、遠景に向かうほどに対象物は青味がかって見え、また同時に、遠景ほど輪郭線が不明瞭になり、対象物は霞(かす)んで見えます。 UE4ではこの…

ライティング検証 アンビエント・オクルージョン

雰囲気のある質感を出すためにオブジェクトとオブジェクトの隙間の陰影を強くして、やわらかな大域照明の影をシミュレートする手法をアンビエントオクルージョンと言います。 UE4では、レベルのワールドセッティングで、LightmassのUse Ambient Occlusionに…

アニメーションBPのブレンド切り替え時に途中から再生される

アニメーションBPでアニメーションを制御する際、ブレンドでアニメーションを切り替えて、再度前のアニメーションに戻ろうとすると、以前に終了したポイントから再生されてしまいます。 アニメーション切り替えの際に常に頭から再生させる場合は、ブレンドノ…

VR Spectator Screenでテクスチャが正常に表示されない

UE4.17から実装されたVRSpectatorScreen(VRスペクテイタースクリーン)機能ですが、Scene Capture2Dでキャプチャしたテクスチャが正常に表示されない場合があります。 (エディター上での表示) (SpectatorScreenでの表示) SpectatorScreenでの表示の方が…