仙石浩明の日記

2013年3月19日

GS108E / GS116E の ProSafe Plus 設定ユーティリティが 「HTTP request error」 で使えないときの対処法

安価なスマートスイッチ GS108E / GS116E の設定ユーティリティ 「ProSafe Plus」 を起動したとき、 以下のようなエラーダイアログが表示されて使用不可能に陥ることがある:

Web サービス サーバと通信中にエラーが生じました。エラーメッセージ:HTTP request error

「サーバと通信中にエラーが生じました」 と言われても、 そもそもこの 「ProSafe Plus 設定ユーティリティ」 はサーバと通信するツールではないので途方に暮れてしまう。 「サーバ」 というのはこのツールの設定対象であるスイッチ GS108E/GS116E のことなのか? この設定ユーティリティは起動時にスイッチを探す (UDP broadcast) が、 もちろんプロトコルは HTTP ではない。

「HTTP request error」 というエラーメッセージが唯一の手がかりなので、 とりあえず google で検索してみる。 私と同様に途方に暮れている人が何人もいるようだ。

幸い、 そのうちの一人が解決方法を発見していた:

FIXED: Prosafe Plus Configuration Utility - HTTP request error

I Fixed it!!! : The problem seemed to be caused by the 'Internet Connection Sharing Service (ICS)'.
Some how I have been configuring this service on my laptop. When I stop this service, the utility works again. Because I do not need this service most of the time I changed the startup mode of this service to manual.

ICS ? そんなものを設定した覚えはないのだけど... と思いつつ、 「ネットワークと共有センター」 から 「アダプターの設定の変更」 を選び、 ネットワーク アダプターの 「プロパティ」 を開いて 「共有」タブを選択する (Windows7 あるいは Windows8 の場合)。 すると...

インターネット接続の共有 ネットワークのほかのユーザに、このコンピューターのインターネット接続をとおしての接続を許可する

がーん、 「インターネット接続の共有」(ICS) が許可されている orz.
誰が許可したんだ?

そういえば先月 Wi-Fi USBアダプタ GW-USFang300 を購入 (e-trend で 1280円で売っていたので衝動買い ^^;) した際、 この PC を Wi-Fi アクセスポイントとして使用したのだった。 アクセスポイントなので、 当然 ICS を許可することになる。 一時的に使用しただけなので、 今はこの Wi-Fi USBアダプタを外しているのだが、 ICS が許可されたままになっていたのだろう。

この 「ネットワークのほかのユーザに、このコンピューターのインターネット接続をとおしての接続を許可する」 のチェックを外して 「OK」 を押したところ、 無事 「ProSafe Plus 設定ユーティリティ」 が使えるようになった。 よかった〜

なお、 上記 google 検索で見つけた解決方法は、 「I changed the startup mode of this service to manual」 すなわち 「『Internet Connection Sharing (ICS)』 サービスの 『スタートアップの種類』 を 『手動』 にした」 とあるが、 ネットワーク アダプターの 「プロパティ」 で ICS 許可のチェックを外しても同じ効果が得られるし、 「プロパティ」 で設定変更するほうが素直な対処方法だと思う。

Filed under: システム構築・運用 — hiroaki_sengoku @ 10:41
2013年2月6日

台湾で中華電信と台灣大哥大のプリペイド SIM カードを買ってみた

初めての台湾。 4日間の短期滞在なので、 街中でプリペイド SIM カードを売ってるところを探していては時間がもったいない。 できれば空港で SIM を入手し、 不自由無くインターネットにアクセスしたい。 とはいえ、 パックツアー (最初に九份を訪れた後は全日程自由行動) なので、 他のツアー客を待たせるわけにはいかない。 できるだけ早く入国審査を済ませて SIM を購入し、 ツアー集合場所に駆けつけよう。

臺灣桃園國際機場 (Taiwan Taoyuan Int'l Airport, 台湾桃園国際空港) 第2ターミナルに到着後、 飛行機を真っ先に飛び出し、 小走りで入国審査場を目指した。

がらがらの入国審査場。 やった、 一番乗り。 広々とした入国審査場の片隅に、 一台だけ置かれている ATM が目に入った。 初めての訪台なので、 台湾の現金をまったく持っていない。 多くの国で SIM はクレジットカードで買うことができない。 おそらく台湾も同じだろう。 ここで現金を入手できれば、 SIM の購入がスムーズになる。

ATM に駆け寄り、 素早くキャッシュカードを挿入、 暗証番号を入力し、 口座の種別を選んで金額を入力した。 すると、 CirrusPLUS か選択する画面が現れた。

へ? Cirrus か PLUS ? そんなの ATM が勝手に判断することなんじゃ? わざわざユーザに選ばせるってことは、 Cirrus と PLUS の両方に対応しているカードがあるってこと? それなんて呉越同舟?

ええい、 二つに一つ!と Cirrus を選んだら、 レシートとカードが吐き出され、お金は出てこなかった。 敗北感に浸りながら出てきたカードを裏返すと、 そこには PLUS のマークがあった。

もう一度... と思ったが、 いつのまにか入国審査場には待ち行列が伸び始めていた。 いま現金を入手したところで、 入国審査に時間がかかっては元も子もない。 慌てて行列の最後尾につく。

と、 いうわけで到着ロビーで ATM を探した。 (両替のための) 銀行カウンターは目立つところにあるが、 ATM はエスカレータ脇の目立たないところにあるので見つけにくい。 事前に場所を確認しておいた方が無難。 もっとも、 一刻も早く ATM を使う必要があるのは、 その国を初めて訪れる時 (その国の現金を全く持っていない時) だけだが。 しかも、 台灣大哥大 (Taiwan Mobile) の SIM は、 クレジットカードでも購入できた orz。 中華電信 (Chunghwa Telecom) は現金のみ。

Chunghwa Telecom, Taiwan Mobile, FarEasTone at Taiwan Taoyuan Int'l Airport 到着ロビーへ出て左側へ進んだところに、 中華電信, 台灣大哥大, 遠傳電信のカウンターがあった (←左写真)。 台湾は SIM 管理が厳しく、 購入の際、 パスポートの他にもう一点、 身分証明書の提示が必要。

スタッフが (日本の)運転免許証を見慣れているので、 運転免許証を提示するとスムーズに手続きできる。 SIM の購入は一人一枚に制限されると聞いていた (未確認) ので、 (私が二枚まとめて購入するのではなく) 私と妻それぞれ一枚づつ購入したのだが、 妻は運転免許証を持ってないので住民基本台帳カードを提示した。 住民基本台帳カードは市町村ごとにデザインが違うので、 日本の公的な身分証明書であることを納得してもらうのに、 ちょっと手間取っていたようだ。

市町村ごとに変種がある 「証明書」 でどうやって偽造を見抜けと言うのだろう? さらに悪いことに、 住民基本台帳カードには固有番号が一切書かれていない。 もちろん、IC の中には 「住基ネット番号」 という固有番号が記録されているわけだが、 IC リーダを使わずに (フォトコピーだけで) 読める固有番号 (もちろん住基ネット番号とは異なる番号で構わない) を用意すべきではないのか? 証明書としての要件をまるで備えていない住基カード (>_<)。 こんなものを作った責任者を小一時間問い詰めたい。

4日間の滞在なので、 5日間 (120時間) データ通信し放題の SIM カード (通話も可能) を購入した。 中華電信と台灣大哥大を一枚づつ。 どちらも micro SIM を選択できた (一応 SIM カッターを持参したのだが ^^;)。 中華電信は NT$50 の度数が付いて計 NT$300 (約930円)、 台灣大哥大は NT$250 の度数が付いて計 NT$500 (約1550円)。 つまり、 どちらも 5日間の無制限データ通信の部分は NT$250 (約780円)。

「大哥大」 は (日本では) 見慣れない文字なので、 どう発音していいのか困るが、 あえてカタカナで書けば 「ダーグーダー」 (「グー」 が高く, 第1声)。 「グー」 は発音記号 (拼音, ピンイン) で書くと 「gē」 で、 「e」 は中国語の母音の中で最も(?)難しい音。 口の形は 「エ」 なのだけど 「ウ」 に近い音に聞こえる。 他の母音とくっつくと 「エ」 に聞こえることも。

「哥」 は、 (歌の意味もあるがここでは) 「兄」 の意味。 で、 それに 「大」 がついて 「大哥」 は 「いちばん上の兄」、 転じて 「男性に対して使う尊敬と親しみをこめた呼称」。 「アニキ」 みたいな感じか? そして、 さらに 「大」 がついた 「大哥大」 は 「(やくざの)ボス」。 それが転じて 「携帯電話」 ← どーしてそうなった?

大哥大
Dàgē dà
携帯電話.(‘大哥大’(香港のマフィアのボス) が携帯電話を手に持って部下に指令を出す映画のシーンから生まれた言葉で, その姿が格好よく見えるところから‘大哥大’と言われるようになった.) ≒移动电话,手提式电话.

中国語では携帯電話のことを 「移動電話」 (簡体字だと 「移动电话」) と表記することが多いが、 台湾では 「行動電話」 と表記するのが普通。 発音は 「Xíngdòng diànhuà」。

「NT$」 は、 新台湾ドル (New Taiwan dollar) の略称。 「新」と言っても最近発行されたわけではなく、 発行開始年は 1949年。 通貨コードは TWD (なら素直に TW$ と書けばいいのにな〜)。 NT$1 = 約3.1円。

もっと読む...
Filed under: SIM — hiroaki_sengoku @ 11:15
2012年12月27日

成功しない方法

「なぜ成功できたか?」を聞きたがる人って多いですよね? でも、そんなこと聞いてどうするのでしょうか。仮に同じことが実践できたとしても、同じように成功できるとは誰も思っちゃいないですよね?

同じように成功するのは無理としても、成功者の話には何らかのヒントがあるんじゃないか?きっとそういうことを期待しているのだと思いますが、考えてみて欲しいのは、成功しなかった人の話は誰も聞こうとしない点。もしかしたら成功しなかった人も成功者と同じことをしていたかも知れません。いわゆる「生存者バイアス」ですね。

例えば、成功できた理由を聞かれて、「自分を信じて、あきらめずに続けたから」などと答えている人をよく見たり聞いたりしますが、こーいう話を真に受けて、素質がない人が自分を信じて突き進んだりしたら、成功確率が上がるどころか、撤退タイミングを逃してドツボにはまってしまうだけです。

まあ、私自身も、「やりたいことをやるのが一番」などと言っていた時期があるので大きなことは言えないのですが、「自分がやりたいことって何だろう?」などと悩み出す人をこれ以上増やさないためにも、ここでは逆に「成功しない方法」について書くことにします。ちなみに「成功しない=失敗」ではありません。失敗は成功の元ですから、むしろ大いに失敗すべきです。

「成功しない方法」を避けたところで成功する保証は何もありませんが、多くのエンジニアが残念なことにこの「成功しない方法」を忠実に実践し、その必然的な帰結として、どんどん成功から遠ざかってしまっています。近年、「エンジニア」という職種が報われない職種になってしまっている一つの原因が、このあたりにあると感じる次第です。

もちろん、いままさに「成功しない方法」を実践している人に対して、このままでは成功からどんどん遠ざかるぞと忠告したところで、そう簡単に方向転換はできないものだとは思いますが、もし、いま「このまま進んでいていいのだろうか?」と思っているなら、少しばかり耳を傾けて頂けると幸いです。

誌面が限られているので、いきなり結論からいきます。「成功しない方法」とは、「選択肢を減らすこと」です。

選択肢と言われてもピンとこないかもしれませんが、人生には分岐点が沢山あります。たとえ八方塞がりに思えるドツボな状況に陥ってしまっていても、その後の分岐点で最適な選択さえできれば、ピンチがチャンスになったりします。ただしそれは、分岐点に選択肢の幅が十分にあればの話です。選択肢が多ければ、リカバリのチャンスがあるということですね。

例えば、選択肢を減らす典型的な方法が、借金をすることです。多くの人が 20〜30年もの長期ローンを組んで家を買ったりしますが、転職したくなったりしたとき、毎月十数万円の返済は重い足枷となるでしょう。借金がなければ思い切って生活を変える選択ができたかもしれないのに、借金があるばっかりに渋々現状維持を続け、ついにはリストラの憂き目に、なんてのはよく聞く話です。

でも、借金よりもっと選択肢を減らす方法があります。それは、自分の気持ちを優先すること。よくいますよね、「これは自分の仕事じゃない」とか言う人 (>_<)。その仕事がどんな仕事か十分に知り尽くしていて、「その仕事をする」という選択肢を除外することが合理的であるなら構わないんですが、多くの人はどんな仕事か知りもしないくせに、「自分の気持ち」だけで判断してしまいます。もしかしたら、やったことがないその仕事に挑戦することが、自分の人生の一大転機になるかも知れないのに。

あるいは、「自分がやりたいことって何だろう?」などと悩む人がいます。「やりたいことを仕事にすべき」などと (私を含めて orz) 多くの人が言ってますが、誰だって最初からそれが「やりたいこと」だったわけではないんです。なにかのはずみに始めたことが、やってるうちに (少し) 好きになり、好きでやるからどんどん熟達し、他の人よりうまくできると余計に好きになり、という好循環にはまって「やりたいことが仕事になる」んです。つまり、最初は好きでなくても自分の気持ちを無視してやってみなきゃ選択肢は増えません。それなのに、悩んでるばかりで始めないから、だんだん歳をとって、やってみるチャンスすら失われてしまいます。

また、多くの人は批判するのが大好きです。昔は飲み屋で、いまだとブログや SNS で、「上司が悪い」「会社が悪い」「社会が悪い」「政治家が悪い」。なぜ人は批判するのでしょう?社会をよくするため?とんでもない、愚痴を言ったって社会は少しも変わりません。誰かを批判すると、その人より自分が偉くなったような気分になれるから、人は批判するのが大好きなのです。

でも、批判によってよくなるのは「自分の気持ち」だけで、自分自身は決してよくはなりません。なぜなら、誰しも成長するには他人から学ぶ他ないからです。でも、「彼はバカだ」と言ってしまったら、その「彼」からは学べません。選択肢がまた一つ減るわけですね。本当に学ぶことが一切無いようなバカなら学ばなくてもいいのですが、ほとんどの場合そうではないでしょう。本当は、学ぶところが一切無いような人に対しては、批判する気にもならないはずです。

自分の気持ちを優先して選択肢を減らす例はまだまだ沢山あるのですが、誌面が尽きたのでこの辺で... もしこの手の話に興味があれば、私のブログ (「仙石浩明」で検索!) を参照してください。

- o -

以上は、 Software Design 誌に寄稿したエッセーです。 2013年1月号 第2特集 「キーパーソンに聞く 2013年に来そうな技術・ビジョンはこれだ!」 に掲載されました。 技術評論社さんの許可を得て、 全文を転載しています。

Filed under: 元CTO の日記,自己啓発 — hiroaki_sengoku @ 10:20
2012年9月4日

個人でも気軽に買える安価なスマートスイッチ GS108E (IEEE 802.1Q タグVLAN 機能付) を使ってみた 〜 UCOM光 マンション全戸一括タイプの戸内配線上にプライベートネットワークを構築

先日、 UCOM光 マンション全戸一括タイプが導入されているマンションに引っ越した。 各部屋に LAN コンセントがあり、 UTPケーブルをつなぐだけでインターネットに接続できる。 USENのスピードテストで測定したところ、 50Mbps 以上の通信が可能であるようだ。 個人ユースであれば充分な帯域。

     UCOM
       │
       │
   ┌───┴───┐
   │ マンションの│
   │  ルータ  │
   └┬┬┬┬┬┬┬┘
┌───┘│││││└───┐
│ ┌──┘│││└──┐ │
│ │ ┌─┘│└─┐ │ │
: : :  │  : : :
 各戸へ   │   各戸へ
       │
    ┌──┴──┐
    |各戸のハブ| /29
    └┬─┬─┬┘
   ┌─┘ │ └─┐
   │   │   │
   ↓   ↓   ↓
  各部屋の LAN コンセント

各戸に半固定な /29 グローバル IP アドレス空間 (つまり 8個の IP アドレス) が割当てられていて、 LAN コンセントに PC 等をつなぐと、 マンション内に設置されたルータが DHCP でグローバル IP アドレスを配布する。 8個のアドレスのうち、 1個はこのルータが使い、 ネットワークアドレス (下位 3ビットが 000) とブロードキャストアドレス (下位 3ビットが 111) は配布されないので、 実際に配布されるのは (下位 3ビットが 010 〜 110 の) 5個のアドレスのみ (IPv4 アドレスが枯渇している昨今、 3/8 を無駄にするのはいかがなものか?)。

UCOM に問合わせたところ、 各戸のハブ (以下、ここでは 「戸ハブ」 と呼ぶ) は、 浴室の天井裏に設置されているらしい。 また、 各戸に割当てられるグローバルアドレスは、 通常は変化せず (機器構成の変更等で変わる可能性がある)、 全てのパケットはフィルタリングせずに届けられるらしい。

インターネット上の任意のホストから任意の通信が可能であるわけで、 (特に XP 以前の脆弱な) Windows マシン等を LAN コンセントに直結するのは、 セキュリティ上あまりよろしくない (有料オプションで、セキュリティ対策サービスがあるらしい)。 また、 5台以上の PC をつなぎたい場合もあるだろう。 特に UCOM光電話を使う場合は、 IP電話アダプタがアドレスを一つ使う (使わずに済ませる方法) ので、 残り 4個になる。 フツーの家庭でも 4個では足らなくなるのでは? もちろん私の場合は 12個でも足らない。;-)

普通は、 PC を LAN コンセントに直結してグローバルアドレスを使うのではなく、 NAT 機能付ルータ (無線LAN ルータ等) を LAN コンセントにつないで、 PC にはプライベートアドレスを割当てることになるだろう。 各部屋で有線LAN を使いたい場合は、 各部屋にルータ (以下、 「部屋ルータ」 と呼ぶ) を用意して PC をつなぐことになる。

UCOM によると、 マンションによっては、 戸ハブの代わりにルータを各戸に設置して、 プライベートアドレスを配布しているケースもあるとか。 セキュリティを気にするのであれば、 戸ハブをルータと交換してもらっても構わないとまで言っていたが、 私はグローバルアドレスを使いたいので、 現状の仕様のほうが嬉しい。

ところが、 この方法だと各部屋の LAN は互いに異なるプライベートネットワークになってしまい、 異なる部屋 (そういくつも部屋があるわけでもないのだが ^^;) の PC と通信したいとき困る (居間にサーバを置くのは無粋なので、 ネットワークメディアプレーヤを使う場合とか)。 各部屋ルータの間で VPN を張って、 各部屋のプライベートネットワークを一つにする方法もあるが、 VPN のオーバヘッドがモッタイナイ。

もちろん、 部屋間に (廊下などに) UTP ケーブルを這わせれば済む話だが、 美観上好ましくないのと、 私の場合は購入ではなく賃貸で借りたマンションなので、 むやみにケーブルを配線するのも憚られる。 各LAN コンセントは、 壁裏配線を介して同じ戸ハブ (天井裏の写真 ↓ ダムハブ ^^;) につながっているのだから、 一つの LAN コンセントからパケットを送れば、 他の LAN コンセントに届く。 マンションのルータは当然 IP パケットの発信元/宛先アドレスをチェックしているだろうから、 発信元/宛先アドレスがプライベートアドレスなら外部へは出さないだろう。

Baffalo Dumb Hub

したがって、 グローバルアドレスなパケットに対してはルータとして、 プライベートアドレスなパケットに対してはブリッジとして機能するブルータを、 部屋ルータとして用いればよい。 ただし、 一般に売られている安価なルータにブルータの機能を求めるのは無理がある。 Linux マシンを使えばブルータを実現するのは容易だが、 各部屋 (特に寝室) で Linux マシンを 24時間稼働させるのはいかがなものか。

もっと安易に、 各PC を LAN コンセントにそのまま (あるいはハブを介して) つなぎ、 PC にはプライベートアドレスを割当てる方法もありそう。 あらかじめ 5個のグローバルアドレス全てを使いきってしまえば (例えば各グローバルアドレスを持った PC を前もってつないでおく)、 マンションのルータが (新たにつないだ) PC にグローバルアドレスを割当てることを防ぐことができる。 そして、 プライベートアドレスを配布する DHCP サーバを動かしておけばよい。 プライベートアドレスを割当てられた PC 同士は、 異なる LAN コンセントにつながれていても、 戸ハブ経由で通信できる。

ただしこの方法は、 PC にグローバルアドレスが割当てられてしまうことを完全には防げない。 なんらかのトラブルによりグローバルアドレスを使いきれない状態が生まれると、 そのとき LAN コンセントにつないだ PC には、 グローバルアドレスが割当てられてしまう。 グローバルアドレスが割当てられても、 (当然) フツーに通信できるわけで、 ユーザはグローバル空間に晒されていることに気付かない。 セキュリティ的にかなり好ましくない事態と言える。

各部屋にブルータ (という名の Linux マシン) を配置するしかないのか? と思っていたら、 タグVLAN (IEEE 802.1Q) 機能を持った安価なスイッチングハブを見つけた。 タグVLAN は業務用のインテリジェントスイッチでないと使えないと思っていたが、 1万円以下 (6400円) で買えるとわ... 思わず e-TREND で衝動買い。

本当は 5ポートの GS105E を買いたかったが、 日本では入手するのが難しそう。 8ポートの GS108E なら、 e-TREND の他、 NTT-X Store などでも送料込 6400円で購入できる (どちらのショップも 「在庫なし」 と表示されるが、 私が e-TREND に注文したときは 1週間程度で届いた)。

タグVLAN 機能付ハブを使えば、 ブルータよりもっとスマートにプライベートネットワークが実現できる。 つまり、 部屋間のプライベート通信はタグを付けて行なう。 戸ハブは (ダムハブなので) タグの有無にかかわらずなんでも中継してくれるし、 マンションのルータはタグ付パケットを無視する。

GS108E-living

GS108E を 3個購入し、 各部屋 (便宜上、ここでは居間、寝室、書斎とする) に配置する (写真 → は、居間に設置した GS108E, その上に置いてあるのは無線LAN AP, 左は IP電話アダプタ)。

VLAN ID 1 をグローバルネットワークに、 VLAN ID 2 をプライベートネットワークに使うことにする。 各 GS108E のポート 01 には、 各部屋の LAN コンセントをつなぎ、 VLAN ID 1 をタグ無しで、 VLAN ID 2 をタグ付で流す。 ポート 04 〜 08 は、 プライベートネットワーク専用ということにして、 VLAN ID 2 のみをタグ無しで流す。

グローバルネットワークに接続する必要があるのは、 グローバルアドレスをプライベートアドレスへ変換する部屋ルータ (という名の Linux サーバ) と、 IP電話アダプタ (UCOM光電話) のみ。 前者 (部屋ルータ) は書斎にある。 部屋ルータは、 グローバルとプライベートの両方のネットワークに接続する必要があるが、 幸い Linux はタグ付パケットを扱えるので、 単一の NIC で両方のネットワークに接続できる。 書斎の GS108E のポート 02 に部屋ルータをつなぎ、 ポート 01 と同様、 VLAN ID 1 をタグ無しで、 VLAN ID 2 をタグ付で流す。 書斎に他の PC が無ければ、 部屋ルータを LAN コンセントに直接つないでもよい。

後者 (IP電話アダプタ) は居間にある。 IP電話アダプタはグローバルネットワークにだけつなげればよいので、 居間の GS108E のポート 02 にIP電話アダプタをつなぎ、 VLAN ID 1 をタグ無しで流す。 急遽グローバルネットワークに接続したい機器が増えた場合に備えて、 ポート 03 にも VLAN ID 1 をタグ無しで流す (つまりグローバルネットワーク専用) 設定にした。

GS108E-living VLAN config

タグVLAN は、 一本のケーブル上に複数のネットワークを同居させることができる便利な規格。 ケーブルを何本も這わすことが (美観上の理由で) 難しい家庭でこそ必要な機能なのに、 普及価格帯のハブでタグVLAN をサポートしているのは (私が知る限り) GS105EGS108E のみ。 タグVLAN 機能を持った安価なスマートスイッチが増えることを願ってやまない。

Filed under: システム構築・運用 — hiroaki_sengoku @ 11:40
2012年7月4日

英国で giffgaff, Three, O2, Vodafone, T-Mobile のプリペイド SIM カードを使ってみた

イギリスのプリペイド SIM カードは、 ほとんど (全て?) のキャリアの SIMカードが無料でもらえる (送料も無料)。 日本を出発する前日に、 以下の 10キャリアの free SIM を Web で申し込んでみた。

キャリアfree SIM 申込ページ備考
3UK (Three) Free SIM 香港 Hutchison Whampoa
O2 Text & Web スペイン Telefonica
giffgaff Free giffgaff SIM O2MVNO
LycaMobile Free Lycamobile SIM O2 の MVNO
Vodafone Text & Web Freebee 英国 Vodafone
Lebara FREE SIM Vodafone の MVNO
T-Mobile free SIM Text plan ドイツ T-Mobile
Orange pay as you go SIM T-Mobile と合併
Vectone Free SIM T-Mobile の MVNO
delight Free SIM T-Mobile の MVNO

ただし、 SIM の送付先は英国内の住所限定なので、 宿泊予定のホテルの住所を指定しておく。 T-Mobile は英国の電話番号が必須入力項目なので、 sipgate で得た電話番号を指定した。

free SIM といっても、 もちろん電話代がタダになるわけではなく、 通信・通話を行なうには SIM に度数をチャージ (英国では Top up と呼ぶ) する必要がある。 Top up は Web 上でできる (クレジットカード払い) ので、 ショップ等に行く必要も、 英語で会話する必要もない (英語が苦手な私にとって重要なポイント)。 もちろん、 英国のいたるところ (コンビニ、スーパー等、 「PayPoint」 あるいは 「top-up」 の看板が出ている店) で Top up のための Voucher (PIN が印字されたレシート) を購入することもできる。

ヒースロー国際空港に着くと、 プリペイドSIM の自動販売機が到着ロビーの目立つところにおいてある。 しかし SIM だけ (つまり度数無し) で£10 もする。 free SIM を申し込んでしまった手前、 £10 も払うわけにはいかない。 ロンドンの街中では同じものが£1〜£3 程度で購入できるようだ。

ホテルに着いてチェックインし、 真っ先に郵便物の有無をたずねたが、 さすがに昨日の今日では届いていなかった。 出発 2日前に申し込んでおけばよかったかも? giffgaff は、 申し込んでから発送まで 2日ほどかかる (発送した旨を知らせるメールが申込日の 2日後に届いた) ので、 出発 3日前に申し込むのがよさげ。 早く申し込みすぎてチェックイン前に届いてしまうと、 ホテルによっては受け取りを拒否されるかも?

部屋の状態 (お湯が出るとか、破損個所が無いかとか) を確認し、 無線LAN (があることは事前に確認済) を使おうとしたら有料だった。 しかも高い。 一日分の使用料金でケータイの通信・通話料金の一ヶ月分くらいする。 仕方ないので、 既に 19:00 をまわっていた (日本時間だと 3:00 過ぎなので眠い) が、 SIM を買いに最寄り駅 (Earl's Court) まで行ってみる。 閉ってる店も多かったが、 幸いコンビニは開いていて (ロンドンは 10年ぶりで、 前回訪問時は 19:00 過ぎに開いてる店は皆無だったような記憶が...) Vodafone SIM (と£10 Top up Voucher) を買うことができた (本当は 3UK SIM を買いたかったのだが、無いと言われた)。

Vodafone

通話料は 25ペンス/分、 インターネットへアクセスする際のデータ通信 (以下、Web と略記。もちろん Web 以外の通信も可能) の料金は 25MB あたり£1 (一日最大£5)。 ただし、 Text & Web パッケージを選択 (opt in) した場合は、 £10 を Top up すると、 300通までの国内 SMS (300 text と略記) と、 500MB までの Web (500MB web と略記) が無料になる (30日間有効)。

30日の間に Web が 500MB の枠を超えそうな場合 (スマホを使ってると超えることが多い) は、 £5 の Web Pack を購入することにより Web 枠を 250MB 追加できる。 Web 枠を使い切ると、 25MB あたり£1 の Web 料金が適用されてしまうので、 使い切る前に Web Pack を購入しておくべき。 Web Pack は 5個まで先行して購入しておくことが可能。 Web Pack は、 My account を登録しておくことにより、 クレジットカード払いで購入できる。 Top up のように、 My account を登録せずに購入する方法があるかどうかは未確認。

なお、 街中で売ってる SIM は (Vodafone に限らず) International パッケージ (つまり国際電話が安くなるパッケージ) を選択して使うことを想定している。 プリペイドSIM 購入者の大半が、 (おそらく母国へ) 国際電話をかけるために SIM を買うからだろう。 SIM 同梱の説明書には、 「4351」 をダイヤルして activate する方法のみ記載されているが、 この activate 方法では£10 を Top up しても Web 料金の特典はなく、 その代わり 60分までの国際通話が無料になる。

私は国内通話とインターネットへのアクセスさえできればいいので、 Text & Web パッケージを選択したかったのだが、 インターネットにアクセスできない状況下では activate の番号を調べる手段が無かった。 泣く泣く 4351 をダイヤルした後、 SIM と同時に購入した£10 Top up Voucher の PIN を入力した。 さらに悪いことに、 Web Pack の購入方法に気付いたときには既に残高が£5 を下回っていて (Web Pack 無しだと 1日最大£5 の Web 料金がかかるので £10 が 2〜3日で無くなる) Web Pack を購入することができなかった。

SIM の activate 方法は、 インターネットにアクセスできない状況下で必要となることを想定し、 事前にメモしておくべきだろう。 以下にまとめておく:

ダイヤル番号パッケージTop up で得られる無料特典(30日間有効)
4350Text & Web300 text & 500MB web
4352TalkVodafone 宛の通話 1000分
4351International国際通話 60分
4353£5 Weekend通話 100分 & 無制限 text (週末限定)
4354Freedom通話 100分 & 300 text & 50MB web

£5 Weekend パッケージは、 月曜〜金曜に£5 を Top up すると、 土曜と日曜の通話が 100分まで無料になり、 土曜と日曜の SMS が無料になる。

Text & Web パッケージを選択し、 適宜 Web Pack を追加購入することにより、 Web 料金を安く抑えることができるが、 例えば 30日間に 1GB 使う場合は、 £20 (£10 の Top up と Web Pack 2個) かかってしまうし、 何より Web Pack を忘れずに追加購入するのが面倒くさい。 短期滞在で 500MB 以内で済むのであればよいが、 1週間を超える滞在で、 500MB 以上使う場合は、 Vodafone は不適当な SIM だと思う。

3UK (Three)

ロンドンに到着した翌日 (二日目)、 都心を散歩していると 3 Store があったので、 £1 の SIMカードと、 £15 Top up Voucher を購入した (合計£16)。 Three は、 香港でも愛用しているキャリアなので期待大。 お店の人が忙しかったらしく、 SIMカードと Voucher を私に渡すと他の客の接客に行ってしまったので、 Top up および 「All-in-One 15 Add-on」 の購入を自分でやる羽目になった。

SIMカードをスマホに入れた後、 444 へダイヤルして Voucher の PIN を入力して Top up し、 Top up した£15 で Add-on を購入する。 残度数は£0 になってしまうが、 その日から 30日間、 300分までの通話と 3000通までの SMS と無制限の Web (All-you-can-eat data) が利用できる。 なお、 My3 に登録しておくことにより、 Top up や Add-on をクレジットカード払いで購入することもできる。

他のケータイへの通話 (07 から始まる番号) や、 国内通話 (02 から始まる番号など) は、 300分までなら可能だが、 それ以外の通話 (087 から始まる番号など) は、 残度数が£0 だと発呼できない。 なお、 英国の電話番号体系は、 日本の電話番号体系と似ていて、 国内通話は最初に 0 が付き、 国外からかける場合は、 最初の 0 を除いた番号に英国の国際プレフィックス +44 を付ける。

Add-on を購入しない場合、 通話料は 26ペンス/分、 Web の料金は Top up ごと 150MB までは無料で、 それを超えると 11ペンス/MB もする。 150MB 以上は決して使わないというのでもない限り Add-on は必須だろう。

1週間〜1ヶ月の滞在で、 スマホで Web を使いまくる場合は、 3UK は適した SIM だと思う。 あえて欠点をあげるとすれば、 2G で使えないことくらい? 大きな建物の中など、 2G (EDGE) の電波は届くが 3G だと電波が弱すぎる場合があり、 不便に感じたケースがあった。 また、 後述する giffgaff の月£10 と比べると割高。

T-Mobile

ロンドン滞在二日目、 ホテルに帰ると T-Mobile, Orange, Lebara の SIM が部屋に届いていた。 前述したように Vodafone SIM はスマホで使うには不適当 (Web 料金が高くつく) なので、 Vodafone SIM の残度数が£0 になり次第、 別の SIM に乗り換えることにする。

Lebara は国際電話が 1ペニー/分でかけられる (インドなど) ことを売りにしている Vodafone の MVNO で、 Web 料金は 15ペンス/MB と、 とんでもなく高額 (100MB 使うと£15 になってしまうし、Vodafone の Web Pack や 3UK の Add-on のような割引もない) なので、 候補から外す (← なら free SIM を申し込むな、と言われそう ^^;)。

T-Mobile と Orange は 2009年に合併している。 ブランド名こそ異なるが、 通信網は統合しているし、 料金体系もよく似ている。 どちらかを使ってみれば充分だろう、 というわけで T-Mobile を使ってみることにした。

T-Mobile の通話料は 30ペンス/分、 Web 料金は 1日最大£1。 £5 を Top up すると、 一ヶ月間有効な 「free internet」 をサービスすると説明書等に書かれているが、 £5 を Top up しても、 相変わらず毎日£1 づつ残度数が減り続けた。 仕方ないので 「30 day Internet Booster」 を購入することにする。 「MONTHWEB」 という文字列を、 441 へ SMS で送れば、 残度数から£5 が差し引かれ、 30日間無料で Web が使えるようになる。 これで安心...

ところが!

わずか 5日後、 以下のような SMS が届いた:

Just to let you know you have now reached 80% of your monthly Fair Use Policy. Visit t-mobile.co.uk/broadbandhelp for info on what to expect if you reach 100%.

2011年1月10日から、 1ヶ月あたりのデータ量が 500MB に制限されたらしい。 500MB に達しても、 通信できなくなるわけではないようだが、 なんらかの帯域制限がかかるのだろう。 1ヶ月で 500MB というのは、 いかにも少ない。 また、 T-Mobile には Google Talk が使えないという (私にとっては) 致命的な問題がある。 Google Talk アプリを起動しても、 ログインできないと表示される。 おそらく Google Talk が必要とするポートがブロックされているのだろう。 というわけで使用を断念した。 スマホで使う場合、 T-Mobile は論外な SIM だと思う。

O2

ロンドン滞在三日目、 O2, Vodafone の SIM が届いた。 ところが、 四日目以降は届かなくなった (後にホテル側の不手際と判明)。 まだ届いていない SIM があるのに... 特に、 本命の giffgaff が届いていないのが痛い。 前述したように Vodafone はスマホで使うには不適当、 T-Mobile は論外なので、 O2 を使ってみることにした (滞在七日目)。

O2 の通話料は 25ペンス/分、 Web 料金は 1日最大£1。 私が申し込んだ free SIMText & Web プランなので、 £10 以上 Top up すると、 300 text と 500MB web が無料になる。

プラン (tariff) は他に、 Unlimited, simplicity, International などがある。 SIM を申し込むときにプランを指定できる他、 Unlimited と Text & Web プランは、 21300 宛に SMS を送ることにより変更できる。 その他のプランは 2202 に電話をかけて変更する。

21300 宛 SMSプランTop up で得られる無料特典
NOLIMITUnlimited £10-14: O2 同士の text が無制限
£15: O2 同士の通話 & text が無制限
-simplicity £7.50: 無制限 text
OFFERText & Web £10-14: 300 text, 500MB web
£15-29: 500 text, 500MB web
£30+: 無制限 text, 500MB web
-International £10-14: O2 同士の text が無制限
£15: O2 同士の通話 & text が無制限

SIM をスマホに入れると、 何もしなくても (まだ Top up していないのに) 着信できた。 もちろん発信はできない。 My O2 に登録し、 £10 を Top up すると (現地時刻 22:01)、 発信およびインターネットへアクセスができるようになった。 ところが、 My O2 で残度数確認をしようとしてもエラーが表示される。 仕方ないので My O2 アプリをインストールしてみたら、 残高 (balance) とプラン (tariff) が表示された。

しかし、 表示された残高は£9。 まだ通話をしていないので Web 料金が差し引かれたものと思われるが、 500MB web が無料になるのではなかったのか? tariff には、ちゃんと 「Free UK texts to standard UK mobiles and 500MB Internet in UK.」 と表示されているのに...? 日付が変わるとさらに£1 引かれて残高が£8 になってしまった。 My O2 でエラーが表示されることから考えて、 SIM の activate が完全には完了していないのだろう。

いったいどーいうこと? と思っていたら、翌朝 9:01 に、

O2: Now you're up and running, go to o2.co.uk/hello to check all your Pay & Go benefits and the many ways you can top-up. To stop texts, call 2220.

という SMS が届いた。 夜間 22:00 〜 9:00 は、SIM の activate 処理 (の一部) が止まってたっぽい。 22:00 以降に activate すると、 処理が翌日まわしになるということのようだ。 続いて、9:14 に

O2: You've now got 300 free UK text and 500MB internet to use this month. Remember to top up at least £10 by 13 Jul to get your free allowance next month.

という SMS が届き、 無事 300 text と 500MB web が無料になった。 人手で activate 処理をやってるんじゃあるまいし、 夜間は手続きが止まるというのはいかがなものかと思う。

短期滞在で、 500MB 以内で済む場合は、 O2 は悪くない SIM だと思う。 500MB を超えると、 毎日£1 かかってしまうので、 滞在日数が長くなると割高。 Vodafone と比べると、 3G のサービスエリアが狭いように感じた。 大きな建物の中や郊外など、 すぐ 2G に切り替わってしまう印象がある。

giffgaff

giffgaff の SIM は、 他のキャリアと異なり街中で買うことができない。 Web で free SIM を申し込んで郵送 (英国内の住所のみ) してもらう必要がある。 ホテル側の不手際で、 私宛の郵便物が一週間ほどホテル内に留め置かれてしまったため、 giffgaff SIM を入手できたのはロンドン滞在八日目の晩だった。 もちろん、 何度かホテルのフロントに郵便物が届いていないか問合わせていたのだが、 その時の担当者が宿泊者宛の郵便物がホテルでどう扱われるか、 分かっていなかったようだ (オリンピック準備の一環で新人のトレーニングを兼ねて、 フロントを新人に担当させていた模様)。

なお、 giffgaff の他、 Vectone, delight, LycaMobile の SIM も届いたが、 Vectone と delight は (論外な) T-Mobile の MVNO なので見送り (Vectone は 1ヶ月 1GB まで許容していることを後で知った)、 LycaMobile は O2 の MVNO だが 2G のみらしいので見送った。 いずれも安い国際電話を売りにしているキャリアなので、 私のニーズには合わない。

giffgaff SIMカード表面に印字されている 6桁の code を、 SIM activation ページで入力し、 Top up か goodybag (またはその両方) を購入すると activate できる。 SIM をケータイに入れる必要はなく、 Web 上で完結するので、 英国外からでも activate できそう。

goodybag というのは 1ヶ月間有効な通話や通信のパッケージで、 250分の通話と無制限 text と無制限 web のパッケージが£10 で購入できる。 元々 giffgaff SIM ユーザ同士の通話は無料なので、 goodybag さえ購入しておけば、 残度数は£0 のままで済んでしまうのではないか? 私も 「£10 goodybag」 だけ購入し、 Top up は行なわなかった。

他のケータイへの通話 (07 から始まる番号) や、 国内通話 (02 から始まる番号など) は、 250分まで goodybag に含まれるが、 それ以外の通話 (国際電話や 087 から始まる番号など) は、 残度数が£0 だと発呼できない。 goodybag を利用しない場合の 通話料は 10ペンス/分、 Web 料金は 20MB まで 20ペンス/日だが、 20MB を超えると 20ペンス/MB も課金されるので危険。 スマホを使う場合、 goodybag が必須だろう。

activate が完了すると My giffgaff で電話番号を確認することができる (完了するまでは自分の電話番号さえ分からない)。 ところが、 クレジットカードでの支払い完了が 21:57 で、 22:00 までに activate がギリギリ間に合わなかったようで、 完了が翌日まわしになってしまった (通常は 30分以内に完了する)。 おそらく、 O2 側の手続きが 22:00 までに完了しなかったのだろう。 翌日 5:18 に、 ようやく手続きが完了し、 通信・通話ができるようになった。

giffgaff は O2 の MVNO なので、 通信・通話を利用した感じは O2 と変わらない。 ただし APN は O2 とは異なり、 以下のように設定する必要がある:

APNgiffgaff.com
ユーザー名giffgaff
パスワードpassword
MMSChttp://mmsc.mediamessaging.co.uk:8002
MMSプロキシ193.113.200.195
MMSポート8080
APNタイプdefault,supl,mms

1週間〜1ヶ月の滞在で、 スマホで Web を使いまくる場合は、 giffgaff は最適な SIM だと思う。 3UK と同様 Web が無制限で、 3UK より安い。 3UK と異なり 2G も使えるので、 3G の電波が届かないところでも使える。 あえて欠点をあげるとすれば、 O2 と同様、 3G のサービスエリアが Vodafone より狭いことくらい。 大きな建物の中や郊外など、 すぐ 2G に切り替わってしまう印象がある。

郵送以外の方法で SIM を入手できない点も残念。 ヒースロー空港の自販機で (£10 でもいいから) 入手できるだけでも、 ぜんぜん利用のしやすさは変わってくるのにと思う。 あるいは、 有料で構わないので英国外への発送もできるようにすれば、 出発前に日本で SIM を取り寄せることができるのにと思う。

Filed under: SIM — hiroaki_sengoku @ 08:32
2012年5月2日

米 at&t のプリペイド SIM カードのデータ通信が改訂 〜 短期滞在者にとっては大幅値上げ!

米国 AT&T のプリペイド SIM カードには、 課金プラン (Rate Plan) として、 月単位のプラン ($50 Monthly Unlimited Plan と $25 Monthly Plan)、 日単位のプラン (Daily Unlimited Plan)、 そして分単位のプラン (10cent/Minute Plan) がある。

$50 Monthly
Unlimited
$25 Monthly Daily Unlimited 10cent/Minute
基本料金 月額 $50 月額 $25 使用した日のみ
日額 $2
無し
米国内通話 無制限 250分を超えると
10cent/分
無制限 10cent/分
SMS/MMS 無制限 無制限 無制限 20cent/通
データ量料金
1GB$25
200MB$15
50MB$5

以前は、 どのプランでも Data Package を購入してデータ通信できた (少なくとも 4/14 の時点では購入できた) が、 先月中旬頃 (私が改訂に気付いたのは 4/19) に Data Package の要件が改訂されてしまい、 月単位プランが必須となってしまった (追記: 4/18 だったそうです)。 つまり、 $50 Monthly Unlimited Plan あるいは $25 Monthly Plan 以外のプランだと、 Data Package を購入することができなくなってしまった。 その代わり、 通信できるデータ量が増えて、 $25 だと (4/14 の時点では) 500MB だったのが 1GB ぶん通信できるようになった。

go phone $2 PER DAY Data Package が Monthly Plan 必須になってしまうと、 基本料金無料をウリにしていた (スマホな) GoPhone の立場は、 どーなるんだ... と思っていたら、
← 「$2 PER DAY」 な go phone に、 「SEE ASSOCIATE」(店員にお問い合わせ下さい) と書いたシールが貼られていた (この写真は Pearlridge の RadioShack で撮影)。 at&t が唐突に Data Package の要件を変えるものだから、 ショップとしては困惑しているのではないか?

Data Package を購入せずにデータ通信を行なうと、 5KB あたり 1セントも課金されてしまい現実的ではない (例えば 100MB で $200)。 メガバイト単位の通信が必要 (スマホなら当然) なら、 月単位プランを選択せざるを得ないが、 基本料金 $25 (250分ぶんの通話料が含まれる) がかかるので、 短期滞在 (一週間以内とか) だと少々割高となる。

例えば、 2日間の滞在で 200MB 使う場合 (フツーはそんなに使わない) だと、 $25+$15=$40 (約 3400円) となって、 海外パケットし放題を使う場合 (2980円*2=5960円) と比べて (SIM を購入するなどの手間を考えると) あまり価格メリットが無くなってしまう。 もちろん、 滞在日数が多くなればなるほど両者の差は開く一方なので、 大抵の場合は SIM を購入する方が有利。

ちなみに、 私が初めて at&t の Data Package を購入した 2010年5月の時点までは、 「$1 Mobile to Mobile Plan」 という日単位のプランがあった (追記: 2010年10月3日に廃止されたらしい)。 この $1 が値上げされて $2 になったのが、 現在の Daily Unlimited Plan なわけで、 もちろん今この 「$1 Mobile to Mobile Plan」 を選択することは不可能だが、 以前からのユーザであればこの $1 プランを使い続けることは可能であるようだ。 しかも、 $1 プランは (例外的に) Data Package の購入が可能! at&t がこの $1 プランを廃止する (例えば現行の日単位プランへ強制移行させる) 可能性は常にあるものの、 もし今 $1 のユーザであるなら、 その SIM を失効させないよう refill し続けるべきだろう (クレジットカード払いで自動的に refill してくれる Auto-Refill の設定をしておくと便利)。

滞在日数が一ヶ月近くになれば、 月単位プランが必須でも、 さほどデメリットとはならなくなるが、 月単位プランは、 電話を使用しない月も自動的に基本料金を課金されるので、 次回の訪米に備えて SIM カードを維持したい場合は、 基本料金が不要な分単位プラン (あるいは日単位プラン) に変更しておく必要がある。

ところが、 課金プランの変更は Web 上では (今のところ) 不可能。 現在の月単位プランの 「切れ目」 で分単位プランへ変更するといった 「予約」 もできない。 それはあまりに融通が効かなさすぎ、 と思ったので、 2箇所の at&t ショップ で直談判してみたのだけど、 できるのは今この場でプラン変更することだけで、 一ヶ月後とかの変更は承れないと突っぱねられた。 しかも、 プラン変更した瞬間、 Data Package の残高は失われるらしい。

というわけで、 データ通信が不要になった時 (日本に帰国した後とか) に、 +1-800-901-9878 (google voice を使えば無料。 at&t なケータイからは 611 でも可) に電話して、 「automated customer service」 にアクセスし、 分単位プランへ変更するのがよさげ。

「automated customer service」 というのは、 音声自動応答 (Interactive Voice Response) システムで、 音声 (もちろん英語) で操作する必要があり、 英語が苦手な私にとってはハードルが高い。 日本に帰国した後だと、 万一プラン変更に失敗するとリカバリ手段が無い (米国にいる間なら、 at&t ショップに直談判に行ける) ので、 米国滞在最終日に課金プラン変更を行なうことにした。 変更後はデータ通信ができなくなってしまうが、 私は T-Mobile の SIM も持っていて、 私のメイン端末である Galaxy Nexus は T-Mobile でも 3G 通信できるので問題無い。

T-Mobile の SIM を持っているのに何故 at&t の SIM を買ったかというと、 T-Mobile は圏外になったり EDGE (2G) でしか繋がらなくなったりする場所が多い (大きな建物の中とか、山の中とか) ため。 以前のメイン端末 Nexus S は at&t の 3G 通信 (1900MHz) に対応していないので T-Mobile SIM を使っていたが、 今のメイン端末 Galaxy Nexus は、 at&t と T-Mobile 両方の 3G 通信に対応している。

まず、 at&t の SIM を入れた電話 (Galaxy S) でデータ通信を無効にしておく (データ通信が有効のままだと、 課金プランを変更した直後から 5KB あたり 1セント課金されてしまう)。

次に、 611 をダイヤルして 「automated customer service」 へアクセス。 すると残高や現在利用している課金プランのアナウンスがあった後、 「What's go on ?」 と聞かれる。 そんなこと聞かれても... 何と答えてよいやら... と絶句していると、

Main menu. What's like to do ? You can say:
"add money",
"features",
"rate plan",
"account ballance",
or "more options".

と、 助け船を出してもらえるので、 元気良く 「rate plan !」 と発声してみる。 すると... 無情にも 「Oh, I didn't catch that.」 とのお答え。 元々英語には自信がないのだけど、 さらに自信を失う。 やっぱり 「r」 の発音がダメなのかなぁ... ;-(

落ち込んでいるとさらに助け船を出してくれる:

Here is your all choices:
To add money to your account, say "add money" or press 1.
To check your feature packages or buy features, say "features" or press 2.
To change your rate plan, say "rate plan" or press 3.
To get your account balance, say "account balance" or press 4.
Or say "more options" or press 5.

最初からそう言ってくれればよいものを... と思いつつ 「3」 を押す。

通じなければプッシュボタンでの操作を案内してくれる、 ということが分かったので、 気にせずテキトーに発声して進む。 次なる選択枝は:

To check whatever plans are available, press 1.
To hear your plan summery again, press 2.
To hear your plan detail, press 3.
Or if you're done here, press pound key.

「1」 を押して現在選択可能なプランを列挙させる。 すると、

Are you currently using a smartphone device ?
If you don't know, say "I'm not sure".

と聞いてくる。 おそらくスマホだと、選択できるプランが月単位のプランに限定されるのだろう。 そこで (今まさにスマホを使っているのだけど) 力強く 「No !」 と答える。 さすがにこれは聞き返されること無く一発で通じて (←当たり前)、

What type of plans would you like to hear about ?
You can say:
"monthly",
"daily",
or "by the minutes".
Or say "stay with my current plan".

と聞いてくるので、 「minutes」 と答える。

すると、 「OK, that's the 10 cents per minute plan.」 と返事が返ってきて、 分単位プランの概要説明がある。 そして、

This is the summery of the plan,
but for full description, you should say "plan detail".
You can also say "switch to this plan",
"go back to the lists of plans",
or "stay with my current plan".

と聞かれるので、 「switch」 とだけ答える。 単語だけで答える方が通じやすいようだ。

「10cent/Minute Plan」 に変更すると Data Package を失う旨の警告があった後、

To confirm you are right to go heading to switch to this plan,
please say "change my plan",
otherwise, say "cancel".

と聞かれる。 最終確認のようだ。 「change my plan」 と答えると、 「All right, just a minute.」 と返事が返ってきて、 チクタクチクタク (効果音) の後、 「OK, you are all set.」 と言われてプラン変更が完了する。

試しに 「*777*3#」 にダイヤルして Data Package の残高を調べてみると、 「0 kilobytes」 と表示された。 プラン変更前は 400MB byte 以上残っていたのだが... 次回からは、 訪米直前に Data Package を購入し (月単位プランへの変更を強制される)、 日本に帰国してから分単位プランへ戻す、 といった運用がよさげ。

Filed under: Hawaii,SIM — hiroaki_sengoku @ 22:04
2012年3月5日

新規一括 0円の Galaxy Nexus (SC-04D) を買ってみた 〜 国際版 Galaxy Nexus と全く同じにする

mandatory option よほど在庫が積み上がってるのか、 ドコモ SC-04D Galaxy Nexus が新規一括 0円で売っていた。 あんなに大々的な宣伝を行なっておいて何をやってるんだか...

私が見た店は、 0円の条件として、 ひとりでも割50 が必須。 つまり 2年間の契約期間中に割引サービスを廃止 (あるいは回線ごと解約) する場合は、 9,975円の解約金が必要となる。 契約事務手数料 3000円の他、 初月のみ 「パケ・ホーダイ ダブル2定額」 など諸々のオプション (写真→) を付ける必要があり、 違約金以外に 5000〜7000円ほどかかる。 加入条件のオプションの多さに圧倒されるが、 「パケホダブル」 以外のオプションは初月無料がほとんどで、 今月中に解約すれば費用はかからない。 パケホダブルは月額2,100円だが日割が適用されるので、 月末近くに契約すればもっと安くなる (あいにく私が買ったのは月初だが)。

なんたって Galaxy Nexus である。 わずか 3ヶ月前に HK$5398 (約 54,000円) もしたケータイが、 2万円かからずに入手できるのは見逃せない。 思わず衝動買い (0円なので 「買った」 とは言えない?) してしまった。

SC-04D System Update Dialog 帰宅して SC-04D の電源を入れようとすると... う、電源が ON のままだったか。 てっきりショップで電源を OFF にして渡してくれたものと思い込んでいた。 そしてディスプレイが点灯してそこに表示されたのは、 無情な 「システムアップデート」 の文字。

あとで分かったが、 ショップを出て帰宅するまでの短い時間に、 9.3MB ものアップデートファイル (yakjusc_ITL41D_to_ICL53F.zip) が転送されていて、 この日のパケット代が、 いきなり 3800円。 SC-04D を安く入手しようという目論見が、いきなりパー。 なにもこんなタイミングでアップデートファイルを送りつけなくても... 無線LAN に接続するまで待って欲しかった。

で、 こんなアップデートのお知らせはサックリ無視して真っ先に行なったのは、 ブートローダのアンロック (fastboot oem unlock)。 いきなりドコモの保証がパー。

一度フツーに起動させてフラッシュメモリの初期化を行なった後 (一度フツーに OS を起動しないと、 フラッシュメモリにアクセスできない)、 Clockwork Mod Recovery を fastboot で起動する (fastboot boot <kernel>)。 そして、 初期状態のドコモ純正ROM を、 ベースバンド込みで丸ごとバックアップ。 これでいつでも元の状態に戻せるようになったので、 ClockworkMod Recovery をフラッシュメモリの 「recovery」 領域 (リカバリ用のカーネルを格納する領域) に書込む (fastboot flash recovery <kernel>)。

senri:~ $ fastboot oem unlock
...
OKAY [ 52.022s]
finished. total time: 52.022s
senri:~ $ fastboot boot recovery-clockwork-5.5.0.2-maguro.img
downloading 'boot.img'...
OKAY [  0.553s]
booting...
OKAY [  0.329s]
finished. total time: 0.882s
senri:~ $ adb shell
~ # dd if=/dev/block/platform/omap/omap_hsmmc.0/by-name/radio of=/sdcard/SC04DOMKKD.img bs=1024
16384+0 records in
16384+0 records out
16777216 bytes transferred in 6.601 secs (2541617 bytes/sec)
~ # exit
senri:~ $ adb pull /sdcard/SC04DOMKKD.img
4569 KB/s (16777216 bytes in 3.585s)
senri:~ $ mkdir backup
senri:~ $ adb pull /sdcard/clockworkmod/backup/ backup/
pull: building file list...
pull: /sdcard/clockworkmod/backup/2012-03-04.01.09.21/nandroid.md5 -> backup/2012-03-04.01.09.21/nandroid.md5
pull: /sdcard/clockworkmod/backup/2012-03-04.01.09.21/cache.ext4.tar -> backup/2012-03-04.01.09.21/cache.ext4.tar
pull: /sdcard/clockworkmod/backup/2012-03-04.01.09.21/data.ext4.tar -> backup/2012-03-04.01.09.21/data.ext4.tar
pull: /sdcard/clockworkmod/backup/2012-03-04.01.09.21/system.ext4.tar -> backup/2012-03-04.01.09.21/system.ext4.tar
pull: /sdcard/clockworkmod/backup/2012-03-04.01.09.21/recovery.img -> backup/2012-03-04.01.09.21/recovery.img
pull: /sdcard/clockworkmod/backup/2012-03-04.01.09.21/boot.img -> backup/2012-03-04.01.09.21/boot.img
6 files pulled. 0 files skipped.
4308 KB/s (384848109 bytes in 87.229s)
senri:~ $ fastboot flash recovery recovery-clockwork-5.5.0.2-maguro.img
sending 'recovery' (5300 KB)...
OKAY [  0.552s]
writing 'recovery'...
OKAY [  1.015s]
finished. total time: 1.567s

再び通常起動して、 (今度は抜かり無く) 無線LAN の設定を行なってから、放置 (念のため、 「データ通信を有効にする」 を無効にしておく)。 ほどなく再びアップデートファイルがダウンロードされてきた。

フラッシュに書込んだ ClockworkMod Recovery を起動して、 /cache に格納されていた 94ec403ff247.update_yakjusc_ITL41D_to_ICL53F.zip (アップデートファイル) を /sdcard へコピー。 で、ClockworkMod Recovery からこの zip ファイルをインストール。 この時点で (ClockworkMod Recovery を書込んだ) recovery 領域は、 ドコモ (というか Google) 純正リカバリ用カーネルで上書きされる。

これでビルド番号が ICL53F.SC04DOMLA1 になった。 ちなみに末尾の 「LA1」 というのは、 「L」 が 2012年 (L は 12番目のアルファベットだから) を意味し、 その次の 「A」 が 1月 (A は 1番目のアルファベット) を意味し、 その次の 「1」 は、 その月にリリースされた最初のバージョンであることを意味する。

「L53F」 も同様に、 「L」 が 2011年第4四半期 (2009年第1四半期を A として) を意味し、 「53」 が、 その四半期で 53日目であることを意味し、 「F」 は同じ日の 6番目のリリースであることを意味するらしい。 先頭の 「I」 は、 Ice Cream Sandwich の頭文字。

このバージョンのドコモ純正ROM も、 上記と同様に ClockworkMod Recovery を使って、 ベースバンド込みで丸ごとバックアップ。 無線LAN の設定を行なったので厳密には初期状態ではないが、 初期化するのが面倒なので、 まあよしとする。

以上で、 いつでもドコモ純正ROM に戻る手段を確保できたので、 ここでドコモ純正ROM にサヨナラする。 私が普段使ってる Galaxy Nexus (3ヶ月前に香港で買った) を丸ごとバックアップし、 そのバックアップファイルを SC-04D へ、 ClockworkMod Recovery を使って丸ごとリストア (もちろん、リストアする代わりに Google 純正ROM を書き込んで、 国際版の初期状態にしてもよい)。

Galaxy Nexus * 2 左が香港で買った Galaxy Nexus i9250 GSM (もちろん SIM ロックフリー),
右が今回買ったドコモ SC-04D

裏ブタ記載の文字が異なる (なぜ SC-04D には Google ロゴがない?) 他は、 全く同じ外観。 丸ごとリストアしたので、 フラッシュメモリの中身も全く同じ (もちろん IMEI など、端末固有のデータは異なる)。

丸ごとリストアしたことによって OS も書き換えてしまったので、 ドコモのテザリングの制約 (勝手に APN が dcmtrg.ne.jp に切り替わるとか) から解放される (はず)。 「パソコンなどの外部機器を接続した通信」 ではなく スマートフォン定額通信の範囲でテザリングできるはずだが、 私は興味がない (ドコモは今月一杯で解約するつもりだし) ので試していない。 OS が書き変わっても、 IMEI 上は 「ドコモ純正端末」 なので、 フツーに spモードを利用できる。 こうなってくると、 ドコモが何のために接続する端末の IMEI を制限しているのか分からなくなる。

二つの Galaxy Nexus の OS は同じになったが、 SC-04D にはまだ SIM ロックがかかっている。 ドコモショップで SIMロック解除の手続きを行なってくれるが、 ブートローダをアンロックした Nexus も対象となるのか? ブートローダだけならまだしも、 OS ごと入れ替えてしまっていても拒否されないのか?

SIMロックは、 (Samsung製) Android 端末の場合 /data/radio/nv_data.bin などで設定されている。 このファイルを 「正しく」 書き換えることができれば SIMロックを解除できるのだが、 このファイルが改変されていないか検証するために、 /data/radio/nv_data.bin.md5 に MD5 値が保存されている。 そして残念なことに、 この MD5 の算出方法が不明。 もちろん、 単純に nv_data.bin の MD5 を算出するだけではダメで、 何らかの秘密の seed が必要なのだと思われる (ファイル名の通り MD5 が使われていると仮定してだが)。

MD5 の値が一致しなかったなどの理由で検証にパスしなかった場合、 あるいは (Android を初期化したなどの理由で) そもそも /data/radio/nv_data.bin が存在しなかった場合は、 /factory/nv_data.bin を使って /data/radio/nv_data.bin が作られる。 ところが、 /factory/nv_data.bin にも、 /factory/nv_data.bin.md5 があって、 その内容が書き換えられないように保護されている。

/factory/nv_data.bin が検証をパスしないと、 /factory/.nv_data.bak が使われるらしい。 何段もの防御があって、 なかなか突破するのが難しそうである。 そこで、 改変した nv_data.bin を /factory/nv_data.bin と /factory/.nv_data.bak にコピーして、 検証が通らなくて書き戻そうにも、 本来の nv_data.bin を参照できないようにしてみた。

すると... 驚いたことに、 ドコモ以外の SIM でも使えてしまった。 google で検索すると、 あちこちで SIMロックの解除方法を説明したページが見つかるが、 ほとんど (全て?) は同様の方法であるようだ。 しかし、 この方法には重大な欠点がある。 それは、 IMEI の値が 「004999010640000」 になってしまう点。 キャリア側で IMEI の値をチェックしていなければ、 そのまま使えてしまうのかもしれないが、 これでは 「ここに不正改造無線局があります〜」 と吹聴して歩き回るのと大差なく、 甚だ具合がよろしくない。

SIM Unlock PIN というわけで万策尽きたので、 解除コード (Unlock Code) を業者から買うことにした。 だいたい $30 前後で、 ドコモ (3,150円) より若干安い。 この期に及んでドコモのサービスを使わないのは、 前述した懸念点があるのと、 ドコモショップでは 「解除PIN」 を教えてもらえなかった、 という話をネット上で見かけたため。

ドコモショップの店長が、 「このコードはドコモの内部情報になるため、お客様にはお伝えできません」 と言ったらしいが、 この話が本当なら、 とんでもない話だと思う。 3,150円も取っておきながら PIN 一つ教えないとはどーいうことだ。

ドコモショップで SIM ロック解除したケータイを海外に持って行き、 現地の SIM を入れて電源を入れたら、 「SIMネットワークのロック解除PIN」 を入力する画面になってしまい往生した、 という怨嗟の声をネット上で見かけるが、 おそらく何らかの理由で /data/radio/nv_data.bin の内容が壊れてしまい、 /factory/nv_data.bin の内容で書き戻されたために、 ロック解除PIN の入力が必要になってしまったものと思われる。

つまり、 ロック解除PIN を入力して SIM ロックを解除した後、 /data/radio/nv_data.bin および /data/radio/nv_data.bin.md5 を /factory へコピーしておけばこのような事態に陥ることを回避できる。 ただし、 Android の root 権限が必要。 root 権限がないと、 そもそも /data/radio/nv_data.bin を読むことができない。 だから、 何かあったときのため、 ロック解除PIN を記録しておくことが重要。

Cell Unlocker .net で、 device 名として 「Galaxy Nexus」、 SIM ロック先のキャリアとして、 「All Asia Countries」 を指定し、 IMEI (「*#06#」 をダイヤルすると表示される) を入力した。 すると PayPal の支払い画面に遷移するので、 $29.99 の支払いボタンを押すだけ。

7時間半後、 ロック解除PIN が書かれたメールが送られてきた。 メールには、

Video proof will be required if code does not work, it's a good idea to film inputting the unlock code so we can help trouble shoot what the problem is.

と書かれていたので、 まず、 デジカメ (ビデオカメラは持ってない) を三脚にセットして動画撮影する準備を整えた。 SingTel の SIM (ドコモ以外ならどこでも) を SC-04D に入れて電源を入れる。 すると、 ↑ の写真にあるような 「SIMネットワークのロック解除PIN」 を入力する画面になったので、 デジカメで動画撮影しつつ、 メールに書かれていた unlock code を入力した。 すると、 「ネットワークのロック解除をリクエスト中...」 と表示され、 すぐ 「ネットワークロックを解除しました。」 と表示された。 数秒後、 Android のホーム画面が表示された。

以上で、 二つの Galaxy Nexus は (IMEI 以外は) 完全に同じになった。 今まで Galaxy Nexus で使っていた Softbank SIM を、 SC-04D に入れて、 今後は SC-04D のほうを使ってみようと思う。 普通に使っている限り、 たぶん、何の違いも見いだせないに違いない。

もっと読む...
Filed under: Android,SIM — hiroaki_sengoku @ 20:21
2012年2月21日

シンガポールで SingTel と StarHub プリペイド SIMカードを買ってみた

チャンギ国際空港 Terminal 3 に着いて入国審査を終えると、 (Baggage Claim に行く前の) Transit Lounge に RHB Bank の両替所があって、 SingTel の Prepaid SIM を購入できた。 支払いは現金のみだが、 入国審査ゲートを抜けた直後に ATM があり、 既にシンガポールドルを得ていたので、 スムーズに SIM を購入できた (もっとも、両替所なのだから日本円でも買えるはず)。 と、ここまで飛行機を降りてから (入国審査も含めて) 10分もかかっていない。 初めて訪れた国で、 ここまで手早く SIM を購入できたのは初めて。

RHB Bank Currency Exchange

RHB Bank 両替所 ↑ の裏は UOB (大華銀行) の両替所になっていて、 そこでは StarHub の SIM を購入できたことを後で (出国時に) 知った。 「裏には UOB の両替所があるよ!」 って看板を出しておいて欲しい... 入国時は時間がない (荷物が出て来る前に Baggage Claim にたどり着きたい) のだから、 カウンターをぐるっと回って裏まで見に行っている余裕はない。

パックツアー (といっても空港⇔ホテルの送り迎え以外は全日程終日自由行動) なので SIM を購入するなどの (他のツアー客を待たせる) 単独行動は慎まなければならないが、 この空港のように Baggage Claim 以前に (SIM を売ってる) 両替所があると、 荷物が出てくるまでの時間を有効に活用できるので、 とても助かる。

ただし、 街中では S$15 (約 900円) で売ってる額面 S$18 の SIM は空港内では買えず、 S$28 (約 1700円) あるいは S$50 のみ。 StarHub (後述) も、SIM (S$15) だけで買うことはできず、 Top-Up カードと抱き合わせ。 さらに、 空港ではデータ通信専用の SIM は売っていないらしい (未確認)。 私にとって通話機能は必須 (妻との連絡のため) なので、 データ通信専用 SIM には興味がなく、 売ってるか否かの確認はしていない。 街中だと数多くの SIM から好きな電話番号の SIM を選べたりもするので、 急いでいるのでなければ街中で買った方がいいかも。

税関を抜けてツアーガイドに会ったら、 他のツアー客はまだ出てきていないとのことなので、 もう一枚、 別のキャリアの SIM を買おうと思って到着ロビーを見渡す。 UOB (大華銀行) の両替所があったので、 StarHub の SIM を購入した。 シンガポールには SingTel と StarHub の他に M1 もあるが、 あいにく M1 Shop は少し離れたところ (到着ロビー中央) にあって目に入らなかった。

StarHub MaxMobile ホテルに向かうツアーバスの中で、 StarHub の SIM を Galaxy Nexus に入れてみる。 「98500000」 をダイヤルして SIM カードを activate. 次に 「*131#」 にダイヤルすると、 左の写真のような表示 (クリックで拡大) になる。

電話アプリに、 こんなメッセージを表示したり、 こちらからの返答を送信したりする機能があったとは。 USSD (Unstructured Supplementary Service Data) って言うらしい。 2G 時代の昔からあるプロトコルだが、 (「*〜#」 へダイヤルして終わりとするのではなく) ユーザからの入力を求める場面で使われるケースは珍しいように思う。 SMS に似ているが、 USSD は 182 文字までの通信で、 SMS と違ってセッション中は接続しっぱなしらしい。

私は 「1GB at S$7 (7D)」 つまり S$7 (約 420円) で 7日間有効な 1GB プランを選んだ。 転送データ量が 1GB を超えた場合にどうなるか (1GB ごと自動的に S$7 引かれるのか、 1GB に達した時点で通信不能になるのか、 はたまた S$0.27/KB の従量課金になるのか) は不明。 「3」 を送信すると確認画面が表示されるので 「Confirm」 するとデータ通信できるようになる。

続いて、 SingTel の SIM を (妻の) Galaxy Note に入れた。 こちらは activate 不要で即、使える。 試しに Galaxy Nexus から電話をかけてみたら、 無事 Galaxy Note が鳴った。 データ通信を行なうには、 APN として 「hicard」 を設定する。 5MB までのデータ通信が無料で可能。 5MB くらいはスマホだとすぐ使い切ってしまうので、 「727050」 へ 「3」 とだけ書いた SMS を送る。 すると、 以下の SMS が 727011 から届いた:

Pls reply with the options:
1. Check for existing Data bundle/expiry date for Notebook/Tablet
2. Subscribe to Data bundle for Notebook/Tablet

送信元の電話番号は (少なくとも) 下3桁の部分は毎回変わる。 選択は SMSアプリでフツーに返信すればよい。 USSD による操作方法を見た後だと、 SMS による操作はやぼったく見える。 「2」 を返信すると、 以下の SMS が 727012 から届いた:

Pls reply with the options:
1. Value Surfer 10MB @ $1 valid for 7 days
2. Super Surfer 1GB @ $7 valid for 7 days
3. Unlimited Data Plan @ $6. Valid for 1 day
4. Unlimited Data Plan @ $15. Valid for 3 days
5. Unlimited Data Plan @ $25. Valid for 7 days

私は 「2」 を返信した。 つまり 7日間有効な 1GB プラン。 無制限データプランも魅力的だったのだが、 5日間の滞在で 1GB 以上使うとは思えなかったため。

すると、 確認を求める以下のような SMS が 727015 から届いたので、

You have selected to buy Super Surfer Pack of 1GB. $7 will be deducted from your Main Account balance. To confirm, reply 1.

「1」 を返信した。

以上で、 2枚の SIM とも通話・通信が可能になった。 両 SIM とも HSPA (High Speed Packet Access) によるデータ通信が可能だが、 1Mbps 程度の転送速度しか出ていなかったように思う。 StarHub の方が下り 2Mbps くらいまで出ることがあるものの、 上りに関しては StarHub は (場所によっては) 速度の低下が著しく (100kbps 以下になる)、 SingTel の方が安定していた。 両 SIM とも (観光地など) 人が大勢集まる場所では接続できないケースが頻発し、 (同程度にサービスエリアが狭い) 香港と比べるとインフラ整備が追い付いていないような印象を受けた。

StarHub は、 Galaxy Nexus に初めから登録されていた APN 「internet」 のままでも通信できたが、 場所によっては接続ができないこともあったため、 「shppd」 に設定し直した。 「shppd」 は StarHub PrePaiD の意味だと思うが、 この設定が必須かどうかは不明。

その晩、 ホテルに戻って Galaxy Nexus (StarHub SIM) をポータブルWi-Fiアクセスポイント (いわゆるテザリング) として利用したら、 (このアクセスポイントに接続した) ノート PC で WWW ブラウズがほとんどできなくて驚いた。 ssh だとそれなりに通信できるので、 TCP/IP セッションを短時間に大量に張ろうとすると、 パケット落ちが著しいのだと思われる。 画像がたくさんある WWW ページ (きょうび、そういうページばかりだけど) をアクセスしようとすると、 全くといっていいほど画像が表示できない。

これでは使い物にならないと思い、 Galaxy Note (SingTel SIM) をポータブルWi-Fiアクセスポイントとして利用したら、 (1Mbps 程度なので速くはないが) それなりに WWW ブラウズもできる。 下り転送速度だけを見ると StarHub の方がむしろ速く見えるだけに、 ユースケースに合わせた評価方法が重要と再認識。

いくら下り通信速度が速くても、 わたし的にはホテルでテザリングができなければ論外なので、 翌朝ホテル近くのセブンイレブンで SingTel の SIM を買い直した。 パスポート等を提示する必要があるが、 (空港と違って) S$15 で買えるし、 複数の SIM の中から好きな電話番号の SIM を選ぶことができる。

ホテルに戻って、 朝食を食べながらデータ通信の設定を行なう。 シンガポール滞在は 3日後の 15:00 まで (78時間くらい) なのだけれど、 ものは試しと 「4. Unlimited Data Plan @ $15. Valid for 3 days」 つまり 3日間有効な無制限データプランにしてみた。 これでテザリングも転送量を気にせず行なえる。 最終日は使えなくなってしまうが、 (7日間データ通信できる) StarHub の SIM もあるから構わないかな... と思っていたら、 72時間が経過した後 (初日を 1日目と数えれば 4日目の朝) も問題無く使えてしまった。 飛行機に搭乗した 15:30 ギリギリまで通信できたのは何故なんだろう...?

S$20 未満の SIM だと有効期限が 120日 (S$20 以上だと 180日)。 幸い、 Online Top-Up がクレジットカードで可能であるようなので、 期限切れになる前に Top-Up を行なえば、 シンガポールを訪れなくても SIM を維持し続けることが可能 (と思われる)。

Filed under: SIM — hiroaki_sengoku @ 16:53
2012年2月1日

adb (Android Debug Bridge) 経由で rsync を使ってバックアップできるようにしてみた 〜 shell の echo back を回避する方法

最初の Android 4.0 端末である Galaxy Nexus は、 今までの Android 端末と異なり USB Storage として使うことができない。 PC とデータをやりとりしたいときは MTP (Media Transfer Protocol) を使えということらしい。 従来の Android 端末は、 PC と USB ケーブルで接続することによって、 Android 端末のストレージ (microSD カードなど) を USB Storage として PC からアクセスすることができた。

ただし、 PC と Android 双方から同じストレージを同時に読み書きすると破綻するので、 PC からアクセスするときは、 Android 端末からそのストレージを一時的に切り離す (umount する) 実装になっている。 このため、 ストレージに Android が必要とするデータがあると、 切り離したときに問題が起きる。 例えば着信音 (着メロ) を microSD カード上に置いていると、 切り離しているときに電話がかかってきても、 その着信音を鳴せない (Nexus S などだと、 設定した着信音がアクセスできない場合は、 デフォルトの着信音に切り替わる)。

MTP はブロックデバイス単位でなくファイル単位でストレージを管理する。 したがって PC との接続時でも Android 端末からストレージ全体がアクセスできなくなるという問題がない。 しかも MTP は Windows Vista 以降なら標準でサポートしている。 と、 このように (Samsung と Google は) 考えて、 Galaxy Nexus では USB Storage の代わりに MTP を使うようにしたのだろう (Samsung の一つ前の世代の Android 端末である Galaxy S でも MTP が使える)。 なお、 今後登場する Android 4.0 (Ice Cream Sandwich, ICS) 端末で USB Storage 機能が廃止されるかどうかは不明。 少なくとも Nexus S を ICS にシステムアップデートしても、 従来通り USB Storage を使うことができた。

一見妥当のように見える MTP の採用だが、 実際に使ってみると問題が多い。 ストレートに言えば 「全く使い物にならない」。 Windows XP だと Windows Media Player 10 以降のバージョンをインストールしないと MTP が使えないし、 Windows 以外だと、 標準で MTP をサポートしている OS はほとんどない。 しかも Windows でも、 MTP うんぬん以前に Samsung 端末用の USB ドライバを入手するのが大変。 以前は SAMSUNG_USB_Driver_for_Mobile_Phones.exe が単体で配布されていたようだが、 今は Kies をインストールしないと入手できない (-_-メ)。

さんざん苦労して MTP が使えるようにしても、 データ転送速度が極めて遅い (まだ実装がこなれてないため?)。 さらに、 普通のブロックデバイス (あるいはファイルシステム) として OS から見えないため、 MTP 対応を謳っていない限り、 普通のバックアップアップツールでは扱えないことが多い。 数MB 程度のファイルを一つ二つコピーする程度であればさほど問題無いが、 バックアップなど大量のデータを転送したい場合は不向き。

私の場合、 Galaxy Nexus のストレージ (/mnt/sdcard パーティション, 実際には /data/media を FUSE で /mnt/sdcard に mount している) を毎日 PC (Linux マシン) へバックアップしたい。 全部で数GB の大きさがあるので、 全データを毎回コピーするのは非現実的。 そこで rsync backup for Android アプリを使ってみた。 このアプリは、 内部に rsync と ssh コマンドを持っていて、 rsync を以下のような形で実行している:

/data/data/eu.kowalczuk.rsync4android/files/rsync -vHrltD \
    --chmod=Du+rwx,go-rwx,Fu+rw,go-rw --no-perms --delete-after \
    -e '/data/data/eu.kowalczuk.rsync4android/files/ssh -y -p 22 \
            -i /data/data/eu.kowalczuk.rsync4android/files/dss_key' \
    /mnt/sdcard/ sengoku@senri.gcd.org:~/android/sdcard/

Galaxy Nexus には有線LAN が無いので WiFi 経由で通信することになるが、 PC 同士で rsync する場合と全く同じで、とても簡単。 Android も Linux なのだから、 MTP みたいな得体の知れないものを無理に使うより、 使い慣れた rsync の方が断然 (・∀・)イイ!!

とはいえ、 使ってると WiFi の通信の遅さが気になってきた。 「USBテザリング」 を使えば USB ケーブル経由で TCP/IP 通信を行なうこともできるが、 rsync でデータ転送を行なうためだけにテザリングするのは牛刀な感じが否めない。 また、 テザリングの場合 Android の default route が 3G 回線へ向いてしまうので、 特定のアドレス (プライベート IP アドレス) を USB へ向ける route 設定が必要。

そもそも Android 端末と PC とは adb (Android Debug Bridge) でデータをやりとりしているのだから、 rsync も adb 上で行ないたいと思うのが人情というもの。

前フリが長くなったが、ここからが本題。

もっと読む...
Filed under: Android — hiroaki_sengoku @ 09:44
2012年1月12日

香港で洗濯を

旅行期間が長くなると当然着替えがたくさん必要になる。 下着を毎日替えるのはアタリマエだが、 シャツもできれば毎日着替えたい。 滞在期間が一週間を超えると、 衣類だけでスーツケースが一杯になってしまう。 近年多くの航空会社が、 荷物を各 50ポンド (約 23kg) 2個までに制限するようになったので、 持って行く衣類は 5日分くらいに抑えて、 現地で洗濯して着まわすようにしたい。

米国など多くの国では、 ホテル内 (あるいはホテルの至近) にコインランドリーがあるので、 数日毎に洗濯していたのだが、 香港ではコインランドリーを見かけたことがなかった。 いつも利用しているホテルにコインランドリーが無いだけでなく、 香港じゅうどこへ行ってもコインランドリーらしきものが見当たらない。 香港に長期滞在している人達は、 いったい洗濯物をどうしているんだろう? と思っていた。

新明亮 專業乾洗 New Bright & Light Laundromat

← ただ、 ホテルの前にクリーニング店らしきものがあることには以前から気付いていた。 店内にはカウンターがあって、 店番のおばちゃんが一人座っている。 ドライクリーニング済と思しき、 一着一着ハンガーに掛けられ透明袋で覆われた衣服が、 ところ狭しと上から多数吊り下げられている。 いくら香港の物価が安いといっても、 下着を含めて全てドライクリーニングするわけにもいかないよなぁ、 と思っていた。

この店の看板には 「新明亮 專業乾洗」 と漢字の店名の他に、 「New Bright & Light Laundromat」 と英語の店名が併記してある。 Laundromat (Laundry + Automatic の造語) は、 米国だと 「コインランドリー」 の意味なのだけれど、 お客が洗濯機を直接いじれる状況ではなく、 コインランドリーとはかけはなれた感じ。 どーみても (日本の街角で見かける) クリーニング店である。

店名にある 「乾洗」 は文字通り 「ドライクリーニング」 の意味だが、 店のガラスに貼ってある掲示をよく見てみると、 「乾洗」 の価格表の他に、 「磅洗 1-7磅 $31.5 (毎磅+$4.5)」 などと書いてある。 「」 は 「ポンド」 の意味で、 7 ポンド (約 3.2kg) までは HK$31.5 (約 315円) で、 1 ポンド増えるごとに HK$4.5 (45円) 増しという意味。 これは洗濯物を量り洗いしてくれるという意味ではなかろうか? ちなみに、 料金が妙に中途半端な数字なのは、 「磅洗九折」 つまり 10% 割引のため。 元の値段は、 HK$35 毎磅+HK$5 だったのだろう。

英語が (中国語と共に) 公用語である香港ではあるが、 個人商店だと英語が通じる可能性は低い (最も通用するのは中国語の一方言である広東語)。 おばちゃんに、 量り洗いを、 どんな仕上がりでやってくれるのか英語で尋ねても、 たぶんこちらの意図は通じないだろう。 意を決して、 洗濯物の袋を持ち込んでみた (12/19)。

もちろん、 最悪の事態を想定して、 なくなっても (あるいはズタボロにされても) そんなに困らない下着やシャツに限定してビニール袋に詰め込んで持ち込む。 ホテルのロビー前を、 下着満載の袋を持って通り過ぎるのはちょっと恥ずかしい。

11磅 HK$50 と書かれたレシート

袋を持って店に入ると、 店番のおばちゃんが入口わきの秤を指し示した。 よかった、 少なくともここまでは、 こちらの意図が通じている。 秤に乗せると 11ポンド (約5kg) だった。 おばちゃんが 「ん、さっぷまん」 と言った (のだと思う)。 こんな単純な単語でも、 なかなか聞き取れない。 広東語は 「ん」 で始まる発音が重要なのだけど、 あいにく日本語には 「ん」 から始まる語がないので、 日本人にとって 「ん」 から始まる単語を聞き取るのは難しいし、 発音するのも難しい (広東語で 「しりとり」 をしたら 「ん」 で終わる単語を禁止しなくていいかも)。

おばちゃんがレシート (写真右 → ) に 50 と書いて見せたので、 HK$50 (約 500円) を支払う。 11ポンドなら HK$31.5 + HK$4.5 * (11磅-7磅) = HK$49.5 なので、 HK$50 なら計算も合ってる。

するとおばちゃん曰く 「とだい」。
む? 一瞬何を言ったか分からず固まってしまったが、 「Today」 らしい。 私に広東語が通じないんで英語に切り替えてくれたらしい。 でも、 おばちゃんが喋れる英語はここまで。 どうやら 「今日できるよ」、 と言いたいらしい。 どんな仕上がりで返ってくるか一抹の不安を感じたが、 まあ、 なるようになるでしょ。 このレシートを受け取って店を出る。 レシートの右上に 「未付款 not yet paid」 と書かれているが、 レシート中央に斜めに赤字のスタンプで 「已付款」 と押してあるので、 既に支払い済という意味なのだろう ( 「」 は 「既に」 という意味の漢字)。 スタンプも英語併記にしておいてくれると助かるのだが。 レシート上で店名の 「Laundromat」 の綴りが間違っているのはご愛嬌。

ホテルに向かうと、 私と同じように大きな袋をぶら下げてホテルを出てくる人を発見。 なんだ、 みんな同じような感じで洗濯物を出していたのか。 なんでいままで気づかなかったんだろう。

その日の晩、 ホテルに戻ってきたら 20:00 を15分ほど過ぎてしまい、 店は既に閉っていた。 営業時間は、 月曜〜土曜が 8:00〜20:00、 祝祭日が 9:00〜17:00 で、 日曜は休み。 ただし冬節 (冬至, 2011年は 12月22日だった) は中国人にとって特別の日であるらしく、 営業時間が (この店に限らず) 変則的なので注意が必要 (営業しないか、開店しても早々に閉店する)。 実は前掲の店の写真は 12月22日、 冬節の朝 10:19 に撮ったものだが、 まだ開店しておらず 「梢候片刻 PLEASE WAIT」 の札がドア中央にかけてある。 両隣の店のシャッターが閉っているのは冬節だからだと思われる。 決してシャッター街になってしまっているわけではない。

洗濯済衣類の袋

次の日 (12/20) の朝、どきどきしながら店へ行ってレシートを (昨日と同じ) おばちゃんに差し出す。 おばちゃんは、店内に積み上げてある袋の中から一つを引き出してカウンターへもってきてくれた (写真右 →)。

ここで 「むごーい」 (「唔該」, 「ありがとう」 の意味) と言えばいいのだろうけど、 つい 「Thank you」 と言ってしまった。 練習を積まないと、 なかなか自然には出てこない。

なにはともあれ、 ここまでは想定通りにコトが進んだ。 スムーズすぎるくらい。 袋をホテルの部屋に持ち帰り、 どんな状態の衣類が出てくるか、 固唾を飲んで袋の口をほどく。

なんと、 シャツや下着が一枚ずつ丁寧に畳んで重ねてあった。 ハンカチもきちんと二つ折りにしてあった (写真下 ↓)。 量り洗いなのに、 ここまで丁寧に畳んでくれるとは。

きちんと畳まれた衣類

しかも洗濯から畳むまで全て込み込みで、 わずか 500円。 ちなみに米国だとコインランドリーを使う料金だけで US$7.0 (約 546円) くらいかかる (おまけに 25セント硬貨で用意しなければならないので大変)。

あとで気付いたが、 レシートに書いてあった伝票番号 11834 が、 袋にも (手書きで) 書いてあった。 店内に積み上げられた袋の中から、 おばちゃんはこの数字を頼りに私の袋を引き出したのだろう。

きちんと畳まれた仕上がりに感動したので、 日本へ帰る直前にもう一度、 この 「新明亮 專業乾洗」 を利用した。 こんどは 「ズタボロにされても構わない」 衣類だけでなく、 旅行中に着た服を全て出した (最初の利用日のわずか 2日後だったが、11ポンドもあった) が、 同様に満足のいく仕上がりだった。 おかげで、 日本に帰ってから洗う必要があった衣服はほとんど無く、 帰宅後に大量の洗濯をする羽目にならずに済んだ。

実は、 帰宅翌日に自宅の洗濯機が故障して往生した (年末だったので年内に配達してもらえる洗濯機、 という条件で選んだら、 日本製は在庫がないということでハイアール製になった。 こうやって日本のメーカはシェアを失っていくのだろう)。 もし、 香港で洗濯していなかったら、 新しい洗濯機が届くまで洗濯物があふれかえって、 もっと悲惨な事態になっていたところだった。 やはり洗濯は旅行中に済ませてしまうに限る。

Filed under: 香港 — hiroaki_sengoku @ 10:10
2012年1月4日

スマートフォン用の外付バッテリー

あけましておめでとうございます。今年もよろしくお願いします。

近頃のスマートフォン (スマホ) は、 ちょっと使ってるとバッテリーが一日もたない。 出先でバッテリー切れになると大変困るので、 外付バッテリーを携帯している人も多いのではないか。 外付バッテリーには、 リチウムイオン二次電池 (充電式電池, 充電池) を利用するものと、 単三乾電池 (あるいはエネループ等のニッケル水素二次電池) を利用するものがあるが、 前者は (安全性の観点から) 充電池を交換できないことが多く、 充電池が寿命を迎えると使い捨てになってしまう (eneloop mobile booster KBC-L54D など。3900円もするものを使い捨てにするのはモッタイナイ)。

一方後者は、 リチウムイオン充電池に比べると質量あたりの蓄えられる電力量 (重量エネルギー密度) が小さい。 18650 リチウムイオン充電池が、 3.7V * 2400mAh / 47g = 188Wh/kg 程度あるのに対し、 単三のエネループは 1.2V * 1900mAh / 27g = 84Wh/kg と、 リチウムイオン充電池の半分以下しかなく、 スマホの充電用としては力不足。

特に、 単三形ニッケル水素充電池 2本を用いる外付バッテリー (eneloop stick booster など) は、 2.4V (1.2V * 2) を倍以上の 5V (USB の電源電圧) に昇圧して出力するため、 900mAh 程度 (1.2V * 2 * 1900mAh / 5V, 損失があるはずなので実際にはもっと少ないはず) しか出力できず、 スマホを充電しても満充電にはほど遠い。 単三形ニッケル水素充電池を用いるなら 3本〜4本を直列すべきだが、 そうすると重く大きくなってしまい常時携帯するには不適。

というわけで、 私はスマホの充電に、 いわゆる中華充電器 (18650 Batttery Powered USB Bright Torch, 本体側面に 「PORTABLE POWER」 と書かれている) を使っている。 これはリチウムイオン充電池を利用する外付バッテリーだが、 18650 と呼ばれる (直径 18mm 長さ 65.0mm という意味) 安価な汎用リチウムイオン充電池 (一個 300円〜500円) を用いるため、 充電池が寿命を迎えたら充電池のみ交換できる。 18650 充電池の電圧 3.7V を 5V に昇圧して USB コネクタで出力する他、 充電回路も組み込まれているので、 USB ケーブルをつなぐだけで充電も可能。

18650 battery

写真 ↑ の直方体 (白と黒) が中華充電器。 黒い方は裏蓋を外して中身の 18650 充電池が見える状態にして撮影。 手前の面の USB A ソケットに USB ケーブルを接続して充放電を行なう。 中の赤い 18650 充電池は、 ノートPC 用のバッテリーを殻割りして取り出した充電池なので、 接着剤を剥した痕がある。 その隣の青い (「UltraFire」 と書いてある) 18650 充電池は、 香港の鴨寮街 (深水埗駅の出口すぐ) で買った 18650 充電池 2個パック (2個で HK$68 = 約 680円)。

Battery Graph while charging

もちろん、 安全回路なしのリチウムイオン充電池をセル単体 (つまり 18650) で扱うことは危険であり、 発火や爆発の可能性も考慮にいれた運用が求められる。 その危険性故に、 日本では 18650 は、 一般には市販されていない (秋葉原などでは売っている店もある)。 18650 を充電器から日常的に出し入れするなど、 ニッケル水素充電池 (エネループ等) と同様の感覚で扱うことは絶対に避けるべき。

この中華充電器は軽量コンパクトでありながら、 スマホを (ほぼ) 満充電にできるくらいの電力量があるので、 私は常に持ち歩いている。

Galaxy Nexus (香港で購入した GT-I9250) のバッテリーが残り 10% になった段階 (左のグラフで 19:47 の時点) で、 中華充電器による充電を開始してみた (ディスプレイを消灯したまま放置)。 2時間55分後 (22:42) に充電が停止し、 94% まで充電することができた。

Galaxy Nexus のバッテリーは、 1750mAh のリチウムイオン充電池 (スマホの中では容量が大きい方)。 3.7V 2400mAh の 18650 を 5V に昇圧して出力する中華充電器で、 Galaxy Nexus を 10% から 94% まで充電できれば悪くない。 つまり、 充電電気量は 3.7V * 2400mAh / 5V ≒ 1700mAh 程度になる (実際には損失がある) ので、 84% (94% - 10%) を充電できれば充分。 3時間弱の充電中も Galaxy Nexus が 150mAh くらいは消費しているはず (Galaxy Nexus など大抵のスマホは、 ほとんど使わない待受け状態で放置していても 12時間くらいしかバッテリーが持たない) なので、 実際に充電された電気量は 1750mAh * 84% + 150mAh = 1620mAh くらいになっていると思われる。

充電 (中華充電器にとっては放電) が停止したときの中華充電器の 18650 の電圧が 3.38V で、 リチウムイオン充電池の放電終止電圧 2.7V よりだいぶ高いが、 中華充電器の昇圧回路が機能する電圧がこのあたりなのだろう。 また、 中華充電器を満充電したときの 18650 の電圧は、 4.13V だった。 充電中の電圧は 4.2V を超えていないようなので (オシロスコープを持ってないので正確なところは不明)、 まあ大丈夫なのだろう。

Filed under: Android,香港 — hiroaki_sengoku @ 11:56
2011年11月28日

生涯 「こだわらないエンジニア」 宣言

2011年11月28日の KLab(株) 株主総会 (上場前の株主名簿に基づく最後の総会) 終了後、 私は取締役CTO を退任いたしました。 今から遡ること 11年前 2000年8月1日の (株)ケイ・ラボラトリー (当時の KLab の社名) 創業以来、 会社経営については全く無知であった私が何とかここまでやってこれたのは、 ひとえに皆々様方のご指導ご鞭撻のおかげであったと深く感謝いたします。 誠にありがとうございます。 なお、 後任として安井真伸が CTO に就任しました。

11年前、 日立製作所の研究所勤務の一研究員だった私が、 なぜケイ・ラボラトリーの立ち上げに参加したかといえば、 未知のモノに関わるチャンスがあれば、 あまり後先考えずに飛び付いてみる性格だったというのが大きかったと思います。

中途半端に好きな状態で居るのではなく、 興味を持ったのなら、全力で取り組んでみる。 自分の能力がどれくらいのものかと、把握できるまでやってみる。 そして向いてない、止めると決めたらそれ以上は手を出さない。 それを繰り返すことで、本当に自分が好きなもの、 人並み以上の価値を生み出せるものを見つけ出し、 それを仕事にしていったのが仙石氏のキャリアなのだ。

日立では一人の部下も持っていなかった私が、 マネジメントの何たるかを全く理解しないままに、 当時規模は小さかったとはいえ、 エンジニア集団のトップとして責任を負う立場に立ったというのは、 チャレンジというよりは無謀であったかもしれません。

失敗も多かったのですが、 まがりなりにも 11年も続けられたということは、 「経営者」 が向いていたということなのでしょう。 それまで私は自分のことを 100% 技術者 (ちょっとだけ研究者) だと思っていたのに、 マネジメントもそれなりに向いていたというのは発見でした。 「ベンチャー立ち上げ」 というチャンスに後先考えずに飛び付いて本当に良かったと思います。

もちろん、 私がしでかした数多くの失敗で、 多くの方々にご迷惑をおかけしました。 私の未熟さゆえに厄災に遭われた方々 (が本ブログの読者である可能性は低いのですが) にはこの場をお借りしてお詫び申し上げます。

右も左も分からない手探り状態で CTO の仕事を始めて以来、 一貫して自分に課していたことがあります。 それは、 「部下に仕事を任せること」。 ケイ・ラボラトリーの黎明期は、 やるべきことが多すぎて、 それこそ猫の手も借りたい状態だったので、 「仕事を任せること」 を自分に課したというよりは、 手が回らないから結果的に任せた格好になっていただけなのですが、 経営陣の末席を汚しているうちに経営とは何であるか私なりに学ぶ機会もあり、 黎明期を脱した後も、 たとえ自分がやりたい仕事であっても、 部下でもできる仕事であれば敢えて手を出さず、 任せるようにしてきました。

部下を育てなければ会社がまわらないわけで、 「仕事を任せることが重要」 なんてことは誰でも知ってるし、 誰でも実践していることだと思いますが、 自分がやりたい仕事まで手放す、 ということになるとどうでしょうか?

2006年に、 こんなことを書いています:

積極的に今の仕事を捨てるべきでしょう。 部下 (or 後輩) が成長してきて、 自分の代わりがつとまるようになったら、 全てその部下に任せてしまい、 新しいことにチャレンジするわけです。 そうすれば部下も育つし、 自分を変えることができます。 運がよければ新たな成長フェーズに入れるかもしれません。

私は、 チャンスに巡り合ったときに躊躇なく飛び付けるように、 あるいは新しいチャンスに巡り合う確率を上げるために、 取組んでいた仕事がある程度まわるようになったら、 その仕事にはこだわらず、 むしろその仕事を手放して別のことに取組むようにしてきました。

手放した仕事の中で一番大きかったのは、 大学院と日立で計 11年間も続いていた研究者としての仕事だったわけですが、 もし、 ベンチャー立ち上げに参加するチャンスに巡り合ったとき、 研究者としての仕事にこだわってチャンスに飛び付くのを躊躇していたら、 CTO をやってみることもなかったかもしれません。 当時は研究こそ自分の 「やりたい仕事」 だと思っていたのですが、 それを敢えて手放したことで CTO としての仕事に巡り合えたのだと思います。

その CTO の仕事も 2008年の時点で丸 8年になり、 かつての部下が二人も役員に登り詰めるに至って、 そろそろ私が KLab で果たせる役割も終わりが近づいてきたと意識し始めました。 社内で、 ことあるごとに 「CTO を辞めるつもり」 と (誰も本気にしてくれませんでしたが) 言っていましたし、 社外でも公言していました:

KLab を設立してから、どんどん仕事を捨てて自分を変えている (ピーターの法則に陥らないように)。 部下が成長したらすべて任せてしまう。 すべての仕事を部下に振り終えたら、私は CTO をやめる予定。 早く育成しないと。

株式の上場が現実味を帯びてきた頃、 ボトルネックの一つが人事制度でした。 人事は私にとって全く未知のモノでしたから迷わず飛び付きました。 労働基準法を一から勉強したり、 人事マネージャ候補を 20人以上面接したり、 弁護士や社労士の先生方と連係したりと、 初めてのことばかりで失敗もあったのですが得難い経験をしました。 特に人事担当者を採用するための面接は、 技術者の面接とはまるで異質で、 大変勉強になりました。 とはいえ、 私は (予想通り) あまり人事向きではなかったので、 一年程度で人事の仕事は手放して後任に引き継ぎました。

そして無事上場を果たしたいま、 KLab の業績は絶好調です。 過去 11年間の KLab の歴史の中で最も好調な今だからこそ、 11年続いたこの仕事を捨てて自分を変える最適のタイミングだと判断しました。 未練がないと言えば嘘になりますが、 新しいチャンスに巡り合うために敢えて取締役を退任することを願い出た次第です。 私のワガママを快く受け入れてくださった、 真田社長をはじめとする取締役の方々に感謝いたします。

今後は、 まずは様々な人とお話しして、 どこかにチャンスが落ちていないか ;-) 探すつもりです。 私から連絡するかも知れませんが、 もしご関心があればご連絡頂ければ幸いです。 私は今まで何百人 (数えたことがないので正確な数は不明) もの人を面接してきましたが、 面接を受けたのは (新卒時を含めて) 数回程度しかないので、 他社がどんな面接をしているのか大変興味があります ;-)。

私は、 23歳からの 11年間を研究者として、 次の 11年間を経営者として全力で取組んできました。 私はまだ 45歳、 さらにもう 11年間くらいは何か別のことに全力で取組むことができるはずです。

ついでにいうと、 コンピュータに巡り合ったのが 12歳の時なので、 コンピュータを専ら趣味でいじってた期間も 11年間です。 そしてこの 33年間、 コンピュータに対する関心だけは変らず一貫しているので、 根底ではエンジニアが一番向いているということなのでしょう。

私がいままでやってきたことにこだわるつもりはありません。 11年前、 それまで研究者だった私が、 研究にこだわらずに無謀にもベンチャーの立ち上げに参加したからこそ、 今の私があるわけで、 これからも、 そして生涯、 こだわらずに未知への挑戦を続けていきたいと思います。

Filed under: 元CTO の日記,自己啓発 — hiroaki_sengoku @ 15:59
2011年10月13日

ベンチャーが学校教育に求めること

東北大学大学院の教壇に立ちました。 産学連係講義 「先端技術の基礎と実践」 という講義で、 毎週一人づつ企業から講師を招いて、 ソフトウェアや IT 技術の様々な側面について理論的、 あるいは実際的な観点から講義してもらう、 という趣旨でした。 講義題目の一覧を見ると、 私以外は、 (講義の趣旨から言って当然ですが) 技術的な内容ばかりで、 私の講義 「学生のうちに身につけて欲しい、たった一つの能力」 だけ浮きまくっていました (^^;。

本当にこんな内容で話していいのか (ある意味、大学院での教育方針にケンカを売るような内容ですので) と内心不安だったのですが、 少なくとも一部の学生さんには積極的に質問してもらえて、 1コマの授業時間だけでなく、 講義後のフリートークも時間いっぱいいっぱい使って、 学生さん達とお話しすることができました。 型破りな講義内容を快諾して頂いた先生方に深く感謝致します。

以下、 講義の内容です (実際の講義は脱線してしまったので、こんなに整っていませんが)。 囲み部分はスライドの内容です。

- o -
おかげさまで KLab 株式会社は、先月 9月 27日に東証に上場しました

SAP (Social Application Provider) として上場するのは、 KLab が国内初だったこともあり注目を集めました。 SAP というのは、 GREE, モバゲー, mixi, ニコニコ動画などの SNS (Social Network Service) 上で遊べるアプリ (ソーシャルゲーム) を提供する会社のことです。 2009年に国内で初めて mixi が SNS プラットフォームをオープン化したのに合わせて KLab はソーシャルゲーム開発に舵を切り、 ソーシャルゲーム関連の売上が急拡大中です。 でも、 今日はソーシャルゲームの話はしません。 なぜか?

一つは、 明日が 2011年 8月期の決算発表で、 今うっかり先走って業績などを喋ってしまうと大変なことになるからですが、 もう一つは ↓

事業内容をみて就活するヤツ多すぎ (´・ω・`)

私は仕事柄、 就職活動中の学生さんとお話しする機会が多いのですが、 エンジニア志望なのに、 事業内容で会社を選ぼうとしている学生さんが多いことに違和感を覚えます。 みなさんは会社に入って事業をやりたいんでしょうか?

最初こそプログラマとして入社するけど、 あくまでそれは事業を理解する端緒としてであって、 なるべく早く開発を統括できるようになり、 事業を発展させることによって自らも成長し、 ゆくゆくは事業部長を目指し、 あわよくば社長も狙いたい、 ということであれば、 事業内容で会社を選ぶのも理解できます。

しかしながらエンジニア志望の学生さんの多くは、 事業部長を目指すというよりはもっと技術志向で、 専門性を活かした職種、 例えば技術コンサルタントやチーフアーキテクト、 あるいは 「技術者の社長」 であるところの CTO などをイメージしていたりします。 できればマネジメントはやりたくない、 開発の現場を離れたくない、 と考えている人も多いのではないでしょうか。

事業と技術、 どちらのキャリアを歩もうとするのか、 社会人としての最初の一歩を踏み出す前に、 もっと意識すべきではないでしょうか? なぜなら、 事業を中心に考えるのであれば技術は単なる手段であり、 極論すれば技術は新人の仕事ということになります。 できるだけ早く新人の仕事としての技術は脱却して、 マネジメント手法を学んでいかなければ 35歳でエンジニアとしての定年を迎えてしまいます。

一方、 技術を中心に考えるのであれば事業は単なる手段であり、 極論すれば事業が立ち行かなくなって会社が潰れてしまっても、 自身の技術力さえ伸ばせれば成功と言えるでしょう。 ずば抜けた技術力があれば転職も思いのままだし、 給料も言いたい放題でしょう。 だから、 事業内容で会社を選ぶのではなく、 その会社が自分の成長に役立つか否かで選ぶべきです。

言うまでもなくどっちつかずなのが最悪で、 残念なことにエンジニア志望だった人の多くが ↓ のような道を歩んでしまいます。

どっちつかずな人の末路 orz

若いうちは技術をやれ、と言われてデスマーチでこき使われる。
辛いけど自分は技術が好きなんだ、と現場にこだわり続ける。

そして、35歳でエンジニア定年。 泣く泣く現場を離れてマネジメントの道を歩み始めるが、
自ら進んでマネージャを目指した同期に追い付くのは不可能。

ただし技術の道を選んだとしても、 「ずば抜けた技術力」 が身につけられるのは、 元々その素質を持っていた人に限られます。 どの分野の技術でも向き不向きはあると思いますが、 ことコンピュータ関連の技術に関してはその傾向が顕著で、 努力すれば身につくような種類のものだとは到底言えないでしょう。 むしろ、 努力しなくても自然とスキルが伸びてしまったというような、 元々その素質を持っている人だけが、 高い技術力を獲得できる傾向があるように思われます。

なので、 自分が何に向いているか早く見つけることが何より重要、 ということになります。 ただし、いわゆる 「自分探し」 は時間の無駄です。 なぜなら、 向いているか向いてないかは、 やってみなければ分からないからです。

就活でちょろっとその会社の説明を聞いたぐらいで、 その仕事が自分に向いているか分かるわけはないのはもちろんですが、 実際に働き始めてみて 「自分に合いそう」 とか 「この仕事は自分に向いていない」 とか思うのもタイテー間違っていて、 自身の能力の限界まで力を出しきってみて初めて、 向いているか否かが分かる性質のものだと思います。 そもそもろくに仕事の内容を理解できてない段階で 「好き」 だの 「嫌い」 だの言ってみても始まりません。 何事もつきつめていけばそれまで見えなかったものが見えてくるわけで、 「好き」 だの 「嫌い」 だのは視野が充分広がった後で判断すべきものでしょう。

「好きなこと」 を仕事にするのは叶わぬ夢なのか?

「好きなこと」 「向いていること」 を仕事にしたい。 多くの人がそう望んでいると思いますが、 現実はそうなっていません。 むしろ、 生活のため仕方なく仕事している、 という人がほとんどでしょう。 「好きなことはあるけれど、 それで食っていくことはできない」 とあきらめてしまっています。

例えば、 私の周囲にはセミプロ級 (自称) のカメラマンがいます。 そんなに好きならなぜプロにならないのか? と聞いたこともあるのですが、 「カメラは趣味だからいいんだ」 などと意味不明な答が返ってきます。 彼らはプロを目指さず、 あまり好きでもないソフトウェア開発業務に携わっているわけですが、 それはプロのカメラマンを目指そうとすると、 自身にその素質がないことが白日のもとにさらされると思っているからなのでしょう。 つまり、 本気でプロを目指して挫折すると、 せっかくの 「趣味」 が嫌いになってしまうのが怖いのだと思います。

つまり、 「好きなことで食っていけない」 のではなくて、 プロを目指してみる覚悟がないだけなのです。 本気でプロを目指せば、 その道の素質があるか否か、 たちどころに分かることでしょう。 もし素質がなければ、 さっさとあきらめて別の道を試せばいいだけの話です。 手当たり次第に試していけば、 きっと自分に向いていて、 かつ本当に好きと思える仕事が見つかることでしょう。

だから最初に何をやるかは実はあまり重要ではなくて、 何をやるにしても本気でプロを目指してみることが重要、 ということになります。 大学に残ってアカデミックな世界のハイアラーキを登り詰めようというのでなければ、 プロを目指すのは就職してからが本番ということになります。

では、いま何をすべきか?

「産業界が学生に求めるのはコミュニケーション能力だ」 というデマが出回っているようですが、 これは嘘ですので忘れてください。 マトモな人に聞いてみれば誰でも同じ答がすぐ返ってくると思うのですが、 一番重要なのは 「考える力」 です。

考える力がないヤツ多すぎ (´・ω・`)

そもそも大多数の学生さんは 「考える力」 が何だか分かっていません。 幾多の試験を突破し、 大学院にまで登り詰めた学生さんを相手にずいぶんな言いようだと思いますが、 実際に数多くの学生さんと話してみた結果なのだから仕方ありません。 逆に、 考える力のある学生さんなら、 学歴・知識・コミュニケーション能力など一切不問で採用します。

例えば、 ほとんどの学生さんは、 何を聞いても質問一つできません。 当人は質問すべきことがないから質問しないだけ、 と思ってヘーキな顔をしていますが、 本当は何を質問したらいいか考えられないだけなのです。 また、 学生さんが就職して会社で開口一番、 何と言うか分かりますか?

少なくない人が 「早く仕事に慣れて、みなさんのお役に立ちたい」 って言うんです。 ベルトコンベアの組立工とか、 マニュアル通りに振る舞うことが期待されるマクドナルドの店員とかなら、 仕事に慣れることも必要でしょうが、 そういう仕事だと思って就職したんでしょうか? いくら今まで仕事をした経験がないといって、 あまりにウブすぎます。

そして極めつけは、 知識の習得には貪欲でも、 習得して何がしたいかの展望をまるで持っていないことです。 知識は手段であって目的ではありません。 それが小学校〜大学院 6+3+3+4+2=18年にもおよぶ学習期間において、 ひたすら知識を習得し続けた結果、 なんのために習得したのか、 その目的をすっかり忘れてしまったのでしょう。

学びて思わざれば、すなわち罔し

「目的意識を明確に持て」 とは誰しも言う言葉ですが、 では目的とは具体的には何なのか? 「世のため人のため」 とか途方もなく抽象的なことを言ってお茶を濁していませんか? あるいは逆に 「給料をもらうため」 とか途方もなく具体的なことを言ってしまうかも知れません。 いずれの場合も、 そこから考える余地があまりなく、 思考停止してしまいがちです。

抽象的な話では面白くないので、 私自身の例を紹介しますと、 ずいぶん前から (たぶん中学生のころから) 「有名になりたい」 という目的を持ち続けています。 自分の名前を売るにはどうすればいいか考え、 (オープンソースという言葉ができる以前から) オープンソースソフトウェア (例えば stone) を公開し、 ブログを書き、 インタビューを受け、 いろんなところで講演したりパネルディスカッションに登壇したりしています。 今日、 ここでこうやって講演しているのも、 実を言えば、 人前でうまく話す練習をしたい、 というのが一番の動機だったりします。

ついでにいうと、 なんで有名になりたいかと言えば、 自由になりたいからです。 近頃は 「社蓄」(「会社+家畜」から来た造語) という言葉が使われるようになりましたが、 いわゆるフツーのサラリーマンは少しも自由ではありません。 嫌な仕事でも生活のためにヤムを得ず働いているわけです。 会社に依存せずに生きるには、 会社の肩書がなくてもやっていけるだけのネームバリューが必要ということに (たぶん中学生のころ) 気付き、 それ以来、 自由になるにはどうすればよいか考え続けてきました。

考える力は、 考えることによってしか伸びないわけで、 そのためには自分の考えが足りないことを自覚することが必須でしょう。 そして考えが足りないことを自覚するには、 まず自分が無知であること、 すなわち自分は何が分かっていないかを自覚することが必要です。

ここで重要なのは、 「分かってない」 と 「知らない」 の違いです。 「知らない」 ことは調べれば済む話で、 考えてどうこうできる問題ではありません。 つまり 「自分には知らないことがある」 と自覚したところでそれは考えるきっかけにはなり得ません。

一方、 「分かってない」 のは決して知識が足らないためではありません。 だから調べてどうこうできる問題ではありません。 例えば 「数」 の概念が分かってない人に 「数」 とは何かを教えようとする状況を想像してみてください。 あるいは逆に、 自分が 「数」 という概念を分かってなかったとして、 どうしたら 「数という概念が分かっていない」 ことに気付けるか想像してみてください。

「分かってない」 と 「知らない」 は違う

「分かる」 と 「自転車に乗れるようになる」 は似ている

思うに、 「分かる」 というのは 「自転車に乗れるようになる」 ことに似ていると思います。 「分かってない人」 が無自覚であると同様、 自転車を見たことがない人にとっては、 自分が自転車に乗れないと気に病むことはないでしょう。 そして最初の 「分かろう」/「乗ろう」 というチャレンジは確実に失敗します。 どうすれば 「分かるか」/「乗れるか」 皆目見当がつかない一方で、 いったん 「分かる」/「乗れる」 と、 どうやってそれができるようになったのか思い出せなくなってしまいます。

というわけで、 「考える」 ためにはまず自分が 「分かってない」 ことを自覚し、 次に 「分かろう」 と努力することが必要です。

後者は、 「分からないこと」 が目の前にあるわけですから、 あきらめさえしなければさほど難しくはないでしょう。 といっても思考停止という罠がたくさんあるので、 後者は後者で一筋縄には行かないのですけれど、 そんなことより問題は前者です。

すなわち、 「分かってない」 ことをいかに自覚するか? が鍵となります。

おそらく、 自力で自分の 「分かってなさ」 を自覚することは無理で、 他者に指摘してもらって初めて気付かされる、 という場合がほとんどなのではないかと思います。 じゃ、 どうすれば他者に指摘してもらえるか? 黙っていては無理で、 自分から自身の考えを発信してみることが重要なのではないでしょうか?

変なことを発信すれば、 親切な人が 「おまえは何を言ってるんだ?」 と指摘してくれるかも知れませんし、 慣れてくると他者の反応もあらかじめ予測できるようになり、 発信する文章を練っている段階で自分の至らなさを痛感するかも知れません。 私自身、 こうやって自身の考えを長々と述べていますが、 この考えのほとんどは、 いろいろな人と対話した結果生まれたものであって、 決して私の頭だけで考え出したものではなかったりします。

というわけで、 まずは内容は二の次で、 自分の言葉を発してみることが何よりも重要でしょう。 例えば今この場で、 質問してみるところから始めてみてはいかがでしょう?

Filed under: 元CTO の日記,技術者の成長 — hiroaki_sengoku @ 22:50
2011年8月23日

Android 端末で Picasa を使用して画像を共有できなかったので、対策を考えてみた

share - Picasa

Android 上のアプリの多くは 「共有」 機能を用いて他のアプリへデータを送ることができる。 例えば画像ビューアだと、 「メニュー」 から 「共有」 を選び、 「Picasa」 を選ぶことで Android 標準の com.google.android.apps.uploader (マイアップロード) アプリを使って、 Picasa ウェブアルバムへ画像をアップロードできる (← 左図)。

ところが、 この Picasa には Google アカウントとの連係に問題があって、 Android 端末の状態によっては Picasa へのアップロードができなくなってしまう。 つまり、 「Picasa」 を選んだときに、 「Googleアカウントを追加」 する画面に遷移してしまい先に進めない (↓ 下図)。

add Google Account

既にこの携帯に登録済の Googleアカウントで、 画像をアップロードしたいのに、 「マイアップロード」 が現在の登録済アカウントを認識できず、 アカウントの追加を求めてくる。

[戻る] ボタンを押すと 「マイアップロード」 が終了してしまうので、 仕方なく [次へ] をタップして Googleアカウントを追加しようとすると、 「アカウントが既に存在します」 と言われてしまう (↓ 下図)。

Google Account exists already

「アカウントが存在する」 のが分かってるなら、 そのアカウントで画像をアップロードしろよ! と言いたくなるが、 画面には [戻る] しかないのでどうにもならない。

Google ヘルプを見ると、 http://picasaweb.google.com に一度もアクセスしない状態でアップロードを試みると、 このような二進も三進も行かない状態に陥る、 ということらしい。 そこまで分かってるなら対策しろよ、 と言いたくなる。 まあ、 Google 的には、 Picasa へ直接アップロードするのではなく、 Google+ 経由で使って欲しいということなのかもしれないが。

delete Google Account

もちろん、 現在の Googleアカウントをいったん削除すれば、 アカウントを追加することは可能になる (はず)。 しかし、 アカウントを削除しようとすると、 「携帯のメール、連絡先などのすべてのデータも削除されます」 などと脅される (右図 →)。

アカウントを削除しても、 再度アカウントを追加すれば、 削除されたメールや連絡先も再同期されるのだとは思うが、 「1つ目のアカウントを絶対削除したらだめ」 という先達の意見をスルーするのも気が引ける。

また、 知らぬ間にPicasaとの同期が始まるケースもあるらしいが、 ただ待ってるというのも能がないし、 待っていれば必ず始まるというものでもないだろう。

そこで、 アカウントを削除すること無く、 他への影響を最小限に抑えつつ、 Picasa Web Albums を同期させる方法を考えてみた。

もっと読む...
Filed under: Android — hiroaki_sengoku @ 07:31
2011年7月31日

OpenVZ な ServersMan@VPS で独自 OS を動かしてみた

国内に (自宅以外で) IPv6 が使えるサーバが欲しかったので、 ServersMan@VPS を使ってみた。 ServersMan@VPS は仮想化プラットフォームが OpenVZ なので今まで敬遠していたのだが、 Osukini サーバ (Xen) も、 さくらの VPS (KVM) も、 いまのところネイティブな IPv6 はサポートしていない (さくらの IPv6 は 6rd) ので、 やむなく契約してみた次第。

Xen や KVM などの完全仮想化と異なり、 OpenVZ はホストOS のカーネルがゲスト OS のカーネルとしても使われる。 つまり VPS (Virtual Private Server) サービスのユーザが別のカーネルを立ち上げることができない (ServersMan@VPS Perfect は完全仮想化だが月額 3150円と高いのでここでは考えない)。 OS は CentOS, Debian, ubuntu から選ぶことになる。

しかしながら、 私が個人的に管理しているサーバは、 全て OS を独自の 「my distribution」 (便宜上ここでは GCD OS と呼ぶ) に統一していて、 全サーバでディスクの内容を同期させている。 つまりある特定のサーバ固有の設定情報も、 全サーバが共有している。 共有していないのは各サーバのホスト名と、 秘密鍵などごく一部の情報だけ。 だからサーバが壊れた場合も、 新しいマシンを用意して他のサーバからディスク内容を丸ごとコピーするだけで済む。

私個人で管理しているサーバ (もちろん会社で運用しているサーバは除く) は、 仮想環境も含めると 20台ほどになるので、 異なる OS はできれば管理したくない。 ServersMan@VPS で提供されるカーネルを使うのは (OpenVZ の仕組み上) 仕方がないとして、 ディスクの内容は GCD OS と入れ替えることにした。

稼働中のサーバをいじるとき重要なのが、 トラブった時に 「元に戻せるか?」 ということ。 元に戻せるなら多少の失敗を恐れることはない。 ほとんどの VPS サービスは、 最悪の事態に陥っても初期化すれば元通りになるので、 操作をミスっても一からやり直せばいいのだが、 OS を入れ替えようとする場合は (当然) 新しい OS 一式を送り込む必要があり、 初期化するとこれが消えてしまうので再度転送する羽目になる。 GCD OS は最小セットで 7GB 近くあるので、 何度も転送を繰り返したりすると VPS サービスの契約ネットワーク帯域を使いきってしまう。

幸い、 ServersMan@VPS に帯域制限は無いが、 一日に 何十GB も転送していたら、 きっと管理者に睨まれるはず。 そこで、 どんなに失敗しても、 再起動すれば ssh でログインできる状態に戻るような OS 入れ替え手順を考えてみた。 ssh でログインできさえすれば後は何とでも修復できる。 逆に言うと ServersMan@VPS のようなコンソールが提供されない VPS サービスでは ssh でログインできなくなると万事休す、 残された復旧手段は初期化しかない。

まず ServersMan@VPS Standard プランを契約 (月額 980円) して、 Ubuntu(64bit) の最小構成 (シンプルセット) を選択。 ssh でログインして netstat でソケットを開いているデーモンを調べ、 片っ端から dpkg --purge (アンインストール) する。 もちろん sshd (ssh サーバ) だけは purge してはいけない。 syslog や cron などフツーは決して purge しないデーモンも遠慮無く purge する。 ps したとき sshd のプロセスのみが表示されるような状態になるまで purge しまくる。 で、 一通り purge し終わったら念のため再起動してみる。 もしここで ssh でログインできなくなってしまっていたら、 初期化して振出しに戻る。

この時、 sshd が 22番ポートで listen している場合は、 GCD OS が起動する sshd と衝突するので、 22番ポート以外に変えておく。 幸い ServersMan@VPS の場合は sshd が初めから 3843番ポートで listen する設定になっていた (なぜ?) ので、 そのままにしておく。

次に、 デーモン類以外のパッケージも、 残しておくとディスクの肥やしになるだけなので、 できるだけ purge する。 とはいっても、 多くのパッケージが数MB 以下で容量的には誤差の範囲なので、 無理に purge して再起不能状態に陥るリスクを冒すより、 ディスクの肥やしにしておいた方がマシ。 で、 一通り purge し終わったら念のため再起動してみる。 もしここで ssh でログインできなかったら、 初期化して振出しに戻る。

こうして netstat -nap しても ps axf しても sshd 以外のプロセスが一切残っていない状態になったら、 いよいよ GCD OS 一式を送り込む。

senri:/ # mirror -v -r /usr/local/gcd -e 'ssh -p 3843' 'core64[183.181.54.38]' > /tmp/serversman &

mirror というのはサーバ間で GCD OS の同期を行なうためのスクリプト。 64bit (x86_64) の最小セットをコピーするために引数として 「core64」 を指定した。 このスクリプトは、 同期すべきファイルのリストを作成して rsync を呼び出す。 「-e 'ssh -p 3843'」 オプションは、 そのまま rsync に渡される。 このコマンド列で GCD OS 最小セット約 7GB が VPS の /usr/local/gcd ディレクトリ以下へ丸ごとコピーされる。 7GB の転送にどのくらいかかるかと思っていたら、 わずか 10分弱で終わってしまった。 100Mbps 以上の帯域ということになる。 結構すごい。

ホスト名を chiyoda.gcd.org に設定し、 このサーバ専用の秘密鍵を作成すれば GCD OS のインストールが完了。 あとは、 /usr/local/gcd 以下へ chroot して GCD OS を起動するだけ。 次のような GCD OS 起動スクリプト /etc/init.d/chroot を書いてみた。

#!/bin/sh
root=`echo $0 | sed -e 's@/etc/init.d/chroot$@@'`
if [ ! -d $root ]; then
   echo "Can't find root: $root"
   exit 1
fi
mount -obind /lib/modules $root/boot/lib/modules
chroot $root sh <<EOF
mount -a
svscanboot &
/etc/rc.d/rc.M
EOF

このスクリプトも GCD OS 一式をコピーするときに /usr/local/gcd/etc/init.d/chroot へコピーされる。 で、/usr/local/gcd/etc/init.d/chroot を、 とりあえず手動で実行。 手動で実行するところがミソで、 もしこのスクリプトにバグがあって異常事態に陥っても、 再起動すれば元に戻る。

上記 /usr/local/gcd/etc/init.d/chroot は、 chroot /usr/local/gcd sh を実行して、 chroot 環境下で svscanboot と /etc/rc.d/rc.M を実行する。 svscanboot は daemontools の起動スクリプト。 GCD OS のほとんどのデーモン類は daemontools の管理下で起動される。 一方 /etc/rc.d/rc.M は、 GCD OS のブートスクリプトで、 ファイアウォールなどネットワークまわりの設定や、 個々のサーバ特有の設定、 および一部のデーモン類の起動を行なう。

普通の Linux OS だと init から直接起動されるデーモンもあるが、 GCD OS の場合 init が起動するのは /etc/rc.d/rc.S と /etc/rc.d/rc.M および svscanboot だけ。 /etc/rc.d/rc.S は、 OpenVZ 環境下では不要な処理ばかりなので実行する必要はない。

こうして chroot 環境下で GCD OS が起動したら、 chroot /usr/local/gcd sh などと実行して GCD OS 環境へ入ることができる。 各種設定が正しく機能しているか、 デーモン類が正しく動いているか確認する。

ServersMan@VPS で使われているカーネルが、 2.6.18-194.3.1.el5.028stab069.6 と、 かなり古い (2.6.18 などという 5年も昔のカーネルを使い続けないでほしい > RHEL) ので、 GCD OS をきちんと動かすには問題があった。 特に困ったのが、 iptables の owner モジュールが使えない点:

chiyoda:/ # uname -rv
2.6.18-194.3.1.el5.028stab069.6 #1 SMP Wed May 26 18:31:05 MSD 2010
chiyoda:/ # iptables -t nat -j REDIRECT -p udp --dport 53 --to-port 2053 -A dnscache.lo -s 127.0.0.1 -d 127.0.0.1 -m owner ! --uid-owner Gdnscache
iptables: No chain/target/match by that name.

このエラーは、 カーネルに CONFIG_NETFILTER_XT_MATCH_OWNER の設定がないのが原因。 NETFILTER_XT_MATCH_OWNER が導入されたのは 2.6.25 以降なので、 そもそも元から 2.6.18 には存在しない。

なぜ --uid-owner が必要かと言えば、 GCD OS では tinydns と dnscache を、 同じ IP アドレスで動かすことが基本になっているから。 つまり、 通常の名前解決に 127.0.0.1 の dnscache を利用するのだが、 dnscache (Gdnscache 権限で動作) が 127.0.0.1 に問合わせる時に限り mydns が返事をするようにしたい。

仕方がないので、 iptables に --uid-owner を指定してエラーになる場合は、 --uid-owner 抜きで iptables を再実行するように修正した:

nsredirect="-t nat -j REDIRECT --dport 53 --to-port $PORT"
chain=dnscache.lo
iptables -t nat -N $chain 2>/dev/null || iptables -t nat -F $chain
nsinner="$nsredirect -A $chain -s 127.0.0.1 -d 127.0.0.1 \
	-m owner ! --uid-owner Gdnscache"
iptables -p udp $nsinner
if [ $? -ne 0 ]; then
    nsinner="$nsredirect -A $chain -s 127.0.0.1 -d 127.0.0.1"
    iptables -p udp $nsinner
fi
iptables -p tcp $nsinner

このような修正を、 chiyoda.gcd.org だけでなく、 GCD OS をインストールしている全サーバで一斉に行なう点がミソ。 サーバごとにファイルの内容が微妙に異なっていたりしたら、 GCD OS を使う意味がない。

当然、 --uid-owner 抜きで iptables を実行した場合は、 dnscache が 127.0.0.1 の mydns に問合わせをすることができないが、 127.0.0.1 以外、 つまり 183.181.54.38 あるいは 2001:2e8:634:0:2:1:0:2a ならば mydns に問合わせることができるので問題無い。

じゃ、 なんのために、 わざわざ --uid-owner を使って 127.0.0.1 の mydns に問合わせられるようになっているかというと、 127.0.0.1 以外の IP アドレスが動的に変わるサーバ (ノートPC など) も想定しているから。 GCD OS は VirtualBox や Xen などの完全仮想化環境だけでなく、 coLinux や今回の OpenVZ など、 仮想化環境としてはやや異質なものもサポートしている。

以上のような細かい修正を行なっていって、 GCD OS が問題無く立ち上がるようになったら、 /usr/local/gcd/etc/init.d/chroot の呼び出しを (ubuntu の) /etc/rc.local に追加して、 VPS の起動時に自動的に GCD OS が起動されるようにする。

GCD OS が正しく立ち上がれば、 外部から 22番ポートに対して ssh ログインして GCD OS が使える。 22番ポートでログインできることが確認できたら、 3843番ポートの sshd は止めてもよい。 chroot 環境からはいつでも脱出できるので、 3843番ポートを止めても本来の (chroot する前の) ubuntu 環境にアクセスすることが可能:

senri:~ # ssh chiyoda.gcd.org
Enter passphrase for key '/root/.ssh/id_rsa':
Last login: Sat Jul 30 09:14:54 2011 from 2409:82:5fff:0:5542:d84e:971a:9656
Linux 2.6.18-194.3.1.el5.028stab069.6.
chiyoda:~ # ls -F /					↓ GCD OS
bin@   dev/  ftp/   lib/    proc/  run/   sys/  usr/
boot/  etc/  home/  lib64@  root/  sbin@  tmp/  var/
chiyoda:/ # chroot_escape /bin/bash			← chroot から脱出
groups: cannot find name for group ID 11
groups: cannot find name for group ID 14
root@chiyoda:/# ls -F --color=never			↓ ubuntu
aquota.group@  boot/  fastboot  lib32/  mnt/   sbin/     sys/  var/
aquota.user@   dev/   home/     lib64@  proc/  selinux/  tmp/
bin/           etc/   lib/      media/  root/  srv/      usr/
root@chiyoda:/# cat /etc/debian_version
squeeze/sid
root@chiyoda:/# lsb_release -r
Release:	10.10
root@chiyoda:/# exit
chiyoda:~ # 						↓ GCD OS

「chroot_escape /bin/bash」 が、 chroot 環境から脱出するコマンド。 脱出して、 「本来の」 root 環境 (この例では ubuntu) 下で、 引数のコマンド 「/bin/bash」 を実行する。 この bash を使って ubuntu の操作ができて、 exit すると元の GCD OS へ戻る。 まるで chroot 下の GCD OS の方が 「主」 で、 本来の root が 「従」 のように見える ;-)。

なお、 chroot_escape コマンド実行時の 「groups: cannot find name for group ID 〜」 というエラーは、 GCD OS の /etc/group と ubuntu の /etc/group が異なるため。 つまり GCD OS の root は ID 11 と 14 のグループに属しているが、 ubuntu には ID が 11 と 14 のグループが存在しないため、 このようなエラーが表示される。

ここまでやるなら、 chroot といわず root に GCD OS をインストールしてしまえば? という声が聞こえてきそうであるが、 ServersMan@VPS ではコンソールが利用できないため、 トラブったときのために何らかの 「バックドア」 は残しておきたい。 GCD OS がどのような状況に陥っても、 3843番ポートの sshd (init から起動されるので kill しても再起動する) にログインできれば、 ubuntu 環境で GCD OS の修復が可能。

というわけで一週間ほど ServersMan@VPS Standard プランを使っているが、 意外に (失礼!) 使えるので驚いた。 実は、 OpenVZ な 512MB ということであまり期待していなかった。 OpenVZ は swap を使えないので、 メモリ 512MB だと、 ちょっと重い処理をさせるだけですぐ OOM Killer が動き出すのだろうと思っていた。 ところが、

chiyoda:~ $ free
             total       used       free     shared    buffers     cached
Mem:       2097152     425020    1672132          0          0          0
-/+ buffers/cache:     425020    1672132
Swap:            0          0          0

512MB というのは実メモリ? の割当量のようで、 見かけ上は 2GB のメモリがある。 OpenVZ な VPS サービスによっては、 これをメモリ 2GB と言い張るところもあるんじゃないかと思うので、 ServersMan@VPS は良心的。

どのくらいのパフォーマンスなのか、 この日記 (WordPress を使用) の処理時間を測ってみる。 senri.gcd.org から ApacheBench でアクセスすると:

senri:~ $ /usr/apache2/bin/ab -n 10 http://chiyoda.gcd.org/blog/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
	...
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        6    7   0.3      7       7
Processing:   992 1116  94.1   1139    1259
Waiting:      305  403  78.3    380     561
Total:        998 1122  94.1   1146    1265

これを、 Linode Xen 512MB プラン (fremont.gcd.org) と比較する。 fremont.gcd.org は米国西海岸にある VPS なので、 同じく西海岸にある prgmr.gcd.org から ApacheBench でアクセスすると:

prgmr:~ $ /usr/apache2/bin/ab -n 10 http://fremont.gcd.org/blog/
	...
              min  mean[+/-sd] median   max
Connect:        2    3   0.1      3       3
Processing:   996 1081  73.8   1084    1197
Waiting:      354  391  30.5    388     450
Total:        999 1084  73.8   1086    1200

両者は、 ほとんど同等のパフォーマンスであることが分かる。 Linode Xen 512MB プランは、 ディスク 20GB で月額 $19.95 (約 1600円) なので、 ServersMan@VPS Standard プラン (ディスク 30GB, 月額 980円) の方がコストパフォーマンスが良い。

もちろん、 ServersMan@VPS Standard には、 カーネルのバージョンが古すぎ、という問題点があるし、 メモリ 512MB を超える部分のパフォーマンスは、 ホストOS 側の負荷状況に左右されると思われるので、 単純に比較すべきではない。

Filed under: IPv6,システム構築・運用 — hiroaki_sengoku @ 10:48
« Newer PostsOlder Posts »