Notes

メモ書き

Xperia X Compact SO-02J を使ってみて

Xperia X Compact SO-02J を購入してしばらく経ったので、思ったことをいくつか書いていきたいと思います。

 

端末はdocomoのものですが、キャリアは DMM Mobile になります。

以前は Xperia Z5 Compact グローバルモデルを DMM Mobile で使っていました。

Xperia X シリーズでは docomo端末でも mvnoテザリング可能とのことなので、今回の買い替えではdocomoの白ロムを購入。(値段が安かったし!)

 

docomoアプリの通知が多過ぎる。。

実は初めてのdocomo端末。最初これに悩まされました。。

とりあえず対策としてやったのはdocomo純正アプリのアンインストール及び無効化。

それもできないものは通知OFF設定。

いまだにバッテリーセーバー時にdアカウント設定の通知だけは出ます(これだけはどうしても消せなかった...)が、それ以外は通知されなくなりました。

(この子です↓)

f:id:cask-st:20170707161149p:plain

一応バッテリー使用量を確認すると、docomoアプリが上位に来るようなことはありませんでした。

裏でdocomoアプリが動いてバッテリーを食っているというようなことはなさそうです。

まぁこれくらいならなら許容範囲です。

画面の端がラウンド形状(保護シート選びに注意!)

多分実機を触らないと伝わりづらいんですが、下(または上)から見るとこんな↓形状をしています。

f:id:cask-st:20170707161938p:plain

その影響でディスプレイのフチも丸みを帯びた形状になっています。

 

ここで何が問題かというと画面保護シートが合わないことがあるということです。

丸みを帯びた画面フチ部分が浮いてしまったり。。

そもそも丸みを帯びたフチ部分にはシートを覆わないように、わざと横幅を狭く作っていたり。。

 

僕は横幅を狭く作っているのに当たってしまい、保護シートが画面全体を覆ってくれず、

ちっちぇーよ!という状態になってしまいました。

そのため保護シート選びは慎重に行う必要があります。

Amazon楽天は説明を見たらちゃんと大体ちゃんと書いてあります。

 

ちなみに最終的にこちらのシートを張って、全面覆えて満足しております。

指紋認証がさらに爆速!

1つ前に使っていた Xperia Z5 Compact 指紋認証のスムーズさに感動していましたが、

その精度がさらに上がってます!

これは使った人にしかわからないんだろうな。

と思うので興味がある人はモック触ってみるのも良いかと。

(もしお店で指紋登録したら消すのを忘れずに!笑)

前に使っていたSDカードは一度初期化した方がいい

同じXperiaからだから大丈夫かなと思ってたけど、少し動作がおかしかったです。

認識はしてファイルも見れるんです。

ただ、Musicアプリで検索ができない。。

一度初期化して音楽ファイルを入れ直したら普通に動きました。

 

 

総合的には非常に満足しています!

とりあえずこんなとこです!

 

同居人に弁当箱を洗ってもらえるようになるまで

うちの同居人(妹)は、もともとタイミングが合えばついでに洗い物もやってくれてたんですね。

(もちろん僕もタイミングが合えば相手の洗い物も全部やります)

ただ、弁当箱だけは「めんどくさい!」という理由で絶対に洗ってくれませんでした。

こっちが「ついでだから洗ってよー」と軽くつついても、頑なに洗ってくれませんでした。。

まぁもともと自分のものは自分で。というルールなので他の皿も洗わないのが普通なんですが。笑

で、僕はどうしたか。

相手が自分の弁当箱を洗ってくれなくてもいい。

ただ、自分は相手の弁当箱は絶対に洗う。ということは決めていました。

そして相手が弁当箱だけ洗わずに他の洗い物だけやった時でも「ありがとう」ときちんと伝える。

だって家事全般考えたら向こうの方が負担大きいんだもん。

で、どうなったか

1~2年程それを続けた結果、なんと同居人が僕の弁当を洗ってくれるようになったのです!

そうなるかなぁという計算は割とありました笑

 

自分はやってないのに相手はやってくれる。

それなのに相手はこちらに対して悪意(敵意?)どころか感謝の意を示してくる。

普通の人なら申し訳ない気持ちになるはず。

生まれた時から同じ家で育った兄妹であれば、そこらへんの感じ方は近いはず。

という計算 笑

もし、「こっちも洗ってんだから、お前も洗えよ!」とか言っていたら

絶対に洗ってくれてないでしょうね。

そして関係も悪くなってたでしょうね。

なんでもそうだと思いますが、相手に無理やり言うことを聞かせるのは基本的に無理なんです。

先日離婚してしまった友達夫婦の話

嫁側の話ですが、聞いているとまさにこれでした。

相手には自分の言う通りに変わってほしい。

だけど自分は相手の言う通りには絶対に変わりたくない。

それじゃうまくいかないよなぁと。

(まぁもちろん離婚の原因はそれだけではないとは思いますが。)

変えられるのは自分だけなんです基本的に。

相手を変えるには、相手が自発的に変わってくれるように自分の言動を変える

そしてそれをやっても一朝一夕では相手は変わってくれないから、トライ&エラーを繰り返しながら気長にやっていく。

 そして忘れちゃいけないのが、目的は相手を変えることではない!ということ。

 

相手といい関係を保ち、いい感じに生活する。ということが目的(ちとふわっとしてますが。。)だということを忘れちゃいけない。

弁当箱を洗ってくれなくても

別に洗ってくれなくてもいいんです!

相手の洗い物をしてあげて「いつも料理とか掃除ありがとう」

弁当箱以外の洗い物をしてくれて「ありがとう」

そうゆうことをやってるだけで、結構気持ちがいいものなんです。

(「俺っていい兄貴やってるなぁ」と自己陶酔にも浸れますw)

そしてそれはいい感じに生活するという目的に沿った行動になってるんです。

 

Macで容量を食っている場所を探す方法

コマンドプロンプトで以下コマンドを実行。

カレントディレクトリのファイルの容量を確認できます。

du -sh *

管理者権限を求められる場合は以下。

sudo du -sh *

するとこんな感じで確認結果が出力されます。 

$ du -sh *

1.1G CoreSimulator

6.7G Xcode

 

確認したところ自分の環境では、

容量を食っており、かつ、消しても問題ない

場所は以下でした。

全て Xcode での IOS開発関連です。

(「 ***」はユーザ名です。)

 

インストールしたSDK

/Users/***/Library/Developer/Xcode/iOS DeviceSupport

→古いSDKやBeta版などは消してもOK。

 

シュミレータ

/Users/***/Library/Developer/CoreSimulator

→消してもXcodeからまた落とせるので、容量が逼迫している場合は消してOK。

 

Nexus7(2013) から FireHD8(2017) に買い替えて Google Play ストア入れてみた。

もともと使っていた Nexus7(2013) が古くなってきたのと、Amazonプライム会員になったのでその恩恵を受けたく、FireHD8(2017) に買い替えてみました。

 ※Fire によるプライム会員の恩恵についてはここらへん(公式)参照。 

Nexus7(2013) vs FireHD8(2017)

まずは簡単なスペック比較。

項目 Nexus7 (2013) Fire HD8 (2017)
ディスプレイサイズ 7インチ 8インチ
OS ※ Android 6.0.1 Fire OS 5.4.0.0
プロセッサ

クアッドコア1.5GHz

(Qualcomm Snapdragon

 S4 Pro APQ8064)

クアッドコア1.3GHz
メモリ 2GB DDR3LM 1.5GB
ストレージ※ 16 / 32GB 16 / 32GB
SDカード なし microSD (256GBまで対応)
カメラ ・インカメラ(120万画素)
・アウトカメラ(500万画素)
・フロントカメラ
・2メガピクセルリアカメラ
Wi-Fi a/b/g/n a/b/g/n
センサー

GPS電子コンパス、光センサー、

加速度センサー、ジャイロスコープ

NFC、磁気センサー


GPS電子コンパスNFC

 はないっぽ。

バッテリー 約10時間 (3,950mAh) 12時間 (?mAh)
サイズ 200×114×8.6mm 214×128×9.7mm
Title 約290g 369g

※OS は 2017/06 現在のです。

※ストレージは Nexus 16GB → Fire 32GB に買い替えました。

これだけ見るとむしろスペックダウン感がありますが、FireHD8 の方がサクサク動きます!

特にタッチの感度が良いです!

まぁNexus7 が古いのもあるのかな?

Google Play ストア

購入して迷わずGoogle Playストアをインストール。

こちらのサイトを参考にしました。

keytoolでの署名確認方法も載っていたのが決め手。

もしかしたらちゃんと動かないアプリもあるのでは?

とも思ってましたがそんなこともなく、今のところ全て普通に動いてます。

結論

このFire、、ただのいい感じな Android タブレットやん!笑

という感じです。

ようやくカバーも手に入ったので外でもガンガン使っていきたいと思います。

 

関連

いい感じだと思ってたら固まる問題発生。。と解決まで [2017/07/16 追記]

cask-st.hatenablog.com

Top/Bottom layout guide が iOS 11.0 から Deprecated

こちらの Apple Developer Forums についてです。

iOS 11.0 に移行した際に発生するワーニング「Top/Bottom layout guide is deprecated since iOS 11.0」の発生と対処までのメモ書きです。

Xcode 8.3.3 でプロジェクト作成

Label配置

適当に Label を配置します。

f:id:cask-st:20170621220211p:plain

Constraint 設定

作成した Label に Constraint(制約)を設定。

ここでは Label の上側と左側に設定。

f:id:cask-st:20170621220216p:plain

Constraint 確認

きちんと Constraint(制約)が設定されていることを確認。

f:id:cask-st:20170621220220p:plain

 

Xcode 9.0 beta へ移行、ワーニング対処

次に 先ほど Xcode 8.3.3 で作成したプロジェクトを Xcode 9.0 beta で開きます。

Deployment Target 変更

Deployment Target を 11.0 に設定します。

f:id:cask-st:20170621220809p:plain

ビルド

この状態でビルドすると

Deprecated

Top layout guide is deprecated since iOS 11.0 

のワーニングが発生します。

f:id:cask-st:20170621220955p:plain

ワーニング解消

「Use Safe Area Layout Guides」にチェックを入れる。

再度ビルドするとワーニングが消えます。

f:id:cask-st:20170621221913p:plain

以上。

DMM光(IPv6) & WN-AX1167GR が繋がらない?

スマフォがDMM Mobileなので、インターネットもDMM光にまとめた方がお得だろうということで変更しました。
(工事無料のキャンペーン中だったしということでw)

IPv4IPv6 があるとのことで、今後を考えるとIPv6かなぁということでIPv6を申込み。

今まで使っていたWi-FiルーターはIPv6未対応だったのでこの機会に買い替えました。
(10年くらい使ってた...w)

それがこちら↓
WN-AX1167GR
f:id:cask-st:20170604172118j:plain:w500
www.iodata.jp


工事後はプロバイダ等の設定なしで繋がるとのことで。
WN-AX1167GR 経由でPCをWi-Fi接続。

f:id:cask-st:20170604173440p:plain:w500

おお!ほんとに繋がった!超楽!!

さて、普通にネットサーフィンでもするか。

f:id:cask-st:20170604173444p:plain:w500

インターネットへアクセスできませんでした。

[かんたん設定]ボタンで設定を行ってください。

あれ??見れない。。

Googleのページが見れてるってことはプロバイダ関連ではない(まぁプロバイダ側もそう言ってるし)。
ということで、恐らく Wi-Fiルーター側の設定に問題があると睨んで調査。


結論から言うと、
Wi-Fiルーターのファームウェアを更新しなければならない
という話。

以下に書いてありました。
WN-AX1167GR 画面で見るマニュアル | アイ・オー・データ機器
引用:

①[ステータス]メニューの[ファームウェア]のバージョンを確認

ファームウェアのバージョンが[3.00]以下の場合は、ファームウェアを最新に更新する(「ファームウェアの更新手順」参照)

ファームウェアのバージョンが[3.10]以上の場合は、手順4へお進みください。

ファームウェアの更新をおこなった場合は、本製品を初期化し、インターネットにつなぎなおす(「出荷時設定へ戻す方法(初期化方法)」、「②スマホやPCをつなぐ」参照)

購入時は v2.00 だったので更新しなきゃだったー!


早速ファームウェア更新しました。

更新方法はこちらを参照。
http://www.iodata.jp/lib/manual/pdf2/wn-ax1167gr_wn-gx300gr_firmup.pdf


ファームウェアをダウンロードして、ルーター設定(http://192.168.0.1/index.htm)の
[システム設定] > [ファームウェア]
からファームウェア更新。

f:id:cask-st:20170604173455p:plain:w500


しばらく待ってファームウェア更新が完了したら、設定画面「インターネット」に「v6プラス」の項目が増えてるので、選択して設定。

f:id:cask-st:20170604173458p:plain:w500


以上でつながるようになりましたー!

UserNotifications Framework の Custom Action 実装方法

iOS10 から Notification がカスタマイズできるようになりました。
基本的に Notification の実装方法は Local and Remote Notification Programming Guide の通りなのですが、カスタマイズのやり方で一部記載されていない点があったのでメモ。

Custom Action を表示するために

Custom Action を表示するためには、
 1.Custom Action のカテゴリID
 2.表示するコンテンツのカテゴリID
を同一にする必要があるようです。
(同一でない場合は Custom Action のない通知が表示されました)
以下ソースコードになります。

環境 : Xcode 8.2.1 (iOS SDK 10.2) / シュミレータ

[Objective-C]

//  ViewController.h
#import <UIKit/UIKit.h>
#import <UserNotifications/UserNotifications.h>

@interface ViewController : UIViewController <UNUserNotificationCenterDelegate>
@end
//  ViewController.m
#import "ViewController.h"

@interface ViewController ()
@end

/** カテゴリID */
static NSString *const CSKCategoryIdentifier = @"TEST_ACTIONS";

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"%s", __func__);
    
    // Notification のパーミッション許可要求
    UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter];
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert + UNAuthorizationOptionSound)
                          completionHandler:^(BOOL granted, NSError * _Nullable error)
    {
        if (granted) {
            // Notification のパーミッションが有効
        }
    }];
    
    // Delegate を設定
    [UNUserNotificationCenter currentNotificationCenter].delegate = self;
}

- (IBAction)registerLocalNotification:(UIButton *)sender {
    // カスタム Action を設定
    UNNotificationAction* noneAction = [UNNotificationAction
                                        actionWithIdentifier:@"NONE_ACTION"
                                        title:@"None"
                                        options:UNNotificationActionOptionNone];
    
    UNNotificationAction* destructiveAction = [UNNotificationAction
                                               actionWithIdentifier:@"DESTRUCTIVE_ACTION"
                                               title:@"Destructive"
                                               options:UNNotificationActionOptionDestructive];

    UNNotificationCategory* category = [UNNotificationCategory
                                        // 1.Custom Action のカテゴリID
                                        categoryWithIdentifier:CSKCategoryIdentifier
                                        actions:@[noneAction, destructiveAction]
                                        intentIdentifiers:@[]
                                        options:UNNotificationCategoryOptionNone];
    
    // NotificationCenter に カテゴリ を登録
    UNUserNotificationCenter* center = [UNUserNotificationCenter currentNotificationCenter];
    [center setNotificationCategories:[NSSet setWithObjects:category, nil]];

    // 通知するメッセージを設定
    UNMutableNotificationContent* content = [UNMutableNotificationContent new];
    content.title = [NSString localizedUserNotificationStringForKey:@"Title"
                                                          arguments:nil];
    content.body = [NSString localizedUserNotificationStringForKey:@"Body"
                                                         arguments:nil];
    content.subtitle = [NSString localizedUserNotificationStringForKey:@"Subtitle"
                                                             arguments:nil];
    content.sound = [UNNotificationSound defaultSound];
    // 2.表示するコンテンツのカテゴリID
    content.categoryIdentifier = CSKCategoryIdentifier;
    
    // 5秒後に通知するようにトリガーを設定
    UNTimeIntervalNotificationTrigger* trigger = [UNTimeIntervalNotificationTrigger
                                                  triggerWithTimeInterval:5
                                                  repeats:NO];
    UNNotificationRequest* request = [UNNotificationRequest requestWithIdentifier:@"Wait"
                                                                          content:content
                                                                          trigger:trigger];
    // Notification のリクエストを追加
    [center addNotificationRequest:request
             withCompletionHandler:^(NSError * _Nullable error)
    {
    }];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end

で以下のようなカスタムアクションが表示されます。

f:id:cask-st:20170306223032p:plain