pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


プロジェクターがない訪問先で製品デモを行うときに、操作画面を見せる方法を考える

訪問先によっては、応接場所にプロジェクタやモニタがないことがありますが、そのときにソフトウェア製品の操作デモをスマートに見せる方法について考えてみました。

どんな方法があるか?

いろいろ考えたのですが、方法は次の3種類が挙げられます

  • モバイルディスプレイを持ち運ぶ
  • タブレットをセカンドディスプレイとして使う
  • 別のPCに画面をキャストする

このときに画面サイズは13インチ程度は欲しいです。これを下回ると細かい表示が見づらくなります。

それぞれの方法を深掘りする

モバイルディスプレイを持ち運ぶ

  • どんなデバイスからも出力できます
  • 表示品質は最良です
  • セッティングの手間も最小限です
  • ただしそれ以外の目的に使えません

ただし自分はこの方法は選びません。普段からカバンにはMacBook Pro Retina 13 inch 2台と9.7インチiPadが入っているので、ここにさらに外部モニタを追加するのは無理です。

それでもこの方法を選ぶとしたら、たとえばこんな製品があります。

タブレットをセカンドディスプレイとして使う

  • あくまでPCの出力用としてのみ利用できます
  • PC側(Windows or MacBook)とタブレットの両方に専用のソフトウェアをインストールします
  • 表示品質はそれなりだけど、描画の遅延があります
  • セカンドディスプレイとして使わないときは、普通にタブレットとして使えます
  • PC側のOSメジャーアップデートの際に問題を引き起こすことがあるので、メジャーアップデートの際は事前にアンインストールしておくことが推奨されます

すでにタブレットをお持ちならば、すぐに始められる方法です。たいていの場合はタブレット側にインストールするアプリが有償ですが、モバイルディスプレイの購入に比べるとリーズナブルな価格です。

ただしソフトウェア的に処理する都合上、どうしても処理の遅延が避けられません。

またタブレットの画面サイズは11インチ以上が望ましいです。これを下回ると大変見づらくなります。自分の場合は9.7インチ iPadでこの方法を試してみましたが、720p (1280x720) で用いた場合でも細かい部分が見づらいことがありました。

Android で使うなら iDisplay, iPad なら Duet Display あたりが選択肢になりうると思います。

別のPCに画面をキャストする

2名で訪問する場合や、1名でもPCを2台持ち運んでいる場合は、この方法がとれます。

PC の組み合わせにより、以下の3パターンが考えられます

この方法はネットワーク接続が前提なので、WiFiモバイルルータまたはスマートフォンテザリング利用が最低限必須です。5GHz帯が使える環境があればベターだと思います。

MacBook 2台の場合は「画面共有」を使うのが、どう考えても鉄板です。これは macOS 10.x の標準機能なので、何かを追加する必要がありません。操作される側のMacBookで「システム環境設定」の「共有」メニューから「画面共有」を実行すれば準備は完了。あとは操作したい側から "vnc://接続先PCの名前/" に接続するだけです。(Safariのアドレスバーや、Finder で「サーバに接続」で指定する)

同様に、Windows 8.1/10 Pro の画面を別のPCで表示する場合は、リモートデスクトップ接続がOS標準機能です。操作される側の Windowsリモートデスクトップ接続を有効にしておきます。

操作される側が Windows 8.1/10 Home の場合や、MacBookWindows 間で画面のキャストを行いたい場合は、Chrome Remote Desktop が扱いやすいです。

その他の方法

VNC を用いる方法は汎用的に利用できるはずですが、実際にはあまりオススメしがたいです。たとえばmacOS 標準の「画面共有」には VNC から接続できますが、2回目以降の接続がうまくいかない(接続後のユーザ認証が完了せず利用できない)ことがありました。

他にも、macOS の画面を別のPC上の Reflector でミラーリングする方法もありますが、こちらもおすすめしません。実際に試してみると画質があまりよくないようでした。

他に思いつく方法としては、PC2台+ビデオキャプチャ装置という方法があります。接続に一手間かかるけど、この方法は割とキレイに見せられるはずです。

自己メモ:Android SDK と NDK の違い

なんとなく自己整理のためのメモ

Android SDK - Android アプリケーション開発で一般的に使うもの。 - Kotolin (以前なら Java)で開発する - OSバージョンによって必要なAPIレベルが異なる。Google Play でアプリを配信する場合は2018年11月1日からは APIレベル26への対応が必要 - ちなみに Delphi/C++Builder/RAD Studio で APIレベル26 でアプリをビルドするには、10.3 のベータ版が必要らしい。10.2.x では未対応。10.3 ベータは、年間保守契約(アップデートサブスクリプション)期間内の場合にベータプログラムに参加することで入手できる。

Wikipedia の英語版に、OSバージョンとAPIレベルの一覧表があったのでリンク貼っとく。

Android version history - Wikipedia

Android NDK - NDK = Native Development Kit の略 - C や C++Android 向けの開発ができる - 通常の開発では使わない - Delphi/C++Builder/RAD StudioではネイティブコンパイルしてNDKでビルドしている。(Java や Kotolin にトランスパイルしているわけではない)

2018/10/12以降にDelphi/C++Builder/RAD StudioのIDE利用時に表示されるエラーを出ないようにしたい

2018/10/14 08:00 補足 エラーの発生は解決しているようなので、この記事の作業は必要ありません。 この記事は、発生したエラーの原因や、その対処方法に関する資料としてのみ、お読みいただけます。

続きを読む

iPhone7PlusのAppleCareが切れる前に無料のバッテリー交換に申し込む

バッテリー充電容量が低下したiOSバイスのパフォーマンスが意図的に下げられていた問題で2018年末まではバッテリー交換費用が通常よりも格安でできるようになりましたが、そもそもAppleCareが有効な期間は無償で交換できるので、購入してからもうすぐ2年になるiPhone7+のバッテリーを交換することにしました。

普段ならばiPhoneの修理はAppleStoreに持ち込むのですが、今回は配送修理を手配してみることにしました。単純に、どれくらいの日数で対応完了するかを知っておきたかったのです。

どうせなら、日数がかかりそうな条件で手配してみよう

各種対応は平日しか行わないと思うので、週末に集荷手配すれば、Appleへの到着はきっと月曜日になるはずです。というわけで、土曜日午前中の集荷を手配。

集荷のための準備をしよう

詳細は以下のリンク先に出ている通りなのですが、配送修理の場合は iPhone を初期化して個人に紐づかない状態で送付する必要があるようなので、以下の作業を行います。

  • バックアップする
  • iPhoneSuica を使っている場合は Wallet から明示的に削除しておく
  • iPhoneを探す」をオフにする
  • iMessage をオフにする (修理期間中に、SIMをiPhone以外で使う場合は電話番号でのiMessage受診を無効化する必要があるため)
  • 端末を初期化し、Apple ID を紐付けない状態で使える状態にしておく
  • SIMカード、ケース、フィルム類は全て取り外す。

support.apple.com

集荷の時系列ログ

あえて日数が掛かりそうなパターンで申し込んでいるので、このケースでは9/1集荷、9/6返送受け取り、となっています。これが8/31(金)の集荷だとしても土日はApple側の受け取り対応が行われないでしょうから、受け取りまでに1週間かかると考えられます。

日付 内容
2018/8/28(火) 配送修理申し込み
2018/9/1(土) 集荷
2018/9/3(月) ADSC支店宛配達完了
2018/9/4(火) Apple側 受領
2018/9/5(水) 修理
2018/9/5(水) 返送
2018/9/6(木) 到着(クロネコメンバーズで受け取り場所をコンビニ受け取りに変更)

ちなみにこれは関東圏での集荷配送を依頼しています。Appleの修理拠点がどこにあるかはよく知らないのですが、配送修理を依頼する場所によっては日数がもう少しかかるかもしれません。

感想

  • 修理期間中の予備機が無い方は持ち込み修理の方が良いと思います。

  • 予備機が手元にあるなら、配送修理はアリです。指定の時間帯に機器を引き取りにきますので、それまでに準備しておけば大丈夫です。持ち込み修理は当日(または翌日)に修理完了するメリットはありますが、都合の良いタイミングで予約を取るのが難しかったりします。

  • 修理品の集荷や配送はヤマト運輸なので、クロネコメンバーズに入っておき、修理後の受け取りをコンビニ等に変更すればタイムラグ少なく受け取れます。

  • エクスプレス修理なら端末交換になるので修理待ちが発生せず良いような気がしますが、バッテリ交換でこれが選べるかどうかは未確認です。

support.apple.com

  • Apple Store や正規サービスプロバイダへの持ち込み修理予約が都合の良い日時に取れるなら、そちらの方が待ち時間少なく対応できると思います。ただし、予約日時に機器を預けた上で、1時間後以降に再度来店する必要があることに注意が必要です。

Raspberry Pi 3 や Zero W に OpenWrt/LEDE 18.06 をインストールしてルータにする

LinuxベースのディストリビューションOpenWrtによるRaspberry Pi 3 や Zero W のルータ化の話は過去にも書いていますが、最新の 18.06 がリリースされていたので、環境を作り直すことにします。

(とは言いつつ、最初のバージョンのリリースを見逃していたので、この記事では 18.06.1 を前提に書いています)

※2020年1月時点では 19.07.0 がリリースされていますので、より新しいバージョンをインストールしたほうがよいです。

pslabo.hatenablog.com

既存の製品ではなく、あえて自分で作る理由とは?

既製品は機能面が不満です

例えば、DS-Lite (任天堂製品ではありません。フレッツ光のインターネット接続をPPPoEのIPv4ではなくIPoEのIPv6化することで速度改善をはかり、なおかつIPv4への通信も提供される仕組み)に対応したルータは案外少ないのですが、OpenWrtなら DS-Lite が利用できます。手持ちの製品が DS-Lite に対応していない為にルータを買い換えるというのは、とても残念な話ですが、そういうことは起きません。

セキュリティを強化したい

WPA2-EAPのような企業向けのセキュリティを導入するには、既製品はそれなりの価格の製品が必要です。でもOpenWrtならパッケージを追加してカスタマイズするだけで利用できます。作業コストは発生しますが、単にそれだけ。

IoT関連のハブにしたい

Raspberry Pi 3 に OpenWrt を導入したルータなら、Bluetooth 関連のパッケージを追加することで IoT 関連のハブにすることも可能ですね。

要するに、様々な拡張が容易に行えるのが魅力なのです。なお、OpenWrtを日本国内で運用する場合は電波法や技適の問題が付きまといますので、既製品のルータにOpenWrtを導入する話は公式な場所では展開しづらいのですが、Raspberry Pi 3 はデバイス自体が技適を通過していますから、OpenWrtをインストールしても技適の問題は発生しないはずです。(もしこれが問題になるとしたら、既存のノートパソコンにWindows / macOS / Linux の設定超背でWiFi AP化することもアウトになりますし)

そんな訳で、Raspberry Pi 3 は OpenWrt を導入するにはうってつけのデバイスだと考えています。技適の問題に目をつぶったとしても、既製品にOpenWrtを導入する場合は焼き方の失敗による文鎮化が心配です。でもファームウェアmicroSDに記録しているRaspberry Piは、何か問題があればmicroSDを再フォーマットすれば済むので、この辺りの不安も生じません。だから OpenWrt を試す環境としては Raspberry Pi3 に代表されるシングルボードコンピュータはちょうどよいのです。

ファームウェアイメージを入手する

OpenWrt のファームウェアイメージは、一般的な Raspberry Pi 向けファームウェア同様に dd で書き込みます。イメージは下記のURLから入手できます。

Raspberry Pi Zero W 向け https://downloads.lede-project.org/releases/18.06.1/targets/brcm2708/bcm2708/openwrt-18.06.1-brcm2708-bcm2708-rpi-ext4-factory.img.gz

Raspberry Pi 3 向け https://downloads.lede-project.org/releases/18.06.1/targets/brcm2708/bcm2710/openwrt-18.06.1-brcm2708-bcm2710-rpi-3-ext4-factory.img.gz

macOSな方は、下記記事のスクリプトを使うと、書き込み時の一連の作業(書き込み先デバイス名の確認、ddの実行、eject)が自動化できて便利だと思います。

pslabo.hatenablog.com

焼いたファームウェアmicroSD に、作業用のディレクトリを作る

適当な名前で作ってください。work とか。 これは OpenWrt 起動後のシェルからは /boot/work としてアクセスできます。

基本設定をバッチで流し込むためのファイルを作る

こんな設定をGUI操作なしに投入しようと思います

管理UIのパスワードはバッチ投入しないほうがよいかなあと思うので、これはインストール完了後にGUIから変更してください。

上記の設定は、次の内容をスクリプトとして保存・実行することで投入できます。 initialconfig.sh のような名前で保存して microSD の作業用ディレクトリに入れておきます。WiFiSSIDパスフレーズはご自身が使うものに変えてください。

#!/bin/sh -x

uci set system.@system[0].zonename='Asia/Tokyo'

uci set dropbear.@dropbear[0].Interface=lan

uci set dhcp.lan.ra_management='1'
uci set network.lan.ipaddr='192.168.4.1'
uci set network.lan.ifname='wlan0'

uci set network.wan=interface
uci set network.wan.proto='dhcp'
uci set network.wan.ifname='eth0'

uci set wireless.radio0.disabled='1'
uci set wireless.radio0.country='JP'
uci set wireless.radio0.txpower='10'
uci set wireless.default_radio0.encryption='psk2'
uci set wireless.default_radio0.network='lan'
uci set wireless.default_radio0.ssid='[設定するSSID名]'
uci set wireless.default_radio0.key='[WPA-PSKのパスフレーズ]'
uci set wireless.default_radio0.wpa_disable_eapol_key_retries='1'
uci delete wireless.radio0.disabled='1'

Pi3 以外の方向け:追加パッケージの下準備

Pi zero W をルータ化する場合は有線LANアダプタが必須です。USB LANアダプタに必要なパッケージやドライバを追加します。

下記のリストは PIMONORIの 3 Port USB Hub + NIC 向けドライバ を想定していますので、それ以外の USB LAN NIC をお使いの場合は必要なドライバを別途追加します。

https://downloads.lede-project.org/releases/18.06.1/targets/brcm2708/bcm2708/packages/kmod-libphy_4.9.120-1_arm_arm1176jzf-s_vfp.ipk
https://downloads.lede-project.org/releases/18.06.1/targets/brcm2708/bcm2708/packages/kmod-mii_4.9.120-1_arm_arm1176jzf-s_vfp.ipk
https://downloads.lede-project.org/releases/18.06.1/targets/brcm2708/bcm2708/packages/kmod-usb-net_4.9.120-1_arm_arm1176jzf-s_vfp.ipk
https://downloads.lede-project.org/releases/18.06.1/targets/brcm2708/bcm2708/packages/librt_1.1.19-1_arm_arm1176jzf-s_vfp.ipk

https://downloads.lede-project.org/releases/packages-18.06/arm_arm1176jzf-s_vfp/base/libusb-1.0_1.0.22-1_arm_arm1176jzf-s_vfp.ipk
https://downloads.lede-project.org/releases/packages-18.06/arm_arm1176jzf-s_vfp/base/usbutils_007-7_arm_arm1176jzf-s_vfp.ipk

# PIMONORIの 3 Port USB Hub + NIC 向けドライバ
https://downloads.lede-project.org/releases/18.06.1/targets/brcm2708/bcm2708/packages/kmod-usb-net-rtl8152_4.9.120-1_arm_arm1176jzf-s_vfp.ipk

これらのURLリストをテキストファイルに保存した上でシェルから wget -i packagelist.txt のようにダウンロードするのがお手軽で良いと思います。

全機種共通:最初から日本語UIで使いたい場合の追加パッケージ

これをインストールすれば、最初から日本語UIで使えます。必要な方はダウンロードして、microSD の作業ディレクトリに入れておきます。

http://downloads.openwrt.org/releases/18.06.1/packages/arm_arm1176jzf-s_vfp/luci/luci-i18n-base-ja_git-18.235.62437-6503756-1_all.ipk

焼いたmicroSDを装着してRaspberry Pi を起動し、パッケージインストールと初期設定の投入を行う

初期段階では NIC には LAN ケーブルを刺さずに作業します。(Pi Zero W は USB NIC だけ装着し、ケーブルは刺しません)。OpenWrt ではデフォルトのIPアドレスが 192.168.1.1 が NIC に設定され、さらにDHCPも有効なので、LAN接続して起動すると接続先ネットワークに影響が出る可能性があるからです。

行う作業はこんな内容です。

  • 起動したらシェルから cd /boot/作業ディレクトリ を実行
  • パッケージをインストールする。opkg install *
  • 初期設定の投入./initialconfig.sh
  • 初期設定をコミット uci commit
  • 再起動 reboot

ここまでくれば、有線LAN側がDHCPクライアントに設定されたWiFiルータになっています。あとは管理UIのパスワード設定を行い、さらに必要なカスタマイズを加えていきます。

OpenWRT/LEDE 18.06 リリースされてた

2018年7月末に 安定版18.06 がリリースされ、さらに8月17日に 18.06.1 がリリースされていた模様。

Raspberry Pi 3 向けのはここらへんにあるので、週末にでもセットアップしてみよう。(今は忙しすぎて時間がない)

Index of /releases/18.06.1/targets/brcm2708/bcm2710/

macOSの再インストールや各種トラブル対応の際に使用するキーボードショートカットのメモ

Mac起動時の特殊なショートカットーキー時々忘れてしまうので、使いそうなものをメモしておく。

内容 キーボード組み合わせ
SMCリセット shift control option + 電源
NVRAMリセット option command P R
Mac購入時のmacOSで復元 command R
利用可能な最新のmacOSで復元 option command R
Mac購入時またはそのバージョンに最も近い利用可能なバージョンで復元 shift option command R
シングルユーザモード command S
Verboseモード command V
セーフモード shiftキーを押して起動、ログインウィンドウが表示されたら放す
Apple Hardware Test の実行 Dキーを押したままで電源を入れる

ただし、メモしてから改めてググってみたら、そもそもAppleの下記のページにまとまっているのをみつけました。 https://support.apple.com/ja-jp/HT201255

まあでも自分なりにまとめるのは大事なので残しておく。