Takahiro Octopress Blog

-1から始める情弱プログラミング

Android StudioでRealmを使ってみよう!

Realmを読み込もう!

AndroidでもRealmを導入してみたいと思います。
今後、SQLite同様、非常に重宝されるライブラリであることは間違いないですし。

Realmの導入方法

ここに関しては、公式サイトを見れば、特に困ることはないと思いますが、筆者と同様にAndroidアプリ開発の初心者は躓くかもしれないので、詳しく書いてみようと思います。

まず、 Realm Android を検索すると、『 Realm Java(0.☓☓.☓) 』のような検索結果が出てくると思います。
ここで注意して頂きたいのが、そのページが最新版のページになっているか否かということです。
旧バージョンの場合、URLが https://realm.io/jp/docs/java/0.%E2%98%93%E2%98%93.%E2%98%93/** のようにバージョンが含まれています。
最新版の場合は、URLが
https://realm.io/jp/docs/java/latest/** のように latest というワードが含まれています。

現在(2015/06/20)は 0.80.3 が最新版となっています。

では、導入していきましょう。

複数のiBeaconを検知しよう!(別UUIDの場合)

複数のiBeacon(別UUIDのiBeacon)を検知する方法

さて、本日は別々のUUIDを持ったiBeacon信号を補足したいと思います。
iBeaconは案外、電波が遠くまで飛ぶため、幾つかのUUIDを補足できるようにしておくことで、うまくdidEnterRegion, didExitRegionを使い、レンジングでのみ取得可能な値を効果的に使うことができるかもしれません。
今回はiOS8以上を対象に下記サンプルソースを書きました。

Swiftで継承とカテゴリってどうやってやるの!?

Swiftで継承

まずはObjective-CとSwiftの継承の書き方の違いを見て行きましょう。

早速、Objective-Cの継承ですが、

1
2
3
4
5
6
7
8
// ヘッダーファイル
@interface SampleA:NSObject
// プロパティの定義
@property(strong, nonatomic) NSString *sampleString;
// メソッドの定義
- (void)sampleMethod;

@end

SwiftでRealmを使ってみよう!

Realmをプロジェクトに追加しよう

本日は最近、流行っているRealmについて遊んでみたいと思います。
まずは導入の仕方から見て行きましょう!

Realmの導入方法

下記のPodfileを作成しましょう。
本記事のSwiftプロジェクトとして、SwiftRealm.xcodeprojを作成します。

1
2
3
4
5
6
7
8
9
10
11
// Podfile
platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git'

target 'SwiftRealm', exclusive: true do
  pod 'Realm'
end

target 'SwiftRealmTests', exclusive: true do
  pod 'Realm/Headers'
end

OAuth2.0認証をUIWebView&WKWebViewで実施しよう!

最適なWebViewを使って、OAuth2.0認証をしよう!

本日は、iOSのバージョン毎に最適なWebViewを使ってOAuth2.0認証を実施してみたいと思います。
やはり、iOS8であればWKWebViewを使いたいですし、iOS7ではUIWebViewしか利用できないという現実があります。

WKWebViewとUIWebViewの使い分け処理に関しては、let UIWebView as WKWebViewを参考にさせて頂きました。
(あえてObjective-Cで書いています。)

まずは、UIWebViewとWKWebViewの使い分け部分を説明していきます。

共通インターフェースとしてWKWebViewProtocol.hを作成します。
共通化したい処理を書き出しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// WKWebViewProtocol.h

#import <UIKit/UIKit.h>
#import <WebKit/WebKit.h>

@protocol WKWebViewProtocol <NSObject>

@property (nonatomic, readonly, copy) NSString *title;
@property (nonatomic, readonly, copy) NSURL *URL;
@property (nonatomic, readonly, getter=isLoading) BOOL loading;
@property (nonatomic, readonly) BOOL canGoBack;
@property (nonatomic, readonly) BOOL canGoForward;

- (void)loadRequest:(NSURLRequest *)request;
- (void)stopLoading;
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(id, NSError *))completionHandler;
- (void)goBack;
- (void)goForward;

@end

AndroidでBackgroundでiBeaconを検知しよう!

AltBeaconでiBeacon検知(アプリBG起動編)

さて、以前、AltBeaconを使ってAndroidでiBeaconを検知しようで基本的な使い方を説明させて頂きました。
今回はアプリをBackgroundで起動しているときにもiBeaconを検知できるようにしてみようと思います。
Background起動だけであれば、Applicationクラスを使うことで実現できますが、
Serviceクラスを使えば、アプリをBackgroundから削除したとしても動作させることができます。

OAuth2.0認証の処理を自作しよう!

OAuth2.0認証処理を自分で作ろう! Objective-C編

本日は、gtm-oauthOAuth2Clientを使わずにOAuth2.0認証処理を自作してみます。

OAuth2.0認証を通すためのGoogle設定はiOSでGoogle OAuth認証がしたいを参照ください。
筆者が開発したライブラリは単純な下記処理のみ含んでいます。

  • OAuth2.0認証に必要な各種パラメータをKeychain Servicesに保存
  • アクセストークンを取得する処理
  • リフレッシュトークンから新規アクセストークンを取得する処理

ここで、Keychain Servicesを使うにあたって、LUKeychainAccessを利用しています。
これにより、複雑なKeychain ServicesをNSUserDefaultsの感覚で利用することができます。
また、Googleへの問い合わせなどのHTTP/HTTPSリクエストにAFNetworkingを利用しています。

Android Studioでvolley Frameworkを利用するまで

volley frameworkを使ったプロジェクトをGitHubにアップする

本日はAndroidについて書きます。
Androidアプリを開発する上で、通信系のframeworkを使うなら、volley frameworkを選択すると思います。
非常に便利なframworkである反面、導入が面倒だったりします。
筆者はiOSエンジニアなので、CocoaPodsをよく使うのですが、如何に便利なツールなのかがよくわかりました笑

プロジェクトの作成

まずは、Android Studioでプロジェクトを作成して、GitHubにアップしましょう。

  1. Android Studioでプロジェクトを作成(VolleySampleを作成)
  2. GitHubで新規repogitoryを作成
  3. Android Studioのプロジェクトのルート(VolleySample/)配下に移動して、下記コマンドを実行しましょう。
1
2
3
4
5
6
$ echo "# VolleySample" >> README.md
$ git init
$ git add .
$ git commit -m "first commit"
$ git remote add origin https://github.com/grandbig/VolleySample.git
$ git push -u origin master

下記のようになればOKです。

Swift AFNetworkingライブラリを使ってみよう!

通信系ライブラリAFNetworkingの使い方を覚えよう!

さて、本日はObjective-Cの超有名通信系ライブラリのAFNetworkingをSwiftで使ってみようと思います。

導入の仕方

まずは導入の仕方を見て行きましょう。
CocoaPodsを使います。
Podfileを作成し、下記の内容を記載しましょう。

1
2
platform :ios, '7.0'
pod "AFNetworking", "~> 2.0"

これでpod installすればプロジェクトに AFNetworking が追加されるはずです。
ここで注意したいのが、あくまでもObjective-Cで書かれたライブラリなので、Swiftで使うためにはBridgeファイルを用意する必要があります。

Swift Alamofireライブラリを使ってみよう!

通信系ライブラリAlamofireの使い方を覚えよう!

さて、本日は Alamofire ライブラリの使い方を勉強します。
AlamofireはObjective-Cの超有名通信系ライブラリであるAFNetworkingのSwift版と思えばよいでしょう。

導入の仕方

まずは導入の仕方から見て行きましょう。
CocoaPodsを使います。
Podfileを作成し、下記の内容を記載しましょう。

1
2
3
4
5
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'Alamofire', '~> 1.2'

これでpod installすればプロジェクトにAlamofireが追加されるはずです!
後は利用したいswiftファイルでimport Alamofireしましょう。
SwiftライブラリをCocoaPodsでインストールすると対象iOSが8.0以上である必要が出てくるので、そこだけ注意しましょう。