page_adsence

2015年10月27日火曜日

MailCore2をSwiftプロジェクトで使う

初めてiOSアプリを作るのですが、メール周りの機能が欲しかったので、下記のライブラリを使って実装してみようと思ったのですが、
初めて過ぎて何をどうすればいいのかわからなかったのでメモしておく。
とりあえず今回の記事ではSwiftからObjective-Cを使える様にする所までやってみる。 使ったのはXcode7。

まず、Xcodeで新しいプロジェクトを作成しておく。
今回はSingleViewApplicationで作る。

適当なプロジェクト名をつける

保存場所を指定して作成ボタンをクリック

で、作成が終了したらXcodeは終了しておく。


続いて使用したかったライブラリをインストールしていく。 使いたかったライブラリはこれ。
■MailCore2
https://github.com/MailCore/mailcore2

CocoaPodsでインストール出来るので、ターミナルを起動させて、CocoaPodsをインストールする。
$ sudo gem install cocoapods
Password: ← 自分のMacのログインパスワードを入力
Fetching: nap-1.0.0.gem (100%)
Successfully installed nap-1.0.0
Fetching: cocoapods-core-0.39.0.gem (100%)
Successfully installed cocoapods-core-0.39.0
Fetching: claide-0.9.1.gem (100%)
Successfully installed claide-0.9.1
Fetching: xcodeproj-0.28.2.gem (100%)
Successfully installed xcodeproj-0.28.2
Fetching: cocoapods-downloader-0.9.3.gem (100%)
Successfully installed cocoapods-downloader-0.9.3
Fetching: cocoapods-search-0.1.0.gem (100%)
Successfully installed cocoapods-search-0.1.0
Fetching: cocoapods-stats-0.6.2.gem (100%)
Successfully installed cocoapods-stats-0.6.2
Fetching: cocoapods-try-0.5.1.gem (100%)
Successfully installed cocoapods-try-0.5.1
Fetching: cocoapods-trunk-0.6.4.gem (100%)
Successfully installed cocoapods-trunk-0.6.4
Fetching: molinillo-0.4.0.gem (100%)
Successfully installed molinillo-0.4.0
Fetching: cocoapods-0.39.0.gem (100%)
Successfully installed cocoapods-0.39.0
Parsing documentation for nap-1.0.0
Installing ri documentation for nap-1.0.0
Parsing documentation for cocoapods-core-0.39.0
Installing ri documentation for cocoapods-core-0.39.0
Parsing documentation for claide-0.9.1
Installing ri documentation for claide-0.9.1
Parsing documentation for xcodeproj-0.28.2
Installing ri documentation for xcodeproj-0.28.2
Parsing documentation for cocoapods-downloader-0.9.3
Installing ri documentation for cocoapods-downloader-0.9.3
Parsing documentation for cocoapods-search-0.1.0
Installing ri documentation for cocoapods-search-0.1.0
Parsing documentation for cocoapods-stats-0.6.2
Installing ri documentation for cocoapods-stats-0.6.2
Parsing documentation for cocoapods-try-0.5.1
Installing ri documentation for cocoapods-try-0.5.1
Parsing documentation for cocoapods-trunk-0.6.4
Installing ri documentation for cocoapods-trunk-0.6.4
Parsing documentation for molinillo-0.4.0
Installing ri documentation for molinillo-0.4.0
Parsing documentation for cocoapods-0.39.0
Installing ri documentation for cocoapods-0.39.0
11 gems installed

これでCocoaPodsが使えるようになった。
試しにpodコマンドが使えるのか確認してみる。
$ pod --version
0.39.0

きちんとバージョンが表示されたので、これでCocoaPodsのインストール作業は完了。
これからmailcore2をCocoaPods経由でインストールしていく。
まずターミナルを起動し、Xcodeで作成したプロジェクトファイル(*.xcodeproj)のおいてあるディレクトリへ移動する
自分の場合は「/Users/user_name/Documents/iPhoneApps/mailCoreTest」というプロダクトを作ったのでそこへ移動した。
$ cd /Users/user_name/Documents/iPhoneApps/mailCoreTest

対象のディレクトリへ移動したらPodfileというファイルを作成し、下記の通り記述して保存する。 PodfileはPHPでいうcomposer.jsonみたいなもの。
$ vi Podfile
platform :ios, “7.0”
pod 'mailcore2-ios', '~> 0.5.1'

で、mailcore2をインストールする。
$ pod install
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing mailcore2-ios (0.5.1)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `mailCoreTest.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total
pod installed.
以上でmailcore2を使う事前準備が完了。
mailCoreTest.xcworkspaceというファイルが出来ているので、これをXcodeで開く。

するとPodsというプロジェクトがmailCoreTestの中に出来ている。

後はSwiftプロジェクトからObjective-Cを呼べる様にXcode側で設定してやる

SwiftからObjective-Cのコードを呼ぶためには、Bridging-Header.hという特殊なヘッダファイルを用意してやる必要がある。
で、追加してみる。(Objective-Cのソースがプロジェクトに追加されると、自動で生成される。)
自分で追加する場合は下記の通り。

XcodeのFile -> New -> Fileを選択。もしくは⌘Nを押す。

Header Fileを選択。

プロジェクト名-Bridging-Headerという名前を付けて保存


作成したヘッダファイルの中に下記を追加して保存。
#import <MailCore/MailCore.h>

続いて、追加したヘッダファイルをXcodeに認識させる。
Build Settings -> Swift Compiler – Code Generation
”Install Objective-C Compatibility Header”が”Yes”
”Objective-C Bridging Header”に、”$(SRCROOT)/$(PROJECT)/$(SWIFT_MODULE_NAME)-Bridging-Header.h”と入力する。(実際にBridging-Header.hファイルがあるパスを指定する。)

以上でSwiftからObjective-Cが呼べる様になる。

2015年10月13日火曜日

ConfluenceをローカルのVMに入れてみた

会社で利用しているConfluenceなのですが、これが結構便利で他の事にも使えないかということで、調査目的でローカルのVMにインストールしてみた。

インストール方法は下記のサイトを参考にインストールしました。 Atlassian Confluence インストール ガイド (Linux OS)
インストール完了後にConfluenceのセットアップウィザードみたいなのがあるのですが、
その辺はこちらでも書いておこうと思います。

インストールしたConfluenceのバージョンは若干古めのやつ(5.6.6)を使っています。(会社で利用しているバージョンと同じバージョンにするため)

まず、事前にAtlassianのアカウントを作成する必要があります。
https://id.atlassian.com/signup
上記サイトにアクセスして、アカウントを作成しておきます。

下記のURLにアクセスして、Confluenceのセットアップ画面にいきます。
http://VMのIP:8090/
※ポート番号はインストール手順の中で変更出来ますので、変更している人は自分で指定したポート番号に読み替えて下さい。

画面右上の日本語をクリックして、表示を日本語に変換


トライアル版の使用を始めるをクリック


ライセンスキーの入力画面で、アカウントを持っており、キーを作成したいをチェック


先ほど作成したAtlassianのログイン情報を入力して、「I agree to ~」にチェックして、「サインインしてライセンスキーを作成」ボタンをクリック
クリック後に非常に時間が掛かった・・・。1時間位は放置しておく位の気持ちで挑んだ方がいいのかもしれない。


Manage users~ボタンをクリック(何故かここからは英語になってしまう・・・)


最初にシステム管理者のアカウントを作成するための情報を入力する。


初期設定完了。「Start using Confluence」をクリックしてウェルカムページへ遷移


以上でとりあえずConfluenceが利用出来る状態になる。 Confluence自体のインストール手順が書かれているサイトの一番下にインストール後の設定という項目があるので、 こちらも合わせてやっておくと良いかもしれません。 色々と試してみたいと思います。

2015年10月12日月曜日

SSL接続の仕組み

iOSアプリ開発していた時に色々と横道に逸れていったらSSL通信の仕組みに関して、ちゃんと理解してない事に気がついたので図を書いてみた。


言葉で流れを説明する前に、SSLは「共通鍵暗号方式」と「公開鍵暗号方式」の両方を使っているということを知っておく必要があります。

共通鍵暗号方式


クライアントとサーバで同じ鍵情報を持っている状態で、それぞれが送信時には暗号化し、受信時には復号化する。
クライアント、サーバ共に暗号化、復号化が可能。

公開鍵暗号方式


サーバ上で生成された秘密鍵と公開鍵のキーペアを使う。
クライアントは公開鍵を取得し、サーバ側に公開鍵を使って暗号化した情報を送る。
サーバ側では受信した情報を秘密鍵を使って復号化する。
共通鍵暗号方式との大きな違いは、公開鍵で暗号化された情報は秘密鍵でしか復号出来ないという点。
クライアントにしろ、サーバにしろ、秘密鍵を持っている方でしか復号できない。

以上の事を踏まえて、SSL通信の流れを説明してみる。

1.ユーザーがSSL化されているページにアクセス(SSL接続要求)
2.サーバ側はその接続要求に対し公開鍵を含んでいる証明書を返却
3.ユーザーは証明書から公開鍵を取り出す
4.SSL接続要求をしたサーバと暗号化通信するための共通鍵を作成
5.作成した共通鍵を公開鍵を使って暗号化して、サーバへ送信
6.サーバは受信した共通鍵を秘密鍵を使って復号化
7.処理の終了通知を送る。
8.ユーザーが入力したユーザー名やパスワードを共通鍵を使って暗号化して送信
9.共通鍵を使って復号化し、入力された情報を取り出す。
10.取り出した情報で各種処理を行う。
11.レスポンスを返却する。

以上がざっくりとした流れです。

ネットでググっていると、この辺の情報はいっぱい出てくるのですが、どれが正しいのか正直わかりません・・・。
この記事も間違っている可能性もあります・・・。
程々に参考にして下さい。