著者アーカイブ 村上

村上 著者:村上

【Excel】セルに値が入力されているかを判定する方法

久しぶりに使おうとして関数名を忘れてしまっていたので、備忘録として。
Excel で セルが入力されているか、もしくは空なのかを判定する方法です。
使用するのは「ISBLANK」という関数です。

参考にさせていただいた記事はこちらから。

エクセル ISBLANK 関数:セルが空白か判定する
https://www.tipsfound.com/excel/04isblank

 

関数の使い方自体はとても簡単で、式は下記のとおりです。

=ISBLANK([空判定をしたいセル])

なお、こちらの関数は指定したセルが空だったら TRUE を返し、何か値が入っていたら FALSE を返します。

この関数は IF 関数と一緒に用いることが多いと思います。
例えば、「セルが空だった時」と「空でなかった時」に処理を分けたいときに使えます。

=IF(ISBLANK([空判定をしたいセル]),[セルが空の場合の処理],[セルが空でない場合の処理])

サンプルコードは上記のとおりです。
この書き方を使えば、お店のセールなどでよくあるような「5,000円以上お買い上げで、10% オフ」という処理も簡単に書けます。
…まあ、Excel で実際に行う処理かどうかはわかりませんが…。

 

以上、Excel でセルが空かどうかを判定する方法でした。
私的には、頻繁には使わないけど思い出した時に使う関数だと思っているので、覚えておくと便利だと思います。

村上 著者:村上

【Android】「Could not find com.android.tools.build:aapt2:3.4.2-5326820.」エラーの対処法

1年ほど前に開発したアプリを起動した際に遭遇したエラーについてです。
エラーメッセージは「Could not find com.android.tools.build:aapt2:3.4.2-5326820.」というもので、これだけでは意味が分かりません…。
なので、そのまま Google 検索にかけたところ、下記の記事がヒットしました。
若干エラーメッセージが異なりましたが、こちらの対処法で解消できました。

参考にしたサイトはこちら。

[Android]「Could Not Find com.android.tools.buildaapt2:3.2.0-4818971」という謎のエラーが出てビルドできない場合の対処法
https://minpro.net/could-not-find-com-android-tools-buildaapt2

 

こちらの記事によると、Android Studio のバージョンを挙げた時に発生するエラーのようです。
確かに、開発した当時とは Android Studio のバージョンは異なっているはずです。

で、解決方法ですが、build.gradle の中に google() を追加すればOKです。
追加箇所は下記のとおりです。

...
allprojects {
    repositories {
        google()  // こちらを追加
        jcenter()
    }
}
...

あとは、build.gradle を更新したので、Sync Now を実行し、通常通りビルド・実行をします。
私の環境では上記の追加のみで解決できました!

なお、こちらのエラーの原因ですが、参考サイトによると「Android Studio が 3.2 にバージョンアップされたとき、「AAPT2」というツールの提供元が変更されたことが原因」とのことでした。

 

以上、Android Studio にて「Could not find com.android.tools.build:aapt2:3.4.2-5326820.」エラーが発生した時の対処法でした。
参考になれば幸いです。

村上 著者:村上

【Android】「Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.」エラーの対処法

先日報告があったため修正した、Android アプリの不具合です。
WebView のページを開いたところ、何も表示されず真っ白なページになってしまいました。

で、Android Studio で表示されたエラーメッセージは、タイトルにもある通り「Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.」というもので、「証明書チェーンの検証に失敗しました」とのこと。

このエラーは証明書の設定が間違っていることが考えられるので、一度証明書の設定を確認してください。

 

ですが、テスト用の証明書だったりするなど、直すのが難しいことがあるかと思います。
そんな時には、強制的にエラーをスキップする方法があります。

参考にしたサイトはこちらから。

Y.A.M の 雑記帳: Android WebView で https のサイトにアクセスして白画面になるのを避ける方法
http://y-anz-m.blogspot.com/2012/08/androidwebview-https.html

ssl – Android error in webview.loadUrl() – Trust anchor for certification path not found – Stack Overflow
https://stackoverflow.com/questions/33825696/android-error-in-webview-loadurl-trust-anchor-for-certification-path-not-fou

ただし、セキュリティ上は問題があるので、なるべく使わないほうがいいです。
あくまでも、緊急時の対処法ということにしておいてください。

対応方法ですが、WebViewClient を継承しているクラスがあると思うので、そこに下記のコードを記述します。

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError er) {
    handler.proceed(); 
}

上記を指定すると、SSL でエラーが発生しても無視をしてくれますので、問題のあるWebページでも問題なく表示されます。

 

以上、Android の WebView で SSL 証明書にエラーがある Web ページを表示する方法でした。
ただし、再度繰り返しますが、あくまでも応急処置ですので、リリースするアプリには導入しないことをお勧めします。

村上 著者:村上

【Android】現在の位置情報を偽装できるアプリ「Fake GPS location」

アプリ開発の際に、位置情報を偽装したいことがあると思います。
そんな時におすすめの Android アプリが「Fake GPS location」です。
言語は英語なのですが、直感的な操作で使えるので、特に支障はありません。

インストールはこちらから。

Fake GPS location – Google Play のアプリ
https://play.google.com/store/apps/details?id=com.lexa.fakegps&hl=ja

 

使い方ですが、アプリを起動すると画面に地図とマップピンのアイコンが表示されるので、まずは画面をスワイプして偽装したい場所にアイコンが来るように調整します。

上の画像では、浜松駅をマップピンに合わせています。
あとは、右下にある三角アイコンの緑ボタンを押せば、設定は完了です!
位置情報を取得してみると、このアプリで設定した場所にいるように表示されるかと思います。
なお、このアプリを起動中は、端末の通知バーに常にアイコンが表示されています。
うっかり消し忘れることもなくて便利です。
また、一時停止は通知バーからも操作できます。

端末によっては、設定から「仮の現在地情報アプリを選択」や「疑似ロケーションアプリ」という項目で Fake GPS アプリを選択する必要がある場合もありますが、その際はきちんと通知してくれるので、それに従って設定しましょう。
なお、上記の設定は、設定 > 開発者向けオプション > 仮の現在地情報アプリを選択(または疑似ロケーションアプリ) という場所にあります。

 

以上、Android 端末で現在の位置情報を偽装する方法でした。
位置情報で、機能の ON/OFF を判断していたりすると、動作検証がなかなか難しかったりしますが、こちらを利用すればかなり簡単に動作を確かめられますね!
くれぐれも悪用せず、便利にお使いください。

村上 著者:村上

【サービス】画像を送ると文字起こししててくれるLINEアカウント「文字起こしばりぐっどくん」

とても便利なサービスを紹介している記事を見つけたので、共有&備忘録のためにまとめ。

読んだ記事はこちらから。

LINEに画像を送ると、AIが3秒で文字起こし 「企業や役所の働き方変える」 長崎のベンチャーが開発 – ITmedia NEWS
https://www.itmedia.co.jp/news/articles/1907/11/news110.html

 

長崎県西海市のベンチャー企業「西海クリエイティブカンパニー」が7月3日からLINE上で公開しているサービスで、LINE アカウント「文字起こし ばりぐっどくん」です。
こちらは友達申請をするとすぐ使え、文字起こしをしたい画像を送ると、数秒でテキストを返してくれるのだとか。
手書き文字は分かりませんが、名刺などの印字されているものでしたら問題なく変換ができるとのこと。
チラシなどの紙媒体に記載されたデータの取り扱いがかなり便利になりそうですね!
また、役所などの紙を扱うことが多いお仕事ではとても役立ちそうですね。
幸い、紙データを扱うことはそこまで多くありませんが、たまに紙データからテキストを抜き出したいことがあるので、使う頻度はそこそこありそうです。

なお、こちらのサービスですが、非エンジニアの担当者の方が、約1週間で作り上げたものとのこと。
文字起こしには、Google Cloud Platform の画像認識サービス「Cloud Vision」を使用しているそうです。
面白そうなので、時間があれば是非触ってみたいですね!

 

以上、画像から文字を起こしてくれるLINEアカウント「文字起こし ばりぐっどくん」のご紹介でした。
いざというときに便利そうなので、この後にでも友達申請をしておこうと思います。

村上 著者:村上

【Android】作成したAPKファイルが64ビットに対応しているかを調べる方法

先日に引き続き、Android アプリが 64ビットに対応しているかを確認する方法・第二段です。
後輩君が違う方法を教えてくれたので、こちらの方法でも確認してみました。

参考にしたサイトはこちらから。

Android の 64bit 対応のapkファイルの作成方法 – 強火で進め
http://nakamura001.hatenablog.com/entry/20180717/1531822914

 

使用するのは、aapt というコマンドです。
私はコマンドプロンプト上で実行しました。

実行するコマンドは下記のとおりです。

aapt dump badging [アプリのAPKファイル]

ただ、パスが通っていなかったので、コマンドが実行できる場所まで移動します。
私の場合は、下記の場所にありました。

C:\Users\[ユーザー名]\AppData\Local\Android\sdk\build-tools\29.0.0-rc3

で、上記を実行すると、ズラズラとよく分からないデータが出力されるので、その中から native-code: という記述を探します。
ここに arm64-v8a が含まれていたら、64ビットに対応している APK ファイルが作成されているとのことでした。
私もこちらの方法で確認したところ…そもそも native-code: という記述が見つかりませんでした。
…Cordova のアプリだからでしょうか?
でも、APK ファイルの作成は Android Studio で行ったのですが…。
ちょっとよく分からない結果になってしまいました。

 

以上、Android アプリが 64ビットに対応しているかを調べる方法でした。
どなたかの参考になれば幸いです。

村上 著者:村上

【JavaScript】スクロールバーをカスタマイズする方法

実際に使う機会があるかは分かりませんが、ひょんなことから調べたので備忘録としてまとめ。
Webページのスクロールバーをカスタマイズする方法です。

普通ブラウザのスクロールバーは、グレーの四角形だと思いますが、Web ページによっては、この見た目がそぐわなくて美しくない!という場合があるかと思います。
そんな時に、このスクロールバーではなくもっとシンプルなスクロールバーを実装するためのライブラリがあります。

それがこちらの「SimpleBar」というライブラリです。
公式サイトはこちらから。

SimpleBar – Custom scrollbars made simple
http://grsmto.github.io/simplebar/

 

使い方はとても簡単で、まず simplebar.min.jssimplebar.css ファイルをダウンロードして、HTML の head 内に追加します。
もしくは、CDN でも配信しているので、こちらを記述しても OK です。

<link rel="stylesheet" href="./css/simplebar.css">
<script src="./js/simplebar.min.js"></script>
<!-- または -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/simplebar@latest/dist/simplebar.css">
<script src="https://cdn.jsdelivr.net/npm/simplebar@latest/dist/simplebar.min.js"></script>

ちなみに、ReactVue.js でも使えるようです。

あとは、スクロールを追加したい要素に対して data-simplebar を追加します。
サンプルコードは下記のとおりです。

<div data-simplebar>
    <!-- 表示したい要素 -->
</div>

作業は以上です!
これでシンプルなスクロールバーが実装できます。

 

以上、ブラウザのスクロールバーをカスタマイズする方法でした。
折角調べたので、機会があれば是非実装してみたいと思います。

村上 著者:村上

【Android】アプリが64ビット対応しているかを確認する方法

2019年 8月 1日以降に Google Play で公開するアプリは 64ビットアーキテクチャをサポートする必要があります。
そのため、つい先日まで開発していたアプリが 64ビットに対応しているかどうかを調べてみました。

確認する方法は、Android Developer のページに記載がありました。

アプリが 64 ビットデバイスをサポートしていることを確認する|Android Developers
https://developer.android.com/distribute/best-practices/develop/64-bit?hl=JA

または、Qiita にも記事がありましたので、こちらも参考になります。

Androidのapkが64bit対応しているか調べる方法 – Qiita
https://qiita.com/b_a_a_d_o/items/4cf698fe0f33ad5c75b3

 

さて、確認方法ですが、まず Android Studio のメニューバーの「Build」から「Analyze APK…」を選択します。

処理が完了したら、下記のようなタブが開くので、ここから「.so」という拡張子のファイルがあるかどうかを確認します。

もし、.so 拡張子のファイルが見つからない場合、既にアプリは 64ビットに対応しているため、特にやる事はありません。
今回確認したアプリでは、.so 拡張子のファイルは見つからなかったため、64ビット対応はできているようです。

で、もしファイルが見つかった場合で、armeabi-v7a または x86 というディレクトリに該当ファイルがある場合、それは 32ビット用とのこと。
それに対するファイルが arm64-v8a または x86_64 というディレクトリにファイルが無い場合は、64ビットへの対応はできていないとのことでした。

こちらの方法が一番分かりやすいのではと思います。
もしくは、APKファイルを作成し、拡張子を .apk から .zip に変換後、解凍するという方法で、APK ファイルの内容を確認できるので、こちらで探してもいいかもしれません。

どちらもそこまで難しい方法ではないので、お好きな方法でお確かめ下さい。

 

以上、Android アプリが 64ビットに対応しているかどうかを確認する方法でした。
ただ、このアプリは Cordova で開発したアプリで、ネイティブアプリではないため、この確認方法でいいのかは若干不安が残るところ…。
Cordova アプリの確認方法がないかどうか、引き続き調べたいと思います。

村上 著者:村上

【Cordova】アプリをバックグラウンドでも実行するためのプラグイン「cordova-plugin-background-mode」

現在も引き続き開発中の Cordova アプリを iOS で実行した際、アプリがバックグラウンドになるとビーコンが受信できないという現象が発生していました。
ビーコン受信に使っているのは「cordova-plugin-ibeacon」というプラグインです。
で、どうしてもバックグラウンドで受信したい!との要望があったので、その対策に「cordova-plugin-background-mode」というプラグインをインストールしてみました。

GitHub のページはこちらから。

GitHub – katzer/cordova-plugin-background-mode: Keep app running in background
https://github.com/katzer/cordova-plugin-background-mode

なお、結論から言うと、問題なくバックグラウンドでのビーコン受信を行うことができました!
が、バックグラウンドでも実行しているため、当然ですがメモリの消費は増えます。
あまり重い処理を行うと、バッテリーの消費が早くなったり、端末が熱を持つ可能性もありますので、その点ご了承の上で、実装してください。

 

インストール方法は、まず下記のコマンドを実行します。

cordova plugin add cordova-plugin-background-mode

インストールが終わったら、deviceready が発火した後、任意のタイミングでバックグラウンド処理を有効にする記述を追加します。
私はアプリが起動して、メイン画面が表示されるタイミングで実行しています。
そのコードはこちら。

// バックグラウンドを有効にする
window.cordova.plugins.backgroundMode.enable();
// 下記の書き方でもOK
window.cordova.plugins.backgroundMode.setEnabled(true);

バックグラウンド処理を無効にする時はこちらを実行します。

window.cordova.plugins.backgroundMode.disable();
// または
window.cordova.plugins.backgroundMode.setEnabled(false);

バックグラウンド処理が有効かどうか調べたい場合は下記を実行します

const status = window.cordova.plugins.backgroundMode.isActive();

なお、返却される値は true/false です。

基本的な関数は以上です。
他にも、バックグラウンドの ON/OFF を検知したタイミングで、任意の処理を実行したり、Android 限定ですが、プログラム側からアプリをバックグラウンド/フォアグラウンドに移動させたりすることもできます。
このあたりは、ドキュメントをご確認ください。

 

以上、Cordova アプリをバックグラウンドでも実行するためのプラグイン「cordova-plugin-background-mode」のご紹介でした。
是非ご活用ください。

村上 著者:村上

【Cordova】JavaScriptのlocalStorageで保存した値が消える

Corovaアプリを開発中、localStorage で保存した値が、消してもないのに消えるという現象に遭遇しました。
結論から言うとただのプログラムのミスだったのですが、調べているときに、localStorage の利用はあまり推奨されないという記事をいくつか見つけました。

一番詳しいと思った記事がこちら。
ローカルストレージに簡単な解決策はない | Mozilla Developer Street (modest)
https://dev.mozilla.jp/2012/03/there-is-no-simple-solution-for-local-storage/

いくつか抜粋すると、

  • ストレージの上限に達した事を知る上手い仕組みがない
  • localStorage はファイルの読み込み/書き込みが絡むため、システムによっては時間がかかることがある
  • 速く動いているように見せるため、ブラウザは最初のリクエスト時にデータをメモリ上にロードする。そのため多くのメモリを食ってしまう
  • localStorage は永続的なため、そのサイトやサービスをもう使わなくなっても、データがブラウザの立ち上げ時にロードされ続けてしまう

上記のようなデメリットが挙げられます。

また、私の体感ですが、書き込み・読み込みに若干のタイムラグが発生する場合があるように感じました。
そのため、データを保存直後に読み出すなどをした場合に、データが取得できないということもあり得るかもしれません。

 

特に重要なデータを保持しないのであれば、localStorage でも問題ないと思いますが、そうでない場合、プラグインの「cordova-plugin-nativestorage」の使用をおすすめします。
GitHub のページは下記から確認できます。

GitHub – TheCocoaProject/cordova-plugin-nativestorage: Cordova plugin: Native storage of variables in Android, iOS and Windows
https://github.com/TheCocoaProject/cordova-plugin-nativestorage

使い方は下記のとおりです。

// データの保存
NativeStorage.setItem([キー名], [値], [成功時の処理], [失敗時の処理]);
// データの取得
NativeStorage.getItem([キー名], [成功時の処理], [失敗時の処理]);
// 全データの取得
NativeStorage.keys([成功時の処理], [失敗時の処理]);
// データの削除
NativeStorage.remove([キー名], [成功時の処理], [失敗時の処理]);
// 全データの削除
NativeStorage.clear([成功時の処理], [失敗時の処理]);

ほとんど localStorage の使い方と同じなので、分かりやすいかと思います。
また、localStorage と違って、成功/失敗時の処理を追加できるため、確実にデータが保存できたかどうかが確認できるのは良いですね。
仕様に合うのであれば、localStorage よりもこちらの使用をおすすめします。

 

以上、Cordova アプリでの localStorage の使用の是非と、代替となるプラグイン「cordova-plugin-nativestorage」のご紹介でした。
是非ご活用ください。