【AWS】Elastic Beanstalkを触ってみる

こんにちは。

最近勉強会で、AWSの「Elastic Beanstalk」について軽く触れられて興味を持ったので

調べてみようと思い、今回エントリしました。

結構まえに,AWSを利用してサービスを構築していた際には、なかったサービスなのでどんなものかと思いまして・・・

 

では、早速!!

 

Elastic Beanstalkとは?

AWS Elastic Beanstalkの説明より引用

AWS Elastic Beanstalk は、AWS クラウドのアプリケーションを迅速にデプロイし管理できるより簡単な方法です。お客様は単にそのアプリケーションをアップロードするだけで、Elastic Beanstalk が自動的に容量のプロビジョニング、負荷分散、Auto Scaling、およびアプリケーション状態モニタリングといったデプロイの詳細を処理します。同時に Elastic Beanstalk では、お客様のアプリケーションを稼動している AWS リソースの完全なコントロールを維持でき、いつでも基本的なリソースにアクセスすることができます。Elastic Beanstalk は、Amazon Elastic Cloud Compute(Amazon EC2)、Amazon Simple Storage Service(Amazon S3)、Amazon Simple Notification Service(Amazon SNS)、Elastic Load Balancing、Auto Scaling といった AWS のサービスを活用し、今日数十万というビジネスが依存しているのと同様の高い信頼性、拡張性、費用対効果のインフラストラクチャを提供します。AWS Elastic Beanstalk は簡単に開始でき、不足を感じることなく利用できます。

なんだか、便利そうな説明がされてます。ただ、これだけだと具体的に何ができるのかわからないので、早速こちらの「入門ガイド」を見て、触って見ることにします。

 

まず、入門ガイドは以下の6ステップにて説明があります。

  1. Sign up for the Service
  2. Create an Application
  3. View Application
  4. Deploy New Version
  5. Change Configuration
  6. Clean Up

では、手順にそってBeanstalkを学習していきます。

 

1.Sign up for the Service

AWS Management Consoleを開き、Beanstalkのサービス利用を開始するための申し込みをします。

 

f:id:mmmkenmmm:20130203105335p:plain

 

下記の画面に遷移するので、赤枠をクリックし、Beanstalkを利用する申し込みを行います。

f:id:mmmkenmmm:20130203105529p:plain

 

上記をクリックすると身元確認のページに遷移し、電話をかけ4桁のPinコードを入力し

確認完了となります。・・・

ここでハマったのが、"電話をかける"としてもエラーとなり失敗してしまいました。

色々調べた結果、登録されている電話番号があっていないとエラーとなるようです。

しかも、先頭の0を抜いて!!

登録されている内容は、MyAcount > 登録内容の変更から確認できます。

f:id:mmmkenmmm:20130203125000p:plain

ようやく、Step2へ!!

2.Create an Application

 Step2では、既に用意されているサンプル・アプリケーションを元に、アプリケーションの作成とデプロイを行います。

以下の画面が表示されるので、今回はPHPを選択し、Startしてみます。

f:id:mmmkenmmm:20130203125715p:plain

 

10分くらい経つと・・・諸々設定した環境の構築が完了しました。

Environment health has been set to RED」

とWarnningがでましたが、その環境を見たら正常にもどったのでよしとします。

Eventsログを見ると、ここではざっと下記の設定をしてくれているようです。

3.View Application

作成された環境をみてみると、以下の様な画面が表示されます。 

f:id:mmmkenmmm:20130203131352p:plain

4.Deploy New Version

 次に新しいバージョンを追加してみます。

Beanstalkのコンソール画面を開き、Versionsタブを開きます。

f:id:mmmkenmmm:20130203131731p:plain

 

「Upload New Version」をクリックします。

ダイアログが開くので、設定をしNew Versionを作成します。

f:id:mmmkenmmm:20130203132207p:plain

Upload New Versionボタンを押すと、コンソールに今回設定したNew Versionが登場します。

f:id:mmmkenmmm:20130203132307p:plain

 

V2.0のチェックボックにチェックを入れ、Deploy Versionを押下すれば・・・

選択したバージョンのDeployが開始されます。

 

5.Change Configuration

Setp5では、設定を変更してみます。

Beanstalkで設定を変更するには、

 Actionsのドロップダウンメニューより「Edit/Load Configuration」を選択します。

f:id:mmmkenmmm:20130203133618p:plain

 

Edit/Load Configurationを選択すると、以下のような画面が開かれます。

f:id:mmmkenmmm:20130203133723p:plain

 

今回は、入門ガイドに習い、Auto Scalingの設定を変更して確認してみます。

Auto ScalingのMinimum Instance Countを2に設定し、Apply Changeを押下するとすぐに設定を変更してくます。

f:id:mmmkenmmm:20130203133908p:plain

 

Amazon Ec2のコンソールよりLoad Balancesを確認してみると、2つのインスタンスがLoadされていることを確認できます。

f:id:mmmkenmmm:20130203134502p:plain

6.Clean Up

最後にClean Upすれば、今まで構築した環境すべてが削除されます。

以下より実行します

ActionsのドロップダウンメニューよりTerminate this Enviromentを選択。

f:id:mmmkenmmm:20130203135057p:plain

これにより今回作成した環境すべて(Ec2,Load Balances etc)はもちろんのことBeanstalkで作成したSampleApplicationも、すべて利用できなくなりまた最初から作成することになります。

 

 

最後に

今回は、入門ガイドをもとにBeanstalkがどういったものかを触ってみ見ました。 AWSで環境を構築するのに、もっとも簡単で余計な設定に悩まなくて済むので 機会があれば是非これを利用し、サービスを構築してみたいと思いました。 まだ、今回触れていないGitでの管理やRDBとの連携なども、今後調べて行きたいと思います。

【iOS】CocoaPodsって知ってます?

最近、できる知り合いからちょっとこんなの知ってます?って

 「CocoaPods」を紹介され、興味を持ったので調べてみようと思いました。

 

■CocoaPodsとは

cocoaPodsとは、

CocoaPods manages library dependencies for your Xcode project.

CocoaPodsは、Xcode projectのライブラリ依存を管理する。っとあります。

外部ライブラリを、簡単なテキストファイルに記述すれば、CocoaPodsが、それらの依存する外部ライブラリをあなたのプロジェクトにとり込んでくれると。

 

なんと!!痒いところに手が届くことでしょ!!

 

外部ライブラリを、利用したことがあるあなたならわかるでしょ。

外部ライブラリを取り込むのに、リンク指定したりとか面倒なことがあるかと思いますが、CocoaPodsがそんなことから開放してくれるらしいです。

 

ではでは、早速利用してみたいと思うのでまずは、手順通りにInstallしてみたいと思います。

 

■Install編

CocoaPodsは、rubyのgemとして提供されているようです。

以下のコマンドを実行しInstallします。

$ [sudo] gem update --system

$ [sudo] gem install cocoapods

めちゃくちゃ簡単にInstall出来ました。 では、次に自分のプロジェクトに外部ライブラリを取り込んで行ってみましょ。

 

■iOSプロジェクトの作成

まずは、xcodeにてiOSのプロジェクトを作成しておきましょ。

今回は、「testPods」というプロジェクト名にて作成してます。(下図参照)

f:id:mmmkenmmm:20130113110138p:plain

 

プロジェクトを作成したら、一旦xcodeは閉じておきます。

下記からは、terminalにて作業します。

(※terminalでの作業は、作成したプロジェクトのルートディレクトリにて行います)

 

■外部ライブラリの検索

cocoaPodsでは、ライブラリの名前や説明より検索できるようです。

下記コマンドにて「json」を検索してみます。

$ pod search json

下記のような感じで、検索結果が表示されます

f:id:mmmkenmmm:20130113110426p:plain

 

■PodFileの作成

次に自分のプロジェクトに外部ライブラリを取り込むための設定を記述する

「PodFile」を作成します。

$ vim PodFile 

platform :ios

pod 'JSONKit', '~> 1.5pre'

 ■外部ライブラリの取り込み

$pod install

f:id:mmmkenmmm:20130113111609p:plain

おぉ〜

なんか、うまく取り込めている感じです。

 

Xcodeにて確認

*.xcworkspaceをXcodeにて開いて確認してみる。

$ open testPods.xcworkspace

f:id:mmmkenmmm:20130113113805p:plain

 Podsという、新しいプロジェクトが取り込まれていますね。

 

■まとめ

  1. pod search xxx                - 外部ライブラリの検索
  2. PodFileの作成(編集)       - 取り込みの設定
  3. pod install                         - 外部ライブラリの取り込み

上記の手順にて、外部ライブラリが取り込めるので、簡単過ぎますね。

Installも簡単に出来ますし、外部ライブラリを利用するアプリを作成する際は

是非利用したいっすね。

【iOS】Bluetooth通信について

iOSでは、Bluetoothを利用した通信を行うためのフレームワーク

2種類用意されています。

・「Core Bluetooth

・「Game Kit」

です。

 

今回は、これらのフレームワークがどのような場面で利用されスマートフォンをどのように便利に利用できるようにするか紹介していきたいと思います。

 

まずBluetoothとは・・・

デジタル機器用の近距離無線通信規格の1つである。
数mから数十m程度の距離の情報機器間で、電波を使い簡易な情報のやりとりを行うのに使用される

Bluetoothの最新規格は、2012年12月現在では、4.0(2009年12月17日リリース)が最新です。

Bluetooth4.0では、低消費電力モードに対応する規格である「Bluetooth Low Energy(Blootooth LE)」が採用されており、これは従来のBluetoothとの間に互換性はありません。

 

Bluetooth対応デバイスは現在下記の3つの呼称で分類されています。

    ■[1]Bluetooth Smart

           Bluetooth LEによる低消費電力モードのみで通信を行うデバイスにあたります。

           Bluetooth Smart Readyデバイスとの間でのみ通信が可能です。

    ■[2]Bluetooth Smart Ready

           Bluetooth LEによる低消費電力モードで通信をする子機との通信に対応し、かつ従来のBluetooth機器との通信ができるデバイスにあたります。

    ■[3]Bluetooth

           従来のBluetooth通信のみを行うデバイスにあたります。

 

iOSデバイスのBluetooth対応状況

規格デバイス
Bluetooth4.0(Bluetooth Smart Ready) iPhone 4S 新しいiPad(第3世代)
Bluetooth2.1+EDR iPhone4 iPad2 iPod touch(第4世代)

※EDRとは:容量の大きいデータを通信する際に最大通信速度が3Mbpsの通信に切り替えるEDR (Enhanced Data Rate)

 

プロファイル

    Bluetoothはその特性上、様々なデバイスでの通信に使用されるため、機器の種類ごとに策定されたプロトコルがあり、これをプロファイル と呼び標準化しています。

通信しようとする機器同士が同じプロファイルを持っている場合に限り、そのプロファイルの機能を利用した通信を行うことができます。

 

iosに対応しているプロファイル一覧:http://support.apple.com/kb/HT3647?viewlocale=ja_JP

一般的なBluetoothプロファイル一覧(by wikipedia):http://ja.wikipedia.org/wiki/Bluetooth%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%B8%80%E8%A6%A7

 

ちょっとブレイクで・・・

ここでは、Bluetooth smart を採用した機器のiPhoneと連携したデバイスをちょっと紹介します。

 

iPhoneを利用した心拍計

Blue HR for iPhone

 

Bluetooth Watch

 

 ■体温計

・・・ios5のサンプルアプリとして提供されている

f:id:mmmkenmmm:20121216160203p:plain

 

「Game Kit」を使ったBluetooth通信

 「Gmae Kit」フレームワークは、iOSデバイス間のP2P通信を簡単に実現する方法を提供しています。

P2P通信はBluetooth以外にもWiFiによって行うことができます。

Game Kitでは、iOSデバイス以外との通信は行えません。

 

では、以下にGame Kitを利用した実装方法手順を紹介していきます

 

■手順

  1. 接続デバイスの探索
  2. 接続デバイスの発見と接続
  3. データの送信
  4. 接続の切断

といった手順になります。

 

1.接続デバイスの探索

GKPeerPickerControllerクラスを使用します。

GKPeerPickerControllerクラスは、iOSデバイス同士のBluetooth接続に必要な処理とUIを提供しています。

  

 

showメソッドをcallすると以下のような画面が表示され接続するデバイスを探します。

f:id:mmmkenmmm:20121216163028g:plain

 

2.接続デバイスの発見と接続

接続可能デバイスがみつかると、以下の様な画面が表示されます。

f:id:mmmkenmmm:20121216163336g:plain

 

デバイスを選択すると、選択されたデバイス側で接続を許可するかを選択する画面が表示されます

f:id:mmmkenmmm:20121216163427g:plain

 

上記のAcceptを選択すると接続が完了し、

GKPeerPickerControllerDelegateの

peerPickerController:didConnectPeer:toSession:がcallされます

  

 

3.データ送信

 

4.接続の切断

 

Game Kitを利用したiPhoneのアプリ

フーフーミントン

 

また、次回はCore Bluetoothによる通信手順とサンプルを紹介したいと思います。

 

iOS Preprocessor Macros

こんにちは。

 

時々ですが、NSLogをそのまま使用しているコードを見かけたりします。。。

そんな時、少々ムムっと思ったりします。

 

開発中は、NSLogにて何かしら値を出力し

処理を追って見るということはあります。

 

しかしリリースにまでNSLogを残してしまっていると、

少なからずパフォーマンスにも影響がありますし

世の中に出力しなくてよい情報を露出してしまっている可能性もありますよね。

 

そんな時に役に立つのが、プリプロセッサマクロです。

 

プリプロセッサマクロとは

 簡単にいうと、コンパイル時に条件を判断しビルドしてくるものです・・・。

 

では、iosの開発でどのようにプリプロセッサマクロを設定するか

デバック時のみログを出力する方法で紹介したいと思います。

 

まずはじめに、プリプロセッサマクロの設定を行います。

 

プロジェクト>Build Settingsを選択

検索窓にて preproと入力すると

Apple LLVM compiler 4.1 - Preprocessingの箇所に

Preprocessor Macrosがあり

そこに

 DebugとRelaseという定義があります

 

 Xcode4.xでは、すでにDebugのところには、DEBUG=1と設定されているのですね。

(昔は、そこまでしてくれていなかったですが・・・)

 

f:id:mmmkenmmm:20121125235758p:plain

 

なので、Xcode4.xを利用の場合は、Build Settingsの設定は、このままで行くとしまして・・・

 

では、次にマクロをどこに記載するかですが、これは、"プロジェクト名"-Prefix.pchというファイルが

(Xcode4.xであれば)Supporting Filesに存在するので、ここにマクロを追加すればOKです。

 pchに以下のようにマクロを定義します。

 

#ifdef DEBUG

#define DEBUG_NSLog(...) NSLog(@"LOG:[%@] %@",[NSString stringWithFormat:__VA_ARGS__], [NSString stringWithFormat:@"%s LINE:%d",__func__,__LINE__]);

#else

#define DEBUG_NSLog(...)

#endif

 

上記のようにPreprocessor MacrosでDEBUGが定義されていれば、

デバッグ時のみLOGの出力が行われます。

言わずもがなリリース時には、ログは何も出力されなくなります。

 

Enjoy iOS Dev Life!!