golangのType Assertionメモ

  • Type AssertionはC++のdynamic_cast的な機能。
  • interfaceを別の型にキャストする時に使用。
  • 2通りの受け方がある。
package main

import (
	"fmt"
	"errors"
)

type MyError struct {
	i int
}

func (e *MyError) Error() string {
	return fmt.Sprintf("i = %d", e.i)
}

func check1(e error) {
	myErr, ok := e.(*MyError)
	if ok {
		fmt.Println(myErr)
	} else {
		fmt.Println("It's not *MyError")
	}
}

func check2(e error) {
	myErr := e.(*MyError)
	if myErr != nil {
		fmt.Println(myErr)
	} else {
		fmt.Println("It's not *MyError")
	}
}

func main() {
	e100 := &MyError{100}
	e200 := errors.New("200")
	check1(e100)
	check1(e200)
	check2(e100)
	check2(e200) // panic
}

http://play.golang.org/p/MY2G3J_QPU

package main

import (
	"fmt"
	"strconv"
)

func Println(x interface{}) {
	if i, ok := x.(int); ok {
		fmt.Println(strconv.Itoa(i))
		return
	}
	if i, ok := x.(int64); ok {
		fmt.Println(strconv.FormatInt(i, 10))
		return
	}
	if _, ok := x.(string); ok {
		fmt.Println("ニヤ(・∀・)ニヤ")
		return
	}
}

func main() {
	Println(int(100))
	Println(int64(200))
	Println("300")
}

http://play.golang.org/p/Qt7EPb-4kF

安定してよく使っているiOS/Androidアプリまとめ

↓の記事見てたら、なんとなくまとめたくなってきたのでまとめ。


2014年版、2ちゃんねるでテンプレ入りしたiPhoneの神アプリ150選 : IT速報

使っている端末

仕事ではNexus5(Lollipop)、iPhone 5sも使ってます。

よく使うアプリ

カテゴライズは上記事を借用します。

2ch

してないのでアプリ必要なし。検索かはてブで行き着くことはあります。

ブラウザ

iOSは基本SafariChromeは使い勝手微妙*1だけどPCとの連携は便利。

AndroidChrome。前の端末(4.0)の時はChromeFirefoxも重かったので標準ブラウザ使ってました。

ウェブクリップ

しない。ブクマか要点をEvernoteにまとめるので十分。

メール

どちらもGmailに集約しつつあります。

もっとも、メールの処理はPCで行うことが多く、スマホで見ることはあまり無いのが実情です。

ランチャー

非使用。ホーム画面を整理する派です。横断検索も使わないですね。

ニュース

基本的にパッシブな情報収集はホッテントリだけですね。

RSS

昔使ってましたが、未読放置ばかりになるので使うのやめました。

天気防災

特になし。ウィジェットググるTwitter検索で十分。

ファイラー

同列で並べると違和感ありますが、強いてあげるならこれです*2

iOSは定番のGoodReader。とはいえほぼPDFリーダーと化してますが。PDFをクロップして読めるのが非常に良いです。

AndroidYahoo!ファイルマネージャーが割りと細かいところまで手が込んでいて良いと思います*3Yahoo!という安心感もあります。初回起動時にホーム画面にショートカット作ったりステータスバー占拠したりすることだけがネックです。

クラウド、ストレージ

Google DriveはPC非同期で大きめのファイル中心、DropboxはPC同期で小物中心という使い分けしてます。

RAS (リモートデスクトップ?)

特になし。昔はいろいろ試しましたが、結局使う機会ないというのが結論です。

お恥ずかしいことにRAS(Remote Access Service)って言葉初めて聞いたのですがVPN的なものなのですね。そういういみでは元記事のカテゴリ名はリモートデスクトップの方が正しいと思います。

ID、パスワード

KeePassに統一。kbdファイルはDropboxで共有してます*4

メモ、テキスト

基本Evernoteです。

日記

特になし。

スケジュール、ToDo、GTD

  • iOS: 標準カレンダー
  • Android: 標準カレンダー

ToDoは結局使わなくなりました。シンプルに使えればそれで十分。

電話帳

iPhone使ってないのでiOSは無し。

Androidは4.0の時は色々試しましたが、4.4ではプリインストールに落ち着きました。

アドレス送受信

特になし。

コミュニケーション

基本公式アプリしかない世界なので、テンプレもなにもないとは思いますが、普通にLineとかです。

Twitter

何故か別枠のTwitter。使用頻度低いので公式で不満無いです。

画像編集

色々入ってますが、結局PCでしか画像編集してないというのが結論。

カメラ

色々入れてはみるものの、なんだかんだで標準アプリしか使わない現実。

QR、スキャナ

iOSみたら色々入ってました。Androidはドコモのプリインのやつ使ってます。

使用頻度低いんで正直動けば何でもいいですね。

録音

特になし。強いて言うなら標準アプリ。

音楽再生

  • iOS: 標準
  • Android: 音楽プレイヤーとして使ってないので N/A

色々葛藤はありましたが*5、今は標準アプリです。

自動プレイリストやイコライザは使わない派です。

音楽検索、歌詞検索

ニーズがないので特になし。

ラジオ

色々入れたけど使った試しがないので省略。

動画

特になし。

ダウンロード

特になし。

書籍ビューア

GoodReaderは前述の通り。書籍系は最近Kindleにガバガバ。

辞書

ググる

地図

PC版Google MapsのUI、使いづらいのでなんとかして欲しいです。

ナビ、電車

Yahoo!乗換案内、文句の付け所がほぼないですね。

メモリ管理

特になし。この手のアプリをあまり信用してないということもあり。

電卓

あまり使う機会無いので何でもいいと思います。

家計簿

社会人になってお金入ってくるようになったので、検討し始めようかという所。

タイマー

標準の時計アプリで十分です。

広告除去

使ってない。

キーボード

iOSのカスタムキーボードアプリ、増えてきた印象ありますが、まだ使ってないです。

AndroidGoogle日本語入力QWERTY入力で上フリックで数字入れられるのがマジで便利です。

株式、FX

特になし。

航空機運行状況

特になし。

ネット将棋

このカテゴリは一体…。

有料制のようですが24アプリ出てたんですね。

まとめ

  • 標準アプリが多い。
  • 特になし、が多い。

アプリの使用頻度に関しても80対20の法則が成り立つ気がしていて、なるべく2割のアプリに絞ろうというのが信条です。

それが、標準アプリや特になしの増加に繋がっているのかなと思ってます。

*1:バックグラウンドのタブの挙動とか

*2:そもそもiOSでファイラ?とも思いますが。

*3:ファイルの移動とか、隠しファイルの表示とか

*4:KeePassXがkbdx未対応なので今のところkbdで統一

*5:iOS側で作ったプレイリストをiTunesでも出したい→標準アプリしか選択肢なし。しかしiOS7のプレイリスト編集機能は最悪!だったがiOS8で若干改善し一応使えるレベルに←イマココ

Kindle書籍を買ったけどダウンロード・配信できない問題と解決法

ググっても今回起きた問題と同一のものが見つからなかったのでメモしておきます。なおTwitterで検索したら数件見つかったのでごく稀に起きる現象のようです。

今回の現象

  • 12月14日0時頃、1-Clickで購入
  • 購入完了画面が出る
  • Kindle Cloud Readerで読む→試し読み版になる*1
  • 配信ボタンを押してもできませんと出る
    • Android端末はグーレアウト
    • Kindle Cloud Reader, iPod Touchの配信ボタンは押せるが、配信できませんと出る。
  • 注文の詳細・領収書は見れる
  • 注文履歴に入っている
    • 未発送の注文にも入っている*2
  • ご注文の確認メールが来ていない

特徴としては、ご注文の確認メールが来てない所になるかもしれません。

解決法

といっても大したことではなく、お問い合わせしただけです。

  1. 画面下部メニュー、右下「カスタマーサービスに連絡
  2. カスタマーサービスに連絡」ボタン
  3. お問い合わせ方法を選択: 電話、チャット、Eメールの3択
    • 夜中だったのでEメールにした
  4. 適当に埋める
    • 注文番号とかも書いておいた。

翌日

  • 3時頃にご注文の確認メールが来た様子
  • 10時頃にお知らせメールが来た

このたびは、Kindle本のご注文について、ご迷惑をおかけしていることをお詫びいたします。

12月13日から14日にかけてご注文いただいたKindle本について、注文の処理に時間がかかりダウンロードが開始されない件について、問題が修復いたしましたのでお知らせいたします。

なお、この問題が発生している間に、同じKindle本を重複してご注文いただいている場合、一方の注文をキャンセルし、返金処理を行います。返金処理が完了しだい、Eメールでお知らせいたしますので、今しばらくお待ちください。(本メールと入れ違いで、お受け取りいただいている場合はご容赦ください。)

その他、ご不明な点がございましたらご遠慮なくお問い合わせください。

どうせこんなことだろうと思い、重複注文しなくて正解でした。

Kindle配信の仕組みの推測

  1. step
    • ユーザ: 1-Clickで購入ボタンを押す。
  2. step
    • サーバ: 該当商品を購入キューに入れる。
    • ユーザ: 画面が切り替わる。
  3. step
    • サーバ: なるはやでキューが処理される。完了時にご注文の確認メール送信。
    • ユーザ: KindleReaderで書籍をダウンロード。

今までも購入後、Kindel Cloud Readerで読む時にお試し版になる現象は何度も起きていました。この原因は3rdステップのタイミングの問題と推測されます。

今回の問題は、3rdステップのサーバ側処理が何らかの原因でスタックしたことが原因ではないかと推測しています。

*1:Kindle Cloud Readerでは購入後のURLと試し読みとURLは同じ。

*2:一回ダウンロードするまではここに入ってキャンセルできる仕組みらしい。