2013/02/18

Developers Summit 2013へ参加しました

もはや毎年恒例ではありますが、今年もDeveloper Summitへ参加して来ました。

去年は、モバイルも含めてHTML5/JavaScript全開、という感じでしたが、今年は、ZuckerbergによるHTML5発言があった為でしょう、モバイルに関しては、HTML5によるWebアプリとNativeアプリとに関しての言及が多かった気がします。

今年も、昨年同様HTML系のセッションへを数多く聴講しましたが、やや自身の趣味比重を高めた結果、Ruby 2.0MobiRubyなど、Ruby色が強くなりました。

いずれのセッションも大変楽しかったのですが、中でも多くの刺激を頂いたのは、秋葉ちひろ(@tommmmy)さんの「デザインを考えるときにデザイナーが考えること~デザイナーの頭の中~」と星暁雄(@AkioHoshi)さんの「タブレット進化論」です。







どちらも普段とは異なる視点を手にすることができ、大変感謝しております。どうも有難う御座いました。

来年も現役のまま、若い方々から新鮮な刺激を頂くべく、参加できると良いな、と思っています。

2013/02/04

ソフマップのiMac買取について

ソフマップは中古パソコンの買取で有名で、Macの買取も行なっています。

特にApple Storeで購入した場合、特定日数(例えば30日)以内にソフマップで買取の申し込みをすると買取価格を増額してくれます。このサービスは期間限定ではあるのですが、定期的に開催しているようです。

私も今回のiMac買い替えに伴い、このサービスを利用してみましたので、その際の情報を記録しておきます。

買取の申し込みはWebから行います。型式などを入力すると買取上限金額を確認することができます。そのアイテムを買取カートへ入れることから手続き開始です。

商品は無料で指定日時に引き取りに来てくれます。商品の大きさによっては梱包箱を送ってもらうことが可能なようですが、今回はiMac 24inchと大柄の商品だったため、元々商品が収められていた箱をそのまま使いました。

送付する場合、商品へは、Apple Storeから送られる「商品出荷のお知らせ」メイルを印刷して同梱する必要があります。「Apple Store下取りサービス申込用紙」とともに、箱の中のわかり易い場所へ入れておくと良いでしょう。

商品が引き取られてから、3日ほどで買取査定に関するメイルが届きました。メイルには「査定結果」と「増減内訳」などが記載されています。

今回はiMac 2008年モデル/24inch/2.8GHzでしたが、その査定内容は次のとおりでした。

査定内容
MAC
==カスタマイズ==
「「メモリ」変更 2GB → 6GB」買取上限  1000円
「「HDD」変更 320GB → 1TB」買取上限  1500円
以上により買取上限 15000円から17500円に変更になります。
==状態減額==
液晶 液晶の黄ばみと内部汚れ有り -8750円
==個別増額==
AppleStore下取サービス 15%アップキャンペーン【Appleストア限定】  1320円

液晶の黄ばみは大きな減額となってしまうようです。また、増設品などは適宜増額してくれることがわかります。結果、次の結果となりました。

01 iMac Intel Core2 Duo 2.8GHz/ 24/2048/320G/SuperDrive(DVD±R DL)/AMEx/BT/iSight MB325J/A
上限金額   17500円
増減金額   -7430円
査定金額   10070円

実はこのメイルが届く以前、誤った査定結果のメイルが届きました。その内容は、上記と同じで商品構成でありながら、「OSのインストールディスクやマニュアルが欠品である」と誤って判断された内容で、大きく減額されていました。

査定内容
MAC
==カスタマイズ==
「「メモリ」変更 2GB → 6GB」買取上限  1000円
「「HDD」変更 320GB → 1TB」買取上限  1500円
以上により買取上限 15000円から17500円に変更になります。
==状態減額==
液晶 液晶の黄ばみと内部汚れ有り -8750円
==欠品減額==
「Mac OS X Install Disc(2枚)」欠品 -12250円
「Everything Mac -Macのすべて-」欠品 -270円
「かんたん日本語入力ガイド」欠品 -270円
大幅な減額が発生した為、
買取価格を 1750円とさせていただきます。
==個別増額==
AppleStore下取サービス 15%アップキャンペーン【Appleストア限定】  270円

このことから、OSのインストールディスク有無が、買取金額の中で、非常に大きな割合を占めていることがわかります。

買取を了承するか、返却を希望するかは、一ヶ月以内に返答しなければなりません。

この返答は、Webの「お問い合わせフォーム」を通じて行います。承諾する旨を連絡してから30分も経たず、メイルで連絡が届き、買取が成立したため、支払いを行う旨が書かれていました。

なお支払いは指定銀行への振込となりますが、その際、支払金額から振込み手数料が差し引かれます。手数料は、

振込先銀行が三井住友銀行の場合、合計金額が3万円未満で315円、3万円以上で525円
振込先銀行がその他の銀行の場合、合計金額が3万円未満で630円  3万円以上で840円

とのことで、買取金額が安い場合、結構な比率を占めてしまうことになりそうです。

返信をしてから、実際の入金が行われるまでは、約一週間ほどでした。

以上、買取を検討されている方の参考になればと思います。


2013/02/03

NSURLRequestのPOSTでTimeoutを機能させる

CocoaのNSURLRequestではタイムアウトを設定することができます。

NSURLRequestでは、initWithURL:cachePolicy:timeoutIntervalによるインスタンス生成時に指定可能ですし、NSMutableURLRequestでは、インスタンス生成後に変更も可能です。

但しiOS5以下の環境では、NSURLRequestインスタンスのタイムアウト値が再設定されてしまう条件が存在します。

その条件とは「インスタンスのタイムアウト値が240秒未満の場合」に「HTTPBodyを設定する」ことであり、これを行うと、タイムアウト値が240秒へ再設定されます。

NSMutableURLRequestインスタンスの場合、timeoutIntervalでタイムアウト値を最設定出来ますが、この場合にも240秒未満へ設定することはできません。

この仕様は古くからコミュニティの間で語られていますが(see:https://devforums.apple.com/message/108292/。要AppleDeveloperアカウント)、残念ながら、Appleのドキュメントへは明記されていないようです。

iOS6ではこの仕様は変更され、タイムアウト値が再設定されてしまうことはありません。ただし、iOS5環境をサポートするアプリケーションでは、アプリケーションで対応する必要があります。

対応策の一つは自身でタイマを設定し、タイムアウトになった時点でコネクションをcancelすることです。

これに基づいたライブラリ「TPTimeoutURLConnection」をgithubへ公開しました

同期通信はNSURLConnectionへのカテゴリとして実装しています。追加メソッドは、次の一つです。
+ sendSynchronousRequest:timeoutInterval:returningResponse:error:

timeoutInterval:引数へ、NSURLRequestで設定したかったタイムアウト値を指定します。例えば次のようにして使います。

ここでは、timeoutInterval:を通じて5秒のタイムアウトを設定しています。

一方非同期通信を行うには、NSURLConnectionを稼働させる際にタイマを起動し、自身が設定したdelegateの適切なメソッドでタイマの廃棄などを行わなければなりません。

そこで、先のライブラリでは雛形となるサンプル実装として、TPURLConnectionクラスと、TPURLConnectionDelegateが同梱されています。特にアプリケーション側の制約がなければ、どちらも継承して使うことが可能です。

例えば次のように利用できるでしょう。

注意すべきことは、NSURLRequestへHTTPBodyを設定した時点でtimeoutIntervalue値が変更されてしまってうことです。そのため、NSURLRequestインスタンス作成時に設定したtimeout値を、そのまま用いることはできません。

なお、このライブラリはiOS6でも動作しますが、iOS6はタイムアウトの制限が撤廃されていますので、利用する理由はありません。

iOS5系をサポートするアプリも少なくなりつつあるとは思いますが、ご意見などお待ちしております。