*いしのなかにいる*

oops ! I am in rock !

【Mac】Mailアプリでスレッドにまとめたメッセージの表示順序の設定

こんにちは

Macの標準アプリであるMail。Gmailも会社のメールも登録して一括で見れるので普段から愛用しています。

同じ送信先とのやりとりをスレッドにできて便利なのですが、マシンを新しくした際にメッセージの表示順序が変わってしまいました。

以前は新しいメッセージが一番上に表示されていたのになぜか一番下に表示されてしまう。。。

自分で表示順を設定したはずが、すでに設定方法も忘れてしまっていたのでしばらくそのまま使っていました。

とはいえやはり使いづらいので、表示順序の変更方法を調べました。

スレッドにまとめたメッセージの表示順序を変更する方法

感想

まさか環境設定にあったとは…

ずっとメニューのどこかにあると思って、「メニューを探す→ないので諦める」を繰り返していました。

cordova run android コマンドで 「Error: spawn EACCES」が発生した時の解決方法

cordovaアプリを実機で試してみようと

$ cordova run android

を実行したら

$ cordova run android

ANDROID_HOME=/Users/user/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home
Subproject Path: CordovaLib
Error: spawn EACCES

なんてエラーが発生しました。

特に設定とかを変更したつもりはなかったのですが、、、

ググってもうまく改善できずしばらくハマったので、解決方法をメモっておきます。

原因: 権限不足

どうやら 「Error: spawn EACCES」と表示されるのは実行権限が問題のようです。

何も変更したつもりはないのですけどね。

解決方法

とりあえず何を実行しようとして怒られているのか調べてみましょう。

verboseを指定して出力内容を見ます。

$ cordova run android --verbose

~~~ 省略 ~~~
ANDROID_HOME=/Users/user/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home
Subproject Path: CordovaLib
Running command: /Users/user/project/cordova/platforms/android/gradlew cdvBuildDebug -b /Users/user/project/cordova/platforms/android/build.gradle -Dorg.gradle.daemon=true -Dorg.gradle.jvmargs=-Xmx2048m -Pandroid.useDeprecatedNdk=true
Error: spawn EACCES

どうやら「Running command: /Users/user/project/cordova/platforms/android/gradlew」というところでエラーになっているようですね。

EACCESは実行権限の問題なので gradlew に実行権限を与えます。

$ chmod +x /Users/user/project/cordova/platforms/android/gradlew

そして再実行してみます。

$ cordova run android --verbose


~~~ 省略 ~~~
ANDROID_HOME=/Users/user/Library/Android/sdk
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home
Subproject Path: CordovaLib
Running command: /Users/user/project/cordova/platforms/android/gradlew cdvBuildDebug -b /Users/user/project/cordova/platforms/android/build.gradle -Dorg.gradle.daemon=true -Dorg.gradle.jvmargs=-Xmx2048m -Pandroid.useDeprecatedNdk=true
↑↑↑
エラーになっていたコマンド

google-services plugin could not detect any version for com.google.android.gms or com.google.firebase, default version: 9.0.0 will be used.
please apply google-services plugin at the bottom of the build file.
~~~ 省略 ~~~
LAUNCH SUCCESS

無事にアプリが実機で起動できました。

まとめ

どうやら原因はAndroid Studioのアップデートをしたことのようです。

gradeの実行権限が変わっちゃったんですね。

iOSなんかでもあるけど、アップデートでいきなり権限を書き換えるのはやめてほしいな〜。

以下の記事が参考になりました。 ありがとうございました。

cordova buildでError: spawn EACCESが発生した時の対処方法(Qiita)

ホストで使っているシェルを調べる方法など

ホストで使っているシェルを調べる方法など。

毎回忘れてしまうのでメモ

使用しているシェルを調べる方法

$ echo $SHELL
/bin/bash

ホスト上で使用可能なシェル一覧

$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/zsh

使用可能なシェルを追加する方法

$ vim /etc/shells

自動で追加されないこともあるので新しいシェルを追加した場合は一応チェックしておきましょう

感想

ほんと何回やってもシェルの調べ方が覚えられない。 記事にしたことで記憶に残りますように!

【Xcode9】実機でiPhoneアプリをテストしようとしてハマッた話

f:id:malor:20170929175553p:plain

自作iPhoneアプリを実機でデバッグしようとしたら、いくつかエラーが出て動きませんでした。

また同じことをしない様にメモ。同じ事象で悩んでいる方がいたらお試しあれ!

Development cannot be enabled while your device is locked.

下のメッセージが表示されていつまでたってもアプリが起動しない。
デバイスのロックは解除しているのに出るのはなぜ…

Development cannot be enabled while your device is locked. 
Please unlock your device and reattach. (0xE80000E2).

【解決策】

設定の”位置情報とプライバシーをリセット”を実行したら解消しました。

設定 → 一般 → リセット → 位置情報とプライバシーをリセット

実行するときに

位置情報とプライバシーの設定を工場出荷時のデフォルト
状態にリセットします。

と、「工場出荷状態時の状態にリセット」という言葉が出て来てドキドキしますが、特に弊害はないので大丈夫です。

位置情報を使うアプリを起動した時なんかに許可するかの確認が入るくらいです。

iPhone is busy: Preparing debugger support for iPhone

f:id:malor:20170929180152p:plain:w600

下のメッセージが表示されていつまでたってもアプリが起動しない。マジ困る。

iPhone is busy: Preparing debugger support for iPhone
Xcode will continue when iPhone6 is finished.

【解決策】

前回と同様 "位置情報とプライバシー" をクリアすれば治るのかと思ったけどそうでもない。

ので、とりあえずデバイスの再起動を実施。

起動後にビルドしたらエラーは解消していました!

再起動が効いたのかわからないけど動く様になりました。

App Installation filed This application's application-identifier entitlement

f:id:malor:20170929180240p:plain:w600

下のメッセージが表示されてビルド失敗。ナニコレ。

App Installation filed
This application's application-identifier entitlement
does not match that of the installed application.
These values must match for an upgrade to be
allowed.

【解決策】

これはビルドチームを変更したりすると起きるようです。

iPhone側に残っている古いアプリを削除すれば解消。

まとめ

以上、実機でデバッグするのも一苦労ですね。
上記事象でハマっている方がいましたら解消しますように。

Reactアプリを IE11 で表示すると 「オブジェクトは 'startsWith' プロパティまたはメソッドをサポートしていません。」 が発生する

create-react-app で作った ReactアプリをIE11で表示したら画面が真っ白に!

create-react-app で作った Reactアプリ をIE11で表示したら画面が真っ白になりました。

コンソールには以下のエラーが…

オブジェクトは 'startsWith' プロパティまたはメソッドをサポートしていません。

Possible Unhandled Promise Rejection (id: 0):
  TypeError: 未定義または NULL 参照のプロパティ '_currentElement' は取得できません

Chromeでしか動作確認をしていなかったのもあれなのですが、開発も終盤にきたタイミングでこれは困る〜。

解決までに半日ほど要してしまったので、次回またハマらないようにメモしておきます。

原因はsetState??

コンソールと睨めっこしたりデバッグコード埋め込んだりして見た結果、どうやら setState のタイミングでエラーが発生していることが判明

どうやら create-react-app で生成されるコードで startsWith() を呼び出しているんだけど、「IE11にはそんな関数が定義されていないよ」ってことが問題みたいです。

解決策

とりあえず、IE11にES6の新機能を使わせるには 『ポリフィル』 が必要になるそうです。

調べがついた解決策は、以下の2つ。

  1. es6-shimを使う
  2. babelのpolyfillを使う

1 es6-shim を使う

一つ目は es6-shim を使う、という方法

これは index.html で es6-shim のライブラリを読み込んであげるだけで良いようです。

  <head>
    
    <!--[if lt IE 10]>
    <script src="https://as.alipayobjects.com/g/component/??console-polyfill/0.2.2/index.js,es5-shim/4.5.7/es5-shim.min.js,es5-shim/4.5.7/es5-sham.min.js,es6-shim/0.35.1/es6-sham.min.js,es6-shim/0.35.1/es6-shim.min.js,html5shiv/3.7.2/html5shiv.min.js,media-match/2.0.2/media.match.min.js"></script>
    <![endif]-->
    <script src="https://as.alipayobjects.com/g/component/??es6-shim/0.35.1/es6-sham.min.js,es6-shim/0.35.1/es6-shim.min.js"></script>
    
  </head>

詳しくはコチラ(英文)

2 babelのpolyfillを使う

二つ目は babel の polyfill を使う方法。

babel-polyfill とか babel-runtime とか 色々用意されているようです。 (詳しくはこちらの記事が参考になりました。)

私はとりあえず babel-polyfill を選択しました。

導入はこんな感じ

# yarn の場合
$ yarn add babel-polyfill

# npm の場合
$ npm install --save babel-polyfill

後は index.js の先頭で import してやれば IE11 なんかでも ES6 の新しい機能が使えるようになります。

import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(<App />, document.getElementById('root'));

これで IE11 でもReactアプリが(とりあえず)動くようになりました。

まとめ

今回は「とりあえず動くようにした」という感じ。

babel とか トランスパイル とか、その辺は全然理解できていないことが認識できました。

まぁその辺を考えたく無いからお手軽な create-react-app を使っている、というのもあるんですけどね。

とはいえ違うブラウザで動かすたびに(特にIE)で時間を取られるのもなんなので時間をとって勉強する必要があるな〜と感じました。

【Androidアプリ開発】adbコマンドをMacのターミナル上で使えるようにする

こんにちは

最近ようやっとターミナル上でadbコマンドを使うようになりました。

特にコツとかはないですが設定方法をまとめておきます。

実機のAndroid端末のログが見たい!

いつもAndroid Studioを通してデバッグしていましたが、「cordova run android」 で実機にアプリを登録したあと、

ログってどうやってみるの???

という初心者丸出しな自体にぶち当たってしまいました。

皆さんご存知かとは思いますが、私のようなレベルの方向けに設定方法を記載しておきます。

設定方法

とりあえずパスが通っているか確認しましょう。 コンソールで「adb」と打ちこんでみます。

$ adb
zsh: command not found: adb

はい、そんなコマンドは知らん!というメッセージが返ってきましたね。

これは adb というコマンドにパスが通っていないためです。

なので、adbコマンドへパスを通しましょう。

↓↓パスの記載場所はこちら↓↓

f:id:malor:20171020150722p:plain

「このパス+platform-tools」を、.bash_profile なり、.bashrcなりのターミナル起動時に読み込まれるファイルに記載すれば準備オッケーです。
(私はzshを使用しているのでとりあえず.zshrcに記載しました。)

(~/.zshrc)
下の行を「ドットファイル」の最終行に追記
export PATH=$HOME/Library/Android/sdk/platform-tools:$PATH

追記したらファイルを再読み込みします。

$ source ドットファイル名

例)./zshrcの場合
$ source ./zshrc

これでパスが通りました。
本当に通っているか確認しておきましょう。

コンソールで「adb」と打ちこんでみます。

$ adb
Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android

~~~ 省略 ~~~

「command not found: adb」が表示されていなければ成功です。

まとめ

これでadbコマンドが使えるようになりました。

ログ参照の他に、端末のモニタリングとかインストールされているアプリの確認とかできるようです。

面白そうなので色々試して見ましょう!

Android Debug Bridge(公式サイト)

Local by Flywheel が起動しない!アップデート後に起動しなくなった時の対処法

Local by Flywheel が起動しない!!

ローカルWordpress環境を簡単に構築できる Local by Flywheel ですが、 アップデートしたら起動しなくなってしまいました。

f:id:malor:20171004050236p:plain:w600
”Starting Local Machine.”のメッセージのまま画面が表示されない・・・

アプリを再起動してもMacを再起動しても変わらず。 VirtualBox内でVMは起動しているのを確認

対処方法

Flywheel の コミュニティに対処方法が載っていました。

  1. まず、 Local by Flywheel アプリを起動していたらアプリを終了。

  2. 次に、ターミナル(terminal.app)を開いて以下のコマンドを実行。

"/Applications/Local by Flywheel.app/Contents/Resources/extraResources/virtual-machine/vendor/docker/osx/docker-machine" kill local-by-flywheel
"/Applications/Local by Flywheel.app/Contents/Resources/extraResources/virtual-machine/vendor/docker/osx/docker-machine" restart local-by-flywheel
"/Applications/Local by Flywheel.app/Contents/Resources/extraResources/virtual-machine/vendor/docker/osx/docker-machine" env local-by-flywheel

以上!
これで無事に起動する様になっているはず。

local.getflywheel.com

感想

サクサク動く便利なwordpress環境なだけに、いきなり動かなくなってしまってヒヤッとしました。
でも今のところはコミュニティが活発なのでエラーが起きても安心。 f:id:malor:20171003154636j:plain