バングラデシュでのiPhone6利用
今まで、バングラデシュ滞在時の連絡手段として、Nokiaのフィーチャーフォン+banglalinkの通常サイズのSIM(Mini-SIM)を使用していた。これだと電話は問題なく使えるものの、(端末の問題で)日本語テキストの送受信や、インターネットの利用が不可能であった。主な滞在地であるダッカでは、激しい渋滞により車での移動に時間がかかるため、移動中にネット接続できると仕事も暇つぶしも出来て便利(逆に、ネット接続環境が無いせいで移動中が暇)、ということから、現地携帯キャリアでのネット接続事情について調べた。
ちょうどiPhone5の縛りが無くなるタイミングだったこともあり、条件さえ整っているならSIMフリーiPhone6購入の大きな動機になる。
1.インターネット接続サービス
どのキャリアも盛んに宣伝しており、調べるまでもなくネット接続が可能であることを知っていた。
日本での売り文句は4G/LTEだが、バングラデシュでは3Gが爆速!みたいに宣伝している。
30日間有効で2GBまで使えるプランが350BDT(約500円)など、非常に安い。
2.SIMの種類
キャリアの公式サイトの記述からはどのサイズのSIMが提供されているか分からなかったため、バングラデシュ人の同僚に聞いてみた。
- 1人目
「みんな普通のSIMをカットして使ってるよ。街中でもカットしてくれるところ沢山あるから、頼んでみたら?」
・・・それでも確かに使えるんだろうが、カットの精度が悪くてSIMスロット傷ついたら嫌だな、と思いもう少し調べることにした。
- 2人目(iPhone5s利用者)
「どのキャリアもnano-SIMを提供してるよ。それとも、今すぐ自分がカットしてあげてもいいけど、どうする?」
・・・オフィシャルに提供されているならそっちの方がいいので、カットは断った。
nano-SIMを入手すればiPhone6でネット接続できそうだ、ということが分かったため、banglalinkの窓口(Gulshan1から少し南に下ったところの、banglalink本社ビル内)でSIMを交換してもらうことにした。
- 窓口の人
「nano-SIMへの交換は可能ですが、カットして使うこともできますよ。カットしましょうか?」
・・・正規の窓口でもカットを勧められるとは思わなかった。。交換の方がいいと伝え手続きを進めると、10分くらいで完了した。
入手したSIM↓

元の携帯にセットして、問題なく電話できることも確認。
これで準備は整ったので、後は帰国してiPhone6を買うだけ!
iPhone5でのau WI-Fi SPOT利用
iPhone5でのau WI-Fi SPOT利用について、2つ問題があったのでauショップに相談した。
回答をメモしておく。
1.ネット接続できない
[問題]
アクセスポイントには繋がる([設定→Wi-Fi→ネットワークを選択]で繋がっていることを確認)が、SafariやChromeなどのブラウザでWebページを表示することや、その他のアプリで通信を行うことができない。
この症状は契約当初からのもので、都内にau WI-Fi SPOTが多く存在するため逆にネットを使いづらい、という皮肉な状況になっていた。(電車移動中など、勝手にau WI-Fi SPOTに繋がって通信が切れる)
[回答]
とりあえずネットワーク設定をリセット*1してみてほしいと言われたため、リセット。
リセット完了後、ネット接続ができるようになった。
2.暗号化されていないネットワークに自動で接続される
[問題]
iPhone5で利用できるau WI-Fi SPOTのSSIDは6つあるが、そのうち3つは暗号化されていない*2。Wi-Fi設定がオンになっている場合、それらのアクセスポイントが存在すれば自動的に接続してしまう。
セキュリティに不安があるため、以下のことができないか聞いてみた。
・案A
暗号化なしの3つには自動で接続しない(もしくは完全に接続できない)よう設定する。ただし、暗号化された残り3つには接続できるようにする。
これが最も望ましい案。
・案B
au WI-Fi SPOTの全てのSSIDについて、自動で接続しない(もしくは完全に接続できない)よう設定する。
SSID毎の設定ができない場合の妥協案だが、月7GBの制限はまず越えることはないし、LTEが使える場所もかなり多いためさほど問題ない。
[回答]
案Aも案Bも不可能。
もし自動で暗号化なしSSIDに繋がってしまった場合は手動で切り替えてほしい、とのことだったが、Wi-Fiに接続する度SSIDを調べたり、WI-Fi設定を切り替えたりするなど現実的でない。WI-Fi設定をオフにするしか対策がないが、自宅でWi-Fiを使用しているため外出の度に設定の切り替えが必要で煩わしい。
この仕様はどうにかしてもらいたいものだ。使用しない自由がないとは・・・。
64bit化による構造体のアラインメントの変化?
アプリケーションをWin32からx64に移植することになり、情報収集をしていた。
移植による実行環境の変化は下記の通り。
・OS
Windows Server 2003(32bit) ---> Windows Server 2008R2(64bit)
・ビルドプラットフォーム
Visual Studio 2005 Win32 ---> Visual Studio 2010 x64
主な情報源としたMSDNやWebの他に社内の人が作成した資料もあり、その中に構造体のアラインメントが変化する、という記述があった。特に疑問も持たずに影響調査をしたが、パッキングを明示的に指定していない構造体(クラスと共用体も)は全て影響を受ける可能性がある訳で、抽出された構造体の数はとても1カ所ずつ確認しきれるような量ではない。
アラインメントについてはいったん棚上げにして他の調査をしていたが、ふとMSDNでpackを検索すると、CPUやOS、ビルドプラットフォームによってパッキングのデフォルト値が変化するような記述はない。。。しかもVS2005*1でもVS2010*2でもデフォルト値は8で同じだ。
実際にコードをビルドして試してみても同じ結果。
ということで、構造体のアラインメントについては移植による対応は不要となった。
構造体の抽出結果を確認しなくてよいことには安心したが、調査の前にMSDNを見ておけばよかった・・・。
1次資料で裏をとる&できる場合は動かして確認 を肝に銘じよう。
(追記)
アラインメントの詳しい解説:
データ型のアラインメントとは何か,なぜ必要なのか?
不思議な博多弁
ここ一年ほど、福岡出身の人たちと仕事をしている。
その人たちは普段博多弁*1を話すのですっかり博多弁にも慣れたが、
ひとつだけ今でもしっくりこない言葉がある。
それは、「〜からですね」という言い回し。
字面だけ見ると何の変哲もなく地域性も感じない言葉だが、
あるシチュエーションで聞くと気になるのだ。
博多ということでラーメン屋についての会話を例に挙げる。
(AとBは互いに丁寧語で話している。)
A:「あそこのラーメンおいしいですよね」
B:「麺もスープも妥協がないからですね」
A:「気合入ってますよね。
こないだ久しぶりに行ったんですけど、
1時間待ちでしたよ」
B:「最近また客が増えたからですね」
上の例で、Bが博多弁の人である。
わたしがBの立場であれば、
「麺もスープも妥協がないですからね」
「最近また客が増えましたからね」
というように言うだろう。
一方で、「〜から(だから)ですね」と「〜ですからね」
のどちらが使われても違和感のない以下のような例もある。
A :「最近は何で他の店に通ってるんですか?」
B1:「安いからですね」
B2:「安いですからね」
ただし、B1のほうからは「単純に理由を答えている」という印象を受け、
B2はB1と比べて「安いこと」をより強調しているような印象を受ける。
このニュアンスの違いは博多弁話者と認識を共有できるんだろうか?
こんど聞いてみよう。
そして、この唯一しっくりこない言葉がだんだんうつってきている気がする。
「〜しようと?」などのメジャーな博多弁はどれだけ使われてもうつらないんだが。
せっかくならバリバリの博多弁が使えるようになったら楽しそうなのに、と思う。
*1:生粋の博多弁かはわからないが、とにかく福岡周辺で使われている言葉。
【Ruby】ファイルにバイナリデータを書き込む
外部から取得した整数を32ビットのバイナリ形式でファイルに書く、
ということがやりたかったのだが、リファレンスを読んでも
数値から直接バイナリ配列(のString)を得る方法が見つからなかった。
そのため面倒くさいとは思いつつも複数段階を経て変換を行った(<1>)。
<1>
hex_string = sprintf("%#010x", number) #まず16進数の文字列として表す 2.step(hex_string.bytesize - 2, 2) do |index| #文字列の頭の"0x"を無視して binary_array << hex_string[index, 2].hex.chr #2文字ずつ取り出し数値に変換、 end #次に文字列型へ変換
ところが、実はArrayクラスに直接変換するメソッドpackがあることを発見。
packを使うとファイル出力と合わせても3行で終了(<2>)。
<2>
File.open(filename, 'w+b') do |file| #"N"はビッグエンディアンの file.write([number].pack("N")) #32bit符号なし整数を指定する end #テンプレート文字
数値を1つずつ変換することを考えてたので、Arrayが必要になるとは思わなかった・・・。
IntegerとかStringとかのリファレンスをなめるように読んでも見つからないはずだ。