iPhone3GSとiPhone4の電話番号とデータをまるごと交換する手順
先日、2009年の10月ころに新規契約したiPhone3GSと
つい最近(2010年の7月)に新規契約したiPhone4とで
中身の電話番号とデータをまるごと交換しました。
同じようなことをやろうとしている人の参考になればと思い、手順をメモしておきます。
きっかけはこちらの記事
窓口にiPhone3GSとiPhone4の両方を持って行けば、1時間程度で3GSのSIMをマイクロSIMに「無料」にて取り替えてもらえます
http://d.hatena.ne.jp/masataka_k/20100721/1279692966
なお、おれのケースでは、USIM再発行手数料が掛かりました。(1980円、次回の電話料金の請求に合算)
電話番号を交換する
基本的には、iPhone3GSとiPhone4に挿入されているSIMカードを交換すれば、電話番号が交換できるはずです。
問題は、iPhone4のSIMカードはUSIMカードとなっていて、iPhone3GSとは物理的な互換性が無い点です。
iPhone4(USIM) -> iPhone3GS(SIM)については、変換アダプタを使って変換をすることにしました。
とくに問題なく使用できました。 http://www.amazon.co.jp/dp/B003TQVNLC/
iPhone3GS(SIM) -> iPhone4(USIM)については、SIMカードをUSIMカードとして再発行してもらうことにします。
ソフトバンクショップに行き、窓口で
「iPhone3GSの電話番号をiPhone4で使いたいので、SIMカードをUSIMカードに変更してほしい」
と伝えました。
この時点で、かなりの難色を示されました^^;
覚えている限り、以下のことを聞かれたり、脅かされたりしました
- 聞かれたこと
- iPhone4の契約状態。本人名義か。それともSIM無しか。
- 家族名義で契約しているもの、と回答
- iPhone4の電話番号についてはどうするか。
- iPhone3GSに入れて使いたい、と回答
- iPhone4の契約状態。本人名義か。それともSIM無しか。
- 脅かされたこと
おれのiPhone3GSは「iPhone for everybodyキャンペーン」で購入しています。
そのキャンペーンの契約が、いったん解除されるかもしれない。
解除された場合、9000円超の契約解除手数料がかかる、とのこと。
どうやら、単純に交換できると思っていたのだけども、思っていたほど単純ではないようです。
ただ、本当のところはどうなのかはスタッフさんも知らないらしく、
ソフトバンクのサポートに問い合わせるなどしていただきました。
その結果、今回のケースでは契約解除手数料は免除になり、
USIMカードの再発行手数料のみで大丈夫とのことになりました。
ただ、あくまで「免除」であり、iPhone3GS->iPhone4への機種変更扱いになるっぽいです。*1
手続きは大体1時間くらいかかります。スタッフさんから話を聞くところによると、
普通の携帯電話の手続きであればオンラインで即時処理ができるらしいのですが、
iPhoneの場合は不正防止等の理由でFAXでしか処理ができないことになっているらしいです。
これでSIMカード→USIMカードへの交換が完了です。
USIMカードをiPhone4に挿入、バッチリです。
本来であれば、iPhone4→iPhone3GSについても、逆の手続きが必要とのことです。(USIM->SIMの再発行)
変換アダプタでダメであれば手続きすることにしましたが、変換アダプタでうまく行っているっぽく、
特にソフトバンクショップのスタッフさんから怒られる気配も無かったですので、こちらはこのままにしておきます。
そういや、SIMは借り物だから返却するものと思っていたのですが、
「はい!」と古いSIMを手渡されました。別に返却するものではないようです。
面倒くさい事例にも関わらず、親身になって対応してくださったソフトバンクショップのスタッフさんには感謝いたします。
そして最初に対応してくださった研修生のスタッフさん、ややこしい話で、ごめんなさい^^;
データを交換する
長文つかれたので、こちらはざっとした手順と注意点だけ。
スクリーンショットなどがあればよいのですが、面倒くさいので文章だけで。
手順は以下のとおり
- 2台とも、iTunesでバックアップしておく
- iPhone4を接続、iTunesで「バックアップから復元...」にてiPhone3GSのバックアップを復元する
- iPhone3GSを接続、同様にiPhone4のバックアップを復元する
- それぞれ、WifiやE-Mailのパスワードなどの認証情報が消えているため、再認証する
こんな感じで、データが交換できます。MMSの送信ログ等も引き継いでくれます。
注意点としては
たしか、こんなところ。
今思えば、それぞれ「工場出荷の状態に戻す」してから復元するのがよかったかもしれません。
WordファイルやExcelファイルを一括でPDFに変換するRubyスクリプト
年度末ですね!年度末といえば納品の時期です。
おれが現在担当しているお客さんは資料一式をPDFで欲しいという希望なので
大量のWordファイルやExcelファイルを一括でPDFに変換したかったのですが
軽く調べてみても、有料のソフトを使う方法しか見つけることができませんでした。
というわけで、Win32OLE経由でOffice2007のPDF保存アドインを叩き、一括でWord/ExcelファイルをPDFに変換するRubyスクリプトを書いてみました。
少し調べてみた感じでは、多少の需要はありそうでしたので公開しておきます。
仕組み上、Office2007とPDF保存アドインが必要です。
必要なもの
- Office 2007
- PDF保存アドイン
- Rubyインタプリタ
Wordファイルを一括でPDFに変換する
#!ruby -Ks require "win32ole" word = WIN32OLE.new("Word.Application") begin Dir.glob("*.doc") do |fn| doc_fullpath = File.expand_path(fn) pdf_fullpath = doc_fullpath.gsub(/\.doc$/, ".pdf") begin doc = word.Documents.Open(doc_fullpath) doc.ExportAsFixedFormat({ "OutputFileName" => pdf_fullpath, "ExportFormat" => 17, "OpenAfterExport" => false }) puts "success: #{fn}" rescue puts "fail: #{fn}" ensure doc.Close end end ensure word.Quit end
Excelファイルを一括でPDFに変換する
#!ruby -Ks require "win32ole" excel = WIN32OLE.new("Excel.Application") begin Dir.glob("*.xls") do |fn| xls_fullpath = File.expand_path(fn) pdf_fullpath = xls_fullpath.gsub(/\.xls$/, ".pdf") begin book = excel.Workbooks.Open(xls_fullpath) book.ExportAsFixedFormat({ "FileName" => pdf_fullpath, "Type" => 0, "OpenAfterPublish" => false }) puts "success: #{fn}" rescue puts "fail: #{fn}" ensure book.Close end end ensure excel.Quit end
ヘッダ行つきCSV(とかTSV)を簡単に扱うライブラリを作った
Excelにて元データを作って、その元データを使って色々するツールをよく書くのだけども
ExcelVBAはめんどいし、かといってrubyを使ってExcelデータを扱うのもめんどい。
よくやるのはシートをコピーしてメモ帳に貼り付けてTSVにしてからrubyに食わせる方法だけども
各行をsplit(/\t/)で分割するだけだと、どの列にどのデータが入っているのかがよくわからなくなる。
そこでscsv(Simple CSV)というライブラリを作ってみた。
インストール
gem install gemcutter gem install scsv
基本の使い方
a.csv
名前,フリガナ,性別 佐藤,サトウ,男 田中,タナカ,女
a.rb
require "scsv" SCSV.parse("a.csv") do |row| p row end #=> {"名前" => "佐藤", "フリガナ" => "サトウ", "性別" => "男"} #=> {"名前" => "田中", "フリガナ" => "タナカ", "性別" => "女"} p SCSV.parse("a.csv") #=> [{"名前" => "佐藤", "フリガナ" => "サトウ", "性別" => "男"}, {"名前" => "田中", "フリガナ" => "タナカ", "性別" => "女"}]
オプション
SCSV.parseメソッドにはオプションを渡せます。
:header ヘッダを指定します。
- true ... ファイルの1行目をヘッダとみなします。
- 配列 ... その配列をヘッダとみなします。
- false ... ヘッダを使用しません。(ハッシュではなく、配列を返します)
デフォルトはtrueです。
SCSV.parse("a.txt", {:header => ["a", "b", "c"]}) #=> [{"a" => "名前", "b" => "フリガナ", "c" => "性別"}, {"a" => "佐藤", "b" => "サトウ", "c" => "男"}, {"a" => "田中", "b" => "タナカ", "c" => "女"}] SCSV.parse("a.txt", {:header => false}) #=> [["名前", "フリガナ", "性別"], ["佐藤", "サトウ", "男"], ["田中", "タナカ", "女"]]
:col_sep 列の区切り文字を指定します。
デフォルトは","です。
デフォルトが"\t"であるSTSVクラスも使えます。
むしろExcel使い的にはSTSVクラスのほうが使用頻度が高いかと。
a.tsv
名前\tフリガナ\t性別 佐藤\tサトウ\t男 田中\tタナカ\t女
a.rb
require "scsv" STSV.parse("a.tsv") do |row| p row end #=> {"名前" => "佐藤", "フリガナ" => "サトウ", "性別" => "男"} #=> {"名前" => "田中", "フリガナ" => "タナカ", "性別" => "女"} p STSV.parse("a.tsv") #=> [{"名前" => "佐藤", "フリガナ" => "サトウ", "性別" => "男"}, {"名前" => "田中", "フリガナ" => "タナカ", "性別" => "女"}]
制限事項など
クオートは考慮しません。
壁は乗り越えた (HTA GUI Editor)
今日は定時退社日。
このあいだの壁は乗り越えた。無理やりっぽいけども。
スクリプトから「contentEditable = true」した要素でIMEが使えない件は、「contentEditable = true」した後に「focus」してやればOKだった。
Rubyだけで起こる現象なのか、Javascriptでも起こる現象なのかは調査していない。
調べても出てこなかったところをみると、Rubyだけで起こる現象なのか。それとも誰もやってないことなんだろうか。
def elements_ondblclick(e) e.srcElement.contentEditable = true e.srcElement.focus end def elements_onfocusout(e) e.srcElement.contentEditable = false end
現状。こないだよりもちょこっとWindowsアプリっぽいくなった。
HTA GUI Editor
その結果、DBと繋がる仕事ツールもさくさく作ることができて、ますますHTAが気に入りました。
そのときにはVisual Web Developerを使って画面回りを作ったんですが
というわけで、でっちあげようとしてみました。
んだけども壁にぶつかって先に進まなくなったのでいったん日記にメモ。。。
element.offsetWidthとelement.style.pixelWidthの関係
現象は、テキストボックスを移動すると移動するたびにテキストが太る、というもの。
原因は、移動のたびにoffsetWidthの値をstyle.pixelWidthに代入し直していること。
offsetWidthはHTML要素のBorderとPaddingの値を含めた幅を取得できる、ReadOnlyなプロパティ。
一方で、style.pixelWidthはBorderとPaddingの値を含まない幅を取得・設定できるプロパティ。
んで、たぶん
offsetWidth =style.pixelWidth + ボーダー幅 + パディング幅
っていう関係が成り立つ、と思っている。参考
ここでボーダー幅とパディング幅はそれぞれ
- style.borderLeftWidth (とかborderRightWidthとか)
- style.paddingLeft (とかpaddingRightとか)
で取得できるんだけども、(少なくともHTAでは)このプロパティにはデフォルトスタイルシートの値は入っていない。
そのため、デフォルトでパディングやらボーダーやらが設定されている要素に関しては、offsetWidthとstyle.pixelWidthとの関係を定義できない。
…と、ここまで書いてふと思ったけども、もともとoffsetWidthじゃなくてpixelWidthを使えばいいんじゃないか?
あ、でもそれだとリサイズハンドルの位置がズレちゃうのか。うーん。