unhurried

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

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

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

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

帰国時のアメリカ銀行口座(Union Bank)手続き

アメリカからの帰国時に必要な諸々の手続きについてまとめています。今回は銀行口座の手続きについてです。

  • Form W-8BENの提出
  • パシフィックリム・カンパニーベネフィット・プログラム(Pac Rim)への切り替え
    • 日本企業の海外子会社に勤務している場合は、チェッキング口座の種類をパシフィックリム・カンパニーベネフィット・プログラムに変更すると良いとのこと。
    • Ready to Go・プログラムなどの支店開設の口座よりもコールセンター(電話)でできる手続きが多くなる、もしくはプロセス(書類など)が簡単になる。
    • 口座維持手数料免除条件などは大体同じだが、その他のパシフィックリムのメリットはカリフォルニア州以外での提携ATMでの手数料が無料になること。
    • セービングス口座はチェッキング口座に紐づく形で引き続き維持できる。
  • 口座切り替えは支店もしくはコールセンターで依頼できる。
    • 切り替え後に送金用のトークンを申請する書類が届く。(トークンの申請は帰国後でも可能。)
  • 一定期間の利用がないと口座が凍結されるため、チェッキング口座からセービングス口座への毎月の自動送金を設定しておくとよい。

パシフィックリム・カンパニーベネフィット・プログラム

レギュラー・セービングス(Regular Savings)

参考

サンノゼからポートランドへのお手軽日帰り旅行

飛行機のチケットが安く取れたので、ポートランドまで日帰り旅行をしてきました。気軽に飛行機で旅行ができるのは国内線が発達しているアメリカの良いところです。

朝ゆっくり出て夕方早めに帰るというのんびりプランでしたので、有名な観光スポットを短時間で周れるように計画して行きました。日帰り旅行だけでなく、出張ついでにポートランドで暇な時間がある、という方にもご参考になるかもしれませんので、私の観光プランをご紹介します。

  • 09:09 - 10:49 フライト
  • 11:12 - 11:55 路面電車ダウンタウンへ移動
    • Portland Int'l Airport Station → Galleria/SW 10th Ave
  • 12:00 - 12:30 フードカート(Food Carts)
    • フードカートが多く集まっている場所で世界中の料理が食べられる。
  • 12:35 - 13:05 エースホテル(Ace Hotel Portland) & スタンプタウン・コーヒー(Stumptown Coffee)
    • エースホテル古いホテルをリニューアルしたデザインホテル
    • ホテルの1階にはポートランドサードウェーブコーヒーの代名詞ともいえるスタンプタウン・コーヒーがあります。
  • 13:10 - 13:40 ユニオン・ウェイ(Union Way)
    • 工芸品などを売っているお店が道沿いに集まっています。
  • 13:45 - 14:25 Powell’s City of Books
    • 増築を重ねて迷路のようになった本屋さん。
  • 14:35 - 15:05 ブードゥー・ドーナッツ(Voodoo Doughnut)
    • ブードゥー・ドール(Voodoo Doll)という人型のドーナツが定番のドーナツショップ。
    • 休日は行列ができるため、30分程度待つことを覚悟した方が良い。
  • 15:10 - 15:45 ポートランド・サタデー・マーケット(Portland Saturday Market)
    • 大規模な野外アート・クラフト・マーケット。 ライブイベントも開催される。
  • 15:53 - 16:26 路面電車で空港へ移動
    • Skidmore Fountain MAX Station → Portland Int'l Airport Station
  • 17:50 - 19:31 フライト

ReactとMaterial-UIでControlled Componentを実現する

ReactとMaterial-UIを使ってフォームを作るときにどのようにControlled Componentを実現するかで少し悩んだので、ご参考までに自分なりの解決策をご紹介します。

理想の実装方法

通常のHTMLの場合と同様に下記のように実装できると理想的です。

  • JSX
<input name="number" type="number" value={this.state.value} onChange={this.handleChange} />
handleChange(event) {
    this.setState({value: event.target.value});
}

ところがMaterial-UIのコンポーネントではいくつかの問題が発生します。

1. SelectFieldではイベントハンドラのevent.targetにMenuItemが設定される

event.targetには選択したMenuItem(実際にはMenuItemが変換されたdiv要素)が指定されます。 このため、SelectFieldのname属性に他のコンポーネントと同じようにアクセスできません。

2. イベントハンドラのコールバック関数の形式がバラバラである

コンポーネント コールバック関数の形式
TextField function(event: object, newValue: string) => void
SelectField function(event: object, key: number, payload: any) => void
DatePicker function(null: undefined, date: object) => void

3. イベントハンドラを登録する属性名がバラバラである

コンポーネント 属性名
Checkbox onCheck
RadioButton onChange
Toggle onToggle
TextField onChange
SelectFiled onChange
DatePicker onChange
TimePicker onChange

4. id属性もしくはname属性を設定しないと警告メッセージが表示されるコンポーネントがある

RadioButton、TextField、Timepickerにid属性もしくはname属性を設定しないと下記の警告メッセージが表示されます。

Warning: Material-UI: We don't have enough information to build a robust unique id for the TextField component. Please provide an id or a name.

これは既知のバグのようで、現在のところは特に設定する理由がなくても属性を設定しておくのが良さそうです。

参考:https://github.com/callemall/material-ui/issues/4659

解決策

色々と悩んだ結果、イベントハンドラで直接stateを変更するのではなく、フォームの名前を渡してstateを変更する関数を返す、という実装で上記の問題を回避しました。

  • JSX
<TextField
    name="tf" 
    value={this.state.tf} 
    onChange={this.handleChange('tf')}
/>
handleChange(name) {
    var _this = this;
    return function(event, a, b) {
        if(typeof b === 'undefined') {
            _this.setState({[name]: a});
        } else {
            _this.setState({[name]: b});
        }
    }
}