2012年11月10日土曜日

[Kindle]USから購入したkindleの製品保証をお願いしてみた その2

先のエントリの続きです。

新しいKindle到着

金曜の昼に電話をかけて、早くも次の週の火曜日には、kindleが到着しました。
このkindleは、既に自分のkindleとして登録されており、amazonのwebサイトでも確認するkとが出来る状態でした。

あとは、WiFiのセットアップをして、自分のライブラリの本を読み込めば、電子ブックリーダーとしてすぐ使えるようになります。

USBケーブルも新しいのがついていたので手持ちが一本増えました。

Kindleの返送

梱包

USのamazonに返送するために、まず、故障したkindleを梱包する必要があります。
故障したkindleの梱包には、発送されてきた新しいkindleの箱をそのまま用いることができました。宛名のラベルをはがして、各種バーコードのシール類をはがすことが必要です。
箱の中に故障したkindleを入れて、テープで外側に封をすれば完成です。

宛名

宛名のラベルは、amazonからのメールに記載されているリンクをWebで見ると、その中にカスタマイズされたものが表示されるので、これをプリンタで印刷、はさみで切り取れば完成です。箱に貼付けます。
同じページ内に、3枚分のバウチャーが表示されるので、これも印刷しておきます。このバウチャーには、署名と記入日を記載する必要があります。

発送

発送には、日本国内では、UPSの(及びUPSが契約している)集荷センターに持ち込むか、UPSと契約している業者に集配を頼むかの方法があるようです。
僕の場合は、近くを通りがかれる店舗があったので、MBE(Mail Box Etc)に持ち込みにしました。
店舗では、梱包されたkindleを渡し、バウチャー3枚を渡し、集配記録に名前を書き、写真入り身分証明を提示することになります。
これら一連の作業が終わった後、MBEの店舗の方がUPSに電話をされて、集配を依頼していました。

いじょうで、kindleの返送はおしまいです。

そのあと

現段階では、kindleの返金分が入金されていないので、入金されたら、金額の差分について書いてみようと考えています。



2012年10月28日日曜日

[Kindle]USから購入したkindleの製品保証をお願いしてみた

 約10ヶ月くらい前に、Amazon USから購入した第4世代のKindleが故障してしまいましたが、交換してもらえました、ということについて書きます。 今は発送待ちなので、到着後の手順はまた別エントリで取り上げます。
 この情報は、2012年10月時点でのものです。

Amazon USに電話をかけるまで

kindle故障

Amazon USから2011年末頃に購入したkindle、届いてから便利に使っていたのですが、ある日、画面の縦半分くらいから右下にかけて、待機時の画像になったまま動かないという状態になってしまいました。電源を入れ直したり、ページを移動させる操作を何パターンか繰り返しても、動く部分の画面は変わるものの、待機時の画像部分は変化しなくなっていました。
 USから買ったし保証はきっと米国内だけだろうと考えていたのですが、友人から、米国外のものでも保証に対応しているとのことを聞いたので、試しにやってみることにしました。

Amazon JPに試しに電話

Kindleストアの日本版も出たことだし、ひょっとしたら日本のAmazonでもカスタマーサポートをしているかもしれないと勝手に想像して、Amazon JPのサポートセンターの番号に問い合わせてみました。サポートの方が調べてくださった結果、現時点では、米国で購入したkindleのサポートはしていないのでUSに問い合わせてほしい、とのことでした。
(やっぱそうですよね..お手数おかけしてすみません)

Amazon USのサポートの使い方の様子を調べてみる

USに問い合わせるしかないことが分かったため、先人たちの様子をWebで調べてみることにしました。数件軽く観てみたところ、サポートに関しては良い印象悪い印象いろいろあるものの、まずは電話をかければ何とかなるようだ、というところまで分かりました。
 修理や交換の場合には、電話サポートにまわされるような仕組みになっているようです。
 このときは昼休みだったのですが、そもそもこんな時間にUSに電話をかけてよいものだろうかなどと逡巡しましたが、きっとワールドワイドな感じでサービスをしているに違いないから大丈夫だろうと考え、いざ電話をかけてみるステップに突撃してみることにしました。

Amazon USに電話をかけてみる

交換までの流れ

交換までの流れは、大きく次のようになります。

  1. Amazon USのサイトにログイン
  2. サポートのページに行き着く
  3. いくつかの質問フォームに答える
  4. 交換しかないパターンでは、連絡手段として電話が示される
  5. 自分の電話番号を入れて、少し待つとサポートから電話がかかってくる
  6. やりとり(後述)をして、交換(修理)に相当することがわかる
  7. 交換のフローに入り、少しやりとりがあって終了
  8. (後日)AmazonからKindleが届く
  9. (後日)故障したKindleをAmazonに発送する

 以降、自分の場合の手順を書いておきます。

サポートページへの辿り着き方

いろいろな方法があると思いますが、現時点では次の方法で行けます。

  1. Amazonにログイン
  2. 画面上部の「Your Account」をクリック、アカウント情報へ
  3. 次の画面の右側に、「kindle trouble shooting」のリンクがあるので、これをクリック
  4. 次の"Trouble shooting your kindle"の画面の右側に、"Contact us"のボタンがあるのでクリック

サポートページ内の進み方

1番目のステップで、"What can I help you with"で示されているデバイスの中から、対応してほしいものを選びます。自分の場合、持っているkindle 4th genのほかにもiPhone/iPad/Android/Mac用のkindleも選択肢に示されていました。ここでは、kindleをえらびます。

 2番目のステップ、"Tell us about your issue"では、まず、"Kindle device"を選びます。
 次に、"Select issue details"を聞かれるので、"problem with my Kindle"を選びます。
 次に、"Select additional details"では、"my kindle has lines on screen"を選びます。

 ここまでくると、"この症状のKindleは、交換しかありません。電話オプションを選んでください"というメッセージが出ます。
(なお、3番目のステップのほかの選択肢は、"メール"、"チャット"があります。)

 三番目のステップ、Phoneを選ぶと、画面に自分がいる場所と番号が聞かれます。
 "Japan"を選び、自分の番号を入れます。日本の国番号(+81)は不要で、日本での電話番号での先頭の0をとったものを入力していきます。
 僕の場合は、携帯からだったので、80-XXXX-XXXXという番号を入れました。
番号を入れると、「すこしあとで」「今すぐ」という選択肢が現れるので、僕の場合は「今すぐ」を選びました。
 10秒程度後に、手元の電話機に着信がありました。

電話の流れ


 電話を大きくは以下のような流れになります。
  1. 自分の名前と、Amazonのメールアカウントを言う
  2. (僕の場合は、オーダー番号は不要でした。kindleデバイス選択の時点で分かっているのでしょう)
  3. 故意に壊したとかではなく、通常の範囲内での利用での故障であることを確認する
  4. あとは交換しかないことが示される
  5. 交換については、Amazon USから交換機が送られてきて、こちらから故障機を送り返す、というステップが説明される
  6. 当該Kindleで、Kindleストアのデータは戻るけれどそれ以外は戻らないので注意して、などの注意事項が言われる
  7. 返金のステップのためにクレジットカード番号が必要なので、入れる。(クレジットカード番号入力部分は、別システムになる。)
  8. 送付先をサポートセンターに伝える
  9. 何かほかに質問ある?などを聞かれて、ない場合はこれでおしまい。

 僕の場合は、以上のステップに必要な時間は、16分程度でした。このうち、サポートセンターの中の人の処理が必要で待ちであった時間が2分程度でした。

電話に必要な英語のレベル

日常会話が不自由しないようであれば、特に難しいやりとりではないと思います。
 電話での英語会話に抵抗があるようであれば、15分程度で済むので、電話だけ友達にお願いしても良いかもしれません。

確認される事項

 通常範囲での利用であることを確認されるのは、以下のような内容でした。

  • 落としたりしていないこと
  • 水に濡らしたりしていないこと
  • 液晶面に角の圧力がかかるような状態がなかったこと


 まあ、普通の電気製品の注意事項の範囲ですね。

交換機の到着と故障機発送までの流れ

Amazon USから交換機が送られてくる→こちらから故障機を送り返す
 というのがモノの流れです。送り返しは来週になると思われるので、別エントリで。

 お金の流れについては、
 一旦キャッシュバック→新しいkIndleを購入したことになってチャージ
 ということになりそうなのですが、これも、金額等については別エントリで書きます。

クレジットカード番号入力部分

上記の、キャッシュバックとチャージのあたりの目的で、クレジットカード番号を電話で伝えることが必要になります。
 このことがサポートセンターの人から伝えられ、一旦接続先が、カード番号受付システムに切り替わります。
 受付システムの説明の後、自分のカード番号を電話機のボタンをプッシュすることで通知し、最後に"*"を押します。
 僕の場合、いきなりボタンを押し間違えてしまいましたので、途中で"*"を押して、サポートセンターの人にもう一度やりなおして頂きました。

電話おしまい

だいたいこれまでの内容で、電話は終了します。僕の場合は、電話をした次の週くらいに到着する見込みであると伝えられました。
(電話をしてから2日後の現時点で、Amazonのページを見てみると2個目のKindle、つまり故障交換用のものが登録されていました。)

 故障機到着からの話は、また別エントリに書きたいと思います。
 つづきはこちら


2012年10月14日日曜日

[TypeScript]モジュール(modules)

モジュール

クラスとインターフェースは、ソフトウェアの部品をどのように用いるかを表現することと、定義と実装とを分離することとにより、大規模なJavaScriptによるアプリケーション開発を支援します。TypeScriptは、プライベートメンバーを用いることで、設計時に、クラスの実装を隠蔽することを強制することができます。しかし、実行時には、この隠蔽は向こうです。なぜならば、JavaScriptのランタイムでは、オブジェクトのすべてのプロパティがアクセス可能だからです。
(将来のバージョンのJavaScriptではプライベートメンバーも実現されるかもしれませんが、現在のEcmascript5の環境ではプライベートメンバーはありません。)

現行のJavaScriptでは、実行時のメンバーの隠蔽を実現するための方法は、モジュール(module)パターンを利用するしかありません。モジュールパターンを利用することで、ソフトウェア部品間を自然に分離することができます。モジュールはまた、名前空間を提供することができるため、開発者は、ソフトウェア部品群がグローバルな名前空間で衝突を起こさないようにするために利用することが出来ます。

TypeScriptでモジュールを書く場合には、次のようなコードになります。
-
このとき、関数fは、exportされているため、外部から利用することができ、sは、exportされていないため、外部から利用することが出来ません。
 - -
このとき、M.sは、次のようにエラーとなります。
 エラー:
The property 's' does not exist on value of type 'M'any

 TypeScriptのコンパイラーにより出力されるJavaScriptは、次のようになります。
-  -

(つづく)


(見出しへ)

[TypeScript]クラス(Classes)

クラス

JavaScriptによる設計パターンでは、少なくとも2つのデザインパターンがあります。
モジュール(module)パターンと、クラス(class)パターンです。

モジュールパターンでは、内部の値を隠蔽するため、クロージャを利用します。

一方、クラスパターンでは、オブジェクト継承の多様なパターンの実現のため、プロトタイプ(prototype)のチェインを利用します。prototype.jsはこのような設計となっています。

まず、銀行の口座を表すクラスの例で見てみましょう。

- -
上記のTypeScriptのクラスをコンパイルすると、出力されるJavaScriptのコードは次のようになります。
- -
このクラスの使い方は、次のようになります。
- -
この預金口座に、初期値を与える場合は、TypeScriptのコンストラクタで指定することができます。 コンストラクタを導入した例は、次のようになります。
- -
上記の例を利用する場合、このようなコードになります。
- -
TypeScriptでは、このようなコンストラクター部分をより短く書くための文法があります。 以下のようなものです。
- - このとき、出力されるJavaScriptは、次のようになります。
- -

継承

TypeScriptのクラスでは、継承を使うことが出来ます。次の例は、BankAccountを継承した小切手用の口座です。
- - コンストラクタの中で、親クラス(BankAccount)のコンストラクタを呼び出しています。関数writeCheckでは、親クラスのフィールドに対して、アクセスしていることが分かります。
このCheckingAccountまでをJavaScriptに変換した結果は、次のようになります。
- -
(つづく)


(見出しへ)

[TypeScript]コンテクストに沿った型付け(Contextual Typing)

コンテクストに沿った型付け

TypeScriptでは、"ボトムアップ"形式で、型付けが行われます。例えば、次の例では、引数が2つともnumberであるため、返り値もnumberであると判定されます。

- -
返り値がnumberであるため、次の例はエラーとなります。
- -
エラー:
Cannot convert 'number' to 'string'number
- -

一般的に、この方式で型推論を行うことにより、開発者にとって見通しがつきやすい判定が行われます。
特定のケースでは、TypeScriptコンパイラは、"トップダウン"形式で引数の型を推論します(Contexual Typing)。このContexual Typingは、開発環境でのコード補完機能などで活用されます。

(つづく)


(見出しへ)

[TypeScript]構造的なサブタイピング(Structural Subtyping)

構造的なサブタイピング

TypeScriptでは、オブジェクトの型は、構造的に比較されます。

- - 上記の定義のとき、以下の例は許容されます。
getFullNameに、Name型のオブジェクトを渡すと、当然OKです。 - - また、以下のものもOKです。 - - 例2では、FriendクラスのフィールドのfirstNameとlastNameが、Nameで要求されるパラメータと一致しているため、OKとなります。 例3では、firstNameとlastNameを持つオブジェクトを渡しているためOKです。
このように、TypeScriptでは、オブジェクトの構造を比較して、型のチェックが行われます。

(つづく)

(見出しへ)

[TypeScript]オブジェクト(Object Types)

オブジェクト


TypeScriptでは、オブジェクトの振る舞いを記述することができます。
次の例では、Point関数の返り値を表現しています。
- -
 開発者は、interfaceを使って、オブジェクトのパラメータを指定することができます。Personクラスの例を見てみましょう。
 - -
 この例では、必須パラメータのlastNameが足りないため、エラーが出ます。 
Supplied parameters do not match any signature of call target: Could not apply type 'Person' to argument 1, which is of type '{ firstName: string; }'(p: Person) => string
lastNameも指定すると、エラーはなくなります。
 - -

なお、パラメータをinterfaceのものより多く指定しても、エラーとはなりません。
 - -

(つづく)


(見出しへ)