WindowsのコマンドプロンプトからSlackに通知してみた

本エントリーは下記環境で検証しています。

Windows OS Windows 10 Pro
BunBackup Ver 5.0 64bit

BunBackupの実行完了通知をSlackに送りたかったので、
WindowsコマンドプロンプトでSlackのWebHook URLにリクエストを送ってみました。

具体的なやり方は、GitHubに書いちゃってるんですが、
もしよければご覧になってください。
github.com

Slack連携処理抜粋

特に難しいことはしていないです。
チャンネル、メッセージ文言、ボット名、アイコンなどを指定してcurlコマンドを叩くだけ!
ただし、ダブルクォーテーションをエスケープしています。
下記の記述ルールを守ればいけるとのこと。

  • スペースを含むパラメータはダブルクォート「"」でくくる。
  • ダブルクォートの中にあるダブルクォートは、バックスラッシュ・円記号「\」でエスケープする
rem ### Send to Slack
SET SLACK_CHANNEL=#notifications
SET SLACK_TEXT=[Office]Successful backup process with BunBackup.
SET SLACK_BOTNAME=BunBackup Notification
SET SLACK_FACEICON=:bunbackup:
SET SLACK_WEBHOOKURL=%BB_SLACK_WEBHOOKURL%

curl -X POST --data-urlencode ^
payload="{\"channel\":\"%SLACK_CHANNEL%\", \"username\": \"%SLACK_BOTNAME%\", \"icon_emoji\": \"%SLACK_FACEICON%\", \"text\":\"%SLACK_TEXT%\"}" %SLACK_WEBHOOKURL%

f:id:yasay:20180319181454p:plain
無事にSlackに通知を送れました!

JAWS DAYS 2018 行ってきました!レポート

JAWS DAYS 2018行ってきました!
jawsdays2018.jaws-ug.jp

実は今回が初参加なので、
他のイベントと比べてどうなのか、わくわくして参加しましたよ!
レポート、書き殴っていきますっ!!

レポート

【ALL】10:10~11:00:A story of cloud journey with Community

  • 内容としては主に登壇者の方が経験したコミュニティ変遷。
  • 100回の参加より1回の登壇〜。
  • 明後日の方向から飛んでくる変化。

【A】11:10~12:00:Enterprise Serverlessを実現するための信頼性エンジニアリング

speakerdeck.com

  • Serverlessってなんだっけ?
    • CNCF Serverless Whitepaper
      • サーバの管理を必要としない。サーバーオペレーションがなくなる。
  • サーバーレスの信頼性は、FaaSに依存してしまうので、ビジネスの継続性を担保できない可能性。Reliabilityを保証できない?
  1. Faas・・・コンテナ内で非同期に呼び出される関数
  2. Baas・・・フルマネージドかつ抽象化されたライブラリやMW
  • Serverless is...抽象化されている関数やMW
  • 信頼性の考え方
    • ネジネスの信頼性を保つ努力をするのは変わらない。
    • Think simple, Keep simple(いいね)
  • 設計
    • イベントは同じ方向に流す。(逆流させない。)
    • 結果が必要なら同期で返す
    • 取りに行かせる
    • 一連の処理には同じIDを付与
      • それを引き回すことでIDでトレースできる
      • IDは様々な制御に使える
    • DynamoDB 結果整合性
      • 非正規化テーブルの、dynamodbはトランザクションの整合性
        • 保てる方法:条件付き書き込み、asid trunsaction
    • RDBとlambdaの相性の悪さについて
      • VPC lambdaで起動すると遅い。遅延発生厳しい。
      • 書き込みは非同期にすれば問題ない。
    • Functionのテストはユニットテストでちゃんとやろう
  • 監視
    • serverlessでやるべき監視はapplicationからのエラー通知を作り込むこと
      • ちゃんとエラーはキャッチして通知すること
      • メトリクスはちゃんと見ましょう。メトリクスを集約できるのかもIaaSの選定のポイント。
  • まとめ
    • サーバレスは特別なことではない。
    • 信頼性が必要な部分はちゃんと作り込む
質問内容メモ
  • サーバーレスでもたちあげっぱなしだとEC2より高くなる・・
    • コストを下げるコツとして・・間にAPIゲートウェイを挟んでキャッシュできるデータをキャッシュすれば、lambdaが実行されないのでやすくなる
  • CI環境はコードビルドを使って、AmazonLinuxのイメージを作ってそこでテストする。
    • Githubからソースを取得して、Pythonの関数をテストする。
    • 登壇者の現在の仕事はbackendが複雑なパターンが多い。frontが重要なサービスならfrontからのテストをちゃんとやったほうがいいよね的な。
  • 監視の方法は?
    • 死活監視は外側から叩く方法と、Cloudwatchのデータをdatadogにつっこんでる。datadogはserverlessだとお金取られないので便利。(なにー!そうなのか!)
    • TraceIDのチェックで10分以上途切れていたらメトリクスに上げるとか。

【ALL】13:00~13:50:「AWS Technical Evangelists Special talk session -スペシャトークセッション AWSとユーザーコミュニティが生み出すNo borderな未来-」

  • 認定エンジニアになるための勉強方法
    • associateの試験は結構簡単。少なくとも2回目はパスできる。
    • ネットワーキングのプロフェッショナルスキルは大変。85%しか正解率はない。
    • API, SDKだけでなく、Architectureを見る必要がある。どうやってAWSを使っているのか事例を見ることが大事。
    • 認定とプロジェクトでは違う。認定で学んだことは使わないことがある。プロジェクトは主流を学ぶ。
    • 認定は重箱の隅をつつくような内容が出てくる。模擬試験などをこなして進めるしかない。
    • ハンズオンを利用することが最も重要。たくさんの試験があるけど、単語や用語などの明確な理解が必要。
    • 認定に関して:8つの認定のうち、2つの認定は日本語化されていない。
  • 一番最初に学ぶべきのプログラミング言語は?
    • 同僚の方を見てどの言語に投資しているのかを見て学ぶべき
    • プログラミング言語はただのツールなので、言語を選ぶのは重要ではなくて、問題を解決することにフォーカスを置くべき。
    • 右手でビルド言語、左でスクリプト言語というまぁ、両刀使いになるとか。
  • 今何が起きているのかを正しく理解すること。
    • 日本はまだEC2の利用が圧倒的に多い。だんだんサーバーレスを進めていくというカルチャーに違いはない。
    • テクノロジーを使う準備ができているのか、人の成熟度などが国によって違ってくる。
  • コミュニティの特徴について
    • 韓国のコミュニティはクレイジーだった。すごく飲むので。
  • 今後のトレンドについて
    • ハンズオンによる経験が何よりも重要。codeを書くことから卒業していく段階になっても、それでもハンズオンを続けて学び、アウトプットを出す。それによりトレンドを予測できる。
    • リージョンの境を越えたグローバルなアーキテクチャ構築
    • 仮想通貨やブロックチェーン
    • ユーザーインターフェースは今後もあまり変わらないと思う。
  • ラーンアンドビーキュリアス
    • 学んで明日やる。今後やるとでは雲泥の差がある。
    • learn and be curious

【G】14:00~14:50:ユーザー企業におけるサーバレスシステムへの移行

speakerdeck.com

  • なぜ、サーバーレスに至ったのか
    • 大規模システムは嫌です。システム変更による影響範囲が広くて、テストが大きくなる。
    • 密結合はいやです。固有のインターフェースに基づいて接続。一方が他方を容易に取り替えられない。
    • インフラ管理は嫌です。プログラムに注力できるつまり、ビジネスに注力できる。
    • 処理の考え方としてスケールアップは嫌。159億データさばくなら、必然的にスケールアウト
  • システムを小さく、疎結合で、インフラを持たず、スケールアウト型で開発しよう。
  • サーバーレス使って見た
    • S3
      • ファイル移動が失敗する時がある。All moveでなぜか残っている。ポーリング
      • ファイル名を意識する。日付とかつけちゃうとアクセス効率が悪い(公式アナウンスはない)。
      • ハッシュ値 + ファイル名をつけることでパーティションかを回避的な。
        • 1秒間に800リクエストある以上の場合に採用した。
    • SQS
      • Queuing chain クラウドデザインパターン
      • 実行保証、複数回うごくことがある。この時の工夫方法。冪統制。
      • スケーラベル、順番保証されない。-> 結果整合性で設計する。FIFOオプションという選択肢もある。
      • Pub Subによる拡張を見越した設計。Fanoutパターン。SNSとSQS
    • Lambda
      • イベント駆動でスケーラブルで無駄がない。EC2の場合時間帯によって無駄があるとパターンが出てくるよね的な。お金に直結する的な。
      • 最大5分問題 -> 前処理を切り出すとか、処理時間を掴むとか。
      • ソース容量足りません問題。解決策なし。
    • DynamoDB
      • 結果整合性(並列と相性が良い)
      • 書き込みキャパ問題(お金はかけたくない)-> lambda同時起動数を制御しキャパシティ超えをおこさせない。
  • 開発手法
    • コーディング:Cloud9を採用。atom+sam、eclipse+samも検討したがマシンスペックに左右されるのでクラウドを利用した。
    • ソース管理:GitHub 細かいプルリクで差分を確認し、ナレッジ共有。いいよね。
    • CI/CD:circle ci使ってる。cloud formationの欠点?:Lambdaの同時実行数が設定できなかった。-> AWS CLIの実行で解決。
  • 感想
    • 苦労しましたか?
      • インフラはらくちんになった。0ではないが。
      • アプリは苦労した。新しいことをやることは当然、苦労するのでそうだよね。今は0.8。awsは制約があるから、迷わないからいい。優秀な先生がたくさんいる。
    • 作られたシステムの出来は?
      • インフラいいことだらけ。AWSが結構サーバ落ちたりする。落ちる前提のデザインで作らないとダメですってこと。
      • アプリもいいことだらけ。クラウドのメリットを簡単に、大きく享受。

【A】15:00~15:50:コンテナを守る技術 2018

speakerdeck.com

  • DockerHub 2015年の状況
    • コンテナは、Officialだから安全というわけでもない。
  • コンテナを運用する不安
    • アプリケーションの詳細な挙動、把握できてる?
    • AWSでのセキュアな構成、設計できていますか?
    • セキュリティポリシーをテストする仕組み、ありますか?
  • これまではホストごとの管理が基本
    • これからは、SGはAllow nothing, コンテナ毎に必要なroleを付与
  • アプリの挙動を把握しよう
    • どれくらいのリソースが必要?
    • どこと通信する?
    • ファイル書き込みはする?どのディレクトリ以下?
    • 内部的にセキュアな構成になっているか?
  • ホストまで管理する?
    • いろいろと規定がある場合に、管理するかも。
    • ECSがいい。ホスト管理したいなら。
    • メリットとしてアプリケーション毎にSGを振ることが可能。
  • ホストは忘れたい場合
    • fargateがいい。
  • ECSタスク定義
    • dockerが本来持つセキュリティオプションも数多く使える
  • セキュリティのチェック
    • 都度テスト:継続的にポリシー上問題がないことを確認する
    • 定期テスト
    • 実行時スキャン

(コンテナ内の脆弱性を考えるって本当に大事だよね。
パッチ当てなどの作業もコンテナ単位でやることになるのかしら。)

  • ホストとコンテナ
    • 守りやすい環境を整える
  • ホスト
    • これまで通りに守る
    • インスタンスハードニング、堅牢化
    • セキュリティ製品のインストール
      • aws inspector試してみて
  • docker-bench-security
    • コンテナを本番で動かす場合、best practiceをスクリプトで確認するためのツールになる
    • Lambdaで自動化をすれば、コストがとても安い
  • ECSエージェント
    • 特権を持つコンテナの起動を許可しない
    • コンテナ起動時にdocker security optionを使いたいケース
  • リソースの分離について
    • きちんとリソース制約 - 巻き込み事故を防ぐために
    • unlimitsで利用できる上限を決める
    • memoryを指定して、それを超えたらコンテナを落とす など
  • READ ONLY
    • 書き込めなく手段を利用する。AppArmorとか
  • ルートユーザは使わない
    • システムコールに正しく権限チェックがかかるように
    • 面倒がらずちゃんと適切なユーザを作りましょう
    • アプリケーションにあった方法で
  • 実行ファイルの管理
    • 利用するバイナリだけイメージに入れる
    • できれば静的リンクにしておく
  • ビルド
    • CI
      • static application security testingツールの利用
      • Dockerイメージのポリシーを定義&チェック
      • GoogleCloudPlatform/container-structure-test
  • 新たな脅威への対応
    • イメージの静的解析
    • SaaS:aqua, NeuVecor,
  • SSM Parameter Store & KMS & IAM Role
  • チームで意識するセキュリティ

【H】16:00~16:50:[DeepDive] AWS Japan SA Lightnings!

  • Lambda@Edgeでできること
  • aws guard duty
  • remak.js
  • cfn-flip
  • cross stack reference
  • Systems Manager Parameter Store
  • StackSetsで複数アカウント&リージェンへ一括展開

所感

初めてのJAWS DAYS!コミュニティの温度感の違いを感じました。

コミュニティは所属している人達によって文化やノリが変わるものだと感じました。
特に今回はテーマが「no border」ということで国際的な交流と、それに伴う親切心を感じ取れました。
全てのJAWS支部が同じ温度を保っているわけではないと思いますが、
今まで参加したコミュニティとは違う雰囲気を感じました。素晴らしいことです。

AWSはカテゴリが多岐に渡るので、ひたすらに技術要素をキャッチアップできる

今回の登壇資料を全て見ることだってまだ追いつかないくらい。
そしてそのカテゴリも多岐に渡る。AWSは進化が止まらないので、飽きることもなく本当に楽しいと思います。

各セッションは部屋ではない。間仕切りがある程度。

これは今までの勉強会と比較してのことですが、間仕切り程度でセッションエリアが区切られていました。
これについては特に問題ないのですが、当然のごとく周りの音で登壇者の声が聞き取りづらい場合があるので、
レシーバーの利用は必須ですね♪

以上です!
参加した皆様方、スタッフの皆様方、お疲れ様でした!

WindowsでもAnsibleを利用する!Vagrant + Ansibleのセットアップ

残念ながらAnsibleをWindowsでネイティブに動かす方法は見つかりませんでした。
ですので、Vagrantによって動かしましたので、エントリーとして残します。

本エントリーは下記環境で実施しています。

Windows OS Windows 10 Pro
Vagrant Version 2.0.1
Virtual Box Version 5.2.2 r119230 (Qt5.6.2)
Box Image ubuntu/trusty64

必要なソフトウェアのインストールとセットアップ

Downloads | Vagrant by HashiCorp

  • Virtual Box

Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle

Vagrantによる仮想サーバの起動

1. 必要なboxの取得

今回はUbuntuを利用しました。下記のサイトからboxイメージを取得。(今ならxenialのほうがいいかもしれません)
Vagrant box ubuntu/trusty64 - Vagrant Cloud

# trusty64
vagrant box add ubuntu/trusty64 https://app.vagrantup.com/ubuntu/boxes/trusty64
# xenial64
vagrant box add ubuntu/xenial64 https://app.vagrantup.com/ubuntu/boxes/xenial64
2. 仮想サーバの初期化
rem Vagrantfileの配置先は任意
cd /D d:\vagrant
mkdir ubuntuTrusty64-20170920.0.0
vagrant init ubuntu/trusty64
3. Vagrantfileの修正

指定したプライベートIPアドレスでアクセスできるように下記の35行目辺りをコメントアウトを外す。

  config.vm.network "private_network", ip: "192.168.33.10"
4. Vagrantの起動
vagrant up
5. 仮想サーバに接続
vagrant ssh

無事に仮想サーバに接続できればOK!

(2018/7/5追記)6. PasswordAuthenticationの有効化

vagrantサーバーにsshクライアントから接続することに時間をかけたくないので、
今回はPasswordAuthenticationを有効にします。
これにより、vagrantのデフォルトユーザーでsshクライアントをすぐに利用することが可能

# 仮想サーバーに接続
vagrant ssh

# ここからbashなどの操作になる。
# Ubuntuの場合、sshd_configを修正
sudo su
cd /etc/ssh/
vi sshd_config

# 52行目付近 PasswordAuthenticationをyesに
PasswordAuthentication yes

# sshdの再起動
/etc/init.d/ssh restart

Ansibleのセットアップ

1. インストール

今回はUbuntuサーバにインストールするため、下記サイトを参考にしました。
Installing Ansible — Ansible Documentation

sudo apt-get update
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

下記コマンドを実行して、無事にAnsibleがインストールされていることを確認

ansible --version

仮想サーバ環境をPackage化する

これまでセットアップした仮想サーバ環境をPackage化して保存しておく。
Vagrantの真髄ですね。

1. Vagrantの起動状態を確認
rem Vagrantファイルがあるディレクトリで実行する
vagrant status
2. 起動中のVagrantを停止する
vagrant halt
3. boxを作成する
vagrant package --output ubuntuAnsible.box

↓Package化できた!これで配布できます!
f:id:yasay:20180123164818p:plain

ハマりポイント

1. Vagrantサーバからの各サーバにSSHアクセスする時に、passphraseを設定していないのに聞かれて、接続できない。

Ansibleの問題というより、自分のUbuntuサーバのセットアップ知識が足りないだけなのですが、
ssh-agentコマンドを実行することで、passphraseを聞かれないようにすることができます。

# 下記のコマンドを入力することで、SSHアクセス時にpassphraseを聞かれるのをスキップできる
ssh-agent bash
ssh-add

Ansible コマンド例

Pingを通してみる

コマンド例:

# IPアドレスと公開鍵を直接指定する方法
ansible {ホストIPアドレス} -m ping -u {接続先ホストのユーザー名} --private-key="{公開鍵のファイル名}"
# 予め用意したホストファイルを利用する方法
ansible {グループ} -i {ホストファイル名} -m ping
yum updateのdry runコマンドをplaybookから実行してみる

コマンド例:

# ホストファイルのみ指定して直接yum updateを実行する方法
ansible {グループ} -i {ホストファイル名} -K -m yum -a "name=* state=latest" --check
# 予め用意したPlayBookを利用する方法
ansible-playbook -i {ホストファイル名} -K {playbookファイル名} --check

yum updateのPlayBookの例:

- name: yum update
  yum:
    name: *
    state: latest
  notify: reboot by handler

handlerの例:
この場合、yum update完了後に再起動する。

- name: reboot by handler
  command: "/sbin/shutdown -r now"
接続先サーバのPythonのバージョンを確認してみる
ansible {グループ} -i {ホストファイル名} -K -m shell -b -a "python --version"

便利なVagrant自動起動設定

Windows

下記のbatファイルを作成し、タスクスケジューラにてログイン時に起動するよう設定しておくと便利

rem "%vagrant_startup_dir%"は環境変数
cd /D %vagrant_startup_dir%
vagrant up

感想

Ansibleは大量のPlayBookがGitHubなどに転がっており、
初回のサーバー接続設定さえ滞りなく完了させれば、その後の学習コストは低いと思います。

何より、エージェントレスであり、
ローカル環境のセットアップでも利用できますので、
普段から使っていきたいと思える構成管理ツールですね!
使っていて楽しいです!

これからも、Infrastructure As Codeを試み続けていきたいと思います!

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 - Quality Testing, Scores and Reviews
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クライアントによくある高度な機能は
持ち合わせていないので、使い所が限られるというのが正直な所でしょうか。

(2018.7.20追記)踏み台サーバーを経由したい場合は、sshコマンドの標準ポートフォワーディングで
ローカルホストのポートを用意し、Intellij IDEAから用意したポートに接続すればよいですね。

(2018.7.20追記)参考サイト

tech.aainc.co.jp



例えば、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

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