y's note

ソフトやゲームの作成の開発に関することを書いていきます。

Apple IDを変えた後にアプリをアップデートする

iPhoneiPadに紐づけられているApple IDを変更した後にアプリをアップデートしようとすると、パスワードを入力するダイアログが表示されます。
ここで、正しいパスワードを入力しても設定アプリに飛ばされてしまいアップデートを行うことが出来ません。
f:id:pwjtn527:20180917221856p:plain
この時、アプリをいったんアンインストールしてからもう一度ダウンロードすれば最新版のアプリを入れることが出来ます。
しかし、この時アプリのデータはすべて消えてしまいます。

ですが、iOS11から追加された「Appの除去」を利用することによってアプリのデータを消去することなくアプリをアップデートできます。
※購入情報はApple ID内に存在するため、有料アプリは再度アプリを購入する必要があります。また、アプリ内の購入情報も引き継がれません。
※配信が終了したアプリはこの方法を使うことが出来ません。

ここでは、Twitterの公式アプリを例に方法を紹介します。
設定アプリを開き、一般>iPhoneストレージの順にタップしていきます。
下にスクロールし、アップデートしたいアプリを選択します。
こういう画面が出るので「Appを取り除く」をタップします。
f:id:pwjtn527:20180924214857p:plain
再び「Appを取り除く」をタップします。
f:id:pwjtn527:20180924215318p:plain
「Appを再インストール」をタップします。
アプリのインストールが始まるのでこのまま待ちます。(容量の大きいアプリは時間が掛かります)
※この時ホーム画面に戻ると進捗を確認することができます。
f:id:pwjtn527:20180924215433p:plain
「Appを取り除く」が表示されたらインストールは完了です。
この画面ではバージョン番号が同じですが、アップデートした際には番号が上がっています。
f:id:pwjtn527:20180924215836p:plain

私もApple IDを移行後、バックアップ機能がないアプリを更新するときにこの方法で成功しました。

富士通のノートPC、AH77/GをSSDに換装する

富士通から2012年に発売されたAH77/G。
発売から6年経過しつつも、未だに現役で頑張っています。
しかし、起動に時間がかかったり、デスクトップが出ても常駐ソフトの起動が遅かったりするなど、「重さ」を感じる場面が増えてきました。
この「重さ」を解決するのがSSDへの換装です。
SSDに換装すると速くなる理由はここでは割愛します。

この記事ではこの機種のSSDへの換装方法を紹介します。
画像はWindows 10となっていますが、私の気まぐれで再アップグレードしただけなので、Windows 7でもちゃんと換装できます。

また、SSDへの換装は自己責任です。
メーカーの修理は当然ながら受け付けられなくなりますし、私も責任を取ることは出来ません。

今回私が換装したSSDSanDiskの「SSD Ultra 3D 500GB」です。
f:id:pwjtn527:20180815185340j:plain


目次

必要なもの

これがないと始まりません。
2.5インチのものを選んでください。

  • SATA - USB変換ケーブル

下記のクローニングを行う際に必要となります。
2.5インチ用を選んでください。

  • 7mm→9.5mm変換スペーサー

7mmのSSDを購入した場合、厚さが足らずにスペースが余ってしまいます。
そこで、このスペーサーで余った分を埋めます。
無くても使えはしますが、ガタガタして不安定になるのであった方が良いです。

  • ドライバー

PCの裏蓋を開ける、閉める時に必要になります。

最後の起動チェックでトラブルが発生した時に必要となります。
Vista以降のインストールDVD、WinPEなどの起動ディスクがあればそれで代用できます。

HDDの中身をクローニングする

換装するにあたり、まずはSSDをクローニングします。
クローニングとは、大雑把に言うとHDDの中身を丸ごとSSDに移植する作業の事です。
余裕で数時間かかるので、時間に余裕がある時に行ってください。
まず最初に、SATA - USB変換ケーブルを利用して、PCにSSDを接続します。

今回私が使用したソフトは「EaseUS Todo Backup」です。
次のサイトにアクセスしてください。
jp.easeus.com
ページ上端部分にある「無料ダウンロード」をクリックします。
f:id:pwjtn527:20180820213236p:plain
メールアドレスを入力して、「Todo Backup Free」をクリックします。
(下のチェックボックスにはチェックを付けなくてもOKです)
f:id:pwjtn527:20180820214048p:plain
左の目立たない色の方の「ダウンロード」をクリックしてください。
f:id:pwjtn527:20180820214202p:plain
ダウンロードするかブラウザに聞かれるのでダウンロードしてください。(画像はFirefox)
f:id:pwjtn527:20180820214259p:plain
ダウンロードしたら、画面に従ってインストールを行ってください。
起動すると、ユーザーアカウント制御の後にこんな画面が出ます。
右下の「後で」をクリックします。
f:id:pwjtn527:20180820214620p:plain
赤で囲った、四角が二つ重なっている所をクリックします。
f:id:pwjtn527:20180820214826p:plain
クローン元のハードディスクを聞かれるので、ハードディスク0の部分にチェックを入れてください。
f:id:pwjtn527:20180820215139p:plain
※下の画像のようにCドライブだけをクローニングすることも出来ます。
(何故か2つ以上のドライブを選択することは出来ません)
f:id:pwjtn527:20180820215329p:plain
クローニング先となるSSDを聞かれるので、外付けハードディスクなどを接続していない場合は、ハードディスク1をクリックします。
他に外付けハードディスクなどを接続している場合はここの数値が変わることがあるので、エクスプローラーからコンピューターを開き、そこに表示されている容量を参考にして、それとほぼ一致しているものを選択してください。
f:id:pwjtn527:20180820220126p:plain
選択すると、右に「編集」という文字が出てきます。
そこをクリックしてください。
下の画面が出てきます。
パーティションの数に関わらず、変な分け方になることがあるので必ず確認してください。
パーティションの容量はドラッグで変更できます。
(後で変えたくなったときはクローニング完了後に、コンピューターの管理>ディスクの管理から「ドライブの拡張(or縮小)」で行うことが出来ます)
f:id:pwjtn527:20180820220605p:plain
左下の「高度なオプション」をクリックしてください。
SSDに最適化」にチェックを入れます。
また、HDDを丸ごとクローニングする場合、クローン元のディスクにリカバリ領域がある場合は「セクタバイセクタクローン」にチェックを入れてください。
原因は分かりませんが、チェックを入れないとリカバリに失敗することがあるようです。
f:id:pwjtn527:20180820221540p:plain
「次へ」をクリックすると、再びパーティション分けの画面になります。
(この画面はCドライブだけをクローニングする時には表示されません)
「実行」をクリックすると、警告が出るので「はい」をクリックします。
f:id:pwjtn527:20180820222826p:plain
クローニングが始まります。
上にも書きましたが、終わるまで数時間かかります。それまでの間PCはなるべく操作しないでください。

クローニングが終わると下の画像のようになるので、ソフトを閉じてPCをシャットダウンします。
(左下にチェックを入れている場合は自動でシャットダウンすると思います)
f:id:pwjtn527:20180820223028p:plain
ハードディスクにはまだデータが残っていますが、この段階ではフォーマットしないように。

換装作業

PCの電源を切り、バッテリーを取り外してください。
なお、取り外し方は説明書に記載されています。
f:id:pwjtn527:20180816153044j:plain
メモリ(画像中央)→ハードディスク(画像左下)の順に蓋をドライバーを使って外します。
(画像ではバッテリーが入っていたり、ハードディスクの部分の右の方にネジが入っていませんが、実際にはバッテリーは入っておらず、ネジも入っている状態です)
f:id:pwjtn527:20180817215717j:plain
ハードディスクを覆っている銀色のシートにある5か所のネジを取り、シートとハードディスクをPCから取り外します。
なお、ハードディスクは取り外すときに端子を傷つけないように気を付けて取り外してください。
f:id:pwjtn527:20180817220157j:plain
SSDにマウンターをSATA端子が付いてない面に貼り付けます。
f:id:pwjtn527:20180817220409j:plain
そして、シートの黒い部分がSSDの下にくるようにSSDを包みながらSSDをPCのSATA端子に挿入します。
(この時、SSDの向きはSATA端子がある面が上となります)
うまく行けば下の画像のようになります。
f:id:pwjtn527:20180817221114j:plain
シートにネジを取り付け、メモリが入っている部分の蓋を閉めます。
f:id:pwjtn527:20180817221913j:plain
SSDが入っている所の蓋を閉め、バッテリーを取り付けます。
f:id:pwjtn527:20180817222342j:plain
これで、換装作業は終わりです。

起動チェック

いよいよ、起動チェックに入ります。
この瞬間がSSD換装の中でも一番ワクワクする瞬間です…!
上手く起動すれば、おめでとうございます!
SSDの換装に成功です!

…ですが、ほとんどの環境ではエラーが発生して起動できないと思います。

エラーが発生した時

パソコンが黒い画面のまま止まっている時は電源を切ってください。
電源を入れ、富士通のロゴが表示されている時にF12キーを連打します。
起動メニューが表示されるので、SSDの機種名が書かれている項目があるか確認してください。
ある場合は下の作業でほぼ確実に直りますが、ない場合は再度起動してもう一度確認し、それでもない場合は上の換装作業をやり直してください。
やり直してもない場合は初期不良の可能性があります。メーカーに問い合わせて交換してもらってください。
それでもダメな場合はPCとの相性が悪いので別のSSDで試してみてください。(痛い出費になりますが…)

ここからは、起動メニューにSSDの項目がある、つまりPCがSSDを認識している時の対処法です。
リカバリディスクを入れ、「CD/DVD Drive」から始まる項目を選択してください。
※インストールDVD、WinPEの場合はコマンドプロンプトを起動する手順が異なります。この記事では省略するので各自で調べてください。
 なお、コマンドプロンプトを起動した後は同じ手順となります。
トラブル解決ナビが起動するので、キーボードのCtrlとShift、Sキーを同時に押して下さい。
その後、「ユーティリティ」タブからコマンドプロンプトを起動します。
そして、以下のコマンドを入力してください。

bootrec /fixmbr
bootrec /Rebuildbcd
bootrec /fixboot

最後に、

wpeutil reboot

と入力して再起動します。

起動すれば成功です。
おめでとうございます!

起動しない場合はSSDのクローニングの所からやり直してください。
それでもダメな場合は初期不良かPCとの相性、もしくは元となるハードディスクが故障している可能性があります。
ハードディスクの故障の場合は必要なデータを取り出してからSSDリカバリしましょう。
(リカバリのやり方はここでは割愛します、すみません)

換装した後の感想

とにかく速い、これに尽きます。
起動時間(デスクトップが表示されるまで)もHDDの2:58.38から40.27に大幅に短縮できましたし、Firefoxの初回起動の時に時間が掛かっていたピン留めしたタブの読み込みが一瞬で終わるようになりました。
また、ベンチマーク
f:id:pwjtn527:20180904001126p:plainf:id:pwjtn527:20180904001128p:plain
読み書きが全体的に速くなっています。(シーケンシャルリード半端ねぇな)
連続データはもちろんのこと、ハードディスクで苦手だったランダムアクセスもSSDなら普通にこなせます。

そして何より、SSDに換装してからPCの立ち上げや再起動が億劫にならなくなりました。
起動中の待ち時間ってなんか辛いんですよね。
スマホいじってても「まだかなまだかな」と思いますし、その間に作業するやる気が消えることだってありますし。
SSDに換装してから起動中、速いというのが分かっているのでPCに集中できるようになりました。
そうすることで、作業もパパっとやる気がある状態でこなせますし、ソフトの起動、ファイルの読み込み時間でイライラすることもなくなりました。

SSDを買うということは「時間を買う」というのに近いです。
まさに「時は金なり」です。
一度SSDにしたらHDDには戻れないと言われるほどの速さ、あくまで自己責任ですが、皆さんもSSDに換装して体感してみてはいかがでしょうか。

Zenfone AR(ZS571KL)でADBを使えるようにする

Zenfone ARで単にUSBデバッグをONにしてもADBコマンドが使えなかったので、使えるようにした手順をメモ。
※PCにADBコマンドが導入されていることが前提です。

設定アプリを起動し、一番下にある「端末情報」をタップ。
そして、「ソフトウェア情報」をタップします。
f:id:pwjtn527:20171208212719p:plain
「ビルド番号」を7回タップすると、「これでデベロッパーになりました!」というメッセージが出ます。
f:id:pwjtn527:20171208212806p:plain
設定アプリの最初の画面に戻ると、「開発者向けオプション」が出ています。
f:id:pwjtn527:20171208212623p:plain
「開発者向けオプション」をタップし、右上のスイッチをONにした後、USBデバッグをONにします。
f:id:pwjtn527:20171208213120p:plain
「USB設定の選択」をタップし、"PTP…"と書いてある部分を選択します。
f:id:pwjtn527:20171208213215p:plain
PCに接続すると、端末側でこのようなメッセージが出るので、「OK」をタップします。
(個人的には「このパソコンからのUSBデバッグを常に許可する」にチェックすることをオススメします)
f:id:pwjtn527:20171208213902p:plain

PC側でもADBドライバが自動的にインストールされるのでそのまま待ちます。
インストールが完了した後、コマンドプロンプトから"adb device"を打ち込むと認識されていることが分かります。
f:id:pwjtn527:20171208214942p:plain

なお、このままではエクスプローラ上でファイルのやり取りが出来ないので、元に戻したいときは上記の「USB設定の選択」から「MTP…」を選択してください。

OpenShiftでApplication is not availableと出てしまう

今まで使っていたOpenShift Online v2が9月30日に終了してしまう(以下v2)とのことなので、次世代のバージョンとなるOpenShift Online v3(以下v3)に移行したんですが、そこでつまずいてしまいました。

<追記 9/15 16:04>
記事名を修正しました。

待機するポート、IPの設定ミスが原因?

登録後、まずそのままデータを移してみたんですが、このエラーが発生したのかPodsの部分が黄色→赤色になって上手く行きませんでした。
当然ながら開くとエラーが出ます。
(画像はエラーがなかったときのものです)
f:id:pwjtn527:20170912155845p:plain

f:id:pwjtn527:20170912144513p:plain
今回悩まされた"Application is not available"

どうやら、サーバーサイドのスクリプトのこの部分がいけなかったようです。

//(略)
var port = process.env.OPENSHIFT_NODEJS_PORT || 3000;
var ip = process.env.OPENSHIFT_NODEJS_IP || 'localhost';
//(略)
app.listening(port,ip);

サンプルを参考にして、このように書き換え。

//(略)
var port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080;
var ip = process.env.IP || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0';
//(略)
app.listening(port,ip);

ルーティング設定がダメ?

Podsの色はちゃんと青くなりましたが、開くと相変わらずこの文字列が…
f:id:pwjtn527:20170912144513p:plain
数日間悩みましたが、v2の時に書いたこの部分が怪しい…

//httpsへのリダイレクト
app.use(function(req,res,next) {
	if (req.headers.host == 'localhost:8080') {
		next();
	} else {
		var proto = req.headers['x-forwarded-proto'];
		if (proto !== undefined) {
			proto = proto.toLowerCase();
		}

		if (proto === 'https') {
			next();
		} else {
			res.redirect('https://' + req.headers.host + req.url);
		}
	}
});

コメントの通り、この部分は普通のhttpリクエストが来た際、安全なhttps接続にリダイレクトする処理です。
因みにローカルでの検証時は適用しないようにしてあります。(上の部分)

この記述を消すと…httpsでは例のエラーが出てしまうものの、httpではちゃんと自分が作ったWebアプリが動くではありませんか!
しかし、このhttpsに移行しようという流れに逆らえないぞ…
と思った数秒後、以前から怪しいなと思っていたルートの設定に行きました。(左のメニューでApplications→Routes)
f:id:pwjtn527:20170912150023p:plain
Nameの部分をクリックした後、右上のActionsから、Editをクリックします。
下の画像のように、Securityの部分の"Secure route"にチェックを入れます。
f:id:pwjtn527:20170912151502p:plain
TLS Terminationの部分はどれでも良いと思います。
Insecure Trafficの部分は、

None: httpリクエストが来た場合でも何もしない、(上のようなhttpsには繋がらないということはありません)
Allow: httpリクエストが来た場合、強制的にhttpsに切り替える。
Redirect: httpリクエストが来た場合、httpsにリダイレクトさせる。

AllowとRedirectは内容は同じですが、https通信に切り替えるタイミングが違います。
見栄え的には画面が真っ白にならない"Allow"が一番おすすめです。(Noneはセキュリティ的におすすめできません)
<追記(9/12 18:05)>
"Allow"だと、https通信にならないことがあるので、"Redirect"が一番おすすめです。

Saveをクリックして、設定を反映させます。
設定後、ルート設定のトップページに行くと、"http"の部分が"https"になっているのが分かると思います。
f:id:pwjtn527:20170912153216p:plain

この後アクセスすると、エラーが出なくなり、https通信も行えるようになりました。

XPCOMGlueLoad errorが出て、Firefoxが起動できない

昨日、"pacman -Syu"でパッケージのアップグレードを行った後からFirefoxが起動できなくなってしまいました。

ターミナルから起動しようとしても、

$ firefox
XPCOMGlueLoad error for file /usr/lib/firefox/libxul.so:
libicui18n.so.58: cannot open shared object file: No such file or directory
Couldn't load XPCOM.

と、エラーが出てしまいます。

そこで色々調べてみた結果、icuのアップデートが原因でした。

下記のコマンドを打ち込んで解決することができました。
[参考元]
Arch Linux ARM • View topic - Looks like [extra]/firefox is broken
Bugs in firefox 52=>53 on ArchLinuxARM 32 bits (ARMv7h) and how to still use it | Popolon gblog3

$ cd /tmp
$ mkdir unarc
$ cd unarc
$ wget https://popolon.org/depots/ArchLinuxARM/firefox/52/hunspell-1.5.4-1-armv7h.pkg.tar.xz
$ wget https://popolon.org/depots/ArchLinuxARM/firefox/52/icu-58.2-1-armv7h.pkg.tar.xz
$ tar xvf hunspell-1.5.4-1-armv7h.pkg.tar.xz
$ tar xvf icu-58.2-1-armv7h.pkg.tar.xz
$ cd usr/lib
$ sudo rsync -a libhunspell-1.5.so* libicu* /usr/lib/
$ sudo rsync -a icu/58.2 /usr/lib/icu/
$ sudo ldconfig

これでFirefoxが起動できるようになりました。
tar.xzを展開するときに、「未知の拡張ヘッダキーワード 'SCHILY.fflags' を無視」というメッセージが出ますが、そのまま次に進んでください。

余談ですが、ARMv7のFirefoxのバージョンが52.0.2で止まっていますね…
アップデートは来るんでしょうか。

Firefoxで「接続が安全ではありません」と表示されたときの対処法

FirefoxGoogleYouTubeにアクセスしようとした際、下の画像のように「接続が安全ではありません」とエラーが出てしまいました。
f:id:pwjtn527:20170325113124p:plain

Yahooでエラーについて調べましたが、日本語の情報が無かったので探すのに苦戦しました…
最終的に、Mozillaのフォーラムに解決法があったので、その方法を示します。

参考元:Solved: Re: I am an IT admin, after migrating our Exchange... - Mozilla Support Community

初めに、上のURL欄に"about:config"と入力し、Enterキーを押します。
すると、「動作保証対象外です!」と出てきますが、「危険性を承知の上で使用する」をクリックして次に進みます。
f:id:pwjtn527:20170325113728p:plain

上の検索欄に「http2」を入力します。
下の設定名のところに"network.http.spdy.enabled.http2"というのが出てくるので、ダブルクリックして"true"から"false"に値を変えます。
f:id:pwjtn527:20170325114025p:plain
f:id:pwjtn527:20170325114042p:plain

これで、Googleに接続することが出来るようになりました。
f:id:pwjtn527:20170325114225p:plain

Arch LinuxでiPhoneをマウントする

方法自体はここに書いてあるんですが、そのままでは無理だったのでメモ。

必要なパッケージをインストールする

iPhoneをマウントするためには、usbmuxdlibplistlibimobiledeviceifuseが必要になります。
なお、libimobiledeviceifuseusbmuxdの依存パッケージなので、コマンドに書かなくてもインストールされます。

# pacman -S usbmuxd libplist ifuse

fuseモジュールのロード

$ modprobe fuse

で、fuseモジュールがロードされます。
(自分の環境では、初めて繋いだときの一回だけで大丈夫でした)

マウントポイントの作成

# mkdir /mnt/iphone
# chmod 777 /mnt/iphone

iphoneの部分はどんな名前でもOKです。
chmodで、どんなユーザーでもアクセスできるようにパーミッションを変更しています。

マウント

$ ifuse /mnt/iphone

マウントできているか確認します。

$ cd /mnt/iphone
$ ls
AirFair  Downloads      PhotoData      Radio       iTunes_Control
Books    FactoryLogs    Photos         Recordings
DCIM     MediaAnalysis  PublicStaging  Safari

DCIMなど、複数のディレクトリが出てきたらマウントに成功しています。
エラーが出たり、lsコマンドでディレクトリが何も出てこなかったらマウントに失敗しています。
もう一度やり直してください。

アンマウント

iPhoneをUSBケーブルから外す時は、必ずアンマウントを行ってください。
なお、カレントディレクトリが/mnt/iphone(マウントポイント)の場合はアンマウントができないので、

$ cd ..

などで、他のディレクトリに移動してください。

# umount /mnt/iphone



なお、二回目以降からは前準備をする必要はありません。
マウントをするだけでOKです。