iPhone 7 Plusの後継機選び (2019年7月28日追記)

現在、メインで使っている端末は、2016年に買ったSIMフリー版の iPhone 7 Plus。いわゆる格安SIMに移行して2年縛りに影響されることなく、自分のタイミングで端末を変えるというのが当初の目的だったはず。ということで、そろそろメイン端末を変えるに当たって、考えていることを整理してみることに。

 

 

今のメイン端末でやっていること

メインで使う端末を切り替えるということは、現在メイン端末でやっていることと同じ事が新しい端末でもできる、もしくは類似した何かで代替できるという2点が最低条件になるはず。ということで、最初に今メイン端末でやっていることを挙げてみた。

交通費や少額決済(モバイルSuica)

住んでいる場所と仕事場の関係で常に同じルートで通勤するとは限らないので、モバイルSuicaに金額をチャージしながら使用している。チャージはApple Payに関連付けられたクレジットカードから。

 

やや大きい金額の決済(iD)

金額の大小と言うより、Suicaが使えない時のバックアップとしてiDを使用。QuickPayではなくiDなのはメインで使っているクレカが三井住友系だから。

 

写真

撮りためた写真が36,000枚ぐらいあり、iCloudに容量を追加して保存中。これがAppleを離れられない理由の1つ(だと思い込んでいる)。とは言え、Google PhotosやAmazon photoなどの代替サービスがあるのは承知済み。

 

音楽

Apple Musicをサブスクリプションしており、定額(月980円)で聴き放題。過去にサブスクリプション開始前に購入したものの扱いはどうなるか?あまり音楽自体は聴いていないような気もするし、Apple MusicはAndroid版があるのは知ってる。

 

語学学習データ

iBookの中に語学教材のCDを取り込んだモノが大量にAudio Bookとして残っている。 Android系にはどうやって移行すれば良いのか、今のところアイディアなし。一方で、最近の教材はCDではなくWebサイトでダウンロードできるものが増えているのも確か。それ以外にはGoogle Play MusicにMP3を保存する方法があるみたい。

 

その他アプリ系

定額を払っているもののも、そうでないものもiOS/Android両方で用意されているのは一通り確認済み。iOSだけでしか使えないアプリはなさそう。ただし、ID/Password管理についてはブログには細かく書かないけど、少し手間取るはず。

 

書き出してみると、あまり多岐にわたっているということでもなさそう。

 

後継者候補たち

というところで、メイン機後継候補を比較してみる。と言っても、サブ機に甘んじている?ものを昇格させるか、新たに何か購入するかという判断になる。一応並べて、今のところの個人的なフィーリングなどを書き残しておこうと思う。 

iPhone XS / XR

移行の手間もないし、これが一番良いのは分かっているんだけど、iPhone 7 Plusと比べたときに、新しく出来るようになった事がたくさんあるかというと、そこまでグッと来る要素がないと感じてしまうのは事実。

 

ホームボタンがなくっても、それは代替操作に慣れればいい話。顔認証は実家のiPad Proなどで使ってみて、確かに便利だけどキラーアイテムかと言われるとちょっと違う。ワイヤレス充電(これはiPhone 8から)は対応機器が我が家にはない。Appleを使う以上、Appleだけで出来る何かに期待しているのに、ほとんどはAndroidでもできてしまうんだよね。

 

一番なんだかなぁと思うのが、充電ケーブルをUSB-Cにしなかったこと。個人的にMacbook ProiPadを使っているところに、Lightningケーブルのままということは、違う種類のケーブルを持ち歩かなくちゃいけない。Appleらしくないと思ってしまう。仮にUSB-Cにしてくれていたら、何の躊躇もなくiPhoneを選んでいたと思う。(少々高くてもね)

 

ということで、自分の中で新しいiPhoneを買うという選択肢は現時点で消えました。

 

HUAWEI P30

HUAWEI P30 ブリージングクリスタル SIMフリースマートフォン 【日本正規代理店品】

HUAWEI P30 ブリージングクリスタル SIMフリースマートフォン 【日本正規代理店品】

 

当ブログ初登場のP30。以前P10 Proを持っていたこともあり、HUAWEIの端末は中華系だからという偏見なく、純粋な気持ちで使っている。極狭ベゼルにホームボタンも気持ちよく取っ払った今っぽいデザイン。それでも画面での指紋認証だけでなく全面カメラを使った顔認証も出来る。

 

あとはデュアルSIMが使えるのも良い感じ。eSIMではなくnanoSIMが2枚入るので、海外使いとかでも良いし、バックアップで1回線だけ残しているDocomo SIMに、IIJのデータSIMという組み合わせで使ってもコスト節約になる。ん?ここまで書いて、自分にとってはサブ機用途向けだな。と気づいてしまった。

 

惜しむらくは、Mobile Suicaや電子決済系に対応出来ていないので、オートチャージ付きのPASMOをケースの内側に隠し入れておくみたいなことを考えないと行けない。手帳タイプのケースは個人的にはダサくて嫌いなので、もう少し良い感じのケースが出てくるといいんだけどね。オートチャージを使うにしても、それが機能するのは関東圏で電車に乗ったときだけ。電車に乗らない時は現金でチャージというのも、少し物足りないかなと思ってしまう。

 

(2019/7/24追記)

手帳型のケースは、ちょっとねと思っていたら、こんなものを発見。  

写真では、iPhoneになっているけど、3M的な両面テープでケースに貼り付けるタイプなので、それ以外での端末でもOK。また、シリコンケースには貼り付きにくいという注意書きがあったものの、Huawei純正のシリコンカバーには問題なく貼り付くことを確認済み。ちなみに、P30もカードの読み取り自体はできるので、カードリーダーアプリを入れて、それをMoneyForwardに連携すれば モバイルSuicaとほぼ同じようなことができそう。ただ、カードの読取り部が端末の先端部分にあるので、カードをケースから取り出してかざす、というような作業は必要。

(2019/7/24追記ここまで)

(2019/7/29追記その1)

Docomoなどのキャリア紐付きで買えるP30 ProならFelicaが搭載されている事を確認。自分の場合は、このタイミングでキャリア紐付き端末を買う選択肢はないけど、今は5ヶ月経つとSIMロック解除できるので、考え方によってはアリかも。ただし、ProはDual SIM対応していないんだって。SIMスロットの2つ目をメモリカード専用にしていると想像。

(2019/7/29追記その1 ここまで)

Google Pixel3 

以前、このブログにも登場してきたよね。 はい、現サブ機でございます。やりたいことで考えたときに、iPhone以外で最もカバーできるのがこの機種。唯一できないのが、iD決済には対応していなくてQuickPayしか使えないこと。JCB系のカードを全く持っていない訳ではないので、どうしても使いたくなるということであればなんとかなるかなということで、現時点ではPixel3を後継のメイン機に据えるのが一番良いのかなと思っています。

 

(2019/7/29追記 その2)

やっとGoogle PayがiD対応になったとのこと。

id-credit.com

ただし対応カードを見てみると、三井住友の場合はSMBCデビットカードのみが対象とのことで、少々拍子抜け。クレジットカードに紐付けてマイル溜めている人には、ちょっと微妙だよね。とはいえ、選択肢が増えたのは良いこと。

(2019/7/29追記 その2 ここまで)

 

これを数週間後に見返したときに、どう思うかな?あっさり新しいiPhoneを買っていたなんてTwitterで呟いていても許して下さいね(笑)。

 

 

「オブジェクト指向のこころ」が良い

この手の本に付箋貼りながら読むなんてことは滅多にないんですが、宣伝でも何でもなく、久しぶりに腹落ち感が半端ない本に出会った感じがします。

f:id:deutschina:20190609215839j:image

 

何で今更?

このブログでは仕事の話はしないことにしているのですが、今回は少しだけ。自分のいる業界は、IT業界といっても、エンタープライズ寄り。かなり技術的なポジションではあるものの、SIerどっぷりという訳ではなく、少し客観的に見られる立場という意味で少し特殊ではあります。

 

そんな中、プログラムの開発とかデータモデリングの話をSIerの子と話していると、自分より一回り以上若い子(と言っても10年選手)が、やけに古臭い手法を持ち出そうとする。すると正真正銘のおじさん(=自分)に「そのソリューションいつの時代のよ?加齢臭がする」とイジられて苦笑いなんて事がちょくちょく。普通はおじさんが若い子に同じことを影で言われるんだろうけど、何故だか逆のことが起きてる。

 

ホントは世代問題ではなく

現状、おじさんが若い子の中にいるので、敢えてネタっぽく自分も世代間問題のように言っているものの実際は情報の非対称性の問題なんだよね。

 

自分は相対的に新しい情報を手に入れやすい立場であり、何やかんや言っても、それを試す機会もそれなりにある。一方で今SIerで脂が乗っていると言われている世代は、日頃の仕事に忙殺されてキャッチアップも遅れ気味。迫り来る期限と戦いながらとなると「前例がある」が免罪符となって(内心はこのままじゃいけない気がすると頭の片隅に思いつつも)古臭い手法で乗り切ろうとする。

 

エンタープライズ向けIT業界の場合、新しい技術はどうしても遅れ気味でやってくるのと、ユーザー企業の業務の継続という意味で、古いやり方でも動くように互換性が担保されているのが普通なので、これで何とかなっているんだけど、とは言えね…と思う今日この頃。

 

その最たるものが

オブジェクト指向どころか時代は関数型でしょという声も聞こえて来そうですが、エンタープライズIT界隈では、オブジェクト指向以前の手続き型プログラミングがまだ根強く蔓延っている訳です。

 

でも、オブジェクト指向の考え方は10年以上前にエコシステムの中に取り込まれていて、エンタープライズ系の某大手の技術文書なんかを読むと手続き型の書き方はdeprecatedだって書いてあるんだけどね。それでもオールドファッションがまかり通る理由はいくつかあって、思いつくまま挙げてみるとこんな感じかな。

 

  • とりあえず手続き型でも動いちゃう
  • そもそもdeprecatedだということを知らない。というより英語の情報はガン無視を決め込む
  • 業界特有の成果物のフォーマットがオブジェクト指向に合わない切り口になってる
  • オブジェクト指向的な作り方をした事がないので、どうしたらいいか分からない

 

いかん。何かをdisる感が滲み出て来てしまった(笑)

 

俺は伝道師になる?

となると、このエンタープライズIT界隈でも、もうちょっとオブジェクト指向を取り入れていこうよと思った時に、新しい考え方をまず自分が熟知しておかねばという事で、先日手に取ったのがこの本な訳なんです。

 

これで本質を押さえて伝道師になるづらぐらいの感じで読み進めたら、目から鱗落ちまくりで、自分が今まで書いたプログラムを大急ぎで書き換えたくなるくらいの衝撃を受けているところでございます。

 

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

 

 

この本は、多少Javaのコードも出てくるものの、概念の説明が中心。自分が仕事で使うのは、Javaではないエンタープライズ界隈独特の某言語なので、それを脳内に置き換えながら読み進めていくうちに、最初の写真のように付箋だらけになってしまったと。徐々に身の回りで伝道師的活動もしていこうと思っております。

 

ところで、SIerも超若手くんに話を聞くと、Javaだったりオブジェクト指向言語を学生時代や研修とかでやっているらしいので、そういう子は古臭いやり方はそのままスキップして、ネイティブオブジェクト指向で行ってくれればいいのにね。

 

PASMOオートチャージの有効期限更新

最近はApple payにSuica連携してしまって、個人的には、あまり出番がないPASMOオートチャージ機能。このために某私鉄のクレジットカードまで作ったんだけどね…

 

オートチャージには期限があった

 

そんな、存在すら忘れかけていた、つい先日のこと、こんなハガキを受け取りました。

 

f:id:deutschina:20190504105631j:image

 

オートチャージの期限が2018年12月で切れている?それをなぜ2019年4月に送ってくるの???と状況を理解するのに数分かかったものの、つまりこういうことのようです。

 

オートチャージに使っているクレジットカードが昨年末で有効期限を迎えており、新しいカードを送ったはず。その時にオートチャージの更新の案内を送ったはずだが、音沙汰ないから連絡したんだけど。半年以内に手続きしないと、オートチャージ機能そのものが無効になるよ」という善意あるお知らせだった模様。

 

そんなお知らせ覚えてないわ!と思いつつ、某私鉄の駅窓口なら、このハガキだけで手続きできるとのことで、窓口のありそうな大きめの駅で、駅員さんに更新の申し出をしてみました。

 

実はハガキすら不要だった

 

駅員さんは、ハガキの内容を確認するまでもなく、券売機のところに連れて行ってくれました。券売機にPASMOを入れると、オートチャージの更新というメニューから、オートチャージの期限の更新だけでなく、チャージの条件(残高が特定金額以下になったら、いくらチャージするか)などを確認してOKを押すだけで手続き完了。これで、今のクレジットカードの有効期限である4年後の年末までオートチャージの恩恵を受けることができるようになりました。

 

とは言え、4年後の電車やバスの乗り方はまた大きく変わっているかもしれませんね。

 

 

 

 

Azure Notebookを試してみた

機械学習をどこでやってますか?

これまでの機械学習本では、自分のローカルマシンに環境を構築してやっていたけど、ローカルでやるということは、使うマシンごとに環境を構築してというのが意外に面倒になるような気がしていました。一方で、先日やっと完走したGoogle Cloudの機械学習のコースでは、それとは逆にすべてをクラウド側に置くというやり方になっており、ある程度大きなモノを扱う場合は、こっちなんだろうなとアタマで理解したものの、GCPのデータラボの立ち上げにあれだけ時間が掛かってしまうと、これは手軽ではないなというのと、GCPのフリートライアル期間1年が終了してしまったので、どうしたもんかなと思っていたところに、丁度良さげな環境を見つけました。
notebooks.azure.com
これです。それを早速試してみたというおはなしです。

Try it now!

試すだけタダということで、早速やってみました。自分の場合、Microsoft Accoutを持っていたので、それに紐付けて自分の環境をサクッと作ってしまいました。

f:id:deutschina:20190504152645p:plain
Azure Notebook の最初の画面

お試しの中には、いくつかサンプルが入っているので、ひとまずComparing Machine Learning Modelsといういかにもそれっぽいものを選んでみることにしましょう。

f:id:deutschina:20190504154119p:plain
適当なサンプルを見てみよう

Githubと同じようにCloneボタンがあるので、自分の環境に持ってきて弄ってみれば良さそうです。

f:id:deutschina:20190504154150p:plain
クローン

適当なプロジェクト名を付けてクローンします。

f:id:deutschina:20190504154226p:plain
自分の環境へ

クローンしてきたものの1つを開いてみましょう。

f:id:deutschina:20190504154243p:plain
見たことある画面が。。。

ここまで来れば、もう見慣れたもんですね。

f:id:deutschina:20190504154918p:plain
ノートの画面

気になるところは?

サクッと触ってみた限りでは、GCPのデータラボより手軽に使えるし、これまでローカルで動かしていたものより、少しだけモッサリしている感もなくはないですが許容範囲ですね。ちなみに、Anacondaに入っているものは一通り入っているとのことで、環境構築に時間を取ることもなさそうです。

気になるお値段については、FAQのところにこう書いてあります。

Is it really free? What's a catch?
Currently the service itself is free. This may change in the future, but we hope to always have a free tier available.

いつかは有料になるかも知れないけど、それでも無料プランを用意するつもりとのこと。

ということで、普通に使う限りにおいては、こちらを使おうかなという気になっています。

Apple iPad?Pro (12.9インチ, Wi-Fi, 256GB) - シルバー

Apple iPad?Pro (12.9インチ, Wi-Fi, 256GB) - シルバー

機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践 (オライリー・ジャパン)

機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践 (オライリー・ジャパン)

無邪気にPythonを3.7に上げたらTensorflowが使えなくなった問題

タイトルの通りで、Python 3.7(Anaconda)をアップグレードしたら、TensorFlowが使えなくなった、いや正確に言うとTensorFlowのインストールが出来なくなったという問題の顛末を書いておきます。ちなみに使っている環境はMac OS X Mojaveです。

pip install tensorflow

だとエラーになるので、代わりに

pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.12.0-py3-none-any.whl

とやると、インストールは出来ました。正式リリースがいつ出るんじゃい?というのが半年ぐらい続いているようなので、本当はPythonを勢いで上げずに3.6でもう少しとどまっているのが正解だと思います。

一応、フルのログを残しておきます。

$ pip --version
pip 18.1 from /Users/xxxxxx/anaconda3/lib/python3.7/site-packages/pip (python 3.7)
$ python --version
Python 3.7.1
$ pip install tensorflow
Collecting tensorflow
  Could not find a version that satisfies the requirement tensorflow (from versions: )
No matching distribution found for tensorflow
$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.12.0-py3-none-any.whl
Collecting tensorflow==1.12.0 from https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.12.0-py3-none-any.whl
  Downloading https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.12.0-py3-none-any.whl (62.0MB)
    100% |████████████████████████████████| 62.0MB 376kB/s 
Collecting keras-applications>=1.0.6 (from tensorflow==1.12.0)
  Downloading https://files.pythonhosted.org/packages/90/85/64c82949765cfb246bbdaf5aca2d55f400f792655927a017710a78445def/Keras_Applications-1.0.7-py2.py3-none-any.whl (51kB)
    100% |████████████████████████████████| 61kB 7.7MB/s 
Collecting keras-preprocessing>=1.0.5 (from tensorflow==1.12.0)
  Downloading https://files.pythonhosted.org/packages/14/8d/443591dd9f42cdde966a14ea2d59e7a781b77a8f09652288af61bec93b81/Keras_Preprocessing-1.0.8-py2.py3-none-any.whl (59kB)
    100% |████████████████████████████████| 61kB 10.9MB/s 
Requirement already satisfied, skipping upgrade: wheel>=0.26 in ./anaconda3/lib/python3.7/site-packages (from tensorflow==1.12.0) (0.32.3)
Collecting grpcio>=1.8.6 (from tensorflow==1.12.0)
  Downloading https://files.pythonhosted.org/packages/cd/9d/e707b8a041171ca436c066a544f59a090a700c6742f323a074fc5989297f/grpcio-1.18.0-cp37-cp37m-macosx_10_9_x86_64.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 12.5MB/s 
Requirement already satisfied, skipping upgrade: numpy>=1.13.3 in ./anaconda3/lib/python3.7/site-packages (from tensorflow==1.12.0) (1.15.4)
Collecting tensorboard<1.13.0,>=1.12.0 (from tensorflow==1.12.0)
  Downloading https://files.pythonhosted.org/packages/07/53/8d32ce9471c18f8d99028b7cef2e5b39ea8765bd7ef250ca05b490880971/tensorboard-1.12.2-py3-none-any.whl (3.0MB)
    100% |████████████████████████████████| 3.1MB 6.3MB/s 
Collecting protobuf>=3.6.1 (from tensorflow==1.12.0)
  Downloading https://files.pythonhosted.org/packages/18/e7/785830a65d1f1faba7dccfa8314f7afded1db8cc2860218226ba4b3f6150/protobuf-3.6.1-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (1.2MB)
    100% |████████████████████████████████| 1.2MB 13.3MB/s 
Collecting gast>=0.2.0 (from tensorflow==1.12.0)
  Downloading https://files.pythonhosted.org/packages/4e/35/11749bf99b2d4e3cceb4d55ca22590b0d7c2c62b9de38ac4a4a7f4687421/gast-0.2.2.tar.gz
Collecting termcolor>=1.1.0 (from tensorflow==1.12.0)
  Using cached https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz
Collecting astor>=0.6.0 (from tensorflow==1.12.0)
  Using cached https://files.pythonhosted.org/packages/35/6b/11530768cac581a12952a2aad00e1526b89d242d0b9f59534ef6e6a1752f/astor-0.7.1-py2.py3-none-any.whl
Collecting absl-py>=0.1.6 (from tensorflow==1.12.0)
  Downloading https://files.pythonhosted.org/packages/31/bc/ab68120d1d89ae23b694a55fe2aece2f91194313b71f9b05a80b32d3c24b/absl-py-0.7.0.tar.gz (96kB)
    100% |████████████████████████████████| 102kB 16.6MB/s 
Requirement already satisfied, skipping upgrade: six>=1.10.0 in ./anaconda3/lib/python3.7/site-packages (from tensorflow==1.12.0) (1.12.0)
Requirement already satisfied, skipping upgrade: h5py in ./anaconda3/lib/python3.7/site-packages (from keras-applications>=1.0.6->tensorflow==1.12.0) (2.8.0)
Collecting markdown>=2.6.8 (from tensorboard<1.13.0,>=1.12.0->tensorflow==1.12.0)
  Downloading https://files.pythonhosted.org/packages/7a/6b/5600647404ba15545ec37d2f7f58844d690baf2f81f3a60b862e48f29287/Markdown-3.0.1-py2.py3-none-any.whl (89kB)
    100% |████████████████████████████████| 92kB 18.0MB/s 
Requirement already satisfied, skipping upgrade: werkzeug>=0.11.10 in ./anaconda3/lib/python3.7/site-packages (from tensorboard<1.13.0,>=1.12.0->tensorflow==1.12.0) (0.14.1)
Requirement already satisfied, skipping upgrade: setuptools in ./anaconda3/lib/python3.7/site-packages (from protobuf>=3.6.1->tensorflow==1.12.0) (40.6.3)
Building wheels for collected packages: gast, termcolor, absl-py
  Running setup.py bdist_wheel for gast ... done
  Stored in directory: /Users/ken/Library/Caches/pip/wheels/5c/2e/7e/a1d4d4fcebe6c381f378ce7743a3ced3699feb89bcfbdadadd
  Running setup.py bdist_wheel for termcolor ... done
  Stored in directory: /Users/ken/Library/Caches/pip/wheels/7c/06/54/bc84598ba1daf8f970247f550b175aaaee85f68b4b0c5ab2c6
  Running setup.py bdist_wheel for absl-py ... done
  Stored in directory: /Users/ken/Library/Caches/pip/wheels/90/db/f8/2c3101f72ef1ad434e4662853174126ce30201a3e163dcbeca
Successfully built gast termcolor absl-py
Installing collected packages: keras-applications, keras-preprocessing, grpcio, markdown, protobuf, tensorboard, gast, termcolor, astor, absl-py, tensorflow
Successfully installed absl-py-0.7.0 astor-0.7.1 gast-0.2.2 grpcio-1.18.0 keras-applications-1.0.7 keras-preprocessing-1.0.8 markdown-3.0.1 protobuf-3.6.1 tensorboard-1.12.2 tensorflow-1.12.0 termcolor-1.1.0
$ 

scikit-learnとTensorFlowによる実践機械学習

scikit-learnとTensorFlowによる実践機械学習

PythonとKerasによるディープラーニング

PythonとKerasによるディープラーニング