月別アーカイブ 8月 2018

asaba 著者:asaba

【androidJava】プラグイン導入できない!?Failed to fetch pluginとは・・・

タイトルの通り今回は未解決の議題になります。

cordovaアプリ開発中にcordovaでバッジを追加するプラグインが必要になったので、インストールしようと思ったらエラー出てはまっております。

gitの説明通りにプラグインを入れようとしたら以下のように赤文字がずらりと出ました。

Failed to fetch pluginと出ているので、プラットフォームに入っていないだけかと思いcordova platforms rm androidでプラットフォームを入れなおしたりnpmのバージョンのアップグレードを試みたのですが、解決されずに今の状況に置かれています。

スタックオーバーフローにはプラットフォームとプラグインを全部アンインストールして再びインストールした後にプラグイン導入すればできると書いてあったのですが結局消えませんでした。

会社の先輩のcordovaだと普通に動作するのに何故・・・?gradleも一応最新にしてあるのに。

今は動きませんが、近いうちにすぐに解決して備忘録に載せます。

 

 

  • この記事いいね! (0)
takahashi 著者:takahashi

アプリ開発がもっと楽になる!?楽天がサービスを開始した”Rakuten Rapid API”とは

楽天が今年の7月11日から新しいサービスを開始しました

Rakuten RapidAPI
Rakuten RapidAPIは約2年前にサービスインしたという、サンフランシスコのRapidAPIが運営するRapidAPIの日本語版としてリリースされました。
RapidAPIはAPI市場に”マーケットプレイス”という概念を導入し、様々な企業や団体のサービスが提供するAPI群を使い方を含めて集約し、API利用料の支払い代行なども提供しています。
所謂、アプリストアのAPI版といった感覚です。
アプリを探す感覚で、あらゆるAPIを横断検索することができます。

例えばMapのAPIを使いたいと思った時は…

Mapの機能を提供するAPIを一括で見ることができます。

天気を提供するAPIも

横断検索できます。


主要企業のAPIもバッチリそろっています。


項目をクリックすると詳細情報が表示されますが、その中にはどういったAPIが使えるのかも詳細に記述されている上、APIの動作をテストすることもできるようになっています。

いままで主要な企業のAPIしかあまり目立たず、それ以外のAPIの存在はそこそこ調べていかないと知ることができませんでした。
また、そのAPIではどんなことができるのか、料金はいくらなのか、といった情報も各APIのドキュメントやコマーシャルサイトを調べていかないといけないため、開発者側としてもかなり負担となっていました。

RapidAPIは同じ機能を提供する複数のサービスのAPIを同じサービス上で簡単に比較できるので、これから作ろうとするサービスに最も最適なAPIを探すのがとても簡単になります。
また、APIを公開する場所ができたことで、今後新しいAPIの提供が加速していくことも考えられますね。

Webサービスの構築とAPIは今後どんどん切っても切り離せない関係になっていくかと思います。
これからWebサービスの構築を計画している皆さんは是非確認してみてはいかがでしょうか。

  • この記事いいね! (0)
著者:ym

cloudflare DNS の SERVFAIL

スタッフの takahashi 氏が名前が引けないというので、調査をしたところ cloudflare DNS に問い合わせると SERVFAIL となることを発見しました。

# dig @1.1.1.1 kb.vmware.com.

; <<>> DiG 9.9.13 <<>> @1.1.1.1 kb.vmware.com.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 25051
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1452
;; QUESTION SECTION:
;kb.vmware.com.                 IN      A

;; ANSWER SECTION:
kb.vmware.com.          60      IN      CNAME   kb.cdnswitch.vmware.com.
kb.cdnswitch.vmware.com. 60     IN      CNAME   khmrp.x.incapdns.net.
khmrp.x.incapdns.net.   30      IN      A       45.60.15.183

;; Query time: 83 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Tue Aug 28 20:29:46 JST 2018
;; MSG SIZE  rcvd: 119

試しに Google Public DNS へ問い合わせて見ましたが、こちらは問題無し。もちろん他のフルリゾルバサーバへ問い合わせしても問題無しです。もちろん 512 超えていても ENDS0 で回答してくれればよいに。

# dig @8.8.8.8 kb.vmware.com.

; <<>> DiG 9.9.13 <<>> @8.8.8.8 kb.vmware.com.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47609
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;kb.vmware.com.                 IN      A

;; ANSWER SECTION:
kb.vmware.com.          55      IN      CNAME   kb.cdnswitch.vmware.com.
kb.cdnswitch.vmware.com. 55     IN      CNAME   khmrp.x.incapdns.net.
khmrp.x.incapdns.net.   29      IN      A       45.60.15.183

;; Query time: 52 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Aug 28 20:29:52 JST 2018
;; MSG SIZE  rcvd: 119
  • この記事いいね! (0)
takahashi 著者:takahashi

Xperiaのカメラの動作が”クソ重い!!!”と感じたときの対処法

XperiaはAndroid端末の中でも全体的に1位、2位を争うほどの高性能なものが多い機種です。
Oneソニーをうたっているだけあって、カメラもかなり画素数の高い機種が多く、綺麗に写真を撮ることができます。

ところが、このカメラ、使っているとどんどん重くなっていき、自分の持っているXperiaでは最終的に起動まで10秒弱かかる状態になってしまいました。
しかも、起動後、シャッターを押した後も再び写真が撮影できるようになるまで数秒間固まってしまいます。

あまりの遅さに、同じくカメラに定評のあるiPhoneに浮気しかけていたところ、ネット上でこちらの情報を発見。

Xperiaの発熱・動作が重い等を万能解決?Photo Analyzer Serviceを無効化する方法 – すまおじ.com

記事によると、”Photo Analyzer Service” なるシステムアプリが裏で頻繁に動作しており、これが原因で端末の動作全体が重くなってしまうと事。
幸いにも自分のXperiaに入っているAndroid 6にはプリインストールアプリも無効化できる機能があるため、システムアプリであってもこの”無効化”で対抗することができます。

ということで早速試してみましょう。

まず、設定から”アプリ”を開きます。

通常だとシステムアプリは隠されてしまっています。
表示させるために、右上のメニューアイコンから”システムを表示”を選択。

表示されたアプリ一覧から”Photo Analyzer”を探し出します。

見つけだしたら”無効にする”をタップ。

ボタンが”有効にする”に変わったら設定完了です。

なんとこの設定をした後、端末の動作が劇的に軽くなり、以前では数時間Androidを起動しっぱなしにしておくとカメラが重くなってしまっていましたが、今では丸1日を過ぎても買った直後と同様にすっとカメラが起動するようになりました。

ただ、Photo Analyzerは写真の顔認識を行うなどの機能を持っているサービスとのことで、Photo Analyzerの機能を必要とするXperiaの機能やアプリを使用する方は無効化してしまうと、問題が出るかもしれません。
しばらく様子を見つつ、普段の使い方で不具合が出ないかを確認するようにしてください。

Xperiaの折角の高性能カメラが、動作が重すぎて最近気軽に起動できなくなってしまった…という方は、是非一度試してみてはいかがでしょうか。

  • この記事いいね! (0)
著者:杉浦

OWASPの紹介

 

OWASP – Open Web Application Security Project とは、Webをはじめとするソフトウェアのセキュリティ環境の現状、またセキュアなソフトウェア開発を促進する技術・プロセスに関する情報共有と普及啓発を目的としたプロフェッショナルの集まる、オープンソース・ソフトウェアコミュニティです。

 Japan – OWASPより引用
 OWASPは上記にある通りセキュリティ関係の技術を公開しているコミュニティです。コミュニティとありますがOWASPのページ、プログラムは特別な会員にならなくとも閲覧、ダウンロードできます。wikiみたいなものです。
 最近よくお世話になっているのがOWASP Cheat Sheet Series – OWASPです。webを介した攻撃は無数にありますが、パターン化されたありがちな攻撃というのもあります。パターン化されたといえども、それらは多彩で、自分だけの考えによって全て予防するのは困難です。チートシートは60種類以上あり、その内容はSQLインジェクション、XSSなどの予防、攻撃例など様々です。

  • この記事いいね! (0)
asaba 著者:asaba

【androidJava】firebaseを使ったアプリをビルドしたらcould not find any versionで怒られた話

cordovaを使ったアプリをAndroidStudioでビルドしたらあるエラーにはまったので備忘録として残します。

早速ですが、下にあるのがGradle内で吐いたエラーです。ログを見るとエラー1って書いてあるのになにやらごちゃごちゃしていてdependencyのクラスパスが使えないとか色々書いてあってどれから見たらいいか分からないくらいダラダラ出てきました。

スタックオーバーフローによればfirebaseのバージョンがどこを探しても見つからない、合わないよというエラーのようです。

そういう時はbuild.gradle(android側)で、リポジトリを追加するコードを書き加えてあげましょう。

repositoriesスコープ内のjcenter()の上あたりで大丈夫です。

maven {
url "https://maven.google.com"
}

原因ははっきり分からなかったのですが、さっき追記したリポジトリがなかったのでfirebase自体が無いとみなされていたということでしょうか・・・

ざっくりとした解説ですが自分はこれで無事ビルドできました。同じような記事を探したのですが、国内での事例が少なくまともなサイトがなかったのでしぶしぶスタックオーバーフローで探しました。gitもそうですが英語ができると開発だけでなくエラーにも正確に対応できるしで活躍の幅が格段に広がりますよね。筆者も英語はからっきしなのでよく海外のサイトを頑張って読んだりして耐性をつけております。それでは。

P.S.参考にしたページのリンクです!->https://stackoverflow.com/questions/50815960/could-not-find-any-version-that-matches-com-google-firebasefirebase-iid16-0-0

 

 

 

  • この記事いいね! (0)
村上 著者:村上

【Cordova】JavaScript上のConsole.log()をXcodeのデバッグエリアに表示する方法

以前からCorodvaアプリを開発していましたが、最近になって便利なプラグインを発見したのでご紹介。
というか、何故これを開発初期に入れていなかったのか…ちょっと後悔しています。

 

おすすめしたいプラグインは「cordova-plugin-console」です。
タイトルにもあるように、こちらのプラグインを導入すると、JavaScript上で記述した console.log() などの結果を、Xcodeのデバッグエリアに表示させることができます。
なお、参考にさせていただいたサイトはこちらから。

Cordova アプリの console.log() を XCode に出力する cordova-plugin-console – Corredor
http://neos21.hatenablog.com/entry/2017/07/10/080000

そして、GitHubのリンクはこちらから。

GitHub – apache/cordova-plugin-console: Apache Cordova Plugin console
https://github.com/apache/cordova-plugin-console

導入方法は、下記のコマンドを実行するだけ。

cordova plugin add cordova-plugin-console

あとは、devicereadyイベントの後に console.log() を記述すれば、それがデバッグエリアに表示されます!
また、試してはいませんが、Android Studio でも同様に使えるそうです。

 

以上、Console.log() をXcodeのデバッグエリアに表示する方法でした。
プラグインの導入だけなので、かなり簡単に行えます!

今まで alert() をメインで使ってきて、そこまで不便は感じていなかったのですが…やはりできるとかなり楽ですね。
Cordovaアプリの開発者はぜひインストールをご検討ください。

  • この記事いいね! (0)
著者:ym

Amazon Lightsail update

Amazon Lightsail が更に安価になって登場したようなので、早速見てみました。

Amazon AWS Lightsail

Amazon AWS Lightsail

私的にはストレージが 100GB 程度は欲しいのですが、そうなると $40 。私としてはストレージとしての利用を兼ねる使い方になるのですが、そうすると高く付きますね。AWSでは S3 を組み合わせて使うしか無いのだろうか。

 

Amazon AWS Lightsail

  • この記事いいね! (0)
著者:杉浦

地図を表現する画像タイルとベクトルタイル

 google mapの様な拡大縮小される地図を描画する際には、地図の画像を用いる必要があります。しかしながら、倍率に合わせて用いるべき地図の画像の解像度は異なります。世界地図を見たいのに、細かい街まで描画された画像が送られてきた場合、送受信者共にPCの資源を大きくムダにします。m単位の地図を見たいのに、引き伸ばされた日本地図を渡されても何が何だかわかりません。そのような問題を解決するためにタイルを用いた手法が使われています。下のGIFはタイルを選択する動作です。地図の範囲と倍率に合わせて異なるタイルを用意することによって、無駄の少ない地図のやり取りを実現しています。
 
 タイルによって地図を表現する手法には画像タイルとベクトルタイルの二種類の手法が用いられています。目的に合わせて使い分けられたり、併用されたりです。
 画像タイルを用いる手法はいたって単純、そのままタイルの様に画像をタイルらしく並べるだけの手法です。256x256pxの画像が用いられ大体軽量です。衛星写真などはたまに圧縮されにくい画像が現れ重くなります。画像タイルのみで作られた地図は加工に不向きです。画像認識を行い、解釈して、解釈に応じて加工して、と手間がかかります。
 ベクトルタイルはある区域の情報をテキストとして点、線、面、それぞれの意味するモノを格納したタイルです。[始点,終点],国道n号線,道幅6m;[点A,点B,点C,点D],浜松駅、みたいな感じです。この手法は加工を行いやすいです。属性に条件をかけ、渡された点、線、面の端点や頂点の情報を元に描かれる図形の色や形を変えるだけで加工が行えます。
 画像タイルと同じ範囲のベクトルタイルを用意し、画像タイルを背景に加工されたベクトルタイルを重ねる、というだけでとても便利になります。

  • この記事いいね! (0)
村上 著者:村上

【Cordova】アプリでiBeaconを扱うための「cordova-plugin-ibeacon」が動作しない【未解決】

今回は、「cordova-plugin-ibeacon」という、CordovaアプリでiBeaconを取り扱うためのプラグインについてです。
Android端末では思い通りに動作したのですが、何故かiOSでは、ビーコンの信号をキャッチできず…。
色々サイトを見て、設定等を変更しているのですが、残念ながら、まだ未解決です。

 

使用したプラグインはこちらから確認できます。

GitHub – petermetz/cordova-plugin-ibeacon: An iBeacon plugin for Phonegap / Cordova 3.x and upwards. Supports both iOS and Android (contributions are welcome)
https://github.com/petermetz/cordova-plugin-ibeacon

で、実際に記述したコードはこちら。

var uuid = '[使用するビーコンのUUIDを指定]';
var identifier = 'ibeacon';
var major = 0;
var minor = 0;
var beaconRegion = null;
// 監視するビーコンの設定
beaconRegion = new cordova.plugins.locationManager.BeaconRegion(identifier, uuid, major, minor);
    
// delegateの作成と設定
var delegate = new cordova.plugins.locationManager.Delegate();
delegate.didStartMonitoringForRegion = function(pluginResult) {
    // ビーコンの観測の開始に成功
};

delegate.didDetermineStateForRegion = function(pluginResult) {
    // 領域への入退場のステータス変化を検知
};

delegate.didEnterRegion = function(pluginResult) {
    // ビーコンをキャッチした時に呼ばれる
    cordova.plugins.notification.local.schedule({
        title: "iBeacon",
        text: "didEnterRegion",
        foreground: true
    });
};

delegate.didRangeBeaconsInRegion = function(pluginResult) {
    // ビーコンを検知している間呼ばれる
};

// delegate の設定
cordova.plugins.locationManager.setDelegate(delegate);

// パーミッションチェック
cordova.plugins.locationManager.requestAlwaysAuthorization();
cordova.plugins.notification.local.requestPermission();
cordova.plugins.backgroundMode.enable();

// 監視の開始
cordova.plugins.locationManager.startMonitoringForRegion(beaconRegion)
    .fail(function(e) { })
    .done();
}

19行目で、ビーコンが発信している信号をキャッチしたら、通知を飛ばす、という処理を行いたかったのですが、これが動作せず…。
もしや、通知の設定が間違っているのか?と思い、別の箇所で動作確認をしたところ、問題なく動作したので、通知の問題ではなさそう。

また、11行目や15行目の関数内でも、試しに通知の処理を記述して見ましたが、こちらでも問題なく通知がされたので、プラグインにも問題はないようです。
ただ、15行目のビーコンの通知領域への入退場ステータス変化を検知した時に実行される関数では、引数 pluginResult.state が「CLRegionStateOutside(通知範囲から退場)」しか取れていないようだったのが気にかかっています。
どうやら範囲内に入った検知が行えていないようで…でも、その対処法がわからず、悩み続けております。

 

GitHubに、おそらく同じことでお悩みの方の投稿があったので見てはいるのですが、それでも解決できず。
ちなみに投稿はこちら。

IOS Plugin not working…・Issue #167・petermetz/cordova-plugin-ibeacon・Github
https://github.com/petermetz/cordova-plugin-ibeacon/issues/167

こちらの投稿では、locationManager のパーミッションのリクエストをしているかや、XCodeでの設定についての確認があり、それらに対応したのですが、それでも動かず…。
…根が深そうな気がしますね。
一度、プラットフォームの削除と再インストールを試してみようかな?

 

なお、サンプルコードはきちんと動作したので、私のコードもしくは設定が間違っているのは間違いなさそう。
原因がわかったら、また改めてご紹介したいと思います!
それまでしばしお待ちを!

  • この記事いいね! (0)