2011/06/29

iOS4とGoogle Syncの組み合わせで独自メイルアドレスを利用する方法

Google Syncは、GmailやGoogle Calendarを、iOSなどのモバイル機器とSyncする方法です。

日本語化された設定方法も公開されており、簡単に利用することができます。

以前、iOS4のMail機能をGmailと連携させる方法に付いて、「iOS4でGmailの送信メイルアドレスを設定する方法」で紹介しました。この中でGoogle Syncに付いて触れており、その際「Google Syncを利用している場合、送信メールアドレスとして独自ドメインのアドレスを利用することは出来ない」と書きました。

嬉しいことに、この度Google Syncが更新され、独自メールアドレスが利用出来るようになりました。該当ブログから引用すると、

Gmail's "Send Mail as' feature lets you send messages with another email address listed as the sender instead of your Gmail address, e.g. joe@altostrat.com instead of joe@gmail.com.

と説明されています。大変嬉しい変更です。

しかし、Gmailの「Settings」の「Accounts and Import」にある「Send mail as」(日本語では「設定」の「アカウントとインポート」にある「名前」)で、gmail.comではないアドレスをdefaultへ設定するだけでは、この機能は有効にはなりません。どうやらWeb上の「Google Sync」ページにある「Send Mail As」も有効にする必要があるようです。

Web上でのGoogle Sync設定変更は以下の手順になります。

1. iOSのSafariからm.google.com/syncへアクセス。
2. 「未対応の端末です」画面で「言語を変更」を選択。


3. English(US)を選択。


4. Google Sync 画面で Google Account により Sign in。


5. Manage devices 画面で設定したい端末を選択。
6. Settings 画面で「Enables "Send Mail As" for this deviceをチェックする

以上でiOS の Mail.app からも、独自メイルアドレスをFromに設定してメイルが送信できるようになります。

もしこの設定を行っても送信アドレスが変更されない場合には、一度ホーム画面へ戻り、再度Mail.appを立ち上げ直してみましょう。または、ホームボタンのダブルクリックで表示される履歴リストからMail.appを削除した後、再度立ち上げ直すと機能するかもしれません。Mail.app動作中にアカウント関係の設定変更を行うと、Mail.appが誤動作してしまうことが何度かありました。

なお以前紹介した際にも指摘した「Mailbox 内に ^sync_gmail_group というグループが表示される」問題は解決していません。

またGoogle Sync経由でGmailと同期させた場合、Mail.appの削除がGmailのArchive機能に対応付けられます。IMAP経由で動機させている場合、削除はDeleteとして機能しますので、この違いには注意が必要です。

Google Syncによるメイル同期では、IMAP経由による同期と異なり、メイルの到着をPushで伝達してくれます。メイルの伝達を即座に知りたい人にとって、この機能は非常に有益です。私も暫くGoogle Syncによるメイル同期を利用しようと思っています。

2011/06/13

MacOS X で DHCPv6 を使用する

現在のIPv6ネットワークでは、ネットワークプレフィックスやルータ情報はRAで伝搬し、ネームサーバアドレスを含むその他ネットワーク設定はDHCPv6で伝搬する、といった運用が一般的に行われています。

残念ながらMacOS Xは、DHCPv6 クライアントが付属していない為、このようなネットワークでは、例えば「IPv6アドレスは取得できたもの、名前解決ができず、実質ネットワークが利用できない」といった状況へ陥ってしまいます。

幸いISCのDHCPクライアントがMacOS Xへ対応しているため、これを利用することで問題を解決できます。

MacOS XでISC DHCPをコンパイル、ならびに利用する方法は、「mtaneda's diary」さんが詳しく解説してくださっています。有難うございます。

ネットワーク設定の取得だけが必要な場合には-Sフラグを付けて起動すると良いでしょう。また、付属の client/scripts/macos スクリプトを利用することで、システムのネームサーバも再設定してくれます。例えば、このスクリプトを~root/bin/dhclient-macos としてインストールしている場合には、以下の通り実行すればネットワーク情報をDHCPv6経由で取得することが出来ます。

dhclient -v -6 -S -sf ~root/bin/dhclient-macos en0

なおIPv4のDHCP運用時同様、System Preferencesの Network で静的にDNSの設定を行なっている場合にはその値が優先されますので注意しましょう。

2011/06/12

MacBook へ給電出来る外部バッテリー HyperJuice を購入しました

最近のMacBookシリーズは、バッテリが本体へ内蔵され、自身で交換することができません。その分以前の製品よりもバッテリ駆動可能時間が伸びてはいるのですが、それでも終日外出先で利用する場合などには、心もとないのも事実です。

幸い、MacBookで利用可能なHyperJuice(旧名HyperMac)という大容量外部バッテリが存在します。特に3月からは、国内オンラインサイトであるact2.comが取り扱いを開始し、購入しやすくなりました。以前大人気商品の様で、入荷した途端に売り切れてしまう状況が続いているようです。

HyperJuiceは容量に応じて4種類のサイズがありますが、私は持ち運び容易性を考え、最もサイズの小さな容量60WhのMBP-060を購入しました。act2.comサイトでは各モデルの諸元が公開されおり、MacBook Air 11inchでは、内蔵バッテリと併せて13.6時間の利用が可能となっています。

パッケージ。綺麗な外箱です。


 開くと、ロゴの書かれた内箱。


その中にはシュリンクラップされたバッテリ。


 同梱品は充電用ACアダプタとAirlineアダプタ。ACアダプタ経由での充電時、アダプタが比較的高温になります。設置場所には注意が必要です。


iPhone4との大きさ比較。小型サイズで、持ち運びに便利です。カバンの片隅に入れておいても気になりません。


eneloopのKBC-L2BSとの大きさ比較。厚みは、ほぼ同じです。


 MacBook Air 11inchとの大きさ比較。小さいですね。


重量。手元の秤で396gと、缶ジュース1本くらい。act2.comで書かれれいる公開されている重量よりも36gほど重いようです。


前面。インディケータが付属しており、バッテリ残量を確認することが出来ます。USBコネクタも備えており、例えばiPhoneなどはここから充電も可能です。


私はMacBook Airの携帯性を損なわないよう、最も小さなMBP-060を選択しましたが、その1つ上のMBP-100も人気があるようです。


こちらは、重量が730gと、初代iPadへ純正ジャケットを加えた位の重さ。奥行きがMacBook Airと同じくらいになってしまう、というサイズのハンデはありますが、MacBook Air 11inchと組み合わせた場合には19.3時間利用出来るようです。持続時間を重要視する場合には良い候補かもしれません。

HyperJuice最大の問題点は、MacBookとの接続方法です。現時点で、最も一般的な接続スタイルは、アップル純正のApple MagSafe Airline 電源アダプタを用いる方法です。


このケーブルをHyperJuice付属のAirlineアダプタと組み合わせてDCコネクタへ変換し、HyperJuiceと接続することになります。


 このケーブルをHyperJuice本体へ挿し込むと、こんな感じに...。


正直使い勝手が良いとは言えません。Appleが接続ケーブルの販売を許可する、または純正ケーブルを販売してくれれば嬉しいのですが。

なおMagSafe Airline経由で接続した場合、HyperJuiceからの電源供給「充電」ではなく「給電」として扱われます。内蔵バッテリへ充電されるわけではありませんので注意が必要です。


MagSafe Airline経由以外での接続方法としては、Hyper Juice Magic Boxを経由して接続する方法もあります。Apple MagSafe Power Adapterを加工し、その接続ケーブルを活用する、という荒業ではありますが、加工されたケーブルはシンプルなものになります。

現在Magic Boxはact2.comでは取り扱っていないようです。また加工に関しては「酔いどれオヤジのブログwp」さんの紹介記事が大変参考になります。残念ながら私は試していません。

HyperJuiceは、電源が確保できない外出先での利用が多い方へ、おすすめな製品だと思います。MBP-060などを用意しておき、外出時、カバンへ仕込ませておくと安心かもしれません。

2011/06/10

Keychain AccessでのCSR作成で失敗したら

iOS Deviceで自作のプログラムを実行させる為には、iOS Development Certificateが必要です。

このCertificateを作成するには、まずCerificate Signing Request(CSR)と呼ばれるファイルを作成しなければなりません。

CSRファイルは、自分自身のIDやメールアドレス、名前などが記載されたファイルです。このファイルをiOS Provisioning Portalサイトを通じて送信し、署名してもらうことでiOS Development Certificateが作成されます。

CSRを作成するには、MacOS X付属のKeychain Accessアプリを使います。Keychain Accessアプリは、/Applications/Utilities/へ格納されています。

Keychain Accessアプリ起動後、メニューバーにある「Keychain Access」から「Certificate Assistant」を選び、その中の「Request a Cetificate from a Certificate Authority...」を選択します。

すると、CSRを作成するためのCertificate Assistantが立ち上がります。


入力しなければならない情報は、User Email AddressとCommon Nameです。これらの値はiOS Developerで登録した値を指定する必要があります。CA Email Addressは必要ありません。Request is はSaved to diskを選択します。Continueを押せば、セーブダイアログが開かれ、CSRが作成されます。



作成されたCSRが不正であったり上手く生成されない場合には、以下の点を確認してみるとよいでしょう。

Certificate Assistantを起動する際、「Request a Cetificate from a Certificate Authority...」ではなく「Request a Cetificate from a Certificate Authority With "自分の名前"...」と表示されている場合には、正しく生成されません。この現象は、Keychain Accessのウィンドウ内で何らかのprivate keyを選択している場合に生じます。選択を解除してから再度試すと上手く行くでしょう。

また、ごくまれに、セーブダイアログで「Save」ボタンを押したにも関わらず、CSRファイルが何処にも生成されない場合があります。Save処理が瞬間的に終了した場合には要注意です。この場合には、何らかのCertificateが壊れている可能性があります。

iOS Dev Center から iOS Provisioning Portalへ移動し、Developmentタブにある「If you do not have the WWDR intermediate certificate installed, lick here to download now.」からWWDR intermediate certificateをダウンロードします。


このファイルをダブルクリックし、Keychain Accessへインストールしましょう。Add Certificatesウィンドウが開かれインストールが行われます。ウインドウが開かれない場合にはCertificateのダウンロードに失敗している可能性があります。


インストールが無事済んだ場合、再度CSRの作成を試すことで、今度は上手く生成できるかもしれません。

Webで同様の症状を報告されていた方の中には、必要なcertificateを全てreloadしたと書かれている方もいらっしゃいましたが、幸い私はWWDR cetificateを再インストールするだけで、CSRの生成が出来るようになりました。

同様の問題で悩んでいる方のお役に立てば幸いです。

2011/06/09

World IPv6 Day開催とフレッツIPv6アドレスに基づく接続トラブル

2011年06月08日、日本時間の午前9時よりWorld IPv6 Dayが開催されています

World IPv6 Dayとは、世界的にIPv6接続実験を行う日です。社団法人日本インターネットプロバイダー協会の案内では、その目的に付いて以下の通り説明されています。

IPv4 アドレス枯渇期を迎えたことを受け、IPv6 によるサービス提供に問題がないことを確かめ、問題があった場合にはそれを共有し、今後の課題解決に役立てることが目的です。

幾つか懸念がありますが、最も問題の発生しそうな環境は、NTTのフレッツ光サービスからIPv6アドレスを受け取っているサイトです。フレッツ光サービスでは、独自サービスにIPv6を利用していますが、フレッツ網自体はIPv6インターネットへの接続性を提供していないため、IPv6インターネット上のサイトと接続することは出来ません。

例えばマイクロソフトは、この件に関する包括的な解説を公開しています。

我が家では、フレッツ光の一種であるB-Flet'sをアクセスラインに使用していますが、IPv6アドレスは受け取らないように設定しているため、今回のフレッツ網に纏わるは影響を受けません。また、あるプロバイダ様のご好意により、IPv6 over IPv4の静的なトンネルを試験利用させていただいているため、安定したIPv6での接続が確立できており、こちらも問題は受けません。

その上で、今回World IPv6 Dayの開始に伴い、実験として、フレッツ網からIPv6アドレスを受け取り、それを宅内ネットワークへ配布するようにしてみました。

普段利用しているIPv6のアドレスプレフィックスは2001:240:XXXX::/48です。今回フレッツから取得したアドレスは2001:c90:XXXX:XXXX::/64でした。これをIPv6対応ルータで受信させ、共に/64とした上で宅内ネットワークへ再伝搬(RA)させます。これにより宅内ネットワークには、条件が同等な二つのprefixが流れることになります。但しデフォルト経路は、IPv6インターネットへ接続している2001:240:XXXX::/48側です。

宅内ネットワークには、IPv6対応クライアントとしてMacOS X 10.6.7、Windows7 SP1、FreeBSD 8.2p2、iOS 4.3.3、Android 2.3.2を用意しました。

この環境で、今回実験に参加しているwww.google.comへの接続を試みました。IPv6アドレスは2404:6800:8002::68です。問題なく繋がりました。

次に国内から実験に参加しているwww.yahoo.co.jpへ接続しました。IPv6アドレスは2404:a600:1:1607:1181:5100:25:4055です。こちらも問題なく繋がります。

最後に、もう一箇所、同じく国内で実験に参加しているwww.sony.co.jpへ接続しました。IPv6アドレスは2001:cf8:0:51::18です。しかしこちらは繋がりません。

この理由は今回フレッツから割り当てられたアドレスと、接続先アドレスとの関係にあります。

単一インターフェイスへ複数のIPv6アドレスが割り当てられている場合、どのアドレスをソースアドレスとして利用するかはRFC3484である「Default Address Selection for Internet Protocol version 6 (IPv6)」で定義されています。

これに従えば「5. Source Address Selection」の「Rule 8:  Use longest matching prefix.」に基づき、「2001::cf8」で始まるwww.sony.co.jpの場合にのみ、確実に「2001:c90:XXXX:XXXX::/64」側のアドレスがソースアドレスとして利用されてしまいます。

勿論このアドレスは、フレッツの中でだけ使えるアドレスなので、www.sony.co.jpはこのアドレスに対して戻りパケットを伝達させることが出来ません。この為、結局接続出来なくなってしまいます。同様の理由で接続できないサイトにはwww.nta.go.jp(2001:c80:a001:1::cad9:2cd0)などがあります。

一方、他サイトでの接続に問題が生じなかったのは、ある意味偶然です。ソースアドレス選択アルゴリズムの結果、優先度が一致した場合には、どのアドレスを利用しても自由であり、今回はたまたま先にRAが発行されていた「2001:240:XXXX::/48」側のアドレスが利用されたに過ぎません。実際にRAの順番を変更したところ、接続できなくなりました。

この問題を解決するために、RFC3484ではポリシーテーブルという仕組みが提唱されており、この仕組を用いることでアドレス選択の優先度を変更できるようになっています。この仕組みを用いることで、IPv6インターネットへの接続時にはフレッツ網から割り当てられたIPv6アドレスを利用しないように設定することが可能です。今回使用したクライアントの中ではWindowsやFreeBSDがサポートしています。

Windows系での設定に関しては、IIJの松崎さんが、「NTT東西のIPv6閉域網向けポリシーテーブル設定」として公開してくださっています(有難うございます)。

FreeBSDでポリシーテーブルを変更するにはip6addrctlコマンドを利用します。松崎さんの設定情報をip6addrctl用の設定ファイル形式へ変更したものを以下に置いておきます。例えば/etc内へip6addrctl.confというファイル名で保存した後、root権限で/etc/rc.d/ip6addrctlなどを実行すれば簡単に設定可能です。

::1/128               50     0
::/0                  40     1
2001:c90::/32         40     6
2001:d70::/30         40     6
2001:a000::/21        40     6
2404:1a8::/32         40     6
2408::/22             40     6
2002::/16             30     2
::/96                 20     3
::ffff:0:0/96         10     4

Windows、FreeBSDとも、この設定を行うことで、www.sony.co.jpを含むIPv6サイトへ接続できるようになりました。

残る問題はMacOS X、iOS、Andoridです。これらにはポリシーテーブルを変更する手段がありません。

MacOS Xの場合、Web閲覧だけの解法であれば、ブラウザにGoogle Chromeを利用する、という方法があります。最新のGoogle Chromeには、IPv4、IPv6で同時にサイトへの接続を試み、先に応答が返ってきた接続を利用する、という仕組みが実装されています(簡易的なHappy Eyeballs)。この為、IPv4とIPv6の両アドレスが割り当てられているサイトであれば、例えIPv6のソースアドレス選択が誤っている場合でも、IPv4で接続できます。

残念ながらiOSとAndoroidには、このような仕組みは実装されていません。また、IPv6を使わないように設定する方法もありません。これらのOSを利用している場合には、フレッツから割り当てられたIPv6アドレスをRAで配布しないように設定する以外、解決策はなさそうです。

幸い、NTT東日本NTT西日本とも、以前から告知されていた「フレッツ光ネクスト経由によるIPv6インターネットへ接続」が正式サービスとして開始されました。今後は多くのプロバイダがIPv6接続サービスを展開してくることでしょう。

次回World IPv6 Dayが開催される際には、フレッツによるIPv6アドレス割り当て問題が解決され、ISPによるAAAAフィルタリングなどを行うことなく、より多くの人々が問題なく接続できる環境になれば、と願っております。