あくぽろぐ aqpolog

へなちょこエンジニアの備忘録

unihertz Atomのテザリングが繋がらない場合の対処法

タイトル通りの現象にちょっとハマったのでメモ。

テザリングが一向に繋がらない現象

もう少し詳しく書くと、unihertz Atomテザリングモード(アクセスポイントモード)に設定して、他端末から「ATOM1」に接続しているのに繋がらない! という現象。
AtomはAPモードになってるのに、一向にiPhoneからAPが見えない…AtomiPhoneの再起動などを試してもダメ。

原因は?

unihertzの前機種であるJellyPro時代からある現象らしく、結論だけまとめると2.4GHz帯で特定Ch(チャンネル)になっちゃうとアウト。
「Jelly proテザリング問題 対策編…。」むるきちのブログ | 日々の煮こごり(蛇式) - みんカラ

解決方法

サクッと解決編。2.4GHz帯のChの問題なら5GHz帯使えばよくね?
というわけでアクセスポイントの設定から変更して無事に解決。

設定については下記ブログが画像つきでまとめてあってわかりやすいので参考にどうぞ。
「Unihertz Atom」Android 8.1テザリング設定 | DW230

あとは試してないけどBluetoothテザリングでも回避できるはず
(速度は多少犠牲になるけど、そのかわりバッテリー持ちは伸びる)。

余談

5Ghz帯もChによって屋外利用禁止とかレーダーの影響受ける(DFS:レーダー波受信するとCh強制変更)とか色々あるはずなんだけど、 AtomテザリングどのCh使ってるかの情報ってどこかにあるのかな。
とりあえず自分は屋内でしか使わないから気にしなくても大丈夫そうだけど…


  1. デフォルトのアクセスポイント(SSID)名。

2018年買ってよかったガジェット

2018年買ってよかったガジェット

もう2019年になっちゃいましたが、タイトルままです。特に良かったやつだけまとめます。
普通だったり悪かったりまで書くと2018年の散財っぷりが浮き彫りになるので書かない(真顔

あと写真撮ってからにしよう、と思ってたけど記事が塩漬けになりそうなのでとりあえずアップします。
気が向いたら(余裕があれば)あとで写真は追加するかもしれない。

クラウドファンディング

やや余談だけど、2018年はクラウドファンディングを利用していくつかガジェット類を購入しました。
原則として過去にCF成功しているメーカーのもの、最悪失敗してお金が戻ってこなくても許せる少額のものにしか出資しなかったので、2018年内に届いたものについては特に大きな問題もなく使えています。

CFで出資してみた感想としては、上記ルール外のものに出資するのはやはり(仕組み上仕方ないとはいえ)リスクが高いかなあ、という感じ。
あと出荷が遅れるパターンが多すぎ。事前に書いてあった出荷日程通りに出てくることはまずない。

今やCFは色々サイトがあるわけですが、海外CF(KickstarterやIndiegogo)と国内CF(Makuakeとか)それぞれ使ってみた感想。
国内CFは敷居自体は低いですが、新着一覧とか見ててもゴミみたいなものが一杯出ててそういう意味で敷居が高いですね。まあこれは海外CFでも一緒か。
海外CFは色々敷居が高いけど(ある程度の英語力が必要とか、初期不良あたったときのサポート対応めんどいとか)、そもそもの母数が多いので必然的に物として良いものも多い印象です。海外メーカーが話題集め的にCFに出してるものなんかもあるし(ほぼ失敗リスク0)。

と、余談はここまでにして2018年CF出資してよかったもの(&2018年内に届いたもの)だけ紹介。

unihertz Atom

www.kickstarter.com

Atom | Unihertz

小型タフネスAndroidスマホKickstarterで出資。
もともと同メーカーのJelly Proを面白枠で購入していて(これは確か国内Amazonに出た頃)、
画面サイズ2.45インチだけど思ったより使えるじゃん、となっていたところに出てきたので出資してみた感じ。

  • Pros(いいところ)
    • 小型端末だけどサクサク動く(JellyProより結構スペックアップ)
    • ほぼ素のAndroid(当然GooglePlayも使えるし、日本語で使える)
    • タフネスなので雑に扱っても平気
    • 小型端末にしてはバッテリーが長持ち(2000mAhもある)
    • 小型端末にしては珍しく指紋センサー搭載
    • サイドに有るPTTボタンに色々割当できて便利
  • Cons(悪いところ)
    • 指紋センサーの性能がいまいち
      • 指の置き方が登録時とズレると失敗しまくる。置き方さえバッチリなら認証速度は問題ない
      • 指紋センサーで数回認証に失敗すると指紋でロック解除できなくなる
        • 取り出すときに触れると誤検知するので厄介
    • タフネスの代償として分厚い
    • 画面が小さいので、アプリによってはレイアウトが崩れたりする
    • 知ってたけどNFC対応が日本ではイマイチ
      • FelicaIDm読んだりするカードリーダーとしては使えるので個人的には必要十分
    • カメラの画質はそれなり

文字入力の難易度についてはどちらにも属さないかな、と思ったので入れてない。
小さいので当然打ちづらさはあるけど、小さい割には入力しやすい方だと思う。

総合的には悪くないんだけど、分厚くてポケットに入れるとやや邪魔くさい点がネック。
最近は鞄に放り込んでもっぱらモバイルルータ代わりに使っている。電池持ちが悪くないので結構便利。

Chuwi HiGame

HiGame PC - Affordable high-performance mini PC | Indiegogo

www.makuake.com

超小型ゲーミングPC。Core i5モデルの方をIndiegogoで出資。
IntelのCPUとAMDGPU悪魔合体したチップセットを搭載したWindowsです。
GTX1050~1060ぐらいのグラフィック性能があるとかないとか。
上位のi7モデルはもう少しグラ性能もいいらしいけど、そこまで重たいゲームをやるつもりはなかったので見送り。

  • Pros(いいところ)
    • (i5モデルの場合)CF価格が約9万円だったので、圧倒的なコスパ
    • 本体が小型なので机上にも余裕で置ける
      • ゲーミングノートPCと違ってフットプリントが圧倒的に小さい
      • ついでに既存のディスプレイ資産などが使い回せる
    • ちょっとしたSteamゲームならサクサク動く
  • Cons(悪いところ)
    • ACアダプターがデカイ(個人的にはもっとデカイのも覚悟していたので許容範囲)
    • ファンの音が甲高い(机上に置いた場合気になる)
    • 前面にあるポートがUSB Type-C 1ポートのみ

Steamで見かけた面白そうなゲームが"対応プラットフォームWindowsのみ"って状況が結構あって、
前からちょっと軽めのPCゲームやる用のマシンがほしいな、と思っていたので要件的にはドンピシャでした。これが出る前までは自作で格安ゲーミングPCみたいなのを組むつもりでいたけど、より要件とマッチしたこいつを選んだ感じ。

しかし、Windowsを個人用に購入して自宅で使用するのは何年ぶりだろう。10年ぶり?
仕事ではWin7使ってるので、メインPCとしてWin10だけを使ってる人は気でも狂ってるのかな…と思わされることが稀によくある。MSさんシッカリして!って感じ。WaaSとは…?

CF以外で一般的に購入したもの

CF枠以外のものも抜粋する感じでいきます。

Amazon Echo dot(第2世代)

なんだかんだスマートスピーカーはいくつか持ってるけど個人的に一番お気に入りなのがEcho dotです。
AUX外部出力があるので、PCスピーカーに繋げるのが最高。Amazonミュージック垂れ流すのに便利。

ただ現状だとタイマーとしての利用が一番多いぐらいの使い方しかしてないんですけどね。
他には天気聞いたり、スマートリモコン連携でエアコンや照明のON/OFFしたりとか。

GoogleHomeもminiに変えたいけどフットプリントはそんな変わらないんだよなあ。

新「Echo Dot」「Echo Plus」は何が変わった? 旧モデルと比較してみた (1/2) - ITmedia PC USER
第2世代、もうAmazon上でディスコンっぽくて見当たらないので第2世代と第3世代の比較記事を置いておく。

AppleWatch Series4

ようやく全てがサクサク動くスペックになった、と感じる。 雑なレビュー書いてるので、詳しいことはそっちをどうぞ。

AppleWatch Series4 (GPS, 40mm)購入レビュー - あくぽろぐ aqpolog

これ書いた時点から特に感想は変わってない感じ(最高に気に入ってる、でも値段は高い)。
最近は睡眠自動計測アプリを入れて、充電時を除いた毎日22時間ぐらい付けっぱなしな生活をしてます。

DJI OSMO Pocket

www.dji.com

「GoPro HERO7 Blackの電子手ぶれ補正がすごい?ウチは物理的にジンバルに小型カメラを搭載するぜ!」みたいなコンセプトで出てきた3軸ジンバルカメラです。
ドローンのカメラ部分だけ抽出したみたいな製品(実際DJIはドローンで有名なメーカー)。
起動シークエンスの動画見て購入を決意した というのは半分冗談ですが(半分本気かよ)、360度カメラよりは使い勝手が良さそうなのでダメなら手放すつもりで買ってみました。

  • Pros(いいところ)
    • スマホ用ジンバルに比べると圧倒的に小型軽量
    • 操作レスポンスが良い
      • 起動シークエンスが抜群に格好良い
    • パノラマ撮影モードが思った以上に素敵
  • Cons(悪いところ)
    • 本体に3脚穴(1/4インチネジ穴)や、ストラップホールがない
    • 操作レスポンスはいいが本体モニターは1インチなので視認性は悪い
      • モニターサイズも相まって、本体だけでの操作はややし辛い(スマホを繋ぐと快適)
    • GoPro類に比べると縦長でサイズは大きめ(逆に言えば本体のみで手に持ちやすいのはOsmoPocket)
    • 画角が狭めなので自撮りはやや厳し目(手で持つ限りは、ほぼ顔のアップになる)
    • 同社Osmo Mobileのようなスマホ用ジンバルが1.5万円前後で買えることを考えると4万超は高額

詳細なレビューは後日書こうかな、と思ってる。
年末届いたばかりで、まだ全然活かせてないので真価は不明だけど、とりあえずパノラマモードは良かった。
あと 起動シークエンスは抜群に近未来感あって好き

[Reviews]Vol.26 最小で最高な3軸ジンバルOSMO POCKETに首ったけ!日本最速詳細レビュー[前編] - DRONE | ドローン専門メディア
記事中程に起動シークエンス(起動の様子)の動画がある。

Canon PowerShot G9X

価格.com - CANON PowerShot G9 X 価格比較
物撮り用に中古で購入した、1型センサー積んだいわゆる高級コンデジの1種。

  • Pros(いいところ)
    • 1型センサーなので画質がいい
    • 軽量でコンパクト
    • 起動速度や操作レスポンスが良くストレスフリー。
      • 軽量コンパクトで起動速度が早いのでさっと出してさっと撮る用途に向いている
    • USB充電対応
  • Cons(悪いところ)
    • USB端子カバーが開けにくい
    • 十字キーがなくタッチパネル操作なところ(レスポンスは良いので、慣れれば気にならない)
    • バッテリーの持ちが悪い(旅行先などでヘビーユースしなければ気にならない)
      • そもそもUSB充電対応なので移動中などにモバイルバッテリーで充電すれば解決

とにかく操作レスポンスが良いところが最高。
画質に関しては最近のハイエンドスマホに比べてすごい上か、と言われると微妙な感じがするけど、
やっぱり1型センサーと明るいレンズは自然なボケ感が出せる(より大きいセンサーに比べると控えめだけど)のでいい感じの写真が撮れる。
これも年末頃手に入れてまだまだ活躍シーンが少ないので今後使っていく上で細かい不満点は出てくるかも?

Jabra Elite 65t

Jabraの完全ワイヤレスイヤホン「Elite 65t」が本気でスゴイ! 音声アシスタント完全対応、隙の無い機能と完成度 (1/3) - PHILE WEB
最近流行りの左右独立完全ワイヤレスイヤホン。

  • Pros(いいところ)
    • 接続の安定性が抜群。ほぼ途切れることがない
      • TWSイヤホンでありがちな、瞬断やノイズが人混みでも全然発生しない
      • ユニクロや書店に設置されてる万引き防止ゲート?は強烈なのか途切れる
      • ちなみに家電量販店のBluetoothイヤホン視聴コーナーでは途切れもノイズもない
    • 充電ケースが小さく持ち歩きやすい
    • 通話性能が高い(マイク性能が高い)
    • 外音取り込み機能がある(レジなどで外さずに対応できる)
  • Cons(悪いところ)
    • 充電ケースの蓋がやや開けにくい(慣れればそこまで気にならない)
    • 充電ケースの充電端子がmicroUSB(USB Type-C版のマイナーチェンジケース出して…)
    • 充電ケースがぶ厚めで丸っこい形状なのでポケットに入れるとやや存在感有り
      • 他の有象無象に比べると圧倒的に小柄だが、AirPodsのケースには劣る
    • イヤホン本体がやや大柄(個人的には耳にあっているのか気にならない)

Apple iPad Pro 11"

www.apple.com
文句なしに2018年ベストバイ。

  • Pros(いいところ)
    • USB Type-C端子対応!!!
      • DP-Altモード対応したディスプレイに繋げばケーブル1本で映像出力可能
      • 市販のUSB-C to HDMI変換をかませばHDMI出力も容易(純正アダプター不要)
      • デジカメを繋ぐと画像取り込みモードが立ち上がって便利
    • 圧倒的に薄い
    • FaceID採用でアンロックが楽
  • Cons(悪いところ)
    • 薄すぎて曲がりやすい(剛性が低い?)という噂
      • 人生で1回もイヤホン断線させたことがないレベルで丁寧に物を扱うので気にしてない
    • FaceIDカメラがベゼルに溶け込んでいてうっかり手で覆いがち(当然顔認証できない)
    • 薄すぎてイヤホンジャックがない
      • 本体スピーカーの音が割といい&Bluetoothもあるので個人的にはそこまで気にならない

総評

とりあえず2018年はAppleに貢いだ年になった感がすごかった。
AppleWatch s4、iPhone XS MaxiPad Pro 11"、各種AppleCareなどで30万以上は余裕で貢いでる…

今一番恐れてるのは、2019年モデルのiPhoneがiPadProと同じUSB-C端子採用になったら、
(Care加入して最低2年は使うぞ…という)"決意"を翻して買い替えちゃうかもしれないことですね。
それぐらいUSB-C採用はインパクトある出来事でした。

2019年の豊富

もう少しガジェット散財は控えめに

Youtube-dlで1080p動画ダウンロード手順を簡略化するスクリプトを書いた

かいた。

内容的にはタイトルで全部です。というのも流石に何なので、簡単に説明を書きます。

以前、youtube-dlで1080p画質でDLする手順を簡単にまとめた。

メモ:youtube-dlで1080p - あくぽろぐ aqpolog

実際日常的に使っていて、やっぱり手順が多くてめんどくさい
(そもそもなんで(best)指定で1080pを落としてくれないのか…1)。
というわけで、URL与えたら一発で1080pでDLするところまでやってくれるスクリプトを書いた。

もともとの手順

  1. 対象動画のURLをコピー
  2. コマンドライン上でyoutube-dl -f <URL>を実行
  3. 実行結果から対象(1080p)の動画フォーマットコードと音声フォーマットコードを見つける
  4. 見つけたフォーマットコードを元にyoutube-dl -F <vcd>+<acd> --merge-output-fomart mp4 <URL>のようなコマンドを実行

スクリプト使用時の手順

  1. 対象動画のURLをコピー
  2. コマンドライン上でpython ydl1080p.py <URL>を実行

実行に必要なもの

  • python 3.n (2.7環境でyoutube-dlが動かなくなってるっぽい?ので。動くなら2.nでも多分平気です)
  • youtube-dl 最新版
  • ffmpeg(--merge-output-format利用時に必要)
  • 多少の知識

動作確認は以下環境で実施。他環境の場合はよしなにしてください。

スクリプト(ydl1080p.py)

やってる内容としては、

  1. subprocessモジュールでyoutube-dlを実行、フォーマットコードリストを取得
  2. フォーマットコードリストを単純に一行ずつfindで検索して1080pのビデオフォーマットコード(とオーディオコード)を取得
  3. 取得したコードでyoutube-dl -F <vcd>+<acd> --merge-output-fomart mp4 <URL>コマンドを生成
  4. 生成したコマンドをsubprocessで実行(動画のDL実施)

という単純なやつです。コードも雑なので適当に参考にしてください。

  • 以下コードをテキストファイルにコピペして保存
  • テキストをydl1080.pyなどにリネーム
  • 動画をDLしたいフォルダに置く
  • コマンドプロンプトやターミナルでスクリプト置いたフォルダにcd
  • python ydl1080p.py <URL>を実行
#!/usr/bin/env python3
# last-update:2018/12/06

# import
import subprocess
import sys


class YoutubeDlSupport:

    def __init__(self):
        pass

    @classmethod
    def get_fmt_cd(cls, param_url=''):
        """
        get_fmt_cd: 1080p動画フォーマットを自動判定してDL
        :param param_url: 対象動画のURL
        :return:
        """

        if not param_url:
            print('Need "param_url" option to run this method')
            return

        # command = 'python ayd_sub.py {0}'.format(param_url)
        command = 'youtube-dl {0} -F'.format(param_url)
        with subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as proc:
            print('youtube-dl return code : {0}'.format(proc.returncode))
            outs, errs = proc.communicate()
            print('outs:{0} errs:{1}'.format(len(outs), len(errs)))

        if len(outs) == 0:
            return
        list_ex = outs.splitlines()
        # list_ex = str_return.readlines()

        # initialize
        audio_fmt_cd = ''
        video_fmt_cd = ''
        best_video_fmt_cd = ''
        p60_fmt_cd = ''
        no_audio_flg = False

        # get 1080p fmt code
        for i, elem in enumerate(list_ex):
            elem = elem.decode()
            if elem.find('m4a') >= 0:
                print('Found audio(m4a) format! On:{0}L -> {1}'.format(i, elem))
                audio_fmt_cd = elem[:3].strip()
                print('"{0}"'.format(audio_fmt_cd))
            if elem.find('x1080') >= 0 and elem.find('mp4') >= 0:
                print('Found 1080p(mp4)! On:{0}L -> {1}'.format(i, elem))
                if elem.find('p60') >= 0:
                    print('Found 1080p60(mp4)!')
                    p60_fmt_cd = elem[:3].strip()
                    print('"{0}"'.format(p60_fmt_cd))
                    continue
                video_fmt_cd = elem[:3].strip()
                print('"{0}"'.format(video_fmt_cd))
            if elem.find('(best)') >= 0:
                print('Found best! On:{0}L -> {1}'.format(i, elem))
                best_video_fmt_cd = elem[:3].strip()
                print('"{0}"'.format(best_video_fmt_cd))
        if not audio_fmt_cd:
            audio_fmt_cd = 'Not found...'
            no_audio_flg = True
        if not video_fmt_cd:
            print('Target video format is not found, so set BEST instead.')
            video_fmt_cd = best_video_fmt_cd
        if len(p60_fmt_cd) > 0:
            print('1080p60Hz video format is found, so set p60 instead.')
            video_fmt_cd = p60_fmt_cd

        # make ydl command
        if no_audio_flg:
            param_f = '-f {0}'.format(video_fmt_cd)
        else:
            param_f = '-f {0}+{1}'.format(video_fmt_cd, audio_fmt_cd)
        video_fmt_suffix = 'mp4'
        param_merge = '--merge-output-format {0}'.format(video_fmt_suffix)
        # param_out = '-o [%(timestamp)s] %(title)s(%(duration)s).%(ext)s'
        # TODO: Windowsの場合は%文字列二重にする必要あり?(要検証)
        # TODO: Linuxの場合はfmt_template部分はクオートで囲む必要あり?(要検証)

        # cmd_fmt = 'youtube-dl {0} {1} {2} {3}'.format(url, param_f, param_merge, param_out)
        cmd_fmt = 'youtube-dl {0} {1} {2}'.format(url, param_f, param_merge)
        # 'youtube-dl <VID or URL> -f nnn+nnn --merge-output-format mp4 -o hogehoge'
        print('Make cmd : {0}'.format(cmd_fmt))
        return cmd_fmt

    @classmethod
    def run_ydl(cls, cmd_ydl):
        if not cmd_ydl:
            print('Need "cmd" option to run this method')
            return
        # call youtube-dl with cmd-args
        print(cmd_ydl)
        with subprocess.Popen(cmd_ydl, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as proc:
            proc.wait()

# 起動パラメータ取得
args = sys.argv

# インスタンス化
ydls = YoutubeDlSupport()
url = ''
if len(args) > 0:
    url = args[1]
print(url)
cmd = ydls.get_fmt_cd(url)
ydls.run_ydl(cmd)
print('done')

  1. bestを指定した場合、最高画質でDLする仕様となっているが、best=720p止まり

AppleWatch Series4 (GPS, 40mm)購入レビュー

--目次--

AppleWatch Series4買った

ブログリハビリ(?)がてら、簡単に感想を書く。そろそろ買ってから3週間ぐらい使い込んだので。

AppleWatch遍歴

  • 2015年 無印1:38mm Sportモデルを購入
  • 2016年 Series2:発表されるもスルー
  • 2017年 Series3:38mm アルミ GPSモデルを購入
  • 2018年 Series4:40mm GPSモデル購入

悩ましいSeries3→Series4の買換え

Series3とSeries4の違い(ピックアップ)

  • 画面の大型化(30%UP。狭ベゼル化のため本体サイズはほぼ据置き)
    • 専用WatchFaceのInfographとInfograph Modular追加
  • 本体少しだけ薄型化(11.4mm→10.7mm)
  • Digital Crown(竜頭)に振動フィードバック追加
  • プロセッサが最大2倍高速
  • 心拍測定アプリ(ただし現状日本で使えない2
    • 転倒センサー(こっちは日本でも使える)
  • 定価が1.4万円UP(約5万)

一瞬だけ「果たしてこの差に5万弱の価値はあるか?」と自問自答したけど、あんまり悩まずにGPS 40mmモデル購入することに決定。狭ベゼル化はでかい。

GPSモデルなのはメインSIMがワイモバイルでCellularモデルに対応してないため。 40mmなのは手首サイズと重さ、38mmモデルのバンドが流用できるとかその辺の理由。

実際にSeries4使ってみて(使用期間3週間ほど)

一言でまとめると5万は高いなあ、と思うけど満足度はすごい高い。あくまで個人的にだけど、不満点は値段だけかな。
無印~Series2の人はそれ投げ捨てて即座に買い換えるべき、Series3の人は中古売却に抵抗がないなら今すぐドナドナして買い換えるべき、ぐらいにはいいです、Series4。

  • 画面(表示領域)が大きい
    • 単純に見やすい(S4の40mmは、S3までの42mmと同じぐらいのサイズ感)
    • パスコード入力しやすい3
    • 情報量多いの好きなので、S4専用WatchFaceのInfographとInfograph Modularは最高
  • 本体が薄い!
    • 僅かな違いだけど装着感が良くなった
  • プロセッサ最大2倍高速:アプリがサクサク起動する
    • S4にしてようやく「いろんなアプリを使い分ける」気になる速度になった、とも言える
      • 初代:もっっさり(起動待ってる間に諦める。アプリは使えたもんじゃない)
      • S3:ややもっさり気味(アプリがタスクキルされてると待たされる)
  • 電池持ち
    • 公称ではS3と同等らしいけど、1年使ってS3がヘタっていたのかむしろ良くなった気さえする
    • 自分の普段の使い方だと1日半(2日目の夕~夜)ぐらいは充電無しでも行けそうな感じ
  • 値段
    • やっぱ5万は高い。今回はAppleCareを付けたので5.8万ぐらい。貧乏人なのでキツイ
    • 腕時計として見ればそこまで高級なわけじゃないんだけど毎年のように買い換えるのはキツイw
    • 今回はAppleCare付けたので最低でも2年は使いたい
      • 来年Series5買いました!記事を書いてないことを祈る

あと、最初の何日かS4を着けて外出、帰宅したら充電台に置いてその間S3を着ける、って生活をしてみたけどシームレスにデータ同期されてちょっと感動した(付け替えるとアクティビティの数値がちゃんと反映される)。

Series3とSeries4の外観比較

写真はもうニュースサイトやらでたくさん出てるので省略。

ひと足先にApple Watch Series 4を触って確信。予想を大幅に上回るフルモデルチェンジだった(本田雅一) - Engadget 日本版

パスコード入力画面の比較はパッと見でディスプレイサイズの違いがわかりやすいと思う

Apple Watch Series 4は手首に巻き付けるAI。実機を試してわかったこと(松村太郎) - Engadget 日本版

こっちは裏面の比較を見てほしい。
裏面、尋常じゃないぐらいデザインがかっこよくなった(普段お目にすることはないのだけど)。外して充電するときにわざわざひっくり返して眺めるぐらいには気に入っている笑

他人におすすめできるか

こっからは余談。

意外と一般人にも「それiWatch?」「それAppleの時計のやつ?」「それAppleWatch?」とか認知されていて4 、その次に「便利?」ってよく聞かれる。

正直便利かと言われるとすごい微妙で、少なくともS3までは普通の人には薦めにくい出来だったと思う。S4にしてようやく(ガジェットオタクやAppleオタクでないがiPhoneを使っている)普通の人にも薦めてもいいかな、って感じがしてきた。
ただまあ高い(5万する)ので、元々腕時計に割とぽんとお金出せる人でないとおすすめできないからハードルは高いままなんだけど。

AppleWatchって何が便利なの?

じゃあ実際何が便利で何が不便なの?ってのをまとめておきたい。今後人にそう聞かれたときにサクッと答えれるように。

  • Pros(便利)
    • 時間を知るのにiPhoneを取り出す必要がない
      • 特にPlus系やXS Max使ってる人は便利
    • 通知を見てiPhoneを取り出す(対応する)かどうか判断できる
      • 通知の種類によってはAppleWatch単体で即応もできる
      • LINEとかSMSとか(設定した定型文で返信したり)
    • マナーモード中で着信に気づかない確率が激減する
      • iPhoneをポケットに入れて歩いてるときは着信のバイブ気づかないことがある
      • AppleWatchなら腕で振動するので流石に気づく
    • 腕に装着中はMacのロックを解除できる
    • ApplePayで支払いできる(コンビニとか便利)
      • Suica定期も設定できるけど、右利き/左腕装着だと改札通りにくい
    • 手元にタイマーがあるのが生活の節々で便利
      • カップラーメンタイマーは最近GoogleHomeに役目を奪われがち
    • iPhoneカメラのリモートシャッターになる(自撮りや集合写真に便利)
      • AppleWatchに映像表示されるので構図の確認もできる
    • 乗換案内系アプリ入れれば「次の電車まで何分何秒」とか表示できる
    • アクティビティトラッカー機能はビジュアル的にも楽しい
      • デスクワーカーなので特に1時間に1回の起立を促してくれるスタンド機能は嬉しい
      • 最近Standlandアプリを入れた。かわいい。
  • Cons(不便)
    • ディスプレイが常時表示じゃない&腕をひねらないと表示されない
      • 個人的には、つり革握ってるとき表示できない以外だと困ってない
      • その場合は画面タッチもしくはサイドボタン/Digital Crown操作が必要
    • バッテリーが1日~1日半ぐらいしかもたない
      • これは専用充電スタンド用意して毎日外すときにそこに置けば気にならない
      • 寝るときも(睡眠計測アプリ使いたくて)外せない人はうまく継ぎ足し充電するしかない
    • 画面が小さいので、文字入力系は流石に苦手
      • 音声入力がUIとして用意されていることも多いが、外で使えるかというと…
  • その他
    • Cellularモデル5なら単体でいろいろ出来る(iPhoneが手元になくても電波さえ入れば)
      • これは使い方によって便利具合が異なるし使ったことないのでその他で
      • iPhoneと同じ番号から電話かけたり、ランニング経路GPS記録したりとか
      • 通常のMVNOは仕組み的にキツイにしても、フルMVNOIIJとか、MNOなワイモバイルとかはAppleWatch(のeSIM)対応追従してほしいなー

→→→ もうちょっと簡潔にVer

  • 便利
    • 一々iPhone取り出して確認する必要がない
    • ApplePayの支払いとかリモートシャッターとかが便利
  • 不便
    • バッテリーが1日半しか持たない
    • 値段が高い

総括

AppleWatch Series4はいいぞ


  1. Series1が出たのは2016年(より正確には無印のマイナーチェンジがs1)

  2. 日本の医療機器認証の制度的に。現状では、といいつつ多分無理じゃない?レベルだとかなんとか。

  3. そもそもペアリング相手のiPhone側でロック解除すると連動して解除できるのであんまり入力機会は多くないけど、便利なのは確か

  4. 多分、"AppleWatch"の名称を認識している人はそれなりにAppleファンだと思う。圧倒的に"iWatch"?って聞かれる。

  5. メインiPhoneau/Docomo/Softbankの3大キャリアである必要有り

Googleスプレッドシート上で短縮URLを展開する[Google Apps Script]

ブログスモールスタート第3段。
やや前置き長め。

--目次--

Twitterでの情報収集

情報収集ツールとしてのTwitterはなんだかんだ優秀だと思っていて、
ニュースメディアのアカウントをフォローしておけば気になる記事を割とタイムリーに見ることができるし、
そうでなくても思いも寄らない情報をたまたまTL(タイムライン)で見つけた!みたいなこともまあまあよくある。
※この辺は個人のフォローの仕方にもよるだろうけど…

ただ、その場で読むまでもないかな、とか後でじっくり読もう、みたいな情報も結構ある。
そんなときに使われるのが公式ならいいね(かつてのFav)機能だし、
非公式クライアントなら「あとで読む」に対応しているものも結構ある。

あとで読む(Pocket)

「あとで読む」サービスはざっくり言えば、文字通り何らかの情報をあとで読むために使うサービス。
あとで読むサービスにURLを追加してあげると、それをリストとして保存してくれる。
※保存されたURLをパースしていい感じに本文だけ表示する機能とかもあるけど本題ではないので省略。

現状生き残っている「あとで読む」サービスだとPocketとInstapaperがメジャーどころ。
API対応しているアプリなら、URLを選択して「あとで読む」してあげれば追加できる。
他にもブラウザの機能拡張、ブックマークレットなんかからURLを追加する事もできる。

https://getpocket.com/getpocket.com

www.instapaper.com

あくぽろ流情報収集術

あくぽろ流情報収集術としてはTwitter&Pocketで上記のことを実践している。

Twitterクライアントは公式アプリではなく、非公式クライアントアプリの「feather」を愛用している。
Pocketのみだが「あとで読む」対応していて、URLを長押しすると追加することができる。
また、これは今の所featherしかできるアプリを知らないのだけど、"TweetそのもののURL"を追加できる。

流れとして、

  1. featherでTL見ている途中で面白そうな記事のURLを見つけた!
    1. 後でじっくり読もう→feather上でURLを長押しして「Pocketに保存」
    2. 内蔵or外部ブラウザで開いてちょっと中身を読む→後でじっくり読もう→ブラウザ上で「Pocketに保存」
  2. featherでTL見ている途中で面白そうなツイートを見つけた!
    1. スワイプメニューから「…」アイコンを選択→「Pocketに保存」※カスタマイズしてPocket保存アイコン追加も可能

みたいに収集して、あとで自宅PCのブラウザで確認する、といった感じで使っている。

ちょっとしたTIPSを紹介したツイートとか、Fav...いいねを辿るより、
こっちのほうが集約できていい感じなのでfeatherのツイート自体を保存できる機能は重宝している。

ちなみにPocketのスマホアプリを入れておけば、公式アプリでもTL上のURL長押しから
iOS共有シート表示→共有シートからPocketアイコン1 をタップして追加できる。 Androidは知らないけど多分似たような感じでできるはず。

憎いt.co

収集方法はさておき、ようやく本題に入る。

featherからURLをPocketに追加すると、twitter短縮URLであるt.co形式で保存されてしまう。
それ自体はまあ仕方ないのだけれど、職場でPocket上に保存した記事を参照したい時にそのまま開こうとすると、
Firewallバッチリの弊社だとTwitter(とその短縮URLであるt.co)は遮断されてしまう。

見たいのは技術情報が書いてあるブログとかであって、
Twitterではないのに間に短縮URLという形でt.coが挟まってるせいで一発では開けない。

それはめんどくさい。めんどくさいはエンジニアの敵だ(持論)。
じゃあ短縮URL(t.co)の転送先を取得して、そっちを見よう。
でも、t.coそのものにアクセス出来ないんじゃ無理では? わざわざ自宅でやっておくのか?2
そうだ、Google Apps Scriptでスクレイピングできるって聞いたことあるしそれならやれるのでは?
という発想のもとに出来上がったのが下記スクリプト

Googleスプレッドシート上で短縮URLを展開する[Google Apps Script]

作業の流れ

  1. PocketからURLをエクスポートする。(HTML形式)
  2. 取得したHTMLの中を見ると<li>で列挙されてるだけだったので、適当に整形3してCSV
  3. CSVGoogleスプレッドシートにインポート
  4. スプレッドシート上で「スクリプト」を選択してスクリプトエディタを起動。
  5. myFunctionを適当な名前にリネームして短縮URLの転送先を取得する関数(expandURL)を作成
  6. 保存して、スプレッドシートに戻る。適当なセルに=expandURL(URLの書かれたセル)を入力して実行
  7. expandURLで展開されたURLが入手できる
  8. フィルタ機能などでt.coドメインだけ抽出して一気に実行
  9. すべて展開出来たら対象列をコピーして、Ctrl+Shift+V(値のみ貼り付け)で上書き
  10. CSVでエクスポート。

※9は再度スプレッドシートを開いたときに不用意に数百~数千回expandURL再実行されるのを防止するため

GAS(Google Apps Script)のコード

function expandURL(url) {
  //var url = 'https://t.co/qSZ4Aj0o4A'; // テスト用
  var options = {"method" : "GET","followRedirects" : false, 'muteHttpExceptions': false};
  Utilities.sleep(1000) // 1sec wait
  var redirect_url = UrlFetchApp.fetch(url,options).getAllHeaders()[ 'Location' ];
  //Logger.log(UrlFetchApp.fetch(url,options).getAllHeaders().toSource()); // テスト用header全表示
  Logger.log(redirect_url); 
  return redirect_url
}

今後の展望

これを機に古いURLや昔何でもかんでも突っ込んだURLを処分・整理したいナーとなっているので、
pythonのpandasで色々して分類整理とか404なURLの削除とかをしたい(というか仕掛中)。

google colaboratoryを使うとpythonが動かせるのでそっちでやれば一貫してるかなーと思うんだけど、
GAS接続がめんどくさい(authやって接続して…)ので、
それならCSVローカルに落として普通に加工したほうが早くない?ってなってるところ。


  1. (参考)共有シートにアイコンがない場合:iPhoneでシェアシートを編集する方法──共有アイコンの追加/削除/並び替えでストレスフリーに | アプリオ

  2. そもそも職場で関係のないURL巻き込んでやるなよ、って書いてて思ったけどまあ職場だとその判別もつかないし…いいか!

  3. 適当なテキストエディタで余分なタグを一括置換したり、パーサー使うなり。