【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ステップにて説明があります。
- Sign up for the Service
- Create an Application
- View Application
- Deploy New Version
- Change Configuration
- Clean Up
では、手順にそってBeanstalkを学習していきます。
1.Sign up for the Service
AWS Management Consoleを開き、Beanstalkのサービス利用を開始するための申し込みをします。
下記の画面に遷移するので、赤枠をクリックし、Beanstalkを利用する申し込みを行います。
上記をクリックすると身元確認のページに遷移し、電話をかけ4桁のPinコードを入力し
確認完了となります。・・・
ここでハマったのが、"電話をかける"としてもエラーとなり失敗してしまいました。
色々調べた結果、登録されている電話番号があっていないとエラーとなるようです。
しかも、先頭の0を抜いて!!
登録されている内容は、MyAcount > 登録内容の変更から確認できます。
ようやく、Step2へ!!
2.Create an Application
Step2では、既に用意されているサンプル・アプリケーションを元に、アプリケーションの作成とデプロイを行います。
以下の画面が表示されるので、今回はPHPを選択し、Startしてみます。
10分くらい経つと・・・諸々設定した環境の構築が完了しました。
「Environment health has been set to RED」
とWarnningがでましたが、その環境を見たら正常にもどったのでよしとします。
Eventsログを見ると、ここではざっと下記の設定をしてくれているようです。
3.View Application
作成された環境をみてみると、以下の様な画面が表示されます。
4.Deploy New Version
次に新しいバージョンを追加してみます。
Beanstalkのコンソール画面を開き、Versionsタブを開きます。
「Upload New Version」をクリックします。
ダイアログが開くので、設定をしNew Versionを作成します。
Upload New Versionボタンを押すと、コンソールに今回設定したNew Versionが登場します。
V2.0のチェックボックにチェックを入れ、Deploy Versionを押下すれば・・・
選択したバージョンのDeployが開始されます。
5.Change Configuration
Setp5では、設定を変更してみます。
Beanstalkで設定を変更するには、
Actionsのドロップダウンメニューより「Edit/Load Configuration」を選択します。
Edit/Load Configurationを選択すると、以下のような画面が開かれます。
今回は、入門ガイドに習い、Auto Scalingの設定を変更して確認してみます。
Auto ScalingのMinimum Instance Countを2に設定し、Apply Changeを押下するとすぐに設定を変更してくます。
Amazon Ec2のコンソールよりLoad Balancesを確認してみると、2つのインスタンスがLoadされていることを確認できます。
6.Clean Up
最後にClean Upすれば、今まで構築した環境すべてが削除されます。
以下より実行します
ActionsのドロップダウンメニューよりTerminate this Enviromentを選択。
これにより今回作成した環境すべて(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」というプロジェクト名にて作成してます。(下図参照)
プロジェクトを作成したら、一旦xcodeは閉じておきます。
下記からは、terminalにて作業します。
(※terminalでの作業は、作成したプロジェクトのルートディレクトリにて行います)
■外部ライブラリの検索
cocoaPodsでは、ライブラリの名前や説明より検索できるようです。
下記コマンドにて「json」を検索してみます。
$ pod search json
下記のような感じで、検索結果が表示されます
■PodFileの作成
次に自分のプロジェクトに外部ライブラリを取り込むための設定を記述する
「PodFile」を作成します。
$ vim PodFile
platform :ios
pod 'JSONKit', '~> 1.5pre'
■外部ライブラリの取り込み
$pod install
おぉ〜
なんか、うまく取り込めている感じです。
■Xcodeにて確認
*.xcworkspaceをXcodeにて開いて確認してみる。
$ open testPods.xcworkspace
Podsという、新しいプロジェクトが取り込まれていますね。
■まとめ
- pod search xxx - 外部ライブラリの検索
- PodFileの作成(編集) - 取り込みの設定
- 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と連携したデバイスをちょっと紹介します。
「Blue HR for iPhone」
【正規代理店品】Wahoo Fitness 心拍計 Blue HR for iPhone(Bluetooth SMART/Bluetooth 4.0対応)WAF-PH-000001
- 出版社/メーカー: Wahoo Fitness
- メディア: エレクトロニクス
- クリック: 6回
- この商品を含むブログを見る
■Bluetooth Watch
[カシオ]CASIO 腕時計 G-SHOCK ジー・ショック Bluetooth Low Energy対応 GB-6900AA-1JF メンズ
- 出版社/メーカー: CASIO(カシオ)
- 発売日: 2012/10/20
- メディア: 時計
- クリック: 2回
- この商品を含むブログ (1件) を見る
■体温計
・・・ios5のサンプルアプリとして提供されている
「Game Kit」を使ったBluetooth通信
「Gmae Kit」フレームワークは、iOSデバイス間のP2P通信を簡単に実現する方法を提供しています。
P2P通信はBluetooth以外にもWiFiによって行うことができます。
Game Kitでは、iOSデバイス以外との通信は行えません。
では、以下にGame Kitを利用した実装方法手順を紹介していきます
■手順
- 接続デバイスの探索
- 接続デバイスの発見と接続
- データの送信
- 接続の切断
といった手順になります。
1.接続デバイスの探索
GKPeerPickerControllerクラスを使用します。
GKPeerPickerControllerクラスは、iOSデバイス同士のBluetooth接続に必要な処理とUIを提供しています。
showメソッドをcallすると以下のような画面が表示され接続するデバイスを探します。
2.接続デバイスの発見と接続
接続可能デバイスがみつかると、以下の様な画面が表示されます。
デバイスを選択すると、選択されたデバイス側で接続を許可するかを選択する画面が表示されます
上記の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と設定されているのですね。
(昔は、そこまでしてくれていなかったですが・・・)
なので、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!!