• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

あぶさんHVのブログ一覧

2013年09月12日 イイね!

IE8でplaceholderを実装するときの注意点

一昔前にIE6問題なんてものがあった。
IE6は非常にバグが多く独自の仕様が満載でIE6のためだけに特別なコードを書かなければいけないなんてことが日常茶飯事だった。
IE6が圧倒的なシェアを持っていたころは問題なかったのだが、IE7やIE8の登場やFirefoxの台頭によりIE6のシェアは減り続け、WebデザイナーやWebプログラマーはIE6対応に頭を抱えることになる。
やっとこさIE6が消えて対応しなくてもよくなり問題はなくなったかに見えたのだが、新しい問題が出てきた。それがIE8 + HTML5問題だ。

HTML5というのはいろいろと端折って簡単に言うとHTMLの新バージョンである。いろいろと便利ですごい機能が付いたおかげで、今まで面倒なコードを書いて実装していた機能を簡単に実装できるようになるすごいやつだ。
HTML5を使ったサイトでHTML5の機能を使うにはブラウザ側がHTML5に対応する必要がある。そこで問題になったのがIE8だ。
現在のブラウザシェアはIE10が3割、Chromeが2割、そしてIE8がそれに続いて1割ほどだ。これだけ見ればIE8対応を切り捨てると言う選択肢が出てくるのだが、この割合は全体での話。ターゲットユーザー層によってはIE8対応を切り捨てられなくなる。例えば社内向けシステムなどがそうだろう。

HTML5の機能でおそらくもっともお世話になるのがplaceholderだ。こんな入力フォームを見たことは無いだろうか。

入力すべき情報のヒントが灰色で表示されている。HTML5が無ければ面倒なコードを書く羽目になったのだが、HTML5であれはplaceholder="半角英数"と書けばいい。
HTML5に対応していないブラウザに対応するためのライブラリを使用すれば同じようにplaceholder="半角英数"と書いてライブラリを読み込むだけでいい。だがここに落とし穴がある。

IE8でplaceholder="半角英数"をライブラリで実装し、入力した情報をjqueryでvalue値を取得しajaxで送信すると、placeholderに入力した文字列がそのまま送信される。
ライブラリ側がplaceholderの実装のためにvalue値に値を入れているため発生するようで、これにより意図しないデータが送信されてしまう。
これを防ぐにはデータを送信する前に、送信するデータがplaceholderの値と同じだった場合はそのデータを空にすることで対処できる。ユーザーがplaceholderと同じ値を入力したらアウトだが、placeholderにそんな値を入れることはユーザビリティがよろしくない。
Posted at 2013/09/12 15:10:56 | コメント(1) | トラックバック(0) | 技術メモ | パソコン/インターネット
2013年06月13日 イイね!

Androidにタスク管理アプリは必要か?

※この記事は2012年9月20日にGazooブログに投稿したものです。

Androidの電池の減りに悩んでいる人へ

スマートフォンが一般に受け入れられ広く普及していこうとしている。
各キャリアの新モデルはガラケーが圧倒的に少なくなり、スマートフォンが主力であることをうかがわせる。
スマートフォンが主力になった大きな理由は開発コストを下げられることにあると思う。
今まではSymbian OSなどの携帯電話向けOSはあったものの、日本ではシェアは少なく、各端末メーカーが独自のOSを持ち独自に開発を行っていた。
新機種の開発の度に新機能の搭載をしなければならず、そのたびに大規模なソフトウェアの改良を迫られる。現場の苦労が聞こえてくるだろう。
現在国内で主流のAndroidスマートフォンはOSはAndroidに統一され、独自サービスを乗せるのも容易。開発コストを容易に下げることができた。

そうしてAndroidスマートフォンが普及していく中で、従来の携帯電話との違いから苦情が発生しているという。
一番多いのは電池の減りが早いという苦情だそうだ。
確かに早い。かなり早い。
友人が使っているT-01D(悪名高きREGZAフォンだ)もJavascriptやネットワーク通信でCPUパワーをフルに使うブラウジングなどでごりごり減っていく。
要は高くなったCPUパワーや、速くなったネットワーク通信速度にバッテリー容量が足りていないのだ。なんとあほらしい理由なんだろう。
高速化の代償としてはあまりにもあほらしすぎる。
ちなみに私が愛用しているHT-03Aという機種はCPUシングルコア528MHz、メインメモリ128MBしかない。
海外製ROMに入れ替えAndroid2.2となっているが、数多の努力により非常にサクサクと動いてくれる。デュアルコアなんて必要ないのではないかと思うほどだ。

電池の減りを抑える方法としてよく言われるのが「タスク管理アプリでメモリ内のアプリを消す」だ。
Androidは仕様上、起動したアプリはメモリ内に残り続ける。システムでガベージコレクションという機能が備わっており、メモリが足らなくなったらメモリ内のアプリを消して容量を確保するのだ。
ではタスク管理アプリが何故必要なのか?
それは初期のAndroidではこのガベージコレクションの性能が低く、また搭載メモリ量も少なかったため頻繁にガベージコレクションが発生し、カクツキの原因になっていたからだ。
その時にタスク管理アプリは必須ということになった。
初期と言ってもAndroid1.6くらいまでの話であり、2.1以上ではタスク管理アプリは必要ない。
メモリは潤沢に使用でき、ガベージコレクションの性能も向上した今、タスク管理アプリでタスクを消す行為は逆に電池の減りを早めてしまうと言える。
そもそもなぜメモリ内に残るのか。それは電池の減りを抑えるためである。
メモリ内に残ったアプリはonPauseという状態になる。名前の通りこの状態ではアプリは何もできない。
CPUのパワーを使うことも通信を行うこともできない。完全に止まった状態なのだ。
そして同じアプリを再度起動したとき、メモリ内に残っていればそれを再利用することで前回と同じ状態から始めることができ、メモリ内に残っているためアプリを読み込みなおす必要もなく素早く再開できるのだ。

何もできないと書いたが、じゃあTwitterのアプリなどの裏で通信しているアプリはなぜ動けるんだ! となるかもしれない。いやなる。私もそうなった。
理由はタスクではなく、サービスで動いているからである。
タスクは裏に回ると動作を停止するが、サービスは停止しない。定期更新などはこのサービスという機能で行われる。
またTwitter公式アプリやGmailの更新、Google+アプリの更新はAndroidの同期機能を使って更新を行っている。同期はgappsというアプリが行い、正式にはcom.google.process.gappsという。
ネットワーク通信は非常に負荷が高い処理であり、これを抑えれば電池の減りは遅くなる。JavascriptでCPU、Ajaxやページの読み込みで通信をフルに使用するブラウザは電池をごりごり減らす。

犯人はサービスと同期機能であることがわかった。
ではどうやって電池の減りを抑えるのか。
1.定期更新するアプリは定期更新の頻度を極力減らす。または定期更新をオフにする。
2.同期機能はオフにしておき、必要な時だけオンにする。
この2つを行なうことで劇的に電池消費量を減らすことができる。
1はアプリの設定などで定期更新の間隔を30分~6時間程度にする。または定期更新をオフにし、利用するときに手動で更新を行う。
2はAndroidに最初からあるウィジェットで、wifiや同期をオンオフできるのがあるためそれを利用する。
ちなみにこれを行った私のHT-03Aは一日放置しても100%を維持できるようになった。わけがわからないよ。
またBattery Mixなどのアプリで電池使用量が多いアプリを探すと効果的に犯人を見つけられるだろう。
Posted at 2013/06/13 13:34:02 | コメント(0) | トラックバック(0) | 技術メモ | パソコン/インターネット
2013年05月23日 イイね!

PHPの謎挙動

プロフィールに書きました通り、私はWebプログラマーをしております。
開発はほとんどPHPなのですが、こいつが曲者でして時々謎挙動を起こします。

今回遭遇したのは配列が文字列になってしまうと言うもの。

for($i = 0; $i < 5; $i++){
$buf[$i] = hoge($i);
}

プログラムが分からない人には暗号にしか見えないと思います。
まあhoge関数の結果を配列にぽいぽい放り込んでいるだけなのですが、なぜか$bufが文字列になってしまう。
配列が文字列になると言う謎挙動。他の部分で同じような処理をしている場所ではなぜか動く。
とりあえずこうしたら直りました。

$buf = array();
for($i = 0; $i < 5; $i++){
$buf[$i] = hoge($i);
}

たしか$buf = "";でも動いたと思う。
初期化って大事ですね。
Posted at 2013/05/23 16:22:14 | コメント(0) | トラックバック(0) | 技術メモ | 日記

プロフィール

「ご報告 http://cvw.jp/b/1854908/42411863/
何シテル?   01/15 00:46
いつか終わりが来るその時まで、車とともにありたい

ハイタッチ!drive

みんカラ新規会員登録

ユーザー内検索

<< 2025/6 >>

1234567
891011121314
15161718192021
22232425262728
2930     

リンク・クリップ

TRD エキゾーストマニホールド 
カテゴリ:その他(カテゴリ未設定)
2015/03/26 11:48:30
エキマニ交換 
カテゴリ:その他(カテゴリ未設定)
2015/03/26 11:45:56
最悪miniショップ Johnbull(ジョンブル) 
カテゴリ:その他(カテゴリ未設定)
2015/03/16 11:26:52

愛車一覧

トヨタ カローラスポーツハイブリッド トヨタ カローラスポーツハイブリッド
速くて楽なやつ AVSは付いているけど10.5インチディスプレイオーディオPlusは付 ...
トヨタ ヴィッツ トヨタ ヴィッツ
2018年12月24日に売却いたしました。 枚方の車屋で販売されています。もし買うという ...
スズキ ワゴンR スズキ ワゴンR
親父の5台目の車です。 知り合いから5万円で譲ってもらいました。 ECU故障により買い ...
トヨタ カリーナ トヨタ カリーナ
2013年5月12日に納車。 MTで修復歴なし、走行距離は1.5万km、本体価格25万円 ...

過去のブログ

2019年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation