真面目なブログはこっち 👉 blog.s64.jp

モバイルSuicaで "iPhoneをご利用の方は、iPhone以外の携帯情報端末に機種変更および再発行はできません。" というメッセージ(Android)

iPhone(Apple Pay)でSuicaを利用していたユーザがAndroidスマートフォン(Google Pay)のSuicaに機種変更手続きを試みると、以下のようなメッセージが出る:

iPhoneをご利用の方は、iPhone以外の携帯情報端末に機種変更および再発行はできません。

f:id:S64:20190318100849p:plain:w250

このメッセージはそのままの意味を指していて、iPhoneからの引き継ぎができない旨が表示されている。しかたないので新規発行となる。

なお、新規発行時に iPhone側と同じクレジットカード番号を設定しようとするとエラーになる。
よって特別な理由がない限り、iPhone側のモバイルSuicaを解約(払い戻し)することになるだろう。
払い戻しの手数料は220円 なので、ちょっと残念。下回っていれば端数分のみにできるので、ギリギリまで使ってしまおう。


つまづきポイントは上記の「同じクレカ番号を設定するとエラーになる」のところ。 モバイルSuicaの退会(払い戻し)後の再入会は、翌朝4時以降から可能になる。

  • 退会後、再入会される場合は、以下の制限があります
    • 携帯情報端末からの退会の場合:退会完了の翌日以降 4:00~2:00
      (定期券をモバイルSuicaへ切替える場合は、5:00~0:50)
    • パソコンから退会の場合:退会完了の翌日 7:00以降
    • 申請フォームから退会の場合:退会完了メール配信後(申請から2~3日後)

https://www.jreast.co.jp/mobilesuica/procedure/secession/

すなわち、iPhoneで払い戻しを行って即Android側のモバイルSuicaで登録しようとすると(同じクレカ番号で設定しようとすると)エラーになるのである。
おとなしく朝まで待とう。

IT関連職のフリーランスは会社員の上位互換なのか

先日、担当しているある生徒からこんな質問が届いた。

f:id:S64:20190129234210j:plain

曰く、この生徒が志願する業界には所謂 "ブラックな労働環境" が蔓延しており、その中から健全な環境を引き当てるか、経験を積んで独立する道があるのだという。

f:id:S64:20190129234618j:plain

f:id:S64:20190129234705j:plain

話を聞く内に、フリーランスは会社員からのステップアップである、という認識を持っているように感じた。
あくまでこれは私個人の見解でしかないが、必ずしもそうではないと考えている。

そもそもフリーランスとはどのような働き方なのか、会社員とはどう違うのか、という部分の認識は曖昧な場合が多い。
私はフリーランス歴だけでなく 業界歴、もっと言えば社会人歴すらも浅いが、今の自分が思っていることを吐き出してみる。

IT関連技術職へ進むには

この生徒の志願する業界は、私と同様にIT関連の技術職だ。
これらの業種へ進む場合、経路としては、

  • 高等専門学校(いわゆる高専), 専門学校, 大学 などへの進学
  • 各種学校、スクール等への通学

などがイメージされやすい。特に近年のソフトウェアエンジニアの台頭により、後者からの就職はかなりの割合を占めるようになった。
中にはとても優秀な学生を輩出し続ける教育機関も当然存在し、ある学校の出身者ばかりの企業も少なくない。

IT関連という枠はかなり広いくくりなので、各業種へ細分化すると全く異なる事情がある。
ただし共通することとして、必ずしも品質の高い教育が受けられるとは限らないのが現状だ。
私も教育者の端くれながらに できるだけ実態に即したカリキュラムを目指しているが、これだけの期間続けても尚 やはり多くの障壁があり難しい、というのが正直な感想である。

そんな私はどのようにこの業界に入ったかというと、一切ITに関連する教育を受けておらず、完全に独学である。
もともと発達に多少の偏りがあった為に 学校へあまり行かず、自宅でコンピュータを触っているか病院に居るか、という生活をしていて、その後 通信制高校に在学中、あるスタートアップ企業でインターンとしてジョインしたのがきっかけで業界に入る、というパターンだ。

ITは教育できない学問なのか

この項は記事の本題からズレてしまうので深くは追わないが、比較的新しい分野であること、技術の陳腐化が早いこと、要求される範囲が広く短期間で一様に習得する方法が確立されていないこと、学問と実務で大幅に抽象度が異なること、などさまざまな課題が複雑に絡んでいる。

少なくとも言えることは、進学を考える際には 自分が学びたいことが何かを明確にすべきであるということ。
職業訓練校としての教育を求めているなら、それに適切な実務能力を育成する学校が存在する。もしコンピュータサイエンスや理論を学びたいなら、それ相応の学校があるだろう。

組織に属するということ

これはスタートアップ企業で特に顕著に見られる傾向だが、IT関連技術職には、新卒 = 未経験者に対して要求される能力すらも とてつもなく高い場合がある。
が、当然ながら 現実にそれら企業の要求する能力に達した状態で社会人になる人間はほんの一握りである。

そもそも新卒採用をする理由は

  • 低コストな労働力の確保
  • 帰属意識の高い社員の獲得

などが存在し、よほど余剰リソースがない限り、本音を言えば新卒社員への教育なんてしている場合ではないのである。

では会社員になるメリットは何かというと、要は守られるのである。

  • 会社都合で解雇するのは難しく、そう簡単に解雇されることはない
    • 万一能力に不足があっても、支援等を受けて見合った業務を続けられる可能性が高い
  • 安定して給与が支給される
  • 社会的信用が高く、ローン等の金融商品を簡単に契約できる

この企業と求職者間のギャップと前述した職業能力育成の難しさが相まって、結果「放っといても育つ人材」だけが重宝されている現場は少なくない。

高い成果を出し続ける人々

そして驚くことに「放っといても育つ人材」というのは実在している。

彼 / 彼女 らは高い職業能力を持っているが、本質はそこではないと感じている。多くに共通している特徴は、

  • 経験に裏打ちされた基礎を持っている
    • 大半が大学教育を経ており、さらにそれらの知識を実践を通して強固なものにしている
  • 何事からも面白さを見つける能力に長けている
  • モチベーションコントロールが上手いか、モチベーション高く取り組めることのみに集中している
  • 自身の作りたいもの、実現したいことがある

などが挙げられるだろう。まさに願ったり叶ったりだ。
こういった能力を持った人物は、社会人になる以前から 何かしらの創作活動をしていることが多い印象を持っている。

ではそんな、いわば自律している 彼 / 彼女 らにとって、社員として組織に属するメリットはどの程度あるだろうか?
必要に応じて学習ができるため、給与を下げられてまで支援を受ける必要はない。日々十分に業務をこなし成果を出しているため、もともと収入は安定が見込める。
となると、同じ会社内の限られた領域で得られる知識に満足できるだろうか?毎日のように同じオフィスへ通いたいだろうか?

すなわち、フリーランス、個人事業主としての素質が高いのである。

フリーランスの働き方

彼 / 彼女 らがフリーランスとしての素質が高い理由は、その要求される能力にある。

  • 企業同士の取引に当たるため、指揮命令ができない
    • よって、会社側の課題をヒアリングし、それに対する提案を自らしなければならない
  • 人件費ではなく外注費であるため、個別に教育するためのコストはほぼ発生し得ない
    • 要はコストの圧縮を図りたい企業における選択肢なのである

企業が社員に対してしばしば行わざるを得ない様々な行為が不要になるのだ。

フリーランスの働き方の実態は、たとえばソフトウェアエンジニアの場合以下のようなものが大半だ:

  • SES
    • いわばセルフ派遣といったところか。客先オフィスへ出向き、ソフトウェア開発能力とその労働力、時間を提供するもの。
    • 自宅でのリモート作業もままある
    • おそらく、かなりの割合がこれ
  • 受託開発・納品
    • 顧客からヒアリングした内容をもとに製品を提案・開発し、期限内に納品するもの。
    • 多くの人がイメージするフリーランスはこっちかと

実を言うと フリーランスという肩書を持ちながらも、会社員と同じように日々客先の事務所へ通い業務をこなしているケースはかなり多い。
そのような形態で仕事をしているフリーランスが 会社員と異なる点があるとしたら、

  • 自身で仕事を選ぶことができる
    • 会社員の場合、原則指揮命令に従うことが求められる
  • 働く日数や期間をコントロールすることができる
  • 突然仕事がなくなる場合がある
  • 自身で提案・決定することができなければ、仕事を失うことになる

くらいだろうか。

フリーランスは会社員の上位互換ではない

会社員とフリーランスの関係はどちらが上位だとか下位だとかではないと考えている。
理由はごくシンプルに、その人物の適正に依存する部分が多いためだ。

フリーランスはしばしば「好きなことを仕事にしている」と言われがちだが、顧客相手の商売である限りは 会社員と大差ないことがわかる。
では何故それでもフリーランスの人間が「それなりに好きなことをしている」と言いがちというと、ここまで述べたとおり「物事 = 受託した仕事 の中から、何かしら自分にとっての面白さを見つけることができる」人物が多いからだ。

ではその能力はフリーランスだけのものだろうか?いや、会社員でも当然に持つことができ、日々の業務に活用できる能力だ。

実態としてソフトウェアエンジニアの現場では、フリーランス適正の高い人材が強く求められた結果、能力の高い人材が いわばフリーエージェント状態になっている。
著名なソフトウェアエンジニアが業界内で頻繁に転職を繰り返しており、会社員でありながら個人そのものに高いブランド価値が着いているのだ。

そしてフリーランスというのは、しばしば弱い立場になりがちである。あくまで企業にとってはゲスト、外注業者でしかなく、コアな意思決定や事業領域(ドメイン部分)に関わる業務には携われない場合が多く、状況が変われば不要になる、交換可能な部品である場合が多いのだ。
そしてそれは効率の良い正しい経営判断によって発生するものであり、我々は自らその市場を選んでいるのである。

自分の適正は何か、何を身につけるか

盲目的にフリーランスを目指したり、逆に難しそうだという理由だけで会社員のままでいるのは必ずしも正しいとは言えない。
重要なのは、自身はどのような働き方に適正があるか、または目指す先に必要な能力は何かを見極める力だと思う。

とはいえまあ、過酷な労働環境から抜け出すための独立、という選択肢はアリだ。
その日までに、学生の内からトレーニングできることはなんだろうか。

なお、この吐き出し記事に着地点はないです。

苦しんで実現するホームオートメーション、の台本

VOYAGE GROUPさんのLT大会「システムライトニングトーク!」で「苦しんで実現するホームオートメーション - あるいは、HTTP経由でHIDを操作する話」というタイトルで出させてもらえることになったので、それの台本。

LTにしてはけっこう長い内容になってしまったので、話し切れなかった時にお蔵入りさせないための保険でもあります。

苦しんで実現するホームオートメーション 

「苦しんで実現するホームオートメーション - あるいは、HTTP経由でHIDを操作する話」というタイトルでお話します。よろしくおねがいします。中盤のブレイクタイム感覚で気楽にお聞きいただければと思います。 

自宅の紹介

f:id:S64:20190124211201p:plain

今回は交流会とのことでしたので、趣味の話として まずは自宅の紹介します。

Slack経由でオートロックが開く

f:id:S64:20190124211300p:plain

うちなんですけど、Slack経由でオートロックが解錠できるようになってます。こちらデモ動画ですね。

ほかにも エアコンとか照明とかカーテンとか、いろいろ繋げてあります。

自己紹介

f:id:S64:20190124211420p:plain

申し遅れましたが自己紹介しますと、私 吉岡と申します。

現在フリーランスでして、fluctさんでAndroid向け広告SDK開発のお手伝いさせてもらったり、あと高校でプログラミングの授業をやらせてもらってます。

テレビをSlackから操作しようとした話

f:id:S64:20190124211440p:plain

んで今回なんですけど、テレビをSlack経由で操作したかったんですよね。

なぜSlack経由で操作したい?

f:id:S64:20190124211502p:plain

なぜかって話をすると、まあ朝起きたらテレビ点ければ時間もわかるし いい目覚ましなるじゃないですか。あとは外出時にも気兼ねなく一括消灯とか。

んでそれをSlack経由にすれば、ジョブの管理が集約できるし、ウチよく帰宅難民が来るんですけど、そういった客人向けの権限付与だったりAudit Logとしても使えるよねって判断です。

前提

f:id:S64:20190124211602p:plain

さて前提をお話すると、ウチで使ってるのは PIX-SMB400 というAndroid TVです。すなわち、当初は自分の専門領域でカバーできるかなって思ってたんですよね。

アイデア1: アプリ作って外からイベント発火

f:id:S64:20190124211633p:plain

というわけで、当然アプリを作って外部からイベントを発火しようという発想に至るわけです。

アプリNGの理由1: バックグラウンド処理

f:id:S64:20190124211717p:plain

でもコレだめだったんですよね。

Android 8.0からバックグラウンド処理の制約がメチャ厳しくなっちゃって、アイドル状態のプロセスを任意のタイミングで起こしたり、何か処理を走らせるの難しくなったんです。

ざっくり言えば、アプリがバックグラウンドにいる時は デーモンプロセスみたいなモノが速攻でkillされちゃうってことですね。

アプリNGの理由2: FCM

f:id:S64:20190124211741p:plain

そしたら当然プッシュ通知で実現しようとなり、Android標準のFCMです。

が、こちらもまた難しい問題がありまして、アプリがフォアグラウンドに居れば通知が来たタイミングで処理を走らせることができますが、バックグラウンドだと "通知がトレイに表示される" に留まってしまい、ロジックでキャッチできないんです。

どうしよう

f:id:S64:20190124211800p:plain

どうしようと。

f:id:S64:20190124211819p:plain

そこで考えた結論として、

f:id:S64:20190124211839p:plain

リモコン作ればいいんじゃないか、

アイデア2: リモコンを作る

f:id:S64:20190124211857p:plain

というのが本題です。

要はAndroid TVのリモコンって、Bluetoothアクセサリなんですよね。すなわちKeyEventを発火できればよいと。

イベント発火さえできれば、当然物理キーもいらないわけです。

PCから操作できる無線キーボード

f:id:S64:20190124211922p:plain

というわけで

f:id:S64:20190124211945p:plain

作ってみました。

構成

f:id:S64:20190124212004p:plain

構成はこうです。マイコンボードがWi-Fi経由でバックエンドのイベントをSubscribeして、バックエンドはリクエストを受け取ったらそれを流す。マイコンボードはBLEでAndroid TVに接続されていて、HID、つまりキーボードとしてキーの押下を再現します。

マイコン

f:id:S64:20190124212023p:plain

ちなみにコレを選んだのは、単に家に余りが積んであったからです。

バックエンド

f:id:S64:20190124212042p:plain

バックエンドはScalaで書いてますが、まあ多分なにで作っても関係ないです。

とってもシンプル

f:id:S64:20190124212103p:plain

見たとおり難しいロジックは介在せず、超素直な数行のコードだけで実現しています。

Slackで特定キーワードが出たらWebHook扱いでバックエンドを叩く

f:id:S64:20190124212131p:plain

というわけでDemoです。

こうしてSlack上でキーワードを投稿すると、WebHookとしてリクエストが投げられるわけですね。

私はこれで

f:id:S64:20190124212310p:plain

私はこれで、朝起きれるようになったし、リモコンを無くしても困らなくなったし、おかげさまでリモコンの場所がわからなくなりました。

www.irasutoya.com

 まだまだ課題山積

f:id:S64:20190124212330p:plain

とはいえまだまだ課題がヤマズミになっていて、たとえば長時間放置すると動かなくなったりします。
つまりどういうことかというと、さっきの「朝起きれるようになった」というのはウソです。

鋭意開発中

f:id:S64:20190124212409p:plain

というわけで、鋭意開発中です。

今回のおもちゃはこちら

f:id:S64:20190124212453p:plain

なお今回のコードはこちらで公開してありますので、ご興味あればぜひどうぞ。

github.com

おわり

※ 空白のページ

以上です、ご清聴ありがとうございました。

Appendix: 実は

f:id:S64:20190124212530p:plain

実は Androidはadb経由でkeycodeを送ることができます。
なので宅内にサーバを置いて上手く制御してあげれば、今回のように作らなくても動いたりします。

大晦日ことし買って良かったモノまとめ2018

2018年も今日で終わるので、今年買って良かったモノのまとめ。
いつ買ったかよく覚えてないものは数年前だろうがなんでも今年買ったことにします。

Philips Hue

スマートフォンや音声アシスタント、さらにIFTTTなんかからもコントロールできる電球。
色んな色を再現できる製品、というイメージが強いが、ホワイトグラデーションというのもあって コイツなら日常的に使いそうな色味だけになる代わり安い。実際使ってるのもこのくらいなので十分。

使っているのは、リビング, 浴室, 洗面所。
いちおうリビング用にはスタンダードな方を使っている。ゲームや動画, 音楽にあわせて自動で色を変えたりできるので面白い。

Philips Hue(ヒュー) シングルランプv3 スマートLEDライト 【Amazon Echo、Google Home、Apple HomeKit、LINE対応】

Philips Hue(ヒュー) シングルランプv3 スマートLEDライト 【Amazon Echo、Google Home、Apple HomeKit、LINE対応】

朝起床時に徐々に照明を明るくできるとか、時間帯によって色味を変えて目の疲れを抑えるとかが便利。
また洗面所でメイクする時は 色味をコロコロ変えたりして試せるので、めちゃくちゃ顔を作りやすくなった。

何よりいちばん助けられてるのは、やっぱ電気の消し忘れが減ったことかな...

初めて設置する場合は、Bridgeの購入をお忘れなく。

Philips Hue(ヒュー) ブリッジ   929001180614

Philips Hue(ヒュー) ブリッジ 929001180614

ちなみにスタンドはコレ使ってます

アッパーフロアスタンド ブラック E26 YN10AW TF-YN10AW

アッパーフロアスタンド ブラック E26 YN10AW TF-YN10AW

Qrio Lock

スマートロック製品。
いつも「鍵ちゃんと締めたっけ?」と気になりはじめると一日ストレス続きでつらかったのだけど、気になるならアプリ開けばいい、という状態になったのが精神衛生上たいへん良い。
あとは宅配ボックスの荷物を出してきた時、カギ出す必要がなくなってスムーズになったのとか。

この手のスマートロック製品の中でも特にアプリのクオリティが高いのもポイント。他のある製品はちょっと不満があった。

ウチはよく帰宅難民の受け入れをしていて、その時に帰るタイミングが全く違っていても「とりあえず合鍵の権限付与」で済むようになったのも楽。鍵自体を渡すのは紛失時が怖いからね。

外出先から使いたい場合は、Qrio Hubの購入をお忘れなく。

Switch Bot

スマートフォンやREST APIから物理ボタンを代わりに押してくれる製品。
前述の「帰ってくるタイミングがわからない」という問題があった時、ここにリクエストを投げてもらってオートロックを解錠している。

外出先から使いたい場合は、Switch Linkの購入をお忘れなく。

Slack Standard

個人で使ってるSlackのプランをStandardへ上げました。
フィードの購読だったり各種通知で使っていたのだけど、これが古いものまで遡れるようになった。

何より良かったのは、シングルチャネルゲストが使えるようになったこと。前述の帰宅難民受け入れ時なんかに、各種家電のコントロールをSlackコマンド経由へ集約しておくと楽チン。アプリごとの権限管理が不要になるし、Audit Logのように誰が何をやったか後からでも確認できる。

Zapier Starter Plan

IFTTTの代替として、ZapierをStarter Planへ上げました。
より高度なタスクをコード不要で作れるので、とりあえずサクッと何か実現するためには手放せない。

4Kモニタ (テレビではない)

先日のAmazonサイバーマンデーセールで3万円台で買えるようになっていて、気絶して起きたら何故か注文済だった。

前提として独立したテレビ用STB (後述) を既に持っていて、チューナ一体型の液晶テレビは不要だった。
4Kコンテンツを鑑賞してるかというと全然そんなことはないけれど、すこし距離を取って映像を見る際にはやっぱある程度デカイモニタじゃないと文字とか見づらかった。だいぶストレス減りました。

Android TV搭載STB

チューナ内蔵なので、チューナ一体型の液晶テレビとかがいらない。今持ってるPC用モニタがそのまま流用できる。
4K出力やBS/CSの4K放送にも対応している(活用はしてない)。ついこのあいだのアップデートで録画も可能になった。

Android TVという性質上そこそこhackableなのがポイント。自前でアプリ作って食わせられる。
またインターネット上のコンテンツを鑑賞する時にわざわざモニタの入力切替をせずとも、シームレスに変えられるのがとても良い。操作の学習コストが下がったり、機器管理の手間が減った。

電気ケトル

ひとり暮らしなので電気ポットだと量が多くて使い切れなかったり、猫舌の自分では沸騰直後だとあつくて使えなかったり。
電気ケトルを使い始めて、必要な時に必要な量だけ必要な温度でお湯が作れるようになった。何より早い。

お掃除もかなりラクなので、必要十分なものを使うのは大事。

チョコラBB

明らかに調子が良い。

エーザイ チョコラBB ハイパー 50ml×3本 (医薬部外品)

エーザイ チョコラBB ハイパー 50ml×3本 (医薬部外品)

ESP32系開発ボード

良い暇つぶしになるし、勉強にもなるし、ちょっとした家庭用の自動化ツールにも便利。趣味なら安いコピー品で十分。

ロング用ウィッグスタンド

いままで通常サイズのウィッグスタンドを使っていて、毛先が床に着いちゃう問題で悩んでいた。もっと早く買えばよかった。

Qrio Smart Tag

MAMORIOもいいんだけど、こっちの方が多機能で確実に通知を送ってくれている印象。

VLAN対応スイッチングハブ

仕事で納品したのみだけど。硬質感といい重量感といい、大変素晴らしい。

ポケットモンスター Let's Go! イーブイ

イーブイがかわいいので。

ポケットモンスター Let's Go! イーブイ- Switch

ポケットモンスター Let's Go! イーブイ- Switch

配信の時は AVerMediaくん つかってます。

Switch用Proコントローラ

Joy-Conのストレスから開放された。

Nintendo Switch Proコントローラー

Nintendo Switch Proコントローラー

総評

まあまあ経済回した。

今すぐシュッとグローバルIPを取るsnippet in Kotlin + Android

雑だけど、社内用のデバッグアプリ (画面) ならこんなもんでいいと思います

findViewById<TextView>(R.id.your_ip_text_view).apply {
    Thread {
        URL("https://api.ipify.org")
                .openConnection()
                .apply { connect() }
                .getInputStream()
                .bufferedReader()
                .use { it.readText() }
                .let {
                    runOnUiThread {
                        text = it
                    }
                }
    }.start()
}

いろんな `java -version` 表示

必要になったんだけど、いろいろありすぎて困ったのでメモ。ちなみにDocker内でやった。

TL;DR

  • semverじゃないのは常識
  • 実行方法次第では必ずしも3行ではない
  • バージョン表記は3セグメントとも限らず、4セグだったり1セグだったりもする
  • underscoreが入ったりhyphenが入ったりいろいろある
  • バージョン表記のquotesより後に日付が入るパターンもある

OpenJDK

6

java version "1.6.0_38"
OpenJDK Runtime Environment (IcedTea6 1.13.10) (6b38-1.13.10-1~deb7u1)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

7

java version "1.7.0_181"
OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)

8

openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

9

openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+12-Debian-4)
OpenJDK 64-Bit Server VM (build 9.0.4+12-Debian-4, mixed mode)

10

openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Debian-2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Debian-2, mixed mode)

11

openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment (build 11.0.1+13-Debian-2)
OpenJDK 64-Bit Server VM (build 11.0.1+13-Debian-2, mixed mode, sharing)

12

openjdk version "12-ea" 2019-03-19
OpenJDK Runtime Environment (build 12-ea+19)
OpenJDK 64-Bit Server VM (build 12-ea+19, mixed mode, sharing)

Oracle JDK

7

java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

8

java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

9

java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

10

java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

AdoptOpenJDK

8

Picked up JAVA_TOOL_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_192-b12)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.192-b12, mixed mode)

9

Picked up JAVA_TOOL_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

10

Picked up JAVA_TOOL_OPTIONS: -XX:+UseContainerSupport
openjdk version "10.0.2-adoptopenjdk" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2-adoptopenjdk+13)
OpenJDK 64-Bit Server VM (build 10.0.2-adoptopenjdk+13, mixed mode)

11

Picked up JAVA_TOOL_OPTIONS: -XX:+UseContainerSupport
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.1+13, mixed mode)

Zulu

6

openjdk version "1.6.0-119"
OpenJDK Runtime Environment (Zulu 6.22.0.3-linux64) (build 1.6.0-119-b119)
OpenJDK 64-Bit Server VM (Zulu 6.22.0.3-linux64) (build 23.77-b119, mixed mode)

7

openjdk version "1.7.0_201"
OpenJDK Runtime Environment (Zulu 7.25.0.5-linux64) (build 1.7.0_201-b02)
OpenJDK 64-Bit Server VM (Zulu 7.25.0.5-linux64) (build 24.201-b02, mixed mode)

8

openjdk version "1.8.0_192"
OpenJDK Runtime Environment (Zulu 8.33.0.1-linux64) (build 1.8.0_192-b01)
OpenJDK 64-Bit Server VM (Zulu 8.33.0.1-linux64) (build 25.192-b01, mixed mode)

9

openjdk version "9.0.7.1"
OpenJDK Runtime Environment (Zulu build 9.0.7.1+1)
OpenJDK 64-Bit Server VM (Zulu build 9.0.7.1+1, mixed mode)

10

openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment Zulu10.3+5 (build 10.0.2+13)
OpenJDK 64-Bit Server VM Zulu10.3+5 (build 10.0.2+13, mixed mode)

11

openjdk version "11.0.1" 2018-10-16 LTS
OpenJDK Runtime Environment Zulu11.2+3 (build 11.0.1+13-LTS)
OpenJDK 64-Bit Server VM Zulu11.2+3 (build 11.0.1+13-LTS, mixed mode)

Amazon Corretto

8

openjdk version "1.8.0_192"
OpenJDK Runtime Environment (build 1.8.0_192-amazon-corretto-preview-b12)
OpenJDK 64-Bit Server VM (build 25.192-b12, mixed mode)

Android TV搭載チューナ内蔵STB「PIX-SMB400」のハマりどころなど

待ちに待ったピクセラのAndroid TV搭載STB「PIX-SMB400」が発売された。
これの特徴は、国内のAndroid TVでは珍しく 地上波 / BS / CS のチューナーが搭載されており、また4K出力や4K放送にも対応している。
従来のAndroid TVでチューナが搭載されているものの多くは液晶テレビと一緒になっていたため、テレビごと買い替えが必要だった中これは嬉しい。

いろいろハマりどころや注意すべきことがあったので、これから購入を検討される方向けにメモ。

アンテナケーブルが付属してない

箱の中にアンテナケーブルが入っていない。これはおそらく、この製品が「既存のテレビを置き換える」という用途を想定しているからと思われる。
もし未だテレビを利用したことがない場合、一緒にアンテナケーブルを買っておく必要がある。

私は以下2つを買って組み合わせ使っている。

HORIC アンテナ分波器 BS/CS/地デジ対応 白ケーブル2本付き(S-4C-FB) 40cm BCUV-971

HORIC アンテナ分波器 BS/CS/地デジ対応 白ケーブル2本付き(S-4C-FB) 40cm BCUV-971

LANケーブルが付属していない

同上。

リモコンはBluetooth接続

これはAndroid TV全般に言えることだが、赤外線ではないので注意。Nature Remoなどでリモートコントロールはできない。

電源投入時に自動でテレビが点く

一般的なAndroid TV端末は電源投入時はLauncherが表示されるが、この製品は前回点けていたテレビのチャンネルが自動で点く。
なお、スリープからの復帰時は通常通り前回のアプリ / 画面。

テレビの表示がLive Channelsではなく独自アプリ

これは国内の多くのAndorid TVが該当するが、放送の視聴はLive Channelsからではなく、搭載されている独自アプリから行う。

おそらくこのアプリとほぼ同等だが、外付けではなく内蔵チューナ用にカスタマイズされていたりとパッケージ自体は異なる模様?

スマートスピーカー連携の設定動線が一方のみ使えない

多分これは現行ファームウェア (Build OPR6.170623.013, Revision 4.4.1538216619) の不具合。

設定 → デジタル放送 → カスタム設定 → スマートスピーカー連携 の動線から設定しようとすると、途中永遠にプログレスになってしまい進まない。
TVアプリ → メニュー → 設定 → カスタム設定 → スマートスピーカー連携 から進めると、正常にログイン画面が表示される。

外部Google Assistantから「画面消して」ができない

まず前提知識として、PIX-SMB400はAndroid TV製品では珍しくスリープ(ケータイで言うなら画面ロック)機能がある。
これは大変便利で、たとえば多くのモニタには省電力機能が搭載されているため、HDMIから信号が途切れた時点でモニタのバックライトが消灯したりする。すなわち、PIX-SMB400側をスリープさせるだけであたかもモニタ自体の電源が落ちたかのような挙動を実現することができる。

PIX-SMB400上のGoogle Assistantに対し「画面消して」と言うと、画面を消す(スリープさせる)ことができる。
が、Google Home等に対し「(設定したデバイス名) の画面消して」などと言っても画面を消すことはできない。

ただし、ピクセラ製テレビのスマートスピーカーアプリを経由しようと「ピクセラテレビに繋いで」から「テレビを消して」とした場合、TVアプリを終了させる (= Launcherを表示する) ことはできる。画面をスリープにさせることはできない。

Amazon Prime Videoが観れない

これもAndroid TV製品全般に言えることだが、Amazon Prime Videoアプリが利用できない。

まれにリモコンが音声を認識しなくなる

これはリモコン側の電池を抜いて再度入れるとよい

外部端末からCastを受け付けなくなる

設定メニュー内のストレージとリセット → データの初期化を行ったが解決しなかった。
が、試しに本体裏側の初期化スイッチからリセットを試みたところ、上手く動作するようになった。なんだろう。

Google AssistantからCast中に「音量上げて」というと音量が下がる

これがかなり致命的な不具合。Google Home等の端末から「テレビでSpotify再生して」などと伝えてCastをしているとき、「音量上げて」と言うと音量が下がってしまう問題がある。なお、音量下げてというと正常に音が小さくなる。

定期的に放送が止まる

解決方法を調査中

所感

とりあえず購入後23時間程で気付いた点について書いた。全体としては満足度の高い商品なのだが、いかんせんFire TVをメインで利用した後ではコンテンツに乏しく感じてしまう。
他なにか気付いた点があれば追って記事を出したい。