Takahiro Octopress Blog

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

iOS オールスターズ勉強会に参加しました!

iOS オールスターズ勉強会

本日、iOSオールスターズ勉強会に参加してきました。
iOSに特化した勉強会やイベントに参加するのは初めてでしたが、かなりいろいろと勉強になりました。
そして、まだまだ自分はヒヨッコだと痛感させられました。
まだまだ-1レベルの情弱プログラマーであることを再認識したところで、いつの日かこのブログを0から始める情弱プログラミングに変えてみせたいと思いつつ、勉強会で学んだことを報告したいと思います。

勉強会のテーマは下記の通りです。

  • Adaptive Collection View
  • Swift製ライブラリの良い書き方を考える
  • let UIWebView as WKWebView
  • 通信のパフォーマンス改善
  • 効率的なアプリ開発のベストプラクティス
  • WatchKit を実際にさわってみてわかったこと
  • 長生きするために心臓に悪いリリースはもうやめよう
  • エンジニア戦記 ~ 小さなチーム 大きな未来 ~
  • まだiOSでリッチな演出に疲弊してるの?

AFNetworking2.xでWeb-APIを叩いてみた!

AFNetworking2.x

さて、本日は今更ながら超有名ライブラリである AFNetworking を使ってみたいと思います。
ただ、単に使い方を説明するのであれば、他のサイトにお任せすれば良いので、Web-APIを使ってみる形で書きたいと思います。

今回は、
GETリクエスト: OpenWeatherMap API
POSTリクエスト: VoiceText Web API
を試してみました。

REBL600FRの発信パラメータをiOSアプリで変更してみた!

REBL600FRのパラメータ値を変更

前回はREBL600FRの検知&パラメータ値の読込みまでやってみました。
今日はREBL600FRが発信するパラメータ値をiOSアプリから変更してみます。

まず、UIButtonをタップしたときにmajorの値を固定値に変更するメソッドを作成してみます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// ViewController.m
// 書き込みテスト用のメソッド
- (IBAction)writeDataTestMethod:(id)sender {
  // ① majorの値を4661に設定
  NSInteger writeInt = 4661;
  // ② 10進数を16進数に変換して文字列にする
  NSString *witeString = [NSString stringWithFormat:@"%lX",(long)writeInt];
  // ③ 16進数のNSString型をNSData型に変換する処理
  NSData *writeData = [witeString dataFromHexString];
  NSLog(@"writeData: %@", writeData);
  
  // ④ データの書込み処理
  [self.connectedPeripheral writeValue:writeData forCharacteristic:self.majorChar type:CBCharacteristicWriteWithResponse];
  
}

REBL600FRを検知するiOSアプリを開発してみた!

REBL600FRを検知

引き続き、REBL600FRを用いて遊んでみたいと思います。
前回のREBL600FRをiBeaconとして検知してみた!では既存のアプリを拝借してREBL600FRを検知していました。
今回はそこを自作してみたいと思います。

そのためにCoreBluetooth.frameworkを使います。
まずは、REBL600FRの発信するBLEを検知してみましょう。

自作ライブラリをCocoaPodsで管理しよう!

自作ライブラリをCocoaPodsでインストールしたい

さて、本日はCocoaPodsについて書いてみます。
最近、GitHubなどで公開されているiOS向けOSSのほとんどはCocoaPodsで管理されていることと思います。
そんな中、『自分で開発したライブラリも皆に使ってもらうなら、カッコよくCocoaPodsでインストールしてほしい』といった思いも出てきますよね。
よし!やってみよう!というのが本日の記事です。

では、早速、その手順です。
まずは、CocoaPodsで管理する対象の構造を下記に示します。

1
2
3
4
5
6
7
Classes ━┳━━ jsonUtil
              ┣━━ jsonUtil.h
              ┗━━ jsonUtil.m
         
         ┗━━ Validation
               ┣━━ Validation.h
               ┗━━ Validation.m

iOS8で端末の向きに合わせて画像を回転させる方法について

端末の向きに合わせて画像を回転させよう!

iOS7.xまではwillRotateToInterfaceOrientationdidRotateFromInterfaceOrientationを用いて端末の向きが変わるときに、UIImageViewを回転させるといったことをやっていました。
しかし、iOS8ではこれら2つのメソッドがdeprecatedになってしまいました。
では、iOS8ではどうやって端末の向きに合わせてUIImageViewを回転させれば良いのでしょうか?

ここではAutoLayoutを利用した方法を説明します。

gtm-oauth2を使ってGoogle APIをiOSで叩きたい!

iOSネイティブアプリでGoogle APIを叩く方法

以前、 gtm-oauth2 を使ったiOSでのOAuth2認証について説明しました。
(iOSでGoogle OAuth認証がしたいを参照のこと)
今回はOAuth2認証の後の話、そうGoogle APIを叩くメソッドの実装について説明します。

ユーザ情報の取得

まずは、ユーザ情報の取得を実装します。
下記のように、画面上のGETボタンをタップしたときにユーザ情報を取得するという処理を実装してみます。

CLVisitとCMPedometerをフィールド検証してみた!

CLVisitとCMPedometerのフィールド検証

2015年初更新です。
2014年の年末から2015年の年始にかけて海外に行く機会があったため、 以前、本ブログにも掲載したCLVisitとCMPedometerについてフィールド検証をしてみました。
iOS8.1でCLVisitとCMPedometerを試してみた!を参照ください。
(思いつきで、出発前夜にアプリを急造しました)

CLVisitは大幅変更位置情報サービスと同様に極力バッテリを消費しない仕組みで作られていることと思います。
これが『旅行の思い出を残したいというユーザの想いとマッチするのでは?』と考えたこともあり、現実的にどこまで使えるものなのか検証してみました。

Xcode6 Storyboardで多言語対応してみた

Xcode6を使った多言語対応

本日はXcode6(正確にはXcode6.1.1)で多言語対応する方法を書きます。
全スクリーンショットを載せます。

まず、多言語化に使うサンプルプロジェクトは下記です。
StoryboardにはLabelとButtonを1つずつ配置します。
StoryboardにLabelとButtonを配置