著者アーカイブ 村上

村上 著者:村上

【Cordova】アプリアイコンにバッヂを表示する方法【解決済み】

以前、アプリのアイコンにバッヂを表示するCordovaのプラグインをご紹介しました。
その時は、何故かバッヂが表示されず、解決方法についても調べきれていなかったのですが、先日対処法が判明しましたのでご紹介。

ちなみに、前回の記事はこちらから。

【Cordova】アプリアイコンにバッヂを追加するプラグイン「cordova-plugin-badge」
https://cpoint-lab.co.jp/article/201807/【cordova】アプリアイコンにバッヂを追加するプラグ/

 

さて、気になるその解決策ですが…単にAndroidとiOSのプラットフォームを一度削除し、再度追加するだけでした。
本当にそれだけでした!
何らかの原因で、プラグインがうまく各プラットフォームに追加できなかったのかな、と思われます。

ちなみに、こちらに気が付いたきっかけはブラウザで実行した時のエラー内容です。
実際のエラー文は保存し忘れてしまいましたが、「プラグインの関数が存在しない」という意味のエラーでした。
で、もしかして…と思い至り、プラグインの再インストールをしたところ、解決したという流れです。

 

以上、cordova-plugin-badge プラグインが動かない時の対処方法でした。
同じことでお悩みの方は、是非お試しください。

村上 著者:村上

【Excel】データが入力されているセルの内容だけを抜き出す方法

エクセルでデータを扱っているとき、飛び飛びで入力されているデータを詰めて表示したいことがあるかと思います。
フィルター機能を使って、空白以外を表示してコピー&ペーストという方法もなくはないかと思いますが、今回はそれを関数で行う方法です。

文字だけだとわかりにくいですが、要は下記のようにデータを抽出する方法です。

 

さて抽出方法ですが、まず、事前準備として、A列に通し番号を振ります。
で、下記の式を任意のセルに入力します。

=IFERROR(INDEX($B$1:$B$10,SMALL(IF($B$1:$B$10<>"",ROW($B$1:$B$10),""),A1)),"")

上記の式を入力したら、Ctrl + Shift Enter で式を確定させます。

なお、セルの範囲などは適当に変えてください。
また、抽出したい範囲は絶対参照にしておくと、セルをコピーした時に、範囲がズレません。

作業としては以上です。
あとは、セルの右下隅の四角をドラックしてセルをコピーすると、空白セルなしデータを抽出できます。
また、IFERROR関数を使って、データの最後まで来たら、それ以降はなにも表示されないようにしています。

IFERROR関数は、式がエラーになったときの処理を指定できるので便利です。

 

以上、データが入力されているセルだけを抽出する方法でした。

村上 著者:村上

【未解決】「WARNING: The option ‘android.enableAapt2’ is deprecated and should not be used anymore.」警告の対処法

Android Studioでの未解決の警告です。
ビルド時はタイトルにある警告だけなのですが、実行しようとすると、別のエラーが発生して実行できません。

エラー全文はこちら。

The option ‘android.enableAapt2’ is deprecated and should not be used anymore.
Use ‘android.enableAapt2=true’ to remove this warning.
It will be removed at the end of 2018..

Google翻訳によると、「オプション ‘android.enableAapt2’は推奨されておらず、もう使用しないでください。この警告を削除するには、 ‘android.enableAapt2 = true’を使用してください。それは2018年の終わりに削除されます..」とのことです。

で、警告だからと無視して実行しようとすると、下記のエラーが。

Failed to execute aapt(aaptを実行できませんでした)

調べてみたところ、こちらの解決策としては、gradle.properties というファイルに下記のような記述があるので、その値を true に変更すると解決されるとありました。

android.enableAapt2 = false

が、私の環境では解決できず…。
まだ調べている最中ではありますが、なかなか根が深そうです。

ちなみに、参考にさせていただいた投稿はこちらから。

android – FAILURE: Build failed with exception – Stack Overflow
https://stackoverflow.com/questions/48841742/failure-build-failed-with-exception

 

さらっと調べただけなので、解決策はまだつかめていません。
別に急ぎの内容ではないので、時間があるときにでも再度調べてみようかと思います。

村上 著者:村上

【Excel】VLOOKUP関数で一致した複数の項目を抽出する方法

これやり方がわからなくて悩んでいましたが、Qiitaにまとめられていました!
投稿者さん、ありがとうございました!

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

検索値が複数該当する時に2つ目以降の数値をVLOOKUP関数で抽出する – Qiita
https://qiita.com/AquaMeria/items/a4ffeff03b81e7d03abb

 

早速ですが、使用する関数はこちら。

=IFERROR(VLOOKUP([検索値],INDEX([参照元データの検索範囲],MATCH([検索値],[元値の検索範囲],0)+1):[参照元データの2列目最末行],2,false),"")

具体的な使い方は、下のスクリーンショットのとおりです。

例としてC3のセルの関数をあげると、下記のように記述しています。

=IFERROR(VLOOKUP($A3,INDEX($H$2:$H$10,MATCH($A3,$H$2:$H$10,0)+C$1):$I$10,2,FALSE),"")

少しアレンジしたところもありまずが、ほぼ記事のとおりです。
…が、なぜか各項目で最後のデータが重複して表示されてしまいました…。
まあ、こちらは消せば済む話なので、集計後の確認をきちんと行えば対処できると思います!

 

ということで、以上、VLOOKUP関数で複数の値を抽出する方法でした。
VLOOKUP関数は便利なのですが、1件のみしかデータが取得できず…その点は不便だと思っていたので、解決策が見つかって嬉しいですね。
同じことでお悩みの方がいらっしゃいましたら是非、参考にしてみてください。

村上 著者:村上

【Cordova】「invalid GOOGLE_APP_ID in GoogleService-Info.plist or set in the customized options」エラーの対処法

Cordovaとありますが、詳しくはCordovaで開発したアプリをXcodeで実行した際に発生したエラーです。
ビルドは成功するのですが、実行しようとすると起動中に落ちてしまいます。
なお、このエラーはプラットフォームを一旦削除して追加しなおしたりすると、よく発生するような気がします。

エラー全文はこちら。

Terminating app due to uncaught exception ‘com.firebase.core’, reason: ‘Configuration fails. It may be caused by an invalid GOOGLE_APP_ID in GoogleService-Info.plist or set in the customized options.’

firebase の単語が入っているので、通知のプラグイン辺りのエラーかと思うのですが、正しい原因は「GoogleService-Info.plist」というファイルの内容が、何らかの影響で書き換わってしまったためです。

このエラーについて、詳しくは下記のサイトを参考にしてください。

iOS : invalid GOOGLE_APP_ID in GoogleService-Info.plist or set in the customized options #308 – fechanique/cordova-plugin-fcm – GitHub
https://github.com/fechanique/cordova-plugin-fcm/issues/308

 

対処法ですが、こちらは簡単です。
まず、Cordovaアプリのディレクトリの下記の場所にある「GoogleService-Info.plist」のファイルを削除します。

platforms/ios/[プロジェクト名]/Resources/Resources

ファイルを消してしまうことが心配なら、デスクトップなど、一旦どこかにバックアップを取っておきましょう。

で、ファイルを削除したら、下記のその一つ上のディレクトリにある同名のファイル「GoogleService-Info.plist」を、同じ場所にペーストします。

platforms/ios/[プロジェクト名]/Resources/

あとは、通常通りアプリをビルド・実行すれば問題なく動作しました。

 

以上、Cordovaアプリが実行できない時の対処法でした。
何でも、GoogleService-Info.plist のファイルが何らかの影響で壊れてしまうことは、頻繁ではないにしろ発生する事らしいので、エラー文をよく読んで、「GoogleService-Info.plist」の文字があったら、このファイルの破損を疑ってください。
意外と原因がわかりにくく、原因判明まで時間を使ってしまうエラーなので、少しでも誰かの助けになれば幸いです。

村上 著者:村上

【アプリ】Webアプリがネイティブアプリのように使える「PWA(Progressive Web Apps)」

業務でネイティブアプリの開発をすることが多いですが、今回、初めて「PWA」というものに触ってみました。
PWA とは「Progressive Web Apps」の略で、「プログレッシブWebアプリ」という、Webアプリをネイティブアプリのように使えるようにするしくみのことです。
これを使うことにより、モバイル端末でWebページを表示する際、ネイティブアプリのような挙動をさせることが出来ます。

PWAについては、こちらのサイトを参考にさせていただきました。

いまさら聞けないPWAとAMP – Qiita
https://qiita.com/edwardkenfox/items/4c0b9550ffa48c1f0445

サンプルあり!Googleが推奨するPWAに既存サイトを対応させる方法 – WPJ
https://www.webprofessional.jp/retrofit-your-website-as-a-progressive-web-app/

特に下のサイトがおすすめ!
GitHubのサンプルコードも紹介しているので、とりあえず PWA ってどんな感じ?という人が試しに触るのにはちょうどいいと思います。
やはり 0からコードを書くよりも、ひな形があるほうが簡単ですしね!

 

さて、まずWebサイトを PWA 対応させるためにやらなければならないことは下記のとおりです。

  1. WebサイトをSSL化する(HTTPSを有効にする)
  2. Webアプリのマニフェストを JSON で作る
  3. Service Workersを作る

最低やらなければいけないことは、上記の3点です。
特に 3.Service Workersを作る については、私はなかなか理解するのが難しかったので、最初はサンプルコードをそのままコピーして利用しています。

また、PWA はキャッシュを保存してオフラインでも動作する仕様になっています。
そのため、開発中は Google Chrome のシークレットウィンドウを使い、キャッシュを残さないようにすると開発がしやすいらしいです。
ただし、ホーム画面に追加する機能のテストは、シークレットウィンドウでは動かないので、その点はご注意ください。

 

まだ触り始めたばかりなので、挙げられる注意点は以上です。
正直、アプリを開発するよりもかなり楽なので、新しいサービスの開発を考えている方は、PWAの使用も視野に入れてみてはいかがでしょうか。

村上 著者:村上

【Excel】結合したセルの行の高さの自動調整は無効です

タイトルにもある通りです。
Excelでセルの結合を行い、さらにその列に「折り返して全体を表示」を指定した場合でも、セルの行の高さの自動調節は行われません。
以前は、これを知らず「何故行をダブルクリックしているのに自動調整されないのか?」と悩んだ記憶があります。
どうやらExcelの仕様のようなので、自動調節が効かないのはどうしようもないんですよね…。

 

対処方法としては

  1. 手動で調整
  2. マクロを使う
  3. 行の高さ調整のアドインを使う

上記の3つが挙げられます。
以前は1の手動での調節を使っていたのですが、アドインがあったとは…!
今回、改めて調べてみて初めて知りました。

なお、2のマクロについては下記のサイトが参考になりそうです。

VBAで結合セルの行の高さを自動調整する|Excel作業をVBAで効率化
https://vbabeginner.net/結合セルの行の高さを自動調整する/

また、3のアドインについては、こちらから。

結合セルを含めた行の高さ調整アドインAutoFitRowExの詳細情報:Vector ソフトを探す!
https://www.vector.co.jp/soft/win95/business/se508497.html

時間があるときにでも、私も導入してみようかと思います。

 

以上、結合したセルの行の高さの自動調節についてでした。
セルの横幅を長くすることができれば、そもそも結合せずに済んで、自動調節も効くのですが…そうでないこともあるので、その場合は、今回上げた方法を使ってみてください。

村上 著者:村上

【CSS】要素内のテキストの改行や空白を操作するプロパティ「white-space」

久しぶりに感じるCSSについての記事です。
今回紹介するのは、テキストの改行や空白を操作できる「white-space」というプロパティについて。
新しく使用したプラグインのせいか、テキストが改行されなくなったので、その対処法です。

 

まず、プロパティの値と、その説明については下記をご覧ください。
なお、参考にさせていただいたサイトはこちらから。

white-spaceとは|コーディングのプロが作るCSS辞典
https://html-coding.co.jp/annex/dictionary/css/white-space/

プロパティの値 説明
normal(初期値) テキスト内の連続する半角スペース、タブ、改行を一つの半角スペースにまとめ、自動的に折り返しをして表示
nowrap テキスト内の連続する半角スペース、タブ、改行を一つの半角スペースにまとめて表示。なお自動的な折り返しは行わない
pre テキスト内の連続する半角スペース、タブ、改行をそのまま表示。なお自動的な折り返しは行わない
pre-wrap テキスト内の連続する半角スペース、タブ、改行をそのまま表示し、それに加えて自動的な折り返しも行う
pre-line ソース中の連続する半角スペース、タブを一つの半角スペースにまとめて表示する。しかし、改行している箇所は改行して表示し、それに加えて自動的な折り返しも行う

以前は normal のままだったのですが、プラグインの影響なのか、改行コードが無効になっていたため、pre-wrap に変更しました。
すると、問題なく改行されました。
改行やスペースをそのまま表示するのなら、pre でもいいのですが、これだと文字の折り返しが行われないため、pre-wrap がおすすめです。

 

以上、改行コードが向こうになってしまった場合の対処法でした。
皆様も、もし何らかのライブラリやプラグインの影響で、テキストが改行されなくなったり、スペースがおかしいと思った時は、こちらのプロパティを調整してみてください。

ちなみに、使用したプラグインは「react-string-replace」です。
リッチテキストを使用するために導入しました。

村上 著者:村上

【Cordova】アプリアイコンにバッヂを追加するプラグイン「cordova-plugin-badge」

今回はCordovaのプラグインのご紹介。
お客様からのご要望で、LINEやFacebookのように、アプリのアイコン右上に赤丸や数字で通知数を表示させたいとのことでした。

現在試しているプラグインは「cordova-plugin-badge」というものです。
GitHubのページは下記から。

GitHub – katzer/cordova-plugin-badge: Access and modify badge numbers
https://github.com/katzer/cordova-plugin-badge

 

プラグインの導入方法ですが、まず下記のコマンドでプラグインを追加します。

cordova plugin add cordova-plugin-badge

なお、もしエラーが発生した場合は、下記のコマンドをお試しください。

cordova plugin add https://github.com/katzer/cordova-plugin-badge.git

上記のコマンドで、プラグインの追加まではできたので、今度はソースに下記のようにコードを追加します。

document.addEventListener('deviceready', function () {
    cordova.plugins.notification.badge.set(10);
}, false);

なお、セットしている数値が、バッヂに表示される値になります。

…が、何故か、私の環境では Android、iOS共にバッヂが表示されず…!
現在原因を調査中です。
…アプリを開いた時にリセットされているとかかな?

 

ということで、アプリアイコンにバッヂを表示するためのプラグイン「cordova-plugin-badge」でした。
まだ動いてはいませんが、導入自体はすごく簡単だったので、正常に動作すればかなりおすすめできるプラグインだと思います。
とりあえず、バッヂが表示されるように調整頑張ります…!

村上 著者:村上

【Android】「Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.」エラーの対処法

今回は久しぶりに Android Studioで遭遇したエラーの対処法のご紹介。
Android Studio を 3 にアップデートしたところ、こちらのエラーが発生しました。

Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.

Googleで翻訳したところ、「‘compile’は廃止され、’implementation’と ‘api’に置き換えられました。」とのこと。
つまり、build.gradlecompile を使用しない様にとのことでした。

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

gradle3でcompile警告 – 組み込みエンジニアのアプリ日誌
http://shekeenlab.hatenablog.com/entry/2018/04/28/223442

 

さて、こちらのエラーへの対処法ですが、build.gradle で使用されている compile を implementation に置き換えるだけ。

dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    implementation project(":CordovaLib")
     ︙
}

なお、修正前はこちら

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(":CordovaLib")
     ︙
}

あとは、普通にビルドとランしてください。

 

以上、Android Studio のでエラーの対処法でした。
が、まだ compile の記述が残っているようでこの警告が未だ消えていません…。
警告なので、アプリは問題なく起動・動作するのですが、やはり少し気になります。
できれば、警告になっているファイルまで教えてくれるとありがたいですね。