しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

2015-12-01から1ヶ月間の記事一覧

やばいと噂のAdobe Creative SDK for iosを使ってみる

iOS

12月に話題になっていたAdobe Creative SDK for iosを試してみました。 記事の内容に従ってインストールして動かしてみます。 Adobe Creative SDK for ios が本当にやばい - Qiita インストール CocoaPods対応していないので直接プロジェクトにフレームワー…

YAGNIの精神でクラスの共通化をする

下記事を読んで思った事を書いてみます。 クラスはトップダウンよりボトムアップがいいと思う クラスの共通化は本当に必要になった時に行う 特に新規開発の初期段階では極力共通化はしないようにしています。 共通化をするのは開発も落ち着いてきて、利用す…

SwiftでCSVを読み取れるライブラリ - SwiftCSV - を使ってみた

iOS

今日はこちらのライブラリを試してみました。 github.com インストール インストールはいつものようにCocoaPodsで行います。 CocoaPodsに上がっているものではうまく動かなかったので直接リポジトリを指定してインストールしました。 pod "SwiftCSV", git: '…

ActiveRecordのexists?メソッドが発行しているSQLを調べてみる

ActiveRecordでデータが存在するかを調べる時はpresent?よりのexists?の方が良いと聞いたので違いを調べてみました。 調べたところ「LIMIT 1の有無」と「カラムの情報を取得するかどうか」が違っていました。 2.2.0 :005 > Item.where(name: 'name').exists?…

Mirrorオブジェクトを使ってみる

iOS

こちらの記事を参考にMirrorオブジェクトを使ってみました。 Swift reflectionについて - Qiita プロパティー名一覧の取得 以下でプロパティー名一覧を取得できました。 しかしComputedPropertyは取得できないようです。 class MyClass { var prop1 = 0 var …

Swiftでプロパティー一覧を取得するclass_copyPropertyListメソッド

iOS

Swiftのclass_copyPropertyListメソッドについて調べてみました。 class_copyPropertyListを使うと下のようにプロパティ名を取得できます。 class MyClass: NSObject { var prop1 = "" var prop2 = "" } var count: UInt32 = 0 let properties = class_copyP…

swiftでバイブレーションを鳴らす方法

iOS

下のコードで鳴らす事ができました。 バイブレーションは短いものが1回鳴るだけでした。 import AudioToolbox AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))

SwiftでVariable used within its own initial valueが出た時対策

iOS

Swiftで再帰的なブロックを定義すると表題のエラーが出ます。 var block = { () -> () in block() } 事前に宣言すればこの問題を回避できます。 var block: (() -> ())? block = { () -> () in block?() }

EmptyCollectionという常に空な配列

iOS

Swift言語について調べていたらEmptyCollectionという不思議な物を見つけたので動かしてみました。 初期化は下の通りです。 appendメソッドはないので要素の追加はできません。 let arr = EmptyCollection<Int>() arr.count EmptyCollectionの定義は下の通りです</int>…

教師あり学習 と 教師なし学習 の違いを調べてみる

機械学習について調べる中で出てきた 教師あり学習 と 教師なし学習 について調べてみました。 教師あり学習 と 教師なし学習 教師あり学習と教師なし学習は事前の学習の有無が違います。 教師あり学習では事前にデータとそれに対応する正解のペアを与える事…

機械学習ってなんなのか調べてみる

機械学習ってなんなのかを改めて調べてみました 機械学習とは 機械学習 - Wikipedia まずはWikipediaで調べてみました。 機械学習(きかいがくしゅう、英: machine learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様…

Xcode開いただけで差分が出る問題を解決してくれるコマンドを試してみた

iOS

こちらで紹介されていたので自分でも試してみました。 XcodeのUpdateの度に出て辛かったので非常に助かります。 XcodeをアップデートするとXib・Storyboardを開いただけで差分が出るのをなんとかする - Qiita コマンドは下の通りです。 find . -name "*.stor…

SwiftでStateパターンを実現できるGKStateMachineを試してみる

iOS

今日はGameplayKitのGKStateMachineというクラスを使ってみました。 こちらは簡単にStateパターンを実装できるクラスです。 Game用ライブラリであるGameplayKitに入ってはいるのですが、ゲーム以外のアプリを使う時にも使えそうです。 Stateパターンとは Sta…

ドメインモデル貧血症を調べてみる

設計について調べていると時々出てくるドメインモデル貧血症について調べてみました。 ドメインモデル貧血症の処方箋 - まめログ ドメインモデル貧血症 - Strategic Choice こちらの記事が非常に参考になりました。 簡単に言うと中身がスカスカなモデルが大…

レイヤ化アーキテクチャとは何か調べてみる

ドメイン駆動設計について調べていく中でレイヤ化アーキテクチャと言う概念が出てきたので調べてみました。 レイヤ化アーキテクチャ 名前の通り、アプリケーションをレイヤ毎に分ける設計手法を指す言葉のようです。 MVCやMVP等もレイヤ化アーキテクチャの一…

Crashlyticsで使われている.dSYMの実態を調べる

iOS

CrashlyticsではDebug Information FormatをDWARF with dSYM Fileしないとエラーが検知されません。 今日はこのdSYMとは何かを調べてみました。 dSYMパッケージを見てみる 下パッケージがdSYMパッケージのようです。 /Users/[ユーザー名]/Library/Developer/…

ミニマックス法とは何かを調べる

ゲームのAIを作る時に出てくるミニマックス法について調べてみました。 ミニマックス法とは ミニマックス法 - Wikipedia ミニマックス法(minimax)は、想定される最大の損害が最小になるように決断を行う戦略のこと。 まずはWikipediaを読んでみます。 Wiki…

Swiftraを使ってMac上にSwiftサーバーを作ってみる

下記事を参考にSwiftとSwift Package Managerのインストールをします。 Swift Package Managerを使ってみる - しめ鯖日記 続けて下記事を見ながらSwiftraを動かしていきます。 SwiftでSinatraっぽくWebアプリケーションを書いてLinuxで動かす - Qiita まずは…

UITextFieldの英語入力時の補完をOffにする方法

iOS

下のような現象を回避する方法です。 CorrectionのプロパティーをNoにすれば回避できます。 1文字目が大文字になるのを回避したい場合はCapitallizationをNoneにすると良いです。

Swift2.2-snapshotを入れようとしたらインストールできませんと言われた

iOS

Swift2.2を入れようとしたら以下のエラーが出ていました。 OSをEL Capitanにしたらインストールできるようになりました。

The bundle is invalid. ってエラー対策

iOS

下のようなエラーが出た時の対処法です。 アプリのバージョンが不正と言うエラーになります。 CocoaPods内のInfo.plistのバージョンがおかしい場合も発生します。 CocoaPods内のバージョンを手動で適切な値に直したら動きました。 参考URL ios - CFBundleVer…

Swift Package Managerを使ってみる

iOS

Swiftのオープンソース化に合わせ、Swift Package Manager というパッケージマネージャーが出ていたので試してみました。 github.com Swiftのインストール まずはMacにSwift2.2をインストールします。 下記事を見ながら実施しました。 SwiftがOSSになったの…

ドメインモデルとドメイン駆動開発とは何か調べてみた

ドメインモデルとは ドメインモデル(英: Domain model)は、システムに関わる様々な実体とそれらの関係を説明するシステムの概念モデルである。 ドメインモデルは、システムの鍵となる概念と用語を文書化するために作成される。 ドメインモデルでは、システ…

Storyboardの警告を一括で直す

iOS

出ている警告を一気に直す方法です。 「Editor」→「Resolve Auto Layout Issues」→「Update Frames」を選ぶと自動で調整してくれるようになります。

Swiftでクリップボードへコピーする

iOS

UIPasteboardを利用します。 let board = UIPasteboard.generalPasteboard() board.setValue("Text", forPasteboardType: "public.text") iOS上で貼り付けをする事ができました。 クリップボードの値の取得は下の通りです。 let board = UIPasteboard.genera…

GameplaykitのPathfindingを使ってみる

iOS

PathfindingというiOS9からの機能を使ってみました。 Gameplaykitとは Gameplaykitとは、iOSの出しているゲームエンジンであるSpriteKit/SceneKitを強化してくれるライブラリです。 ルート検索・AI作成の手伝い・Stateパターンの簡単な実現などの機能があり…

Swiftがオープンソース化されたのでSwift2.2/Swift3.0の変更を眺めてみる

iOS

こちらに書いてあったので読んでみました。 apple/swift-evolution · GitHub Swift2.2の変更点 Allow (most) keywords as argument labels 大体のキーワードをメソッドのラベルに使えるようになりました。 今まではinのような名前のラベルを使う場合は``で囲…

オープンソース化されたのでSwiftをMacにインストールして遊んで見る

iOS

こちらの記事を参考に実行しました。 qiita.com まずはコードをインストール。 git clone git@github.com:apple/swift.git swift git clone git@github.com:apple/swift-clang.git clang git clone git@github.com:apple/swift-llvm.git llvm git clone git@…

Swiftで2つの変数を入れ替えるswapメソッド

iOS

swapというメソッドを使うと2つの変数の中身を入れ替える事ができます。 var arr1 = ["1"] var arr2 = ["2"] print(arr1, arr2) // ["1", "2"] swap(&arr1, &arr2) print(arr1, arr2) // ["2", "1"] タプルでも実現できますが、swapの方が短くて良さそうです…

UITableViewのCellの高さを自動調整してくれるUITableViewAutomaticDimension

iOS

UITableViewAutomaticDimensionという機能を使えばheightForRowAtIndexPathが不要なるらしいので試してみました。 使い方 StoryboardでCellの中にLabelをAutoLayout付きで入れます。 次にコードでtableViewのrowHeightにUITableViewAutomaticDimension、esti…