unhurried

コンピュータ関連ネタがほとんど、ときどき趣味も…

アメリカから日本への郵便転送

アメリカから日本に帰国する際の行った諸々の手続きについてまとめています。今回は郵便の転送手続きについてご紹介します。

アメリカから日本への郵便転送

  • アメリカから日本へ帰国する場合、アパートや家を退去する前の2週間前にUSPSへ転送依頼ができる。
  • オンラインで申請する方法($1)とPS Form 3575という申請書に記載して郵送で申請する方法がある。
    • PS Form 3575は郵便局でもらえて切手は不要なため、こちらの方法は無料で手続きができる。
  • アメリカ国外へ転送する場合はオンラインではできず、申請書を利用する必要がある。
    • ただし、申請書の転居先欄もアメリカ仕様になっているため、州(State)欄に「TOKYO, JAPAN」のように、また郵便番号も5桁のところに7桁を無理やり書き込む必要がある。
  • 申請書提出後は5営業日以内に転居前の住所に転居確認通知書(Move Validation Letter) が届く。
  • 依頼した転送処理は12ヵ月間有効となる。
参考

NOSQL DATA MODELING TECHNIQUES 要約

NoSQLについて多くの書籍や記事がありますが、実際にアプリケーションのバックエンドとして使うときに必要となる知識についてはあまり紹介されていないように思います。内容が少し抽象的ではありますが、NOSQL DATA MODELING TECHNIQUESというNoSQLでのデータモデルに関する記事を見つけたので、要約をしてみました。

概説
  • SQLとリレーショナルデータモデルはかなり昔に設計され、データベース内のデータ集計処理や並列実行性・一貫性・データ型検証に重きを置いていた。ところが、アプリケーションにはデータ集計をしなく、それなりに一貫性なども担保できるものが多くある。
  • データ集計処理、並列実行性・一貫性・データ型検証を省くことで、パフォーマンスとスケーラビリティを大幅に向上でき、これにより生まれたのがNoSQLデータベースである。
  • データモデルの進化
    • Key-Value → Ordered Key-Value → Big Table → Document (+ Full Text Search)
    • GraphデータベースはOrdered Key-Valueから派生した亜種と見なせる。
NoSQLでのデータモデル化に関する一般的な注釈
  • リレーショナルデータモデルはデータ中心にモデル化することに対して、NoSQLデータモデルはアプリケーションにアクセスパターン中心にモデル化を行う。
  • NoSQLデータモデルにはリレーショナルデータモデルよりも多くのデータ構造とアルゴリズムに関する理解が必要となる。
抽象的なテクニック

(1) 非正規化

  • データの複製を複数の場所に置くことで、全体のデータ量が増える欠点があるものの、クエリ時にアクセスするデータ量が減り、クエリの処理を単純にでき、高速化ができる。

(2) 集約

  • NoSQLは柔軟なスキーマを持つため、多対多のリレーションをドキュメントを入れ子にすることで表現したり、異なる属性を持つレコードも1つのテーブルに集約することができる。

(3) アプリケーションでの結合処理

  • NoSQLではテーブル結合処理はめったにサポートされていなく、更新が多いデータには非正規化や集約による結合処理の実現が適さない。
  • この場合は、アプリケーションでクエリ時に結合処理を行うことが適する。
一般的なモデル化テクニック

(4) アトミックな処理を行うための集約

  • NoSQLデータベースではトランザクションのサポートは限定的であるが、アトミックな処理を行う必要があるデータを1レコードに集約することで一括で更新が可能となる。

(5) 順序を持つキー

  • NoSQLデータベースには連続したIDを生成する機能を提供しているものがあり、この機能を利用することでレコードに順序を設定することができる。

(6) 次元削除

  • Geohashのような次元削減アルゴリズムを使い多次元データを1次元のカラムに格納する。

(7) インデックステーブル

  • インデックスをサポートしないシステムでは、検索対象カラム→IDというテーブルを作ることでインデックスを実現できる。
  • ただしデータ更新時にアクセスする必要があるテーブルが多くなり、一貫性の問題が発生する。

(8) 複合キーによるインデックス

  • 複数のキーを結合してインデックステーブルを作ることで、例えば2つのキーを結合した場合、1つ目のキーでの検索と、1つ目のキーと2つ目のキーでの検索ができる。

(9) 複合キーでの集約

  • 複合キーをレコードのグループ化に使うことで、グループに属するデータをインデックスを使って取得してデータを集約するという処理を実現できる。

(10) インデックスでの検索と全件探索による集約

  • データモデルというよりはデータ処理に関するパターン
  • あるカテゴリに含まれるレコードの属性を集約したいときに、インデックスを使ってレコードのIDの集合を検索した後に、そのIDの集合に対して全件探索を行う。
階層構造をモデル化するテクニック

(11) 木構造の集約

  • 木構造JSON形式などで非正規化して1レコードに格納する。
  • 木構造全体を一度で取得することは容易だが、更新や検索のコストは高い。

(12) 隣接リスト

  • グラフ構造の各ノードを隣接するノードのIDと共に1レコードに格納する。
  • 隣接ノードによるノードの検索はし易いが、大規模のグラフの探索は効率が悪い。

(13) マテリアライズド・パス

  • 木構造などで各ノードのレコードにその親子ノードを含め非正規化して格納する。
  • 木構造の一部を探索なしに取得でき、階層的なカテゴリを持つアイテムなどへの全文検索を行いたいときに便利である。

(14) 入れ子集合モデル

  • 木構造などの入れ子になっている集合データをSQLデータベースで扱うためのテクニックであるが、NoSQLにも適用できる。
  • リーフノードを配列にして格納し、ブランチノードについてリスト中の開始・終了位置のインデックスを作成する。
  • あるノードの子ノードをグラフ探索なしにできるが、更新コストが高いため静的なデータに向く。

(15) 入れ子構造の平坦化:フィールド名に数字を付ける

  • 同じフィールド名のドキュメントを入れ子にするドキュメントを1つのドキュメントに平坦化するために、フィールド名に数字を付け加える。
  • 入れ子にしているドキュメントが多い場合はフィールドでの検索条件が複雑になる。

(16) 入れ子構造の平坦化:近接クエリ

  • 同じフィールド名の子ドキュメントの値を連結することで1つのフィールドにまとめる。
  • 連結した文字列で検索することでシンプルな条件式にできる。

(17) グラフのバッチ処理

  • グラフデータベースは少数のノードへのアクセスには優れるがグラフ全体に対する処理にはスケールしない。
  • NoSQLにグラフを格納してMapReduceアルゴリズムを適用することで大規模なグラフに対する処理をスケールさせることができる。

IPv6の基本

IPv4のアドレス数不足を解消するために策定されたIPv6ですが、あまり使う機会がなかったためよく理解していませんでした。今回は基本的な仕様を整理してみました。

IPパケットの変更点

  • アドレス領域:32ビット→128ビット
  • ヘッダ:IPv4であまり使用されていなかった項目が廃止・オプションとなった。

アドレス表示記法

  • 16ビットごとに8ブロックに区切り、各ブロックを16進法で表記して「:」で連結する。
  • ブロック内の先頭から連続する0は省略できる。
  • 連続する全て0のブロックは1つだけ「::」で置き換えられる。
  • 例:1234:56::7890:abcd:ef

グローバル・ユニキャスト・アドレス割り当て

  • 形式:ISP識別部(32) ISPユーザー識別部(x) サブネットID(32-x) インターフェイスID(64)

  • サブネットID:ローカルネットワークの識別に使う。

  • ISP識別部 ISPユーザー識別部はグローバル・ルーティング・プレフィックスと呼ばれ、ISPから割り当てられるネットワークの識別子となる。

  • インターフェイスIDは各ホストで生成でき、MACアドレスから生成する方法(EUI-64)とランダムに生成する方法(RFC4941)がある。(DHCPv6や手動で設定することもできる。)

特別なアドレス

  • リンクローカル・ユニキャスト・アドレス

    • 形式:fe80::インターフェースID
    • サブネット内のIPv6制御に使う。
      • 例:ホストが最初にゲートウェイへサブネット・プレフィックスを問い合わせるときの送信元アドレスとして使う。
  • マルチキャストアドレス

    • 形式:ffで始まるアドレス

    • グループIDを指定して特定のグループ内にマルチキャストするためのアドレス。

    • IPv4でのブロードキャストを置き換える。
  • エニーキャストアドレス

    • 複数のノードに同一のアドレスを割り当てることができる。
    • エニーキャストアドレス宛てに送信されたパケットはルーティングプロトコル上最も近いノードに送信される。

IPv4との共存方法

航空会社マイレージの提携ポイントへの交換

航空会社のマイレージがある程度貯まっていたのですが、特に特典航空券を使う機会は無さそうでしたので、日常で使えるポイントへの交換について調べてみました。

ANAマイレージ

JALマイレージ

  • 提携ポイント一覧(一部抜粋)
    • Amazonギフト券
      • 10000マイル=10000円
      • 交換マイル上限なし
    • WAON
      • 10000マイル=110000円(2018/3/31までは10000マイル=110000円)
      • 同一年度に20000マイルまで(2018/3/31までは上限なし)
    • Ponta
      • 3000〜9000マイル=3000〜9000円
      • 10000マイル=10000円
      • 交換マイル上限なし
    • ファミリーマート専用プリペイドカード
      • 10000マイル=10500円
      • 交換マイル上限なし

英語資格(試験)の国内受験者数

社会人が受験する英語試験と言えばTOEICが定番ですが、その他の試験と受験者数を比較してみました。受験者数から見ると国内で戦う(日本人と競う)上では、TOEIC一択であることは明確なようです。

TOEIC

英語を母語としない者を対象とした、英語によるコミュニケーション能力を検定するための試験

  • TOEIC L&R 国内:250万人(2016年度)
  • TOEIC S&W 国内:3.2万人(2016年度)

参考:http://www.iibc-global.org/toeic/official_data.html ※ 全世界の受験者数は700万人との情報がいくつかのサイトにあるが公式データは発見できず。

TOEFL

教育機関が入学者の英語能力を判定するために作られた試験

  • 世界:72万人
  • 国内:8万人

※ 公式データは発見できず。

IELTS

TOEFL同様に教育機関が入学者の英語能力を判定するための試験と一般的な生活や仕事に関する試験がある。

  • 世界:290万人(2016年度)
  • 国内:3万7千人(2016年度)

参考:http://www.eiken.or.jp/ielts/merit/situation/

実用英語技能検定(英検)

日本国内を対象とした英語技能に関する検定試験

  • 国内:339万人(2016年度) ※ このうち小中高大学生が304万人を占め、それを除くと35万人

参考:http://www.eiken.or.jp/eiken/merit/situation/

自動車 TCO(総所有コスト)見積もりツール

Material-UIを試してみるついでに、 自動車の初期コストとランニングコストを試算するツールを開発しました。

H2O Wireless 着信転送設定

KDDIから提供される利用ガイドには記載されていませんが、以下の方法で着信を転送することができます。

不在着信のみ転送する
  • 設定:**004* + 転送先電話番号 + # に発信する。
    • 1234567890 に転送する場合:**004*1234567890#
  • 解除:#004# に発信する
全ての着信を転送する
  • 設定:**21* + 転送先電話番号 + # に発信する。
  • 解除:#21# に発信する
参考

http://www.prepaidphonenews.com/2017/07/call-forwarding-now-supported-on-all.html