ヤサイブログ

徒然と

Huawei Mate 10 Proを購入しました!

Huawei Mate 10 Proを購入したよ!
consumer.huawei.com
軽くレビューしていくよ!

よくある開封の儀

↓外箱は化粧箱のようでよく出来ていると思うが、
左上が既に凹んでいる。耐久度は低めなようだ。
f:id:yasay:20180115161453j:plain:w480

↓最近は高級スマホはどれもこういうパッケージですが、
もうちょっとメーカー毎の個性出したほうがいいんじゃないですかね。
f:id:yasay:20180115162314j:plain:w480

↓付属品。TPUケースがついてくるのは本当に助かる。
ただし、どれくらいの経年劣化で黄ばみが出てくるか知りたいところではある。
USB Type-C端子に接続して使えるイヤフォンジャックもいいね。
f:id:yasay:20180115162504j:plain:w480

↓TPUケースを付けた状態。
背面はテカテカで指紋が目立ちすぎてケース前提な所があるよね。
f:id:yasay:20180115162745j:plain:w480

↓初期セットアップを終えた状態。
有機ELディスプレイスマホは使ったことなかったので発色の違いに驚いています。
f:id:yasay:20180115163622j:plain

なぜMate 10 Proなのか

コストパフォーマンス

最近のスマホの値上がりにはついていけません。
今回、IIJmioのサプライサービスを通してMate 10 Proを79,800円(税抜)で購入したのですが、
私が比較した他の端末の中で圧倒的にコスパがよかったです。

iPhone X 64GB 112,800円(税抜)
iPhone 8 Plus 64GB 89,800円(税抜)
iPhone 7 Plus 128GB 85,800円(税抜)
Galaxy Note 8 sim Free Dual 10万円以上
Pixel 2(輸入) 9万円以上
Mate 10 Pro 79,800円(税抜)

※価格は2018年1月15日時点のものです。
こうやって比べるとiPhone Xとか頭のおかしい金額ですよね。
ノートPC買えるっつーの。

カメラの性能は外せなかった

私の場合、生活の中で写真を撮る機会が圧倒的に多いです。
スマホはいつでも持ち歩いているので、決定的な瞬間を撮ることに優れています。
つまり、カメラの画質が高ければ高いほど、私の生活における満足感は高くなります。

Mate 10 ProはDxomarkでiPhone Xに次ぐ高得点を獲得している機種で、
期待に答えてくれるであろうと考えました。
DxOMark - The Reference for Image Quality
f:id:yasay:20180115171448p:plain

内部ストレージ容量が128GBだった

Mate 10 Proは128GBの内部ストレージがあり、
比較対象と比べて、よりコスパが際立った製品です。
次は128GB以上のストレージにしようと決めたところ、
Mate 10 Proしか選択肢として存在しなかった。

iPhoneに飽きた

私はiPhone4からiPhoneシリーズを使い続けており、
iPhone歴は6年以上になります。正直、iPhoneに飽きました。
また、去年の1月にZenfone3を購入して1年間ほど使用し続けたところ、
思った以上に使い勝手が向上しており、Androidにより興味を示すようになりました。
xblood.hatenablog.com
※ただ、バックグラウンドの通信料は圧倒的にAndroidのほうが多いのでMVNO運用では少し辛いところ。

それに、iPhone 8 Plusは家族が購入したので、
なるべく同じものは使いたくなかったのです。
少なくとも2年は使いたいので、同じものを買うと面白くないですよね!

評価点

夜景撮影には大きなアドバンテージがある

Zenfone3はカメラ性能に特化しているわけではないので、
比べること自体が酷ではあると思うが、
二枚の画像を比べるとMate 10 Proの光を取り込む性能が段違いなのが分かる。

  • Zenfone3(オートモード)

f:id:yasay:20180117184626j:plain

  • Mate 10 Pro(写真モード)

f:id:yasay:20180117184648j:plain

他にも「夜間撮影」というモードがあり、
このモードはカメラを15秒ほど固定しなければいけないので三脚などが必要だ。
試してみたところ、ぶれぶれになってしまったが、
画像の明るさだけは、ぶれてもよく分かる結果だと思う。

  • Mate 10 Pro(夜間撮影モード)

f:id:yasay:20180117185023j:plain

最初から貼り付けられているフィルムは思ったよりよい

光沢フィルムなのだが、指のすべりがとてもよい
今までアンチグレアフィルムを使っていたのだが、
これだけ指のすべりがよいと光沢フィルムも悪くないと思う。

懸念点

音量調節の問題

Youtubeを再生してみたが、何故か音が出ていない。
音量を調節してみたところ、80%くらいでやっと音が出始めた。
デフォルトの音量調節がどうなっているのか定かではないが、
80%くらいまでボリュームを上げないと音が聞こえないのはダメだろと思う。
→[追記]その後、再起動後に音量調節が正しく機能するようになった模様。なんなんだ、Huawei

というか、試しにパズドラチャレンジ入れてみたら効果音は出るけど
BGMは全く鳴らないんだけど、なんなんだこれは。アプリ独自の問題なのか?
マナーモードを解除しても音が出ない。

WiFiアクセスポイントが見つからない問題

会社に持っていって社内WiFiのアクセスポイントを検索したがまったくヒットしない
SSIDを直接入力してもだめ。
「あぁ、はずれ端末を引いてしまったのかなー」と落胆しそうだったが、
端末の再起動をしたところ解決。なんなんだ、Huawei

自動識別による写真撮影が少し嘘っぽい

どうも空が普段見えるより強い青みがかかっているのが馴染めない。
できれば普段通りに撮影したいので、自動識別はオフで使用してみたいところ。
しかしながら、コストパフォーマンスとの兼合いも含めて、写真の画質には満足しています。

↓Mate 10 Proの自動識別により、空が強調された写真。明らかに目視で空を見るより色が濃くなっている。
f:id:yasay:20180115171011j:plain

TPUケースはクリアがよかった

ちょっとスモークかかってるような感じなので、
できればクリアがよかったかな。

総評

まだ商品が届いてから2日しか経っていないので、
Androidのハイエンド端末、そしてHuaweiがどれくらい信頼できるのか分からないですが、
使用感やカメラの画質など、エントリーを残していきたいと思います。

以上です!

Play FrameworkでControllerからMessagesファイルの内容を取得する方法

軽くはまったので備忘録として残しておきます。
本エントリーは下記バージョンで動作確認しています。

Play Framework 2.5.15

経緯

Scalaテンプレートからmessagesファイルの内容を取得するのは簡単にできます。

同じようなことをPlayのControllerクラスからやりたいだけなのに、非推奨クラスになっていた。

非推奨クラスを用いた場合の処理


解決方法

MessagesApiをInjectしてpreferredメソッドからmessagesインスタンスを生成する

以上です!

標準機能でSSH接続できるIDEがあるらしい。It's IntelliJ IDEA!

本エントリーは下記バージョンで動作確認しています。

IntelliJ IDEA Ultimate 2017.3.2

Electron製のエディタであるAtomVisual Studio Codeは
拡張機能でConsole機能を有しており、ConsoleからSSH接続も可能です。

IntelliJ IDEAにもデフォルトでConsole機能があり、
さらにはSSH接続設定を保存できます。
つまり、IntelliJ IDEAをSSHクライアントのように使うことが可能です。

やっていきます。
今回はVirtual BoxのUbuntuに接続してみます。

1. SSH接続先を保存する

  1. 「File」→「Setting」を選択してSettings画面を開く。
  2. 「Build, Execution, Deployment」→「Deployment」を開く。
  3. 「+」ボタンを押下して、接続先サーバを追加する。

f:id:yasay:20180112101244p:plain
※Typeは"SFTP"を選択する。

2. 接続する

  1. 「Tool」→「Start SSH session...」を選択する。
  2. 接続先を選択する。

f:id:yasay:20180112101452p:plain

接続に成功! ↓
f:id:yasay:20180109184917p:plain

高度な機能は要していない

IntelliJ IDEAで保存するSSH接続先は、
主にデプロイメント機能で使用するための情報であり、
踏み台サーバを経由するなどの、SSHクライアントによくある高度な機能は
持ち合わせていないので、使い所が限られるというのが正直な所でしょうか。

例えば、Vagrantで起動したローカルサーバにデプロイするような使い方は
面白いと思います。

以上です!

スマートブレスレット「Excelvan I5 Plus OLED」は思いのほか便利だった

f:id:yasay:20180101032658j:plain
スマートブレスレット「Excelvan I5 Plus OLED」が思いのほか便利だったので
エントリーを残します。

スマートウォッチ(ブレスレット)の入門機として最適なお値段。

本スマートブレスレットはAmazonで約2,000円で購入できます。
Amazonは2,000円以上は配送料が無料になるので、丁度いいお値段ですね。
fitbitやApple Watchに手を出すお金は出せないけど、
入門機としては使いたい場合に最適なお値段です。

ただし、本機器は歩数や消費カロリーを自動同期しないので、
フィットネスに使用する場合はライフログを残しにくいと思います。

購入の目的は着信の通知

私の購入目的は着信の通知です。
生活スタイルにもよりますが、私の場合はLINEなどのメッセージよりも
着信のほうが重要な要件である場合が多く、着信を見逃したくないのです。

この用途について、本機器は充分な機能を保持しています。

  • 発信元の名前が表示される。
  • 着信している間は、強めのバイブレーションで通知してくれる。※ただし10秒くらい?

バッテリーは充分に持つ。10日間の連続稼動を確認!

使い方次第ではありますが、
自分の場合は着信の通知と起床タイマーとして使い、10日間の連続稼働を確認しました!
充電も約2時間程でフル充電できました。
バッテリーの残量を気にせず使えると言ってもいいでしょう。

f:id:yasay:20180101032727j:plain
シリコン製のリストバンドから本体を外すとUSB端子がむき出しになるので、
差し込むだけで充電できます。

主な操作方法

操作 方法
電源ON タッチパネルを押し続ける。
電源OFF スワイプで窓アイコン(メニューアイコン)を表示した後、タップして電源アイコンを表示した後、長押しする。
時計の表示切り替え スワイプで窓アイコン(メニューアイコン)を表示した後、タップして回転ボタンを表示した後、長押しする。

"スマホを探す"、"スポーツモード"、"睡眠管理"は使用しないので割愛します。
↓が説明書の操作方法。
f:id:yasay:20180101032803j:plain

動作要件

とあります。

↓が説明書
f:id:yasay:20180101032830j:plain

肝心の使用感は?

年末年始の11連休で利用しましたが、
重要な着信を見逃すことがなく、その役割を充分に果たしていました。
私の利用方法なら、コストパフォーマンスは非常に高いです。

しかしながら、下記の懸念点もあります。

稀にですが、スマートフォンとの接続が切れる。

"手首ジェスチャー"の機能をオフにしている場合に切断されることが多い気がするので、
基本的に"手首ジェスチャー"はオンで使用しています。

切断された場合は↓のように、ブルートゥースのアイコンが消えます。
f:id:yasay:20180109114058p:plain

他にも専用アプリ「Zeroner Health pro」を起動した直後に切断されることがあり、
この疑問について下記のような回答がされています。
"The app will read the connection status about bracelet and synchronization data, maybe there is a little delay on display, in fact, the app is connected with bracelet."
"アプリはブレスレットと同期データに関する接続ステータスを読み込みますが、実際には表示が少し遅れることがあります。実際、アプリはブレスレットに接続されています。"

とのことなので、問題ないでしょう。

この10日間で切断されていたのは3回。その内2回が"手首ジェスチャー"オフでした。
これくらいの頻度なら問題ないと思います。
それに、自分はこれが入門機なので他のスマートブレスレットの切断率と
比較する術がありませんので、しばらく本機器を使い続けるしかないでしょう。

もちろん不満な点もある

一番不満な点は、シリコン製のバンドは痒くなること!
睡眠監視機能があるようですが、痒くてつけたまま寝られません!
これは値段相応でしょうね。
必要であればTPU製の替えバンドの購入を検討したいです。

あと、日差しの強い場所では、視認性が悪いですね。
有機ELディスプレイなのでしょうがないところですが、
時計として使うなら視認性の悪さは不便な点となります。
f:id:yasay:20180109113943p:plain

しばらく使い続けて見て、気づいたことなどあれば
エントリーとして残していこうと思います!
以上です!

iPhoneで撮影した動画ファイル形式(.MOV)を自動でMP4に変換するスクリプト作りました

私は外付けHDDに写真や動画を保管し、
PS3をメディアプレイヤーにして再生しています。

この時、困ることがあります。
PS3はQuick Time形式の".MOV"の拡張子に対応していないことです。
iPhoneで撮影した動画は".MOV"の拡張子になるため、多くの動画が見れないことになります。

この問題を改善するために、スクリプトを作りました。
github.com

簡単に説明します。

HandBrake CLIのダウンロードが必要です。

スクリプトはただのシェルスクリプトで、HandBrake CLIを呼び出しています。
HandBrake CLIのダウンロードはこちらから↓
handbrake.fr

コマンドの解説はこちら↓
www57.atwiki.jp

スクリプト概要

環境変数で指定されたI/O用のディレクトリを参照し、
拡張子".MOV"のファイルが存在する場合、MP4に変換して変換元ファイルは退避します。
変換したファイル数をカウントしてSlackに通知します。
ただこれだけです。

実際の使われ方

スクリプトをcronで定期実行してます。バッチサーバ的な用途ですね。
ファイルの配置は共有フォルダになっているのでLAN内のPCなら可能になってます。

今後の改善点

Issueに挙げているのですが、
I/O用のディレクトリの階層構造に対応したいと思います。

簡単にですが、以上になります!
今年もよい年になりますように!

Freenomの無料ドメインの更新期限が迫ってきたので更新してみた

Freenomの無料ドメイン、皆さん使っていますか?
Freenom - 誰でも利用できる名前

私は去年登録し、結構便利に使ってます。
AWSのRoute53で管理してみたり、リダイレクトURLに使用してみたり。

その無料ドメインの更新期限が迫ってきているとFreenomさんから通知があったので、
無料で1年間、期間を伸ばしてみました。

手順を忘れるかもしれないので備忘として残しておきます!

ログイン後、「Service」→「Renew Domains」を選択する。

Freenomは結構ナビゲーションメニューが分かりづらいんですよねー。
ここさえ押さえておけばちゃんと更新できると思います。
f:id:yasay:20171231223655p:plain

更新したいドメインの「Renew This Domain」ボタンを押下する。

右端のボタンです。
f:id:yasay:20171231223856p:plain

「12 Monthes @ FREE」を選択して、「Order Now」ボタンを押下する。

更新期間はいろいろ選べますが、基本的にはもう1年更新でOKです。
f:id:yasay:20171231230954p:plain

Order Confirmation後にDomain一覧に遷移して、確認する。

無事に「Days Until Expiry」が378 Daysになりました!これでまた1年使えます!
f:id:yasay:20171231231555p:plain

Freenomの無料ドメインは今後自宅サーバドメインにも使っていきたいと思っています!

JJUG CCC Fall 2017に行ってきたよ!

今年の冬も来たぜ!JJUG CCC Fall!!
f:id:yasay:20180101024913j:plain:w350
www.java-users.jp

レポート

10:00 ~ 10:45 Backlog:JavaからScalaへの移行の歩み

  • なぜ移行するのか?特に利点はないのに?
  • なぜScala + Play Framework?
    • 型推論、パターンマッチ
    • 静的型付け言語
    • JVM言語なのか既存知識から大きく離れない
  • 移行方法
    • ボツ案1:全てのアクションの移植が完了してから入れ替える
      • Tomcat版、Play版の両方に機能追加とバグ修正が必要。ドッグフィーディング。
    • ボツ案2:Javaから呼び出されるメソッドを少しずつScalaに移植
      • JavaScala間でEntitiyの相互変換するコードが必要になった
      • 他にも設計の差異を埋めるコードも必要
      • 移行完了後に捨てるコードに工数かけるのは辛い
    • 採用案:機能単位に作り切って、NginxでアクセスをPlay版に振り分ける
      • セッションを共有する仕組みをRedisで行う
      • 採用理由
        • ユーザーへの影響は抑えやすい
        • 完了後に捨てるコードはほぼない
        • Tomcat版の設計に引きづられることもない
      • JS/CSSの移行のために作ったツール
        • 旧ViewテンプレートからTwirlへの変換ツール
          • 正規表現を用いた補助的なもの
          • Tomcat版とPlay版の両方にアクセスしてDOMを比較するツール
      • 利点
        • 移植が正しくできていなくてもNginxの設定を戻せばいい
          • 簡単に戻せるのは精神的によい
      • 課題
        • 機能追加が並行して動いている場合に差分が出やすい
          • 最近はPlay版にのみ機能追加している
          • 性能評価とかあるといいかも
  • Scala初心者がJava -> Scalaへ移行した話
    • 勉強方法
      • 社内勉強会、研修、実業務
      • ドワンゴScala研修テキスト
      • 社内向けツールをScala, Play, Akka, WSで作った
    • はまりどころ
      • implicit class
      • for文(for comprehension)
      • 文法の違いとか

11:00 ~ 11:45 10年前のレガシーシステムをサーバーサイドKotlinでフルリニューアルしている話

speakerdeck.com

  • 背景・概要
    • 医師のキャリア支援事業の10年に一度のリニューアル
      • 600人日!
      • 複雑なアーキテクチャになっている。データ重複・ロジック重複・・
      • Javaの独自FW, viewの部分はXSLT・・。
      • KotlinのRest API, WebアプリはRails, Vue.js
        • 生産性上がるよね
      • プロトタイプ作成して経営会議
  • 承認までの道
    • 複雑かしたアーキテクチャによる悩み
    • 悩んだけど経営会議で承認された
      • 最優先の問題を粘り強く見極めた
      • 経営陣を説得する際、数値化は大事
  • 技術選定の理由
    • APIサーバ - 重複ロジック・DBを一元化したい
    • 型を用いてカッチリとやりたい
    • なぜKotlin?
      • 型あり
      • Spring Boot使える
      • Java製の社内ライブラリが使える
      • 学習コスト:RubyENGには親しみやすい構文
    • OR MapperはDoma2
    • Vue.js -> リッチなUIニーズに対応しやすい
  • Kotlin APIサーバの作り方
  • どこでもKotlinの紹介
    • Androidだけでなく、どこでも使えるという熱い思い

12:00 ~ 12:45 JJUG初心者のためのJava/JJUG講座

ランチセッションとても面白い話で引き込まれました。さすがですよね!

www.slideshare.net

13:30 ~ 14:15 サーバサイドKotlin

  • 一番にネックになったところは、日本語の響きが可愛いのでおっさんがことりんと呼ぶと(笑
  • Kotlinはそれほどとんがった言語ではない
  • 結論 - サーバサイドでも問題なくKotlinは使えます
    • lambdaでも使える
  • 利用箇所
    • Webアプリ
    • Lambdaの処理
  • なぜ、Kotlinにしたのか
    • Class定義いらない便利
    • 検査例外いらない便利
    • lombokよりスッキリで完結に書けるgetterとsetter
    • 不満はあってもJVM自体は悪くない
    • Scalaは悪くない、でも、難しい...
      • 言語が複雑、学習が容易ではない、型合わせゲームが好きになれない → 言語をちゃんと理解した気分にならない
    • JavaScalaの中間の存在として、使いやすいのではないか
  • サーバサイドでのミドルウェアとか
    • フレームワーク
      • Kotlin製
        • Ktor → チームでの開発は未知数
        • wasabi → Ktorに取り込まれた
        • Kara → JetBrainの人が開発
      • Java
    • OR Mapper
        • Exposed
          • kotlinっぽく書けるんだけどバグが多い。ドキュメントが不十分。割といばらの道なので、JavaのORMがいい
    • ビルド環境
      • gradle + Kotlin plugin + ALlOpen plugin
  • フレームワークやライブラリはサーバサイドで利用するには未成熟か開発体制が不十分
  • 無理をせずにJavaのエコシステムに乗ればいい
  • Streamの使い分けやannotationの違いなど

14:30 ~ 15:15 DockerではじめるJava EEアプリケーション開発 & Eclipse Collectionsの話

  • ビルド環境&デプロイ環境&データベースをDockerで使う
  • Eclipse CollectionsはStream APIより高機能・高パフォーマンスを維持している。
    • Eclipse Collections Kataをやれば、触ってみたい人はOK

15:45 ~ 16:30 「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~

www.slideshare.net

16:45 ~ 17:30 ついにきたリアルタイムSpark ビッグデータ処理の新定番「SnappyData」とは

www.slideshare.net

所感

Kotlinの事例はとても参考になりました

主にAndroid界隈で賑わっているKotlinですが、
サーバサイドの導入事例に触れたことは非常に有意義でした。
Microserviceアーキテクチャと併せる形で是非とも導入したいですね。

お昼から体力の限界でダウン気味でした

正直、午後のセッションはあまり頭に入りませんでした。
前日、深夜までコーディングしてたせいです。
セッションは勉強会とほぼ同義であるため、しっかり体調を整えて臨むべきでした。
次回に向けての反省点になります。

ランチセッションはとても面白かった!

残念ながらデューク弁当はゲットできなかったのですが(笑)。
JJUG会長の方のランチセッションは、Javaの過去のヒストリーも紹介していて、
知らなかったこともたくさんありました。このセッションを聞いて、
20代のエンジニアの方々がよりJavaに親近感を持ってくれたらと思います。

来年からはもう一度ボランティアから始めてみてもいいと思っています。

JJUG CCCは初回にボランティアとして参加しました。
2回目以降はセッションをもっと見てみたいと考え、一般参加として様々なセッションを見てきました。
元々コミュニティに貢献する取り組みをしたいと考えていますので、
2018年は特にコミュニティへの貢献のための取り組みを行ってもよいのではと思っています。

成子天神社

f:id:yasay:20180101030924j:plain
JJUG CCCに来るとついつい立ち寄ってしまう成子天神社。
仕事がうまくいくようにお願いしておきました。
「撫で牛」をヾ(・ω・*)なでなでしてご利益を頂きましたw

以上です!来年もJJUG CCC楽しみだなぁ!