Code Lab

CakePHP/Python/Swiftを勉強中... 好きなことで生きて行く!

Cordovaを使ったアプリを作っていて思ったこと。

Cordovaをプロジェクトで使ってみた。
Cordovaの最初のイメージは、フロントエンドでも手が出しやすく、HTML/CSS/JSgあ使える人なら誰でもアプリを作れる魔法のようなもの...
と思っていました。

Cordovaのそれじゃない感

Cordova、最初の裏切り

さて、アプリを作ってやろうか!とワクワクしながら作業に取り掛かりました。
簡単に普通にHTML/CSSでデザインしてできたらまるっとcordovaのフォルダにドカンと入れました。
まぁ、表示されます。
だけどね
「transform」「display:flex;」が効いていない。
とりあえず、ごにょごにょしてなんとかここは乗り越えました。
原因としては、機種ごとに使用しているブラウザのベースが違うことから使えるCSSがバラバラだっただけでした。
全部一つのcssで何にも考えずにまるっと終わるなんて甘かったですね。

Cordova、ワンテンポ遅れて反応する鈍いやつ

aタグ
みなさんは知っているでしょう。
こいつの反応が遅いんですわ。
普通のアプリなら、肩を叩いたら速攻反応してくれるんですが
webアプリ?の性質上、ダブルタップかどうかを判断するためにちょっと焦らしてくるんですわ。いらいらする
肩を叩いて、あれ?気づかなかったかな?もう一回叩くか?と思った時に反応します。いらいらする

とりあえず、ここはjsでtouchendで反応するように直しました。
世話が焼けます。

Cordova、それCordova使う意味ないじゃん

Cordovaでちょっとファイルの操作したいなーって時にプラグインを使いなよって言われます。
カメラ使いたいなーって時も。
アルバムから写真を取得したいなー、canvasをそのまま保存したいなって時も。

アプリだったら使えて当然。アプリだからこの機能は欲しいよね!って言っていたあの日の自分を恨みたくなるほどに、ほぼ全ての機能の実装はプラグインを使用します。
しかも、正常に動かなかったり、思い通りの動きではなかったり、デバイスごとに仕様が違っていたり(これは仕方ないと思わないでください!コールバックが違うんです!URIだったり、ただの「success」っていうテキストだったりのレベルです。)
結局、自分の思い通りの動作をさせるのには、JAVAやSwiftの知識が必須になってきます。
僕の場合、簡単なSwiftはかけますし、近くにJAVAを書くことができるエンジニアさんがいたのでいいですが、
普通のフロントエンドがこんな状況になったら泣いてると思います。
しかも、プラグインの使えない率がたかすぎて、いま作っているアプリの中にすでに複数個自分で作っているプラグインが入っています。
結局、自分で一から作ってもそんなに所要時間は変わらないかと。
変わらないなら、ぬるぬる動くネイティブの方が完成度も高いしネイティブの方がいいかもしれない...とまで思っています。

Cordova、エラーで落ちても知らんふり。

Androidでは問題なのですが、iOSがね...
デバック見れないのですよ。
普通のJS部分なら、プラグインを使えばみれますが
プラグインの中となると全くわからないです。
仕方ないので、エラーが出そうなとこでプラグインもメッセージを出す奴書いて、出なくなったらそこが怪しいなーってやるしかない感じです。

Cordovaだけの話じゃない。

ここまでの話は、Cordovaだけの話じゃありません。
ハイブリッドアプリのはなしです。Phonegapも同じです。
Cordovaを今使っているからCordovaって言ってるだけです。
今、ハイブリッドアプリに対する僕の評価はダダ落ちです。

でも、この評価はちゃんとCordovaを扱いきれてないってだけかもしれません。
もしかしたらもっとごにょごにょしたらぬるぬる動いて、素晴らしいプラグインを探し出せれば、ネイティブコードなんて出会わないのかもしれません。

プロジェクトが終わる頃には、Cordovaをもう一度使いたいななんて思えたらうれしいななんて思っています。

さいごに。

Xamarinって素晴らしいよね。
思ったものがすぐ作れる!コードを書いてる感じがしてとても楽しい!!!!!

あー、Xamarinでサクッと終わらしたいな....
ちなみに、Xamarinもカメラを使うには別々で書く必要があります。それは知っています。
もう少し、深くまで突っ込んだらもしかしたら同じ評価になるかもしれません。それは、クロスプラットフォームの宿命かもね。

お昼時間が終わりそうなので..これで。

続き
shota-natuta.hatenablog.com